diff --git a/build/.tsbuildinfo b/build/.tsbuildinfo index 1cc1333..19d669b 100644 --- a/build/.tsbuildinfo +++ b/build/.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/crypto-js/index.d.ts","../node_modules/@cosmjs/amino/build/pubkeys.d.ts","../node_modules/@cosmjs/amino/build/addresses.d.ts","../node_modules/@cosmjs/amino/build/coins.d.ts","../node_modules/@cosmjs/amino/build/encoding.d.ts","../node_modules/@cosmjs/amino/build/multisig.d.ts","../node_modules/@cosmjs/amino/build/omitdefault.d.ts","../node_modules/@cosmjs/crypto/build/bip39.d.ts","../node_modules/@cosmjs/crypto/build/hash.d.ts","../node_modules/@cosmjs/crypto/build/hmac.d.ts","../node_modules/@cosmjs/crypto/build/keccak.d.ts","../node_modules/@cosmjs/crypto/build/libsodium.d.ts","../node_modules/@cosmjs/crypto/build/random.d.ts","../node_modules/@cosmjs/crypto/build/ripemd.d.ts","../node_modules/@cosmjs/crypto/build/secp256k1signature.d.ts","../node_modules/@cosmjs/crypto/build/secp256k1.d.ts","../node_modules/@cosmjs/crypto/build/sha.d.ts","../node_modules/@cosmjs/math/build/integers.d.ts","../node_modules/@cosmjs/math/build/decimal.d.ts","../node_modules/@cosmjs/math/build/index.d.ts","../node_modules/@cosmjs/crypto/build/slip10.d.ts","../node_modules/@cosmjs/crypto/build/index.d.ts","../node_modules/@cosmjs/amino/build/paths.d.ts","../node_modules/@cosmjs/amino/build/signdoc.d.ts","../node_modules/@cosmjs/amino/build/signature.d.ts","../node_modules/@cosmjs/amino/build/signer.d.ts","../node_modules/@cosmjs/amino/build/wallet.d.ts","../node_modules/@cosmjs/amino/build/secp256k1hdwallet.d.ts","../node_modules/@cosmjs/amino/build/secp256k1wallet.d.ts","../node_modules/@cosmjs/amino/build/stdtx.d.ts","../node_modules/@cosmjs/amino/build/index.d.ts","../node_modules/cosmjs-types/binary.d.ts","../node_modules/cosmjs-types/google/protobuf/any.d.ts","../node_modules/@cosmjs/stargate/build/accounts.d.ts","../node_modules/cosmjs-types/cosmos/crypto/multisig/v1beta1/multisig.d.ts","../node_modules/cosmjs-types/cosmos/tx/signing/v1beta1/signing.d.ts","../node_modules/cosmjs-types/cosmos/base/v1beta1/coin.d.ts","../node_modules/cosmjs-types/cosmos/tx/v1beta1/tx.d.ts","../node_modules/@cosmjs/proto-signing/build/decode.d.ts","../node_modules/@cosmjs/proto-signing/build/signer.d.ts","../node_modules/@cosmjs/proto-signing/build/wallet.d.ts","../node_modules/@cosmjs/proto-signing/build/directsecp256k1hdwallet.d.ts","../node_modules/@cosmjs/proto-signing/build/directsecp256k1wallet.d.ts","../node_modules/@cosmjs/proto-signing/build/paths.d.ts","../node_modules/@cosmjs/proto-signing/build/pubkey.d.ts","../node_modules/protobufjs/index.d.ts","../node_modules/@cosmjs/proto-signing/build/registry.d.ts","../node_modules/@cosmjs/proto-signing/build/signing.d.ts","../node_modules/@cosmjs/proto-signing/build/index.d.ts","../node_modules/@cosmjs/stargate/build/aminotypes.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/addresses.d.ts","../node_modules/readonly-date/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/dates.d.ts","../node_modules/xstream/index.d.ts","../node_modules/@cosmjs/json-rpc/build/id.d.ts","../node_modules/@cosmjs/json-rpc/build/compatibility.d.ts","../node_modules/@cosmjs/json-rpc/build/types.d.ts","../node_modules/@cosmjs/json-rpc/build/jsonrpcclient.d.ts","../node_modules/@cosmjs/json-rpc/build/parse.d.ts","../node_modules/@cosmjs/json-rpc/build/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/rpcclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/httpclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/httpbatchclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/websocketclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/types.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/comet38client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/tendermint34client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/tendermint37client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermintclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/index.d.ts","../node_modules/@cosmjs/stargate/build/events.d.ts","../node_modules/@cosmjs/stargate/build/fee.d.ts","../node_modules/@cosmjs/stargate/build/logs.d.ts","../node_modules/cosmjs-types/tendermint/crypto/proof.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/queryclient.d.ts","../node_modules/cosmjs-types/cosmos/base/query/v1beta1/pagination.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/utils.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/index.d.ts","../node_modules/@cosmjs/stargate/build/modules/auth/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/messages.d.ts","../node_modules/cosmjs-types/google/protobuf/timestamp.d.ts","../node_modules/cosmjs-types/cosmos/authz/v1beta1/authz.d.ts","../node_modules/cosmjs-types/helpers.d.ts","../node_modules/cosmjs-types/cosmos/authz/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/bank.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/messages.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/distribution.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/messages.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/messages.d.ts","../node_modules/cosmjs-types/google/protobuf/duration.d.ts","../node_modules/cosmjs-types/cosmos/feegrant/v1beta1/feegrant.d.ts","../node_modules/cosmjs-types/cosmos/feegrant/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/gov.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/messages.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/group/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/group/messages.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/upgrade/v1beta1/upgrade.d.ts","../node_modules/cosmjs-types/ibc/core/client/v1/client.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/messages.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/transfer.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/query.d.ts","../node_modules/cosmjs-types/ibc/core/channel/v1/channel.d.ts","../node_modules/cosmjs-types/ibc/core/channel/v1/query.d.ts","../node_modules/cosmjs-types/ibc/core/client/v1/query.d.ts","../node_modules/cosmjs-types/cosmos/ics23/v1/proofs.d.ts","../node_modules/cosmjs-types/ibc/core/commitment/v1/commitment.d.ts","../node_modules/cosmjs-types/ibc/core/connection/v1/connection.d.ts","../node_modules/cosmjs-types/ibc/core/connection/v1/query.d.ts","../node_modules/cosmjs-types/tendermint/version/types.d.ts","../node_modules/cosmjs-types/tendermint/crypto/keys.d.ts","../node_modules/cosmjs-types/tendermint/types/validator.d.ts","../node_modules/cosmjs-types/tendermint/types/types.d.ts","../node_modules/cosmjs-types/ibc/lightclients/tendermint/v1/tendermint.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/queries.d.ts","../node_modules/cosmjs-types/cosmos/mint/v1beta1/mint.d.ts","../node_modules/@cosmjs/stargate/build/modules/mint/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/slashing/v1beta1/slashing.d.ts","../node_modules/cosmjs-types/cosmos/slashing/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/slashing/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.d.ts","../node_modules/cosmjs-types/tendermint/types/params.d.ts","../node_modules/cosmjs-types/tendermint/abci/types.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/staking.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/messages.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/queries.d.ts","../node_modules/cosmjs-types/cosmos/base/abci/v1beta1/abci.d.ts","../node_modules/cosmjs-types/tendermint/types/evidence.d.ts","../node_modules/cosmjs-types/tendermint/types/block.d.ts","../node_modules/cosmjs-types/cosmos/tx/v1beta1/service.d.ts","../node_modules/@cosmjs/stargate/build/modules/tx/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/vesting/messages.d.ts","../node_modules/@cosmjs/stargate/build/modules/index.d.ts","../node_modules/@cosmjs/stargate/build/multisignature.d.ts","../node_modules/@cosmjs/stargate/build/search.d.ts","../node_modules/@cosmjs/stargate/build/stargateclient.d.ts","../node_modules/@cosmjs/stargate/build/signingstargateclient.d.ts","../node_modules/@cosmjs/stargate/build/index.d.ts","../src/utils.ts","../src/logger.ts","../node_modules/@types/long/index.d.ts","../node_modules/protobufjs/minimal.d.ts","../src/codec/cosmos/base/v1beta1/coin.ts","../src/codec/google/protobuf/duration.ts","../src/codec/google/protobuf/timestamp.ts","../src/codec/agent/v1/agent.ts","../src/codec/agent/v1/tx.ts","../src/codec/agent/v1/query.ts","../src/queries.ts","../node_modules/@cosmjs/encoding/build/ascii.d.ts","../node_modules/@cosmjs/encoding/build/base64.d.ts","../node_modules/@cosmjs/encoding/build/bech32.d.ts","../node_modules/@cosmjs/encoding/build/hex.d.ts","../node_modules/@cosmjs/encoding/build/rfc3339.d.ts","../node_modules/@cosmjs/encoding/build/utf8.d.ts","../node_modules/@cosmjs/encoding/build/index.d.ts","../src/client.ts","../node_modules/@keplr-wallet/types/build/currency.d.ts","../node_modules/@keplr-wallet/types/build/bech32.d.ts","../node_modules/@keplr-wallet/types/build/bip44.d.ts","../node_modules/@keplr-wallet/types/build/chain-info.d.ts","../node_modules/@keplr-wallet/types/build/ethereum.d.ts","../node_modules/@keplr-wallet/types/build/cosmjs.d.ts","../node_modules/@keplr-wallet/types/build/secretjs.d.ts","../node_modules/@keplr-wallet/types/build/settled.d.ts","../node_modules/@keplr-wallet/types/build/cosmjs-alt.d.ts","../node_modules/@keplr-wallet/types/build/wallet/keplr.d.ts","../node_modules/@keplr-wallet/types/build/wallet/index.d.ts","../node_modules/@keplr-wallet/types/build/window.d.ts","../node_modules/@keplr-wallet/types/build/index.d.ts","../src/walletoperation.ts","../src/encryptutils.ts","../src/default.config.ts","../src/socket.ts","../node_modules/bignumber.js/bignumber.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/node_modules/long/index.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/node_modules/long/umd/index.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/types.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/snap.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/cosmjs-offline-signer.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/index.d.ts","../src/chatclient.ts","../src/index.ts","../src/codec/agent/module/v1/module.ts","../src/codec/agent/v1/genesis.ts","../src/codec/amino/amino.ts","../src/codec/cosmos/app/v1alpha1/module.ts","../src/codec/cosmos/base/query/v1beta1/pagination.ts","../src/codec/cosmos/msg/v1/msg.ts","../src/codec/cosmos_proto/cosmos.ts","../src/codec/gogoproto/gogo.ts","../src/codec/google/api/annotations.ts","../src/codec/google/api/http.ts","../src/codec/google/protobuf/descriptor.ts","../src/types/global.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"70e345d53cc00be14d6f3024838bbff3ef0613d56b71ae3f796d7b2a0d473b07","affectsGlobalScope":true},"1b07773ee3ca8a62873be6a6b8b3aa29455c7b53db2cd4399ec4c6e362cef92b","bb82c2f6ce46746ddff974720459546747854d8e83a5ab2bf1ea5e11dbc535fe","3ef6c822342f271295a588afa47c00dc9c221a07e535342cfeaff6ff76fd384f","66f6d5d5d383ef51a7205d10543944c0be74b98190c16ec077ad40640f369147","684b95e60a1346cb54c7a45cb424091d97c9d573cecdaf2b5954a4d63d4bb5a9","4d708c75dad09198ae2b98abe2bfb355d7eb517c29e3f1ddd101fe2ca4884159","2321e25e34075320eeedbc5cd56051c9ce0341cb6a51e4faafb8f827d8045ceb","1cc2355816ba43eb2d6eb2670ac83d29a3ef02a01c09a4e2d5c0cc21e35249f7","ce47207ec1bd458b7966f0bbb5d9d15be0b00116fec4efda52ec8fcae8321586","a1f914818a2cc3bf3a693b99902d9cb0c1a6613df3cdd2bd8134cc63e695565c","3bd1d708281a33e7736f9c75c74221c077827d21c941f72ed3a8533b55fa5c7c","838c4154f06e964281fbfa88cf8cf8d76f194cbdd4d3f13e0a9e9a52e5faac6b","e32f79a7f77271780ecfcff5205300791429c2526b0b72307bb300ded25420c4","6ea46b5278f87aaf63479e72bb2d44474e458b4e603fa7ef46b3730c8a320073","22176ca5c9549edad90a532d5623a9b6ec552505178a7aeec3591f0b8f485d87","ba01df9e06cc51729deef602895fe3ceafd9ce2f17f2119db81eb67ff6ef7998","1dbb63933fe1404f9947c55f7f53308eb6fafd3b8646c4afc5f8a0376b1886ac","2dee5f01ddfa5375af2104e3d58e98afb881b63294187bab0a3df873a7bb2ad1","3dbe631d8fddc408346806ef5cf4195ba34a8ba1eb3cfde3aeffb813a38bffd2","8a0a3cdb27704e89ff1dbf93e43bb40bb2a96199a4483edc22fcf640a590a99d","3d444fa6e8057de7ea8ff4a9b737adc9538b2fcf7767969bdedc58bfc892582c","1906f0be92468440d7ab4b26dcced83ce978a939c64806cc75e4f484e9b649c0","070cec1d2c7f9ed3c8f02e2d471ed036f66d58e4fbea47b2bce35dddd9e921ef","3d135e55be21b9f506a4d7f441abf7fc159a54ad2b64556b0ba0f819695c3c47","85245e7f103feba8b3b9d2203ea9dd687545172564bdb275c5a70c0dea0abbfb","d72588d7853732dcbf1c5186389458d6a123dbe8f19cede386f424ba32afef8f","3babffecf1c0fb251b65b6167fa5909c87bd3e4c1a976d26a156a0cddb84f852","406a17e0a2cc399c644b5bc1fb807c9dc71f3247dac25a232864b13370d6f5e9","21f75cbb084ee0b35a8792e94e83d937532154a99c343a5bd3d86c26b5d7e0bb","d60853beea7347ada1f4774f9b727be6600a2dbbc510cbebfbd2276b8b47224a","9efc525cef2b9f35187095ce035d23ef8ab0090b672cd4a71cbffcef6884e80f","8dba17cdfdec5ae0a5db9b9038721f4655b6ddf2fdc589e5a90a16555a54d772","00f9fe96f593b39bd6b98fe4b4c8e4710887b1fbb01b39db453f1dbaf3dee090","c599f3670220bf7913f9f140ca85e66b50e0124050b3e4c629957ef0d9f59d23","0e4b7f73c3d89bb89e9732346b1d9c42bd9439fc1756ccbf6263e66dd492c066","ca91758a5f0e49810ebf641cfa9cadae8b42ee326d9b0e663c2eea9ca51749d7","1527eb02a15b0988c239df0a8d21e3960375fc431740add3402551b8913ff3c2","d99a8619851f168989eb222276717a22608fc98734da3fc2de57b74f695136d6","ad6c897c80570cd3544c378de9aec077651da02edb320966a1e92a24b34526f5","d72588d7853732dcbf1c5186389458d6a123dbe8f19cede386f424ba32afef8f","de0541b716cd138c87a796f259883a1c9794fc68ec3f5f7778ff9e0613859c05","47595460b73d788d6294b215d376fded84583696dcadd522d26fcffb5147b0bd","1906f0be92468440d7ab4b26dcced83ce978a939c64806cc75e4f484e9b649c0","d137f974150c32ccdad190f331cdd0b8acf68a18d8f473b86e90b092eac8ec06","1558c642e03689d42843e7b047b9c20e77ee09ab388ff854484db5dcfbed11da","2d3dc11421426b03636da8afc8ef715caa0a8e9b7b4623b314f4a1936c44f14f","7b9806ac7cd54f9ee5170b1da84dfedc752541a073ecca325fb99123d0182576","bc75f464330a330e214bd37afa050cff44f4a74565c9d2bf7c5afbb73ecc6ddc","3969985016b15890111bf0e3a468fd0c449c99d53f543789315cb51a675e3223","a173e9be041c233603b1aa145d8c18d09ac69e4291b4ba76256ec773d3934164","6ba292cc3df1eea225aacb3182f9b0b8eab9d8637a9c698af1e5b58aa5492e9e","f9f55a2f6f8e07d3ea10e1154a0fc129ec72c21e57ffe9b8720bbb80ce6407ac","07d39f8730ecb29d631e57e8a8a7491fc10d7ef8b0eb035781bdaf81b948e6b3","66ea2ca4caba80ab1ace4e661ed9eff6d7e2c2838f8b8e5801e73e30108f1aeb","cf802ef15265bde5e8c931459fc13d15fec46ebdfab3845b86d22897eb4cdf36","513dc812720ffd3f2ce2a709cf474177cfb4ec7e2386bf64a664e7b6946f1dae","376a324ad9678bc3d6cadf4bbef4ae7ea2624c8ebf4bc149064f4b4b4c00024c","43760728760f66940ad6012894dbf7808a9399628a7a21de89ce26389a94d98d","0fc31521f9064f13d54215d6ef35bafb61b68acd7e87f7bc53bb85d3404668f1","0cbfce53b86891a1581b878fb3361fb175cc866c98f7f446433e45f3e8befa26","e579636afe1fd2da1596a2ecd07134c973359c14ef96a357b4ec67e406d89113","c0a4f50a1c0623e1c0a311447b578314ad927feb4abbdcc71bacd573a7b9462b","34623a91c4f3f0f2203b06c51b37d229a3ef1007352bd5bcc41086370cca6e0b","8f405903772553f71e9cad2b830bb002c83cc1456a5da43439a9a5841ca42611","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","e05747a1c227cc4016ab8069fbffecec81ccd75c933112641243fa9b57a727a4","081c44b708018590fe9300d74889c78c72d444915c81adda1850c6bd7f393c2c","5ecbb68a59f7e45d450fa17399f254910a5b7b46940452fd6fd775b07b814de7","722745986f8325fecd8bf8a257e9483c3c71845c8e15aa88c36afab0cea84112","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","b096394821a4a2ecf4f5486d8e6417b36d53b75733fee9e7fc48072bdd0003bb","8b078be87832ebcd318d89d7d629349a452ecc8b02e4f49cfcfd7d883a162f17","88819391bc47dc1baece98bcf696c3be4356a1caed3ac5b8e2379e3ada6879b9","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","4ffb8b357abd704bfe3f0301bb556287063d5feb89b5d7ca301b013dadb57536","046a278aeadb95bacbcd257942d6bc35845f1fddcb6eaebf84cef1afeeb3df8d","d04598f25506fa473de73dff5b819cce92452a9853289bb0ec45bc052b2f1821","83298a5e9877723b46368eb3d301e4e58ea976c016f7d86803530397fc2991e4","b43fe27469461a1b41ca8d0f829ca9b838e1a5c16e2eaadfb7cc474f89737045","0d13964e90364cf9c9366f54a477be462a0caa65da21dc8b01cfa7743dbcfa29","bcf02e8cb54f4b47b3d1002dff222d95d66384f3b7063783002923f90a975003","613f44b5f7d3b4e97c4765619c7475ec398b382a0e2837f78a23ea10aaebebcc","75bb977edf840141773284bfb115d07e6ade61e2b4fa5a0e7a950989dff6a8f9","c95c4c59dbc5a3544792fa323c99ca828102b740f59d42ddfe73e3036a3795e4","10bb5735932e068d97be66e2a9f4c9cad28909c2e2ec240c16382e360ab9f5a2","6ed31a206ff729a5b6d1f9bf0be610fd89391a32d12f4cf2c31c00becc410cb3","4e1bf1a9917549de0154b3be216ef90a6d48a82535203d581936f009837e7681","5bbe0df99c276b5519bd048205790825cfda7ced546cae8b84cac9841a047f6b","ec9a719ce1d43b91d9233852eedb8af5c3c86cb5d4d3adaea05cbe4ef799e8e8","7c3009f92b4440ddbd73963da9755493be2839b670a6a8211664228897fae84a","06ebd2ece60c4e9ae574b54e07207ef8068dc587118a0581b32a4ca119dbd22f","c4e7ee6ec6641e1843911956c5130e245d4edf2ce2c556118e899b2b55cbf120","961c21d2d069d2796479edbcc2444184af57340774718754bbd4289e3fcfe671","608db8a96ce862cc485bf5a09ab85601ff9bd5d1819370085c1d226628cbecd1","69a365562f7bf70fd4084fd00be9b24e36e1c50256b8fbd858ba446a087973f1","e79728ebbf14b6ec50c424fc06979f606ab62b9bb23175934b8ecd9425a0de99","c784461aa15ee0d2f45aabcfb3787fbab10496a58c3abd1ff97ce5b309869d9d","87dcc84f02d2cc7cdb46b98037c35e3a0d15f3c787d4baafb882dceb5cb75508","c35791af1d03a4641dbf057344d664f49638ecea433dd9390725ba74066fd4be","ba22b345edddfd6c61ff21084d73aedd52f7a10a34dc7ec836d40485ad35da16","4737ef9dc0b1eade93a3b232a1e95cc6184218e11093dfaca21a06dfddbf2b7a","2ef6dd37cc81266c00017d913a7df2afd08c1460d12b03d6dca16da9bfc223fb","246dc1f2b8eec8f1958ea5b732506de1c3c644a204169b22141752483ecd866a","1e9f2568a49bf670407a0655688ccd786877130aa1b01380ab5e08bf39ecec99","7f97f70e289881321ea2436de2861f77f057d808ec1dab11d4ac598ff909a207","7634c88ae7b38d03fd0ade5e2c8e19f14007bd1993be62c17327a8713dd58a0c","dd2b16e1ec1330c667d1792a0f0422aa2b1a998688dd8fe590f885cf2c893094","5d8367cabd5cbe281bbcda28a6de7e18528aba6176c57152443f691e3d98e9fc","d5f3f96b702fea4ef43d2d1e509cc828bb371a433941c3edf7b6848064156ba8","fdc22d7d9734b3399be0f23dd42b02e05cdb2c0d2a4e3379b6ee05055715ff89","56f50fa2dc498886c43ae862b2510826a52a6fe01617ff421a8c6a8bf1ebde5f","ae181dfec3f0e17c9f9cc2ef244363ccf906a156b5f34c94771bd9b76294194d","0cc405abdf38bbb35cfaeffeb0ede5573aa76b85d9d27d52cf0c1d22fe7a4fde","8f2708247dd098a0534adb4f09430ce4180476201d0de345ec80674277584b90","97ef98f0e4ba2587acfd2fb0a4a5e331479d23930aa13c36fd8a97f776916ca2","5d98daf0099acefd70419619fb5c619a2d84df23513ee8c4a152acb0951d4ecc","09e85b9699cbe7e7cc02d9f45695573b240fc179210a7c7b555759f7d7fb7a92","a5986efa22663959db1b66cc46773bb833931f32caea80a74ed3f7b5423c31ba","715aa3bef40dff0a2d755f94488cf542a301029f15a8c67e8d1fdf354bec4818","73ae6bc28c5ade3c3e0aead32b7e2067e6f7116790e1c494287aa781b6a4a0d1","63e798b17923bec72aa0df3e0fe47655fcf118478ee491cf3994af8f2cb915f2","52247be203cb4b7da26b630eaf03b5cca922cd3fece8d0ad0ad415fad0d12e36","1550807603077885db4fb0a8c9e5bb0afd4e9922e1c68bb67d2fe89349c8fafc","264e746fbb19aacd50401db65786283ef3e707ba5e2deb4c05a979e7a180d0ca","7ca179cbc6da077b07a867114768868618766714da67ff9323a61adee8dd8825","f108e470e1422dfa1d43ac99c04f7199394d110d866c0d2f065d29d431a7d360","8a6dc76e1fd2572f345faee5a259d278ff254f9bdd67bcf4aac94f12bd137eda","8e03b7c67e71d70bd18cffe926ce7cd4e178a1c7978bdce90d49a4fcd2c9e2dc","8dd86af556f4918cb722a9eccf6c33872b6ca40d6b8887e514b80176da3bfcb8","1f3d2ab1d3cfcedcd55bee513dd68639a12d097d5df1ff3f2985165f7e2ccf8f","eb697bb6c2fb335ba1e91a36c5855a0bfd723aa8eddff6d6c33abc4537f9d7cb","3c451dbab67c47cd6c4b94e255d9fce668e3b5fd3c79382544c9d4293bcf8866","85822e961b336227996ded5feab90423c4177c190a2b8a96b894146459b85e11","7606055f3069abadb01fe27a4fcd154d3252fedfa4761275028b49cdbf84d12e","fdf39260344513263b4625ba2bfbd3595b7d11eaefc663709421b971ae72a92c","b3e44872e61f58a9f81953dede603d7145fff0b8e8e615e169a5cb1acfcc6768","c75960710aa2335fb9b5fad81c7c71eaaf9b31aa93bea338bfc2e264cd493e77","c9cdc07c2f33fe9f447ed18ed5de55f1b3a2602c4297bc47a63692734b7c27eb","9f02e010baf9b563722a7de783f8d0622dfb75f27ddf0c3708acc18d293f8e67","e4cc8831d820d301f38c530b4b2c7a9f16116e693b61c7fd68d8a4e042635455","87ac962cde0bc685bf52047820b05dbc7660d35e9784fff14b2a06165e4ab9ba","8fad449d6f6f2a95becb8c23a78838990418a391fa11fae539e3e891e7168021","d01df54dc12686dddfc0970554efc1096d062919b75eb218bfd0e9997d179f74","b901fb7fca57fe6a15eb3386e8fe9e08d86c9c637332f8ba00cdcb247cc71ab9","2be41e8798aa2720dcdc9c2f3ac9a1a1bebc2cebb297d7a00b3a863317524ffd","868f8bf3619fff7852ba895408fdf979838a3ec163eaad1e25d94fcd831a31b0","5e9f1a2ba53d7d8366a2e319a943a51d1d8b543a32769bd0b4f529224a0d4dc9","ebb5fe63b951d7a2ea026a2c079771cbc70d751fa3281cd4d2a3714c864f5377","4e46da7a42ef0580d2a7f530ce40fdc39d4da01c93a19ec089878a5d2dd39098","f2df4cfbe9a255cf0b3c8df91f2eb79832dc87792ea877c347c702d031ab03e0","76c059f75e35ac764e2f60387087c9ccb5f2d58f4c25c3d7334929b96a02269a","d745aaf77b250490714670c3b6ce847d7431a446a02e2264117ca734c5002aea","2955b846f26fb95c9a7ee3d8b4b1b5a556d6286f3acc7b391894356eed3d3e6e","cb35bc0d460934da3a51a2215861a332318cfe062384a5d98855da1884340352","0fd2e71acdd7bdc5d48d4cdea05eb50a6f4f1915f29027ed351032aa5406ecfb","34abadd9771163890c50f4fcfa0d56bd413594e39c1cffdd3c5fe8a01c3f7b40","172bc50cacd1995c6e994a73a8640f88c645e24ff5f25ccd04db9dfc071fbe5c","e1c87a8a9b59b511c882fd9a2b23c8d62e0b64b645f93d99fda7493717ca87bd","32178a24c7a79395c6c5f7f189ec735fe60c2ab604d1e6fb964d7717622e7e22","893c8bd678f5632582757da791020171e8f3988f93ea7dfea4b88aaf5b91b06a","bbcfac72a7b2ad10aefd1f24f203131dcbcf6bc64b8e8d7764f279c3c74c3525","bdb73f52284d8f2a6f0b3301f34dade21d7556402f194c260bd6012f89af5fff","7188604c5f18ac9ccda109dcd8f44eb7be87c8aae340edafa04eca6178985e91","b2ed1380abd77596d9b3bfea56c00fc2cb56085d570a3646b810d85e6f62b133","7da2c3c72ec000a6aa624624b99c7f51ab1be93d8f162c38fd72f6fac54fe0f5","e5500cbfae5b31a8b054e26f8c53f8e01105b034d4102826d7e8e8173015d524","5426fb8e0f156a85cc55485eda8c2b893317ed98b76cd2f34a8c372303462d79","cf51c46bda456dc812291f33f7e07fafa536e0a69ccc2d89091a36c48f0884f3","18abdc75530e0f2ce61d824c61a3314dd46d691723a81bfdb84bbf15d50593b9","005c1c37514d45a6ffd6d831bed41492afde74d31b3d69622b8fc86b699b9f9c",{"version":"16d29b7f186cd84a3649574e9e749798ae850d1d3f386c482d26f43171194ff8","signature":"14005ebfab7cbd0203557987fe40be55eec6c2588be358ac7c1e7857bbc410f0"},{"version":"9fda786ebe7bddd93b436225372ba866250bf18e0ced6bb7641db7197c8bfc09","signature":"fb27311e168da06c56269471d6f4acc7c9892a4beca245684ab644d4bc912787"},"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","932cade1c5802123b5831f332ad8a6297f0f7d14d0ee04f5a774408f393e2200",{"version":"10ea2ca8bd2cc91d49be2d0db635741d9fdff4d80693544f8e84db9c6ea7494a","signature":"0b5afef6bd6dff56ff8a450cd776016686025d29cd05e89102394f24f22113cf"},{"version":"bf772bad2889fef52a13c4f18472e811e73fcaf5dc8b065053d7d3c31e61dbf0","signature":"78966b29fb36c9d8255fb6aa143384b8f79fb0d49a13f60f2d7c9d676e75cc59"},{"version":"8857c839b414a5b7d93d28ef6e8df12569810e06ca9435bece4af3674dc05f9f","signature":"c53d81b45fcca5d77e6c83fc052442d287a6717a70ec8f7569cf3951b120b224"},{"version":"b599d621d255d1bd478cc3b3af972d88bd54f546f2823d3a52370a3303bafbf6","signature":"b539409ee006827f4ce6bef47d210f18b6ab1ec7dad6c20cc0bc974ef7c6d212"},{"version":"92df5e16259a02ba4b8a412122204de067ea377d2d19c4d3d6d2f1a1adf674bd","signature":"0f45e81a682a12a088b53eda7e6303a340370580886b503f32b9b6c91da9b047"},{"version":"ec30821f00de282961f6175736e6dcbc94fded41c880801f420ff6833e2def2e","signature":"932307bedfba47798fa2b138e1dda1f50791d9d7f9e4cf83a3f018b810efdac4"},{"version":"081311a94497112e4259f6069b9df6f581270752575a0bddef7e78880d937dde","signature":"67ad9fe9b0b81a7e2749ea52c9c0d5f5e6e80c237cf047185eb80e6d68c4bc81"},"c0b474f26cc3ff83a7bc92abc4f72ca78cbb22631a9cd5ce28f9ae68802f47b5","f68ad124636abfe69a69d6c87238656dbbf45d4fa0b483caa663cbe7211a67ca","7e4fc20c25807c9ef912f4c6d805ceae5399c5d962d445db2e3a4cff24a35793","7ddadda20f6682a87876634b7669d8e5c0e5c2341a1a1f94038f833c7b38ffcd","512ef5675be30738a2beeb4e151d03745c7b5207407a31806a81794a32732d53","831cea0366cc9085e7ded3a2d039a57d9fdda3670711f998a87d14d7b2fb45e1","39b470f069f0010b080280d2690679f04f962efd65ed3b452a1a67c834c51c0d",{"version":"2ac381c2287e45f820e7c427669996106a950b3a71b159c6268c1b0a0a310a9e","signature":"316d8b695a6bbf44871b25065a9a8fbff7ff2ab31b4bda3990bf31ca80c2aa31"},"f482240ce8f5dc0cf549182852aeeb981d441e9e0dbbfce27f6ed994bf838cdc","0d0cf4ba65d991a80a1dedf125c1f49647886663dd9382821445b6a82a081271","f0efe4a3bb6f870b91c1e5617d6a7c7fe6088992e61ff0402c324b8983e8afa5","ed524546447c86e2a43cb70e65d740e841dab2968c1110a41c3982c1b40145bf","480c00c45a6c360d1ffb1fc049c8906a15d83a169424368ddf00ac548c424fc0","e3266512232a9e24996f8765983cd12d26fb4cc4394c41b09f5ed30ecdbe9cd7","dda691ae752be3a280934c6eb3467185f99ef4d832db3e9f695a8aeaf73b8248","3cc81e4d4a0b21a22e7a06c440613c65bd56c3c4b9108c38cf8594e62a2a7659","46ea81d6dcd21009556bb97fe0f54f6631de44fabb142ef857512f3f3c8ff714","88c339bbc94fb6a4b34e5c584120eaa0ca0f5491e3dcf249346f613467d92adb","22a5f25a05ac18d080b3b6745eb81e6979ae9997c5257db56830858ab1fd0fad","c4a6885e3f20bb3ee4edb810b98548feb43179df923c4d3b4069af5828b22f34","0ae38bb1d163e91f9b9228f4c2d3f1eaddb7014c0730d1a591fc58378af8ae35",{"version":"8ee8ac7c3bf5c170d655088b9b32f9dd968c57c5b90c16b99e5f190ad2aca6b6","signature":"59674ecf94af4a3883984a40165d106971ffcc7ef4080f5b1e1b5c402f7714d8"},{"version":"0824c81b3c42c1dd4db8fce2f13b9834e284c123f9c646e5da0aa2e175cf3022","signature":"9dea472adac4a0af06bc215276763b0d4ce1c726bd1fd6b8709ddb32b77749e1"},{"version":"71fb46c506006f1967e7f4bf80e48939a943245876026508be5d695b41411bed","signature":"90a17908ba188b01a64b3d563a6a206145fbf196dfd351b569b7b30a398d183c"},{"version":"45beb64908ba5fda5d2505a7fb913ed2d00ef51ae1f7596cfcd6db12943720e5","signature":"5bad7b2211795e2863864f38465c8573638eb22d9be095275ea93f93c6090c55"},"e9b48596baefe465d46567a4beccd564035024a154d99f54c7fed02380707333","54fee7d009c1e7b95a9cd151cff895742b036e25972e95a90ae503d613406e8c","c1eedeccaf93904fd835f40b8cbd0456c356151ab0455391453e0a60df53c9e2","e758fea4a022a74afa1b528f55d808b386ce94145e9892a647e719914db6505f","a664a7ae7dbb76fceec16b51f7e0c0ba9fff99fd23684a3f18eaa5fa63e20143","abdfc7c18170da5f29e68ed537649182ea272334a627957a285d5eb93ab89454","ddbe783c6450ee420215b6d437cb6abce125a4872350cd9498e2a999a2ed5745",{"version":"6cb8f751176e3190e9384d455ed6915178e854fa6e1e5e8a2125eb5e74c5c3ab","signature":"1b224bd457565d3b3c2745005c91e0065280671830ee5a8c52d97ee18d5a5b56"},{"version":"ba990b6ec98d32b5aecf423ad7650b88401af3e82b28977eb8d5222fc3d85b91","signature":"80994bea834aa30be64251af042ae1fc8e04994c4c446f0aea71ab219ec64d41"},{"version":"dc10907e5d2cd07e38adef0928d8ec2c3a9212f9ace1ae38f5b3c705a60c4a54","signature":"f438e918876ce08248eeea3147fc9cafd454b5e6731e37c36bed9542ed0a8075"},{"version":"30492db5e1b5d7958cea7d730caad25adee113a7f53ea365e9314f5a83d39758","signature":"338d143a7a62a20217d97fb70baa0ad9d5d263459ace32add41e284421afd60e"},{"version":"8deadf5c8d72fb9bd02564f8c00ca8529be2fd154c565f54e02b7c4c46c44993","signature":"6f3ee38e05fe88caea9a40c807987a2b6ab4d38d849a652cacd6c0fb6d7db837"},{"version":"1b4571c2aac162e8471e396005472ef6cd7754077799f8160931c910cd2a4362","signature":"a8bc0ccd0039ff0f896edef9322dc04fc7d4052133028d966807c5ac29c6c405"},{"version":"063e11d2e1bc14639f77344346a92feba03bb4e2d428750abb800d05136946ba","signature":"168b69a3c938bd3f94d77cda810d4b9dbf2de8867ced3aacf1407f6eb502d6fb"},{"version":"2d20ec78b1c5bd778f38e2aa7393dedcda16c69e0d9802b4c4228f5a0ea7dc7b","signature":"09958393fb4cee70234ead6e3ec16470e718819d2f54b42fe9d41a32783e2796"},{"version":"062058cd642c230bcf6091456399da5e07553b1d5c20f178b961759122a3c787","signature":"b4ee715a7bfa69433b68402b2a9b0814b584b20ca7538b4288cf27eaa61a847d"},{"version":"c418d9e00b3365127a80294bd16ff23fa3bfa44aa7bb7dc4bdee7c869c08723a","signature":"be70b50dffa564b1c506e069a28973b2fa9ead1abceb21010b1525d5d0364f72"},{"version":"66fb8cb099fdc23e9d12a78bce777c6c3e66e584eada5644fe0eb91e0e6f1559","signature":"5f724f08eeeea186ac1a42c477dafe68f70585670f2daa65a019d6d0e9fcd5ca"},{"version":"37c1e398768e380a6796e08c7bac8cb79dbccb9fd26da3e21661533e34810cdd","signature":"f07c6a628410ae9d4c455907710a54c988ecce5d114dd1fa29c474760cb5f955"},{"version":"6fb56fa1b85e88c507181d08e4d23a974e18743fb2111c81aa3df81af460fb92","signature":"f8e0e5339074148a9ac34ef3c643b30524336a66c79a18a7c7104852dc81957f"},{"version":"d914764afe0863257fbe7574cb8e3f239db4275c2de037f6233e7dbc01033f58","affectsGlobalScope":true},"acdc9fb9638a235a69bd270003d8db4d6153ada2b7ccbea741ade36b295e431e","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","d69a3298a197fe5d59edba0ec23b4abf2c8e7b8c6718eac97833633cd664e4c9",{"version":"a9544f6f8af0d046565e8dde585502698ebc99eef28b715bad7c2bded62e4a32","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"8b809082dfeffc8cc4f3b9c59f55c0ff52ba12f5ae0766cb5c35deee83b8552e","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","d4f9d3ae2fe1ae199e1c832cca2c44f45e0b305dfa2808afdd51249b6f4a5163","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"9c611eff81287837680c1f4496daf9e737d6f3a1ff17752207814b8f8e1265af","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","b5d4e3e524f2eead4519c8e819eaf7fa44a27c22418eff1b7b2d0ebc5fdc510d","afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","9bd8e5984676cf28ebffcc65620b4ab5cb38ab2ec0aac0825df8568856895653","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","5e8dc64e7e68b2b3ea52ed685cf85239e0d5fb9df31aabc94370c6bc7e19077b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"46755a4afc53df75f0bfce72259fb971daac826b0cdd8c4eaccad2755a817403","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7fa32887f8a97909fca35ebba3740f8caf8df146618d8fff957a3f89f67a2f6a","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","21c56c6e8eeacef15f63f373a29fab6a2b36e4705be7a528aae8c51469e2737b",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc"],"root":[218,219,[222,228],236,[250,253],[261,274]],"options":{"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"../dist","rootDir":"../src","strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[48],[48,49,50,51,52,53,69,70,71,72,73,74,75,76],[68],[68,70,72,73],[70,72],[50],[70,71],[55],[54,55,56,57,58,59,60,61,62,63,67],[61],[66],[229,230,231,232,233,234],[98],[101,103,104,105],[100,103],[103],[102],[64],[64,65],[84],[68,84,86,87],[84,86],[77,85,86,87,88,89,90,91,93,94],[77,79],[78,79,84,92],[77,84],[79,82,83,84],[77,95],[126],[66,77],[77,80,95,96,126,127,128,129,134,212,213,214,215,216],[127],[79,134],[96],[95],[134,141],[77,96],[95,145],[83,134,144,147],[77,217],[95,152],[134,154],[134,161],[95,165],[66,134,164,167],[95,174],[134,173,177,178,179,180,184,189],[135,136,137,142,143,146,148,149,150,153,155,156,157,158,162,163,166,168,169,170,171,175,190,192,193,196,197,202,204,209,210,211],[66,134,191],[134,195],[95,201],[134,200,203],[77,79,134,208],[77,81,84],[131,133],[126,130],[66,131,132],[77,83,84,95,96,126,128,173,215],[80,83,126,127,134,205,212,214],[100,111,112,114],[112,114,115],[98,99,113],[97,99,111,113,116,120,124,125],[106,107,108],[106,107],[107,108,109,110],[100,106],[100,106,107],[117,118,119],[100,111,117,118],[121,122,123],[100,111,121,122],[111,116,120,124],[99],[237,238,239],[220,242],[220],[237,238,239,240,241,242,243,244,245,247,248],[246],[220,240,241,242,243,244,245],[242,243,247],[77,84,95,257],[257,258,259],[77,84,257],[77,256],[255],[275],[310],[311,316,345],[312,323,324,331,342,353],[312,313,323,331],[314,354],[315,316,324,332],[316,342,350],[317,319,323,331],[310,318],[319,320],[323],[321,323],[310,323],[323,324,325,342,353],[323,324,325,338,342,345],[308,311,358],[319,323,326,331,342,353],[323,324,326,327,331,342,350,353],[326,328,342,350,353],[275,276,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360],[323,329],[330,353,358],[319,323,331,342],[332],[333],[310,334],[335,352,358],[336],[337],[323,338,339],[338,340,354,356],[311,323,342,343,344,345],[311,342,344],[342,343],[345],[346],[310,342],[323,348,349],[348,349],[316,331,342,350],[351],[331,352],[311,326,337,353],[316,354],[342,355],[330,356],[357],[311,316,323,325,334,342,353,356,358],[342,359],[78,79,138],[78,79,132,138,139,140],[78,83],[78,83,132,140,144],[78,83,140,144],[78,79,199],[78],[78,83,132,140,151],[78,83,140,151],[78,79,83,138,159],[78,79,132,140,160],[78,79,83,132,138,140,159,164],[78,79,83,140,164],[78,132,138,140,159,194],[78,138,159],[78,79,83,132,138,140,159,185,188,200],[78,79,83,138,159,185,186,188,199],[78,79,83,138,140,159,200],[78,79,81],[78,79,81,82,83,84,132,138,140,185,186,187,188,199,205,206,207],[78,79,81,82,83],[78,132,140,176],[78,83,140,173],[78,173],[78,79,132,140,173,178],[78,79,138,172],[78,79,132,140,173],[78,181],[78,182],[78,79,132,140,173,183],[78,138,159,173,181,182,185,186,187,188],[78,130,138,140,159,185,186,188,198],[78,138,185,186,187,188,206],[78,138,185,186,187,188],[78,159],[78,130,138,185,186,187],[78,186],[92],[285,289,353],[285,342,353],[280],[282,285,350,353],[331,350],[361],[280,361],[282,285,331,353],[277,278,281,284,311,323,342,353],[277,283],[281,285,311,345,353,361],[311,361],[301,311,361],[279,280,361],[285],[279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307],[285,292,293],[283,285,293,294],[284],[277,280,285],[285,289,293,294],[289],[283,285,288,353],[277,282,283,285,289,292],[311,342],[280,285,301,311,358,361],[95,249,250,251,252,253,254,260,274],[68,77,84,95,126,217,218,219,222,225,226,227,228,235],[220,221],[220,221,222,223,224],[220,221,225],[220,221,224,225],[220,221,222,225],[249],[47,218,250,274],[250,261],[217,225,227],[251],[68,217,274],[95,217,220,236,249,251],[77,95,126,217,219,222,225,226,227,228],[220,221,222,223],[220,221,222,223,225],[217]],"referencedMap":[[49,1],[51,1],[77,2],[52,1],[69,3],[74,4],[75,5],[71,1],[70,6],[72,7],[76,7],[56,8],[68,9],[57,8],[60,8],[62,10],[63,8],[67,11],[235,12],[233,13],[106,14],[104,15],[105,16],[103,17],[65,18],[66,19],[85,20],[88,21],[89,22],[95,23],[90,3],[91,24],[93,25],[86,26],[94,27],[80,24],[96,28],[127,29],[128,30],[217,31],[129,32],[135,33],[136,34],[137,35],[142,36],[143,37],[146,38],[148,39],[149,37],[150,40],[153,41],[155,42],[156,37],[157,34],[158,35],[162,43],[163,37],[166,44],[168,45],[169,34],[170,35],[171,37],[175,46],[190,47],[212,48],[192,49],[193,37],[196,50],[197,40],[202,51],[204,52],[209,53],[210,37],[211,35],[213,54],[134,55],[131,56],[133,57],[216,58],[215,59],[115,60],[116,61],[114,62],[99,13],[126,63],[109,64],[108,65],[111,66],[107,67],[110,68],[120,69],[118,62],[119,70],[124,71],[122,62],[123,72],[125,73],[113,74],[240,75],[245,76],[242,77],[249,78],[247,79],[246,80],[248,81],[259,82],[260,83],[258,84],[257,85],[256,86],[275,87],[276,87],[310,88],[311,89],[312,90],[313,91],[314,92],[315,93],[316,94],[317,95],[318,96],[319,97],[320,97],[322,98],[321,99],[323,100],[324,101],[325,102],[309,103],[326,104],[327,105],[328,106],[361,107],[329,108],[330,109],[331,110],[332,111],[333,112],[334,113],[335,114],[336,115],[337,116],[338,117],[339,117],[340,118],[342,119],[344,120],[343,121],[345,122],[346,123],[347,124],[348,125],[349,126],[350,127],[351,128],[352,129],[353,130],[354,131],[355,132],[356,133],[357,134],[358,135],[359,136],[139,137],[141,138],[144,139],[147,140],[145,141],[205,142],[132,143],[83,143],[81,143],[151,139],[154,144],[152,145],[160,146],[161,147],[164,146],[167,148],[165,149],[181,143],[191,143],[195,150],[194,151],[203,152],[200,153],[201,154],[82,155],[208,156],[84,157],[172,137],[79,143],[159,143],[138,143],[177,158],[176,143],[174,159],[178,160],[179,161],[173,162],[180,163],[182,164],[183,165],[184,166],[189,167],[199,168],[186,143],[130,143],[207,169],[206,170],[198,171],[188,172],[187,173],[185,143],[221,174],[292,175],[299,176],[291,175],[306,177],[283,178],[282,179],[305,180],[300,181],[303,182],[285,183],[284,184],[280,185],[279,186],[302,187],[281,188],[286,189],[290,189],[308,190],[307,189],[294,191],[295,192],[297,193],[293,194],[296,195],[301,180],[288,196],[289,197],[298,198],[278,199],[304,200],[261,201],[236,202],[263,203],[225,204],[264,205],[227,206],[226,207],[266,203],[267,203],[222,203],[269,203],[272,203],[273,203],[223,203],[224,203],[252,208],[251,209],[262,210],[228,211],[253,212],[218,213],[250,214]],"exportedModulesMap":[[49,1],[51,1],[77,2],[52,1],[69,3],[74,4],[75,5],[71,1],[70,6],[72,7],[76,7],[56,8],[68,9],[57,8],[60,8],[62,10],[63,8],[67,11],[235,12],[233,13],[106,14],[104,15],[105,16],[103,17],[65,18],[66,19],[85,20],[88,21],[89,22],[95,23],[90,3],[91,24],[93,25],[86,26],[94,27],[80,24],[96,28],[127,29],[128,30],[217,31],[129,32],[135,33],[136,34],[137,35],[142,36],[143,37],[146,38],[148,39],[149,37],[150,40],[153,41],[155,42],[156,37],[157,34],[158,35],[162,43],[163,37],[166,44],[168,45],[169,34],[170,35],[171,37],[175,46],[190,47],[212,48],[192,49],[193,37],[196,50],[197,40],[202,51],[204,52],[209,53],[210,37],[211,35],[213,54],[134,55],[131,56],[133,57],[216,58],[215,59],[115,60],[116,61],[114,62],[99,13],[126,63],[109,64],[108,65],[111,66],[107,67],[110,68],[120,69],[118,62],[119,70],[124,71],[122,62],[123,72],[125,73],[113,74],[240,75],[245,76],[242,77],[249,78],[247,79],[246,80],[248,81],[259,82],[260,83],[258,84],[257,85],[256,86],[275,87],[276,87],[310,88],[311,89],[312,90],[313,91],[314,92],[315,93],[316,94],[317,95],[318,96],[319,97],[320,97],[322,98],[321,99],[323,100],[324,101],[325,102],[309,103],[326,104],[327,105],[328,106],[361,107],[329,108],[330,109],[331,110],[332,111],[333,112],[334,113],[335,114],[336,115],[337,116],[338,117],[339,117],[340,118],[342,119],[344,120],[343,121],[345,122],[346,123],[347,124],[348,125],[349,126],[350,127],[351,128],[352,129],[353,130],[354,131],[355,132],[356,133],[357,134],[358,135],[359,136],[139,137],[141,138],[144,139],[147,140],[145,141],[205,142],[132,143],[83,143],[81,143],[151,139],[154,144],[152,145],[160,146],[161,147],[164,146],[167,148],[165,149],[181,143],[191,143],[195,150],[194,151],[203,152],[200,153],[201,154],[82,155],[208,156],[84,157],[172,137],[79,143],[159,143],[138,143],[177,158],[176,143],[174,159],[178,160],[179,161],[173,162],[180,163],[182,164],[183,165],[184,166],[189,167],[199,168],[186,143],[130,143],[207,169],[206,170],[198,171],[188,172],[187,173],[185,143],[221,174],[292,175],[299,176],[291,175],[306,177],[283,178],[282,179],[305,180],[300,181],[303,182],[285,183],[284,184],[280,185],[279,186],[302,187],[281,188],[286,189],[290,189],[308,190],[307,189],[294,191],[295,192],[297,193],[293,194],[296,195],[301,180],[288,196],[289,197],[298,198],[278,199],[304,200],[261,208],[236,215],[263,203],[225,216],[264,217],[227,217],[226,217],[266,203],[267,203],[222,203],[269,203],[272,203],[273,203],[223,203],[224,203],[252,208],[262,210],[228,211],[218,218],[250,208]],"semanticDiagnosticsPerFile":[49,50,51,77,52,53,69,48,74,75,71,70,72,76,73,54,55,56,68,57,58,59,60,62,61,63,67,229,230,231,232,235,233,234,102,101,106,104,105,103,65,66,64,85,88,89,95,90,91,93,86,94,87,80,96,127,128,217,129,135,136,137,142,143,146,148,149,150,153,155,156,157,158,162,163,166,168,169,170,171,175,190,212,192,193,196,197,202,204,209,210,211,213,134,131,133,214,216,215,97,115,116,112,114,99,126,109,108,111,107,110,120,117,118,119,124,121,122,123,125,113,238,239,240,245,242,237,241,249,243,244,247,246,248,259,260,258,257,255,256,47,220,275,276,310,311,312,313,314,315,316,317,318,319,320,322,321,323,324,325,309,360,326,327,328,361,329,330,331,332,333,334,335,336,337,338,339,340,341,342,344,343,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,254,78,139,141,144,147,145,205,132,83,81,151,154,152,160,161,164,167,165,181,191,195,194,203,200,201,82,208,84,172,79,159,138,140,177,176,174,178,179,173,180,182,183,184,189,199,186,130,207,206,198,188,187,185,92,221,98,45,46,8,10,9,2,11,12,13,14,15,16,17,18,3,19,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,44,292,299,291,306,283,282,305,300,303,285,284,280,279,302,281,286,287,290,277,308,307,294,295,297,293,296,301,288,289,298,278,304,100,261,236,263,225,264,227,226,265,266,267,222,268,269,270,271,272,273,223,224,252,251,262,219,228,253,274,218,250]},"version":"5.4.5"} \ No newline at end of file +{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/crypto-js/index.d.ts","../node_modules/@cosmjs/amino/build/pubkeys.d.ts","../node_modules/@cosmjs/amino/build/addresses.d.ts","../node_modules/@cosmjs/amino/build/coins.d.ts","../node_modules/@cosmjs/amino/build/encoding.d.ts","../node_modules/@cosmjs/amino/build/multisig.d.ts","../node_modules/@cosmjs/amino/build/omitdefault.d.ts","../node_modules/@cosmjs/crypto/build/bip39.d.ts","../node_modules/@cosmjs/crypto/build/hash.d.ts","../node_modules/@cosmjs/crypto/build/hmac.d.ts","../node_modules/@cosmjs/crypto/build/keccak.d.ts","../node_modules/@cosmjs/crypto/build/libsodium.d.ts","../node_modules/@cosmjs/crypto/build/random.d.ts","../node_modules/@cosmjs/crypto/build/ripemd.d.ts","../node_modules/@cosmjs/crypto/build/secp256k1signature.d.ts","../node_modules/@cosmjs/crypto/build/secp256k1.d.ts","../node_modules/@cosmjs/crypto/build/sha.d.ts","../node_modules/@cosmjs/math/build/integers.d.ts","../node_modules/@cosmjs/math/build/decimal.d.ts","../node_modules/@cosmjs/math/build/index.d.ts","../node_modules/@cosmjs/crypto/build/slip10.d.ts","../node_modules/@cosmjs/crypto/build/index.d.ts","../node_modules/@cosmjs/amino/build/paths.d.ts","../node_modules/@cosmjs/amino/build/signdoc.d.ts","../node_modules/@cosmjs/amino/build/signature.d.ts","../node_modules/@cosmjs/amino/build/signer.d.ts","../node_modules/@cosmjs/amino/build/wallet.d.ts","../node_modules/@cosmjs/amino/build/secp256k1hdwallet.d.ts","../node_modules/@cosmjs/amino/build/secp256k1wallet.d.ts","../node_modules/@cosmjs/amino/build/stdtx.d.ts","../node_modules/@cosmjs/amino/build/index.d.ts","../node_modules/cosmjs-types/binary.d.ts","../node_modules/cosmjs-types/google/protobuf/any.d.ts","../node_modules/@cosmjs/stargate/build/accounts.d.ts","../node_modules/cosmjs-types/cosmos/crypto/multisig/v1beta1/multisig.d.ts","../node_modules/cosmjs-types/cosmos/tx/signing/v1beta1/signing.d.ts","../node_modules/cosmjs-types/cosmos/base/v1beta1/coin.d.ts","../node_modules/cosmjs-types/cosmos/tx/v1beta1/tx.d.ts","../node_modules/@cosmjs/proto-signing/build/decode.d.ts","../node_modules/@cosmjs/proto-signing/build/signer.d.ts","../node_modules/@cosmjs/proto-signing/build/wallet.d.ts","../node_modules/@cosmjs/proto-signing/build/directsecp256k1hdwallet.d.ts","../node_modules/@cosmjs/proto-signing/build/directsecp256k1wallet.d.ts","../node_modules/@cosmjs/proto-signing/build/paths.d.ts","../node_modules/@cosmjs/proto-signing/build/pubkey.d.ts","../node_modules/protobufjs/index.d.ts","../node_modules/@cosmjs/proto-signing/build/registry.d.ts","../node_modules/@cosmjs/proto-signing/build/signing.d.ts","../node_modules/@cosmjs/proto-signing/build/index.d.ts","../node_modules/@cosmjs/stargate/build/aminotypes.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/addresses.d.ts","../node_modules/readonly-date/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/dates.d.ts","../node_modules/xstream/index.d.ts","../node_modules/@cosmjs/json-rpc/build/id.d.ts","../node_modules/@cosmjs/json-rpc/build/compatibility.d.ts","../node_modules/@cosmjs/json-rpc/build/types.d.ts","../node_modules/@cosmjs/json-rpc/build/jsonrpcclient.d.ts","../node_modules/@cosmjs/json-rpc/build/parse.d.ts","../node_modules/@cosmjs/json-rpc/build/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/rpcclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/httpclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/httpbatchclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/websocketclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/rpcclients/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/types.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/comet38client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/comet38/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/tendermint34client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint34/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/requests.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/responses.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/tendermint37client.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermint37/index.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/tendermintclient.d.ts","../node_modules/@cosmjs/tendermint-rpc/build/index.d.ts","../node_modules/@cosmjs/stargate/build/events.d.ts","../node_modules/@cosmjs/stargate/build/fee.d.ts","../node_modules/@cosmjs/stargate/build/logs.d.ts","../node_modules/cosmjs-types/tendermint/crypto/proof.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/queryclient.d.ts","../node_modules/cosmjs-types/cosmos/base/query/v1beta1/pagination.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/utils.d.ts","../node_modules/@cosmjs/stargate/build/queryclient/index.d.ts","../node_modules/@cosmjs/stargate/build/modules/auth/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/messages.d.ts","../node_modules/cosmjs-types/google/protobuf/timestamp.d.ts","../node_modules/cosmjs-types/cosmos/authz/v1beta1/authz.d.ts","../node_modules/cosmjs-types/helpers.d.ts","../node_modules/cosmjs-types/cosmos/authz/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/authz/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/bank.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/messages.d.ts","../node_modules/cosmjs-types/cosmos/bank/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/bank/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/crisis/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/distribution.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/messages.d.ts","../node_modules/cosmjs-types/cosmos/distribution/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/distribution/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/evidence/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/messages.d.ts","../node_modules/cosmjs-types/google/protobuf/duration.d.ts","../node_modules/cosmjs-types/cosmos/feegrant/v1beta1/feegrant.d.ts","../node_modules/cosmjs-types/cosmos/feegrant/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/feegrant/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/gov.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/messages.d.ts","../node_modules/cosmjs-types/cosmos/gov/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/gov/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/group/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/group/messages.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/upgrade/v1beta1/upgrade.d.ts","../node_modules/cosmjs-types/ibc/core/client/v1/client.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/messages.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/transfer.d.ts","../node_modules/cosmjs-types/ibc/applications/transfer/v1/query.d.ts","../node_modules/cosmjs-types/ibc/core/channel/v1/channel.d.ts","../node_modules/cosmjs-types/ibc/core/channel/v1/query.d.ts","../node_modules/cosmjs-types/ibc/core/client/v1/query.d.ts","../node_modules/cosmjs-types/cosmos/ics23/v1/proofs.d.ts","../node_modules/cosmjs-types/ibc/core/commitment/v1/commitment.d.ts","../node_modules/cosmjs-types/ibc/core/connection/v1/connection.d.ts","../node_modules/cosmjs-types/ibc/core/connection/v1/query.d.ts","../node_modules/cosmjs-types/tendermint/version/types.d.ts","../node_modules/cosmjs-types/tendermint/crypto/keys.d.ts","../node_modules/cosmjs-types/tendermint/types/validator.d.ts","../node_modules/cosmjs-types/tendermint/types/types.d.ts","../node_modules/cosmjs-types/ibc/lightclients/tendermint/v1/tendermint.d.ts","../node_modules/@cosmjs/stargate/build/modules/ibc/queries.d.ts","../node_modules/cosmjs-types/cosmos/mint/v1beta1/mint.d.ts","../node_modules/@cosmjs/stargate/build/modules/mint/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/slashing/aminomessages.d.ts","../node_modules/cosmjs-types/cosmos/slashing/v1beta1/slashing.d.ts","../node_modules/cosmjs-types/cosmos/slashing/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/slashing/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/aminomessages.d.ts","../node_modules/cosmjs-types/tendermint/types/params.d.ts","../node_modules/cosmjs-types/tendermint/abci/types.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/staking.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/tx.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/messages.d.ts","../node_modules/cosmjs-types/cosmos/staking/v1beta1/query.d.ts","../node_modules/@cosmjs/stargate/build/modules/staking/queries.d.ts","../node_modules/cosmjs-types/cosmos/base/abci/v1beta1/abci.d.ts","../node_modules/cosmjs-types/tendermint/types/evidence.d.ts","../node_modules/cosmjs-types/tendermint/types/block.d.ts","../node_modules/cosmjs-types/cosmos/tx/v1beta1/service.d.ts","../node_modules/@cosmjs/stargate/build/modules/tx/queries.d.ts","../node_modules/@cosmjs/stargate/build/modules/vesting/aminomessages.d.ts","../node_modules/@cosmjs/stargate/build/modules/vesting/messages.d.ts","../node_modules/@cosmjs/stargate/build/modules/index.d.ts","../node_modules/@cosmjs/stargate/build/multisignature.d.ts","../node_modules/@cosmjs/stargate/build/search.d.ts","../node_modules/@cosmjs/stargate/build/stargateclient.d.ts","../node_modules/@cosmjs/stargate/build/signingstargateclient.d.ts","../node_modules/@cosmjs/stargate/build/index.d.ts","../src/utils.ts","../src/logger.ts","../node_modules/@types/long/index.d.ts","../node_modules/protobufjs/minimal.d.ts","../src/codec/cosmos/base/v1beta1/coin.ts","../src/codec/google/protobuf/duration.ts","../src/codec/google/protobuf/timestamp.ts","../src/codec/agent/v1/agent.ts","../src/codec/agent/v1/tx.ts","../src/codec/agent/v1/query.ts","../src/queries.ts","../node_modules/@cosmjs/encoding/build/ascii.d.ts","../node_modules/@cosmjs/encoding/build/base64.d.ts","../node_modules/@cosmjs/encoding/build/bech32.d.ts","../node_modules/@cosmjs/encoding/build/hex.d.ts","../node_modules/@cosmjs/encoding/build/rfc3339.d.ts","../node_modules/@cosmjs/encoding/build/utf8.d.ts","../node_modules/@cosmjs/encoding/build/index.d.ts","../src/client.ts","../node_modules/@keplr-wallet/types/build/currency.d.ts","../node_modules/@keplr-wallet/types/build/bech32.d.ts","../node_modules/@keplr-wallet/types/build/bip44.d.ts","../node_modules/@keplr-wallet/types/build/chain-info.d.ts","../node_modules/@keplr-wallet/types/build/ethereum.d.ts","../node_modules/@keplr-wallet/types/build/cosmjs.d.ts","../node_modules/@keplr-wallet/types/build/secretjs.d.ts","../node_modules/@keplr-wallet/types/build/settled.d.ts","../node_modules/@keplr-wallet/types/build/cosmjs-alt.d.ts","../node_modules/@keplr-wallet/types/build/wallet/keplr.d.ts","../node_modules/@keplr-wallet/types/build/wallet/index.d.ts","../node_modules/@keplr-wallet/types/build/window.d.ts","../node_modules/@keplr-wallet/types/build/index.d.ts","../src/walletoperation.ts","../src/encryptutils.ts","../src/default.config.ts","../src/socket.ts","../node_modules/bignumber.js/bignumber.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/node_modules/long/index.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/node_modules/long/umd/index.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/types.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/snap.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/cosmjs-offline-signer.d.ts","../node_modules/@leapwallet/cosmos-snap-provider/dist/index.d.ts","../src/chatclient.ts","../src/index.ts","../src/codec/agent/module/v1/module.ts","../src/codec/agent/v1/genesis.ts","../src/codec/amino/amino.ts","../src/codec/cosmos/app/v1alpha1/module.ts","../src/codec/cosmos/base/query/v1beta1/pagination.ts","../src/codec/cosmos/msg/v1/msg.ts","../src/codec/cosmos_proto/cosmos.ts","../src/codec/gogoproto/gogo.ts","../src/codec/google/api/annotations.ts","../src/codec/google/api/http.ts","../src/codec/google/protobuf/descriptor.ts","../src/types/global.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"87d693a4920d794a73384b3c779cadcb8548ac6945aa7a925832fe2418c9527a","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"70e345d53cc00be14d6f3024838bbff3ef0613d56b71ae3f796d7b2a0d473b07","affectsGlobalScope":true},"1b07773ee3ca8a62873be6a6b8b3aa29455c7b53db2cd4399ec4c6e362cef92b","bb82c2f6ce46746ddff974720459546747854d8e83a5ab2bf1ea5e11dbc535fe","3ef6c822342f271295a588afa47c00dc9c221a07e535342cfeaff6ff76fd384f","66f6d5d5d383ef51a7205d10543944c0be74b98190c16ec077ad40640f369147","684b95e60a1346cb54c7a45cb424091d97c9d573cecdaf2b5954a4d63d4bb5a9","4d708c75dad09198ae2b98abe2bfb355d7eb517c29e3f1ddd101fe2ca4884159","2321e25e34075320eeedbc5cd56051c9ce0341cb6a51e4faafb8f827d8045ceb","1cc2355816ba43eb2d6eb2670ac83d29a3ef02a01c09a4e2d5c0cc21e35249f7","ce47207ec1bd458b7966f0bbb5d9d15be0b00116fec4efda52ec8fcae8321586","a1f914818a2cc3bf3a693b99902d9cb0c1a6613df3cdd2bd8134cc63e695565c","3bd1d708281a33e7736f9c75c74221c077827d21c941f72ed3a8533b55fa5c7c","838c4154f06e964281fbfa88cf8cf8d76f194cbdd4d3f13e0a9e9a52e5faac6b","e32f79a7f77271780ecfcff5205300791429c2526b0b72307bb300ded25420c4","6ea46b5278f87aaf63479e72bb2d44474e458b4e603fa7ef46b3730c8a320073","22176ca5c9549edad90a532d5623a9b6ec552505178a7aeec3591f0b8f485d87","ba01df9e06cc51729deef602895fe3ceafd9ce2f17f2119db81eb67ff6ef7998","1dbb63933fe1404f9947c55f7f53308eb6fafd3b8646c4afc5f8a0376b1886ac","2dee5f01ddfa5375af2104e3d58e98afb881b63294187bab0a3df873a7bb2ad1","3dbe631d8fddc408346806ef5cf4195ba34a8ba1eb3cfde3aeffb813a38bffd2","8a0a3cdb27704e89ff1dbf93e43bb40bb2a96199a4483edc22fcf640a590a99d","3d444fa6e8057de7ea8ff4a9b737adc9538b2fcf7767969bdedc58bfc892582c","1906f0be92468440d7ab4b26dcced83ce978a939c64806cc75e4f484e9b649c0","070cec1d2c7f9ed3c8f02e2d471ed036f66d58e4fbea47b2bce35dddd9e921ef","3d135e55be21b9f506a4d7f441abf7fc159a54ad2b64556b0ba0f819695c3c47","85245e7f103feba8b3b9d2203ea9dd687545172564bdb275c5a70c0dea0abbfb","d72588d7853732dcbf1c5186389458d6a123dbe8f19cede386f424ba32afef8f","3babffecf1c0fb251b65b6167fa5909c87bd3e4c1a976d26a156a0cddb84f852","406a17e0a2cc399c644b5bc1fb807c9dc71f3247dac25a232864b13370d6f5e9","21f75cbb084ee0b35a8792e94e83d937532154a99c343a5bd3d86c26b5d7e0bb","d60853beea7347ada1f4774f9b727be6600a2dbbc510cbebfbd2276b8b47224a","9efc525cef2b9f35187095ce035d23ef8ab0090b672cd4a71cbffcef6884e80f","8dba17cdfdec5ae0a5db9b9038721f4655b6ddf2fdc589e5a90a16555a54d772","00f9fe96f593b39bd6b98fe4b4c8e4710887b1fbb01b39db453f1dbaf3dee090","c599f3670220bf7913f9f140ca85e66b50e0124050b3e4c629957ef0d9f59d23","0e4b7f73c3d89bb89e9732346b1d9c42bd9439fc1756ccbf6263e66dd492c066","ca91758a5f0e49810ebf641cfa9cadae8b42ee326d9b0e663c2eea9ca51749d7","1527eb02a15b0988c239df0a8d21e3960375fc431740add3402551b8913ff3c2","d99a8619851f168989eb222276717a22608fc98734da3fc2de57b74f695136d6","ad6c897c80570cd3544c378de9aec077651da02edb320966a1e92a24b34526f5","d72588d7853732dcbf1c5186389458d6a123dbe8f19cede386f424ba32afef8f","de0541b716cd138c87a796f259883a1c9794fc68ec3f5f7778ff9e0613859c05","47595460b73d788d6294b215d376fded84583696dcadd522d26fcffb5147b0bd","1906f0be92468440d7ab4b26dcced83ce978a939c64806cc75e4f484e9b649c0","d137f974150c32ccdad190f331cdd0b8acf68a18d8f473b86e90b092eac8ec06","1558c642e03689d42843e7b047b9c20e77ee09ab388ff854484db5dcfbed11da","2d3dc11421426b03636da8afc8ef715caa0a8e9b7b4623b314f4a1936c44f14f","7b9806ac7cd54f9ee5170b1da84dfedc752541a073ecca325fb99123d0182576","bc75f464330a330e214bd37afa050cff44f4a74565c9d2bf7c5afbb73ecc6ddc","3969985016b15890111bf0e3a468fd0c449c99d53f543789315cb51a675e3223","a173e9be041c233603b1aa145d8c18d09ac69e4291b4ba76256ec773d3934164","6ba292cc3df1eea225aacb3182f9b0b8eab9d8637a9c698af1e5b58aa5492e9e","f9f55a2f6f8e07d3ea10e1154a0fc129ec72c21e57ffe9b8720bbb80ce6407ac","07d39f8730ecb29d631e57e8a8a7491fc10d7ef8b0eb035781bdaf81b948e6b3","66ea2ca4caba80ab1ace4e661ed9eff6d7e2c2838f8b8e5801e73e30108f1aeb","cf802ef15265bde5e8c931459fc13d15fec46ebdfab3845b86d22897eb4cdf36","513dc812720ffd3f2ce2a709cf474177cfb4ec7e2386bf64a664e7b6946f1dae","376a324ad9678bc3d6cadf4bbef4ae7ea2624c8ebf4bc149064f4b4b4c00024c","43760728760f66940ad6012894dbf7808a9399628a7a21de89ce26389a94d98d","0fc31521f9064f13d54215d6ef35bafb61b68acd7e87f7bc53bb85d3404668f1","0cbfce53b86891a1581b878fb3361fb175cc866c98f7f446433e45f3e8befa26","e579636afe1fd2da1596a2ecd07134c973359c14ef96a357b4ec67e406d89113","c0a4f50a1c0623e1c0a311447b578314ad927feb4abbdcc71bacd573a7b9462b","34623a91c4f3f0f2203b06c51b37d229a3ef1007352bd5bcc41086370cca6e0b","8f405903772553f71e9cad2b830bb002c83cc1456a5da43439a9a5841ca42611","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","e05747a1c227cc4016ab8069fbffecec81ccd75c933112641243fa9b57a727a4","081c44b708018590fe9300d74889c78c72d444915c81adda1850c6bd7f393c2c","5ecbb68a59f7e45d450fa17399f254910a5b7b46940452fd6fd775b07b814de7","722745986f8325fecd8bf8a257e9483c3c71845c8e15aa88c36afab0cea84112","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","b096394821a4a2ecf4f5486d8e6417b36d53b75733fee9e7fc48072bdd0003bb","8b078be87832ebcd318d89d7d629349a452ecc8b02e4f49cfcfd7d883a162f17","88819391bc47dc1baece98bcf696c3be4356a1caed3ac5b8e2379e3ada6879b9","4147899a0f0822159cf1eb9944e62c69bb74c41dd2acce73b5f8444a8dcd26d3","4ffb8b357abd704bfe3f0301bb556287063d5feb89b5d7ca301b013dadb57536","046a278aeadb95bacbcd257942d6bc35845f1fddcb6eaebf84cef1afeeb3df8d","d04598f25506fa473de73dff5b819cce92452a9853289bb0ec45bc052b2f1821","83298a5e9877723b46368eb3d301e4e58ea976c016f7d86803530397fc2991e4","b43fe27469461a1b41ca8d0f829ca9b838e1a5c16e2eaadfb7cc474f89737045","0d13964e90364cf9c9366f54a477be462a0caa65da21dc8b01cfa7743dbcfa29","bcf02e8cb54f4b47b3d1002dff222d95d66384f3b7063783002923f90a975003","613f44b5f7d3b4e97c4765619c7475ec398b382a0e2837f78a23ea10aaebebcc","75bb977edf840141773284bfb115d07e6ade61e2b4fa5a0e7a950989dff6a8f9","c95c4c59dbc5a3544792fa323c99ca828102b740f59d42ddfe73e3036a3795e4","10bb5735932e068d97be66e2a9f4c9cad28909c2e2ec240c16382e360ab9f5a2","6ed31a206ff729a5b6d1f9bf0be610fd89391a32d12f4cf2c31c00becc410cb3","4e1bf1a9917549de0154b3be216ef90a6d48a82535203d581936f009837e7681","5bbe0df99c276b5519bd048205790825cfda7ced546cae8b84cac9841a047f6b","ec9a719ce1d43b91d9233852eedb8af5c3c86cb5d4d3adaea05cbe4ef799e8e8","7c3009f92b4440ddbd73963da9755493be2839b670a6a8211664228897fae84a","06ebd2ece60c4e9ae574b54e07207ef8068dc587118a0581b32a4ca119dbd22f","c4e7ee6ec6641e1843911956c5130e245d4edf2ce2c556118e899b2b55cbf120","961c21d2d069d2796479edbcc2444184af57340774718754bbd4289e3fcfe671","608db8a96ce862cc485bf5a09ab85601ff9bd5d1819370085c1d226628cbecd1","69a365562f7bf70fd4084fd00be9b24e36e1c50256b8fbd858ba446a087973f1","e79728ebbf14b6ec50c424fc06979f606ab62b9bb23175934b8ecd9425a0de99","c784461aa15ee0d2f45aabcfb3787fbab10496a58c3abd1ff97ce5b309869d9d","87dcc84f02d2cc7cdb46b98037c35e3a0d15f3c787d4baafb882dceb5cb75508","c35791af1d03a4641dbf057344d664f49638ecea433dd9390725ba74066fd4be","ba22b345edddfd6c61ff21084d73aedd52f7a10a34dc7ec836d40485ad35da16","4737ef9dc0b1eade93a3b232a1e95cc6184218e11093dfaca21a06dfddbf2b7a","2ef6dd37cc81266c00017d913a7df2afd08c1460d12b03d6dca16da9bfc223fb","246dc1f2b8eec8f1958ea5b732506de1c3c644a204169b22141752483ecd866a","1e9f2568a49bf670407a0655688ccd786877130aa1b01380ab5e08bf39ecec99","7f97f70e289881321ea2436de2861f77f057d808ec1dab11d4ac598ff909a207","7634c88ae7b38d03fd0ade5e2c8e19f14007bd1993be62c17327a8713dd58a0c","dd2b16e1ec1330c667d1792a0f0422aa2b1a998688dd8fe590f885cf2c893094","5d8367cabd5cbe281bbcda28a6de7e18528aba6176c57152443f691e3d98e9fc","d5f3f96b702fea4ef43d2d1e509cc828bb371a433941c3edf7b6848064156ba8","fdc22d7d9734b3399be0f23dd42b02e05cdb2c0d2a4e3379b6ee05055715ff89","56f50fa2dc498886c43ae862b2510826a52a6fe01617ff421a8c6a8bf1ebde5f","ae181dfec3f0e17c9f9cc2ef244363ccf906a156b5f34c94771bd9b76294194d","0cc405abdf38bbb35cfaeffeb0ede5573aa76b85d9d27d52cf0c1d22fe7a4fde","8f2708247dd098a0534adb4f09430ce4180476201d0de345ec80674277584b90","97ef98f0e4ba2587acfd2fb0a4a5e331479d23930aa13c36fd8a97f776916ca2","5d98daf0099acefd70419619fb5c619a2d84df23513ee8c4a152acb0951d4ecc","09e85b9699cbe7e7cc02d9f45695573b240fc179210a7c7b555759f7d7fb7a92","a5986efa22663959db1b66cc46773bb833931f32caea80a74ed3f7b5423c31ba","715aa3bef40dff0a2d755f94488cf542a301029f15a8c67e8d1fdf354bec4818","73ae6bc28c5ade3c3e0aead32b7e2067e6f7116790e1c494287aa781b6a4a0d1","63e798b17923bec72aa0df3e0fe47655fcf118478ee491cf3994af8f2cb915f2","52247be203cb4b7da26b630eaf03b5cca922cd3fece8d0ad0ad415fad0d12e36","1550807603077885db4fb0a8c9e5bb0afd4e9922e1c68bb67d2fe89349c8fafc","264e746fbb19aacd50401db65786283ef3e707ba5e2deb4c05a979e7a180d0ca","7ca179cbc6da077b07a867114768868618766714da67ff9323a61adee8dd8825","f108e470e1422dfa1d43ac99c04f7199394d110d866c0d2f065d29d431a7d360","8a6dc76e1fd2572f345faee5a259d278ff254f9bdd67bcf4aac94f12bd137eda","8e03b7c67e71d70bd18cffe926ce7cd4e178a1c7978bdce90d49a4fcd2c9e2dc","8dd86af556f4918cb722a9eccf6c33872b6ca40d6b8887e514b80176da3bfcb8","1f3d2ab1d3cfcedcd55bee513dd68639a12d097d5df1ff3f2985165f7e2ccf8f","eb697bb6c2fb335ba1e91a36c5855a0bfd723aa8eddff6d6c33abc4537f9d7cb","3c451dbab67c47cd6c4b94e255d9fce668e3b5fd3c79382544c9d4293bcf8866","85822e961b336227996ded5feab90423c4177c190a2b8a96b894146459b85e11","7606055f3069abadb01fe27a4fcd154d3252fedfa4761275028b49cdbf84d12e","fdf39260344513263b4625ba2bfbd3595b7d11eaefc663709421b971ae72a92c","b3e44872e61f58a9f81953dede603d7145fff0b8e8e615e169a5cb1acfcc6768","c75960710aa2335fb9b5fad81c7c71eaaf9b31aa93bea338bfc2e264cd493e77","c9cdc07c2f33fe9f447ed18ed5de55f1b3a2602c4297bc47a63692734b7c27eb","9f02e010baf9b563722a7de783f8d0622dfb75f27ddf0c3708acc18d293f8e67","e4cc8831d820d301f38c530b4b2c7a9f16116e693b61c7fd68d8a4e042635455","87ac962cde0bc685bf52047820b05dbc7660d35e9784fff14b2a06165e4ab9ba","8fad449d6f6f2a95becb8c23a78838990418a391fa11fae539e3e891e7168021","d01df54dc12686dddfc0970554efc1096d062919b75eb218bfd0e9997d179f74","b901fb7fca57fe6a15eb3386e8fe9e08d86c9c637332f8ba00cdcb247cc71ab9","2be41e8798aa2720dcdc9c2f3ac9a1a1bebc2cebb297d7a00b3a863317524ffd","868f8bf3619fff7852ba895408fdf979838a3ec163eaad1e25d94fcd831a31b0","5e9f1a2ba53d7d8366a2e319a943a51d1d8b543a32769bd0b4f529224a0d4dc9","ebb5fe63b951d7a2ea026a2c079771cbc70d751fa3281cd4d2a3714c864f5377","4e46da7a42ef0580d2a7f530ce40fdc39d4da01c93a19ec089878a5d2dd39098","f2df4cfbe9a255cf0b3c8df91f2eb79832dc87792ea877c347c702d031ab03e0","76c059f75e35ac764e2f60387087c9ccb5f2d58f4c25c3d7334929b96a02269a","d745aaf77b250490714670c3b6ce847d7431a446a02e2264117ca734c5002aea","2955b846f26fb95c9a7ee3d8b4b1b5a556d6286f3acc7b391894356eed3d3e6e","cb35bc0d460934da3a51a2215861a332318cfe062384a5d98855da1884340352","0fd2e71acdd7bdc5d48d4cdea05eb50a6f4f1915f29027ed351032aa5406ecfb","34abadd9771163890c50f4fcfa0d56bd413594e39c1cffdd3c5fe8a01c3f7b40","172bc50cacd1995c6e994a73a8640f88c645e24ff5f25ccd04db9dfc071fbe5c","e1c87a8a9b59b511c882fd9a2b23c8d62e0b64b645f93d99fda7493717ca87bd","32178a24c7a79395c6c5f7f189ec735fe60c2ab604d1e6fb964d7717622e7e22","893c8bd678f5632582757da791020171e8f3988f93ea7dfea4b88aaf5b91b06a","bbcfac72a7b2ad10aefd1f24f203131dcbcf6bc64b8e8d7764f279c3c74c3525","bdb73f52284d8f2a6f0b3301f34dade21d7556402f194c260bd6012f89af5fff","7188604c5f18ac9ccda109dcd8f44eb7be87c8aae340edafa04eca6178985e91","b2ed1380abd77596d9b3bfea56c00fc2cb56085d570a3646b810d85e6f62b133","7da2c3c72ec000a6aa624624b99c7f51ab1be93d8f162c38fd72f6fac54fe0f5","e5500cbfae5b31a8b054e26f8c53f8e01105b034d4102826d7e8e8173015d524","5426fb8e0f156a85cc55485eda8c2b893317ed98b76cd2f34a8c372303462d79","cf51c46bda456dc812291f33f7e07fafa536e0a69ccc2d89091a36c48f0884f3","18abdc75530e0f2ce61d824c61a3314dd46d691723a81bfdb84bbf15d50593b9","005c1c37514d45a6ffd6d831bed41492afde74d31b3d69622b8fc86b699b9f9c",{"version":"16d29b7f186cd84a3649574e9e749798ae850d1d3f386c482d26f43171194ff8","signature":"14005ebfab7cbd0203557987fe40be55eec6c2588be358ac7c1e7857bbc410f0"},{"version":"9fda786ebe7bddd93b436225372ba866250bf18e0ced6bb7641db7197c8bfc09","signature":"fb27311e168da06c56269471d6f4acc7c9892a4beca245684ab644d4bc912787"},"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","932cade1c5802123b5831f332ad8a6297f0f7d14d0ee04f5a774408f393e2200",{"version":"10ea2ca8bd2cc91d49be2d0db635741d9fdff4d80693544f8e84db9c6ea7494a","signature":"0b5afef6bd6dff56ff8a450cd776016686025d29cd05e89102394f24f22113cf"},{"version":"bf772bad2889fef52a13c4f18472e811e73fcaf5dc8b065053d7d3c31e61dbf0","signature":"78966b29fb36c9d8255fb6aa143384b8f79fb0d49a13f60f2d7c9d676e75cc59"},{"version":"8857c839b414a5b7d93d28ef6e8df12569810e06ca9435bece4af3674dc05f9f","signature":"c53d81b45fcca5d77e6c83fc052442d287a6717a70ec8f7569cf3951b120b224"},{"version":"b599d621d255d1bd478cc3b3af972d88bd54f546f2823d3a52370a3303bafbf6","signature":"b539409ee006827f4ce6bef47d210f18b6ab1ec7dad6c20cc0bc974ef7c6d212"},{"version":"92df5e16259a02ba4b8a412122204de067ea377d2d19c4d3d6d2f1a1adf674bd","signature":"0f45e81a682a12a088b53eda7e6303a340370580886b503f32b9b6c91da9b047"},{"version":"ec30821f00de282961f6175736e6dcbc94fded41c880801f420ff6833e2def2e","signature":"932307bedfba47798fa2b138e1dda1f50791d9d7f9e4cf83a3f018b810efdac4"},{"version":"081311a94497112e4259f6069b9df6f581270752575a0bddef7e78880d937dde","signature":"67ad9fe9b0b81a7e2749ea52c9c0d5f5e6e80c237cf047185eb80e6d68c4bc81"},"c0b474f26cc3ff83a7bc92abc4f72ca78cbb22631a9cd5ce28f9ae68802f47b5","f68ad124636abfe69a69d6c87238656dbbf45d4fa0b483caa663cbe7211a67ca","7e4fc20c25807c9ef912f4c6d805ceae5399c5d962d445db2e3a4cff24a35793","7ddadda20f6682a87876634b7669d8e5c0e5c2341a1a1f94038f833c7b38ffcd","512ef5675be30738a2beeb4e151d03745c7b5207407a31806a81794a32732d53","831cea0366cc9085e7ded3a2d039a57d9fdda3670711f998a87d14d7b2fb45e1","39b470f069f0010b080280d2690679f04f962efd65ed3b452a1a67c834c51c0d",{"version":"bf7083602e24fee560f266d12005055a3429ca7d541091ae442ec09e8d1f0ca8","signature":"2f020df76829b327be8d82314f8b17127faa1bfbb474a253ec5862ee3624c5c1"},"f482240ce8f5dc0cf549182852aeeb981d441e9e0dbbfce27f6ed994bf838cdc","0d0cf4ba65d991a80a1dedf125c1f49647886663dd9382821445b6a82a081271","f0efe4a3bb6f870b91c1e5617d6a7c7fe6088992e61ff0402c324b8983e8afa5","ed524546447c86e2a43cb70e65d740e841dab2968c1110a41c3982c1b40145bf","480c00c45a6c360d1ffb1fc049c8906a15d83a169424368ddf00ac548c424fc0","e3266512232a9e24996f8765983cd12d26fb4cc4394c41b09f5ed30ecdbe9cd7","dda691ae752be3a280934c6eb3467185f99ef4d832db3e9f695a8aeaf73b8248","3cc81e4d4a0b21a22e7a06c440613c65bd56c3c4b9108c38cf8594e62a2a7659","46ea81d6dcd21009556bb97fe0f54f6631de44fabb142ef857512f3f3c8ff714","88c339bbc94fb6a4b34e5c584120eaa0ca0f5491e3dcf249346f613467d92adb","22a5f25a05ac18d080b3b6745eb81e6979ae9997c5257db56830858ab1fd0fad","c4a6885e3f20bb3ee4edb810b98548feb43179df923c4d3b4069af5828b22f34","0ae38bb1d163e91f9b9228f4c2d3f1eaddb7014c0730d1a591fc58378af8ae35",{"version":"4e4a57127669db08db0b7e662977b8bb79e75c91c6d9a00322e93360f178452d","signature":"51854701f36663a0d1a6a1a373c3531e00315a176e55de8531b7d75f114eec6a"},{"version":"facaf69ab5a91144c836899cb9a2518b23002a067f89156f7602af840405420b","signature":"8706f4eb764361e2bc9cc6eef298ef52f39f8a889a3d1b24606560bde1a17d54"},{"version":"71fb46c506006f1967e7f4bf80e48939a943245876026508be5d695b41411bed","signature":"90a17908ba188b01a64b3d563a6a206145fbf196dfd351b569b7b30a398d183c"},{"version":"45beb64908ba5fda5d2505a7fb913ed2d00ef51ae1f7596cfcd6db12943720e5","signature":"5bad7b2211795e2863864f38465c8573638eb22d9be095275ea93f93c6090c55"},"e9b48596baefe465d46567a4beccd564035024a154d99f54c7fed02380707333","54fee7d009c1e7b95a9cd151cff895742b036e25972e95a90ae503d613406e8c","c1eedeccaf93904fd835f40b8cbd0456c356151ab0455391453e0a60df53c9e2","e758fea4a022a74afa1b528f55d808b386ce94145e9892a647e719914db6505f","a664a7ae7dbb76fceec16b51f7e0c0ba9fff99fd23684a3f18eaa5fa63e20143","abdfc7c18170da5f29e68ed537649182ea272334a627957a285d5eb93ab89454","ddbe783c6450ee420215b6d437cb6abce125a4872350cd9498e2a999a2ed5745",{"version":"9b29a4d84ddfb945ac2639ed090cf3f0027c98921cd092c460f6f14a2a002fb7","signature":"5dbfab666f1752f97e98e226e055b7874fe7224e92218bbf7f4ed3ad45964ac5"},{"version":"ba990b6ec98d32b5aecf423ad7650b88401af3e82b28977eb8d5222fc3d85b91","signature":"80994bea834aa30be64251af042ae1fc8e04994c4c446f0aea71ab219ec64d41"},{"version":"dc10907e5d2cd07e38adef0928d8ec2c3a9212f9ace1ae38f5b3c705a60c4a54","signature":"f438e918876ce08248eeea3147fc9cafd454b5e6731e37c36bed9542ed0a8075"},{"version":"30492db5e1b5d7958cea7d730caad25adee113a7f53ea365e9314f5a83d39758","signature":"338d143a7a62a20217d97fb70baa0ad9d5d263459ace32add41e284421afd60e"},{"version":"8deadf5c8d72fb9bd02564f8c00ca8529be2fd154c565f54e02b7c4c46c44993","signature":"6f3ee38e05fe88caea9a40c807987a2b6ab4d38d849a652cacd6c0fb6d7db837"},{"version":"1b4571c2aac162e8471e396005472ef6cd7754077799f8160931c910cd2a4362","signature":"a8bc0ccd0039ff0f896edef9322dc04fc7d4052133028d966807c5ac29c6c405"},{"version":"063e11d2e1bc14639f77344346a92feba03bb4e2d428750abb800d05136946ba","signature":"168b69a3c938bd3f94d77cda810d4b9dbf2de8867ced3aacf1407f6eb502d6fb"},{"version":"2d20ec78b1c5bd778f38e2aa7393dedcda16c69e0d9802b4c4228f5a0ea7dc7b","signature":"09958393fb4cee70234ead6e3ec16470e718819d2f54b42fe9d41a32783e2796"},{"version":"062058cd642c230bcf6091456399da5e07553b1d5c20f178b961759122a3c787","signature":"b4ee715a7bfa69433b68402b2a9b0814b584b20ca7538b4288cf27eaa61a847d"},{"version":"c418d9e00b3365127a80294bd16ff23fa3bfa44aa7bb7dc4bdee7c869c08723a","signature":"be70b50dffa564b1c506e069a28973b2fa9ead1abceb21010b1525d5d0364f72"},{"version":"66fb8cb099fdc23e9d12a78bce777c6c3e66e584eada5644fe0eb91e0e6f1559","signature":"5f724f08eeeea186ac1a42c477dafe68f70585670f2daa65a019d6d0e9fcd5ca"},{"version":"37c1e398768e380a6796e08c7bac8cb79dbccb9fd26da3e21661533e34810cdd","signature":"f07c6a628410ae9d4c455907710a54c988ecce5d114dd1fa29c474760cb5f955"},{"version":"6fb56fa1b85e88c507181d08e4d23a974e18743fb2111c81aa3df81af460fb92","signature":"f8e0e5339074148a9ac34ef3c643b30524336a66c79a18a7c7104852dc81957f"},{"version":"d914764afe0863257fbe7574cb8e3f239db4275c2de037f6233e7dbc01033f58","affectsGlobalScope":true},"acdc9fb9638a235a69bd270003d8db4d6153ada2b7ccbea741ade36b295e431e","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c",{"version":"7fd7fcbf021a5845bdd9397d4649fcf2fe17152d2098140fc723099a215d19ad","affectsGlobalScope":true},"df3389f71a71a38bc931aaf1ef97a65fada98f0a27f19dd12f8b8de2b0f4e461","d69a3298a197fe5d59edba0ec23b4abf2c8e7b8c6718eac97833633cd664e4c9",{"version":"a9544f6f8af0d046565e8dde585502698ebc99eef28b715bad7c2bded62e4a32","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"8b809082dfeffc8cc4f3b9c59f55c0ff52ba12f5ae0766cb5c35deee83b8552e","affectsGlobalScope":true},"bd3f5d05b6b5e4bfcea7739a45f3ffb4a7f4a3442ba7baf93e0200799285b8f1","4c775c2fccabf49483c03cd5e3673f87c1ffb6079d98e7b81089c3def79e29c6","d4f9d3ae2fe1ae199e1c832cca2c44f45e0b305dfa2808afdd51249b6f4a5163","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"9c611eff81287837680c1f4496daf9e737d6f3a1ff17752207814b8f8e1265af","affectsGlobalScope":true},"fe1fd6afdfe77976d4c702f3746c05fb05a7e566845c890e0e970fe9376d6a90","b5d4e3e524f2eead4519c8e819eaf7fa44a27c22418eff1b7b2d0ebc5fdc510d","afb1701fd4be413a8a5a88df6befdd4510c30a31372c07a4138facf61594c66d","9bd8e5984676cf28ebffcc65620b4ab5cb38ab2ec0aac0825df8568856895653","396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","5e8dc64e7e68b2b3ea52ed685cf85239e0d5fb9df31aabc94370c6bc7e19077b",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"c07146dbbbd8b347241b5df250a51e48f2d7bef19b1e187b1a3f20c849988ff1","45b1053e691c5af9bfe85060a3e1542835f8d84a7e6e2e77ca305251eda0cb3c","0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7",{"version":"ae5507fc333d637dec9f37c6b3f4d423105421ea2820a64818de55db85214d66","affectsGlobalScope":true},{"version":"46755a4afc53df75f0bfce72259fb971daac826b0cdd8c4eaccad2755a817403","affectsGlobalScope":true},"8abd0566d2854c4bd1c5e48e05df5c74927187f1541e6770001d9637ac41542e","54e854615c4eafbdd3fd7688bd02a3aafd0ccf0e87c98f79d3e9109f047ce6b8","d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","8221b00f271cf7f535a8eeec03b0f80f0929c7a16116e2d2df089b41066de69b","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","7fa32887f8a97909fca35ebba3740f8caf8df146618d8fff957a3f89f67a2f6a","9a9634296cca836c3308923ba7aa094fa6ed76bb1e366d8ddcf5c65888ab1024",{"version":"bddce945d552a963c9733db106b17a25474eefcab7fc990157a2134ef55d4954","affectsGlobalScope":true},{"version":"7052b7b0c3829df3b4985bab2fd74531074b4835d5a7b263b75c82f0916ad62f","affectsGlobalScope":true},"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","4b55240c2a03b2c71e98a7fc528b16136faa762211c92e781a01c37821915ea6","7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df",{"version":"94c086dff8dbc5998749326bc69b520e8e4273fb5b7b58b50e0210e0885dfcde","affectsGlobalScope":true},{"version":"f5b5dc128973498b75f52b1b8c2d5f8629869104899733ae485100c2309b4c12","affectsGlobalScope":true},"ebe5facd12fd7745cda5f4bc3319f91fb29dc1f96e57e9c6f8b260a7cc5b67ee","79bad8541d5779c85e82a9fb119c1fe06af77a71cc40f869d62ad379473d4b75","21c56c6e8eeacef15f63f373a29fab6a2b36e4705be7a528aae8c51469e2737b",{"version":"629d20681ca284d9e38c0a019f647108f5fe02f9c59ac164d56f5694fc3faf4d","affectsGlobalScope":true},"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc"],"root":[218,219,[222,228],236,[250,253],[261,274]],"options":{"declaration":true,"esModuleInterop":true,"inlineSourceMap":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"../dist","rootDir":"../src","strict":true,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"fileIdsList":[[48],[48,49,50,51,52,53,69,70,71,72,73,74,75,76],[68],[68,70,72,73],[70,72],[50],[70,71],[55],[54,55,56,57,58,59,60,61,62,63,67],[61],[66],[229,230,231,232,233,234],[98],[101,103,104,105],[100,103],[103],[102],[64],[64,65],[84],[68,84,86,87],[84,86],[77,85,86,87,88,89,90,91,93,94],[77,79],[78,79,84,92],[77,84],[79,82,83,84],[77,95],[126],[66,77],[77,80,95,96,126,127,128,129,134,212,213,214,215,216],[127],[79,134],[96],[95],[134,141],[77,96],[95,145],[83,134,144,147],[77,217],[95,152],[134,154],[134,161],[95,165],[66,134,164,167],[95,174],[134,173,177,178,179,180,184,189],[135,136,137,142,143,146,148,149,150,153,155,156,157,158,162,163,166,168,169,170,171,175,190,192,193,196,197,202,204,209,210,211],[66,134,191],[134,195],[95,201],[134,200,203],[77,79,134,208],[77,81,84],[131,133],[126,130],[66,131,132],[77,83,84,95,96,126,128,173,215],[80,83,126,127,134,205,212,214],[100,111,112,114],[112,114,115],[98,99,113],[97,99,111,113,116,120,124,125],[106,107,108],[106,107],[107,108,109,110],[100,106],[100,106,107],[117,118,119],[100,111,117,118],[121,122,123],[100,111,121,122],[111,116,120,124],[99],[237,238,239],[220,242],[220],[237,238,239,240,241,242,243,244,245,247,248],[246],[220,240,241,242,243,244,245],[242,243,247],[77,84,95,257],[257,258,259],[77,84,257],[77,256],[255],[275],[310],[311,316,345],[312,323,324,331,342,353],[312,313,323,331],[314,354],[315,316,324,332],[316,342,350],[317,319,323,331],[310,318],[319,320],[323],[321,323],[310,323],[323,324,325,342,353],[323,324,325,338,342,345],[308,311,358],[319,323,326,331,342,353],[323,324,326,327,331,342,350,353],[326,328,342,350,353],[275,276,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360],[323,329],[330,353,358],[319,323,331,342],[332],[333],[310,334],[335,352,358],[336],[337],[323,338,339],[338,340,354,356],[311,323,342,343,344,345],[311,342,344],[342,343],[345],[346],[310,342],[323,348,349],[348,349],[316,331,342,350],[351],[331,352],[311,326,337,353],[316,354],[342,355],[330,356],[357],[311,316,323,325,334,342,353,356,358],[342,359],[78,79,138],[78,79,132,138,139,140],[78,83],[78,83,132,140,144],[78,83,140,144],[78,79,199],[78],[78,83,132,140,151],[78,83,140,151],[78,79,83,138,159],[78,79,132,140,160],[78,79,83,132,138,140,159,164],[78,79,83,140,164],[78,132,138,140,159,194],[78,138,159],[78,79,83,132,138,140,159,185,188,200],[78,79,83,138,159,185,186,188,199],[78,79,83,138,140,159,200],[78,79,81],[78,79,81,82,83,84,132,138,140,185,186,187,188,199,205,206,207],[78,79,81,82,83],[78,132,140,176],[78,83,140,173],[78,173],[78,79,132,140,173,178],[78,79,138,172],[78,79,132,140,173],[78,181],[78,182],[78,79,132,140,173,183],[78,138,159,173,181,182,185,186,187,188],[78,130,138,140,159,185,186,188,198],[78,138,185,186,187,188,206],[78,138,185,186,187,188],[78,159],[78,130,138,185,186,187],[78,186],[92],[285,289,353],[285,342,353],[280],[282,285,350,353],[331,350],[361],[280,361],[282,285,331,353],[277,278,281,284,311,323,342,353],[277,283],[281,285,311,345,353,361],[311,361],[301,311,361],[279,280,361],[285],[279,280,281,282,283,284,285,286,287,289,290,291,292,293,294,295,296,297,298,299,300,302,303,304,305,306,307],[285,292,293],[283,285,293,294],[284],[277,280,285],[285,289,293,294],[289],[283,285,288,353],[277,282,283,285,289,292],[311,342],[280,285,301,311,358,361],[95,249,250,251,252,253,254,260,274],[68,77,84,95,126,217,218,219,222,225,226,227,228,235],[220,221],[220,221,222,223,224],[220,221,225],[220,221,224,225],[220,221,222,225],[249],[47,218,250,274],[250,261],[217,225,227],[251],[68,217,274],[95,217,220,236,249,251],[77,95,126,217,219,222,225,226,227,228],[220,221,222,223],[220,221,222,223,225],[217]],"referencedMap":[[49,1],[51,1],[77,2],[52,1],[69,3],[74,4],[75,5],[71,1],[70,6],[72,7],[76,7],[56,8],[68,9],[57,8],[60,8],[62,10],[63,8],[67,11],[235,12],[233,13],[106,14],[104,15],[105,16],[103,17],[65,18],[66,19],[85,20],[88,21],[89,22],[95,23],[90,3],[91,24],[93,25],[86,26],[94,27],[80,24],[96,28],[127,29],[128,30],[217,31],[129,32],[135,33],[136,34],[137,35],[142,36],[143,37],[146,38],[148,39],[149,37],[150,40],[153,41],[155,42],[156,37],[157,34],[158,35],[162,43],[163,37],[166,44],[168,45],[169,34],[170,35],[171,37],[175,46],[190,47],[212,48],[192,49],[193,37],[196,50],[197,40],[202,51],[204,52],[209,53],[210,37],[211,35],[213,54],[134,55],[131,56],[133,57],[216,58],[215,59],[115,60],[116,61],[114,62],[99,13],[126,63],[109,64],[108,65],[111,66],[107,67],[110,68],[120,69],[118,62],[119,70],[124,71],[122,62],[123,72],[125,73],[113,74],[240,75],[245,76],[242,77],[249,78],[247,79],[246,80],[248,81],[259,82],[260,83],[258,84],[257,85],[256,86],[275,87],[276,87],[310,88],[311,89],[312,90],[313,91],[314,92],[315,93],[316,94],[317,95],[318,96],[319,97],[320,97],[322,98],[321,99],[323,100],[324,101],[325,102],[309,103],[326,104],[327,105],[328,106],[361,107],[329,108],[330,109],[331,110],[332,111],[333,112],[334,113],[335,114],[336,115],[337,116],[338,117],[339,117],[340,118],[342,119],[344,120],[343,121],[345,122],[346,123],[347,124],[348,125],[349,126],[350,127],[351,128],[352,129],[353,130],[354,131],[355,132],[356,133],[357,134],[358,135],[359,136],[139,137],[141,138],[144,139],[147,140],[145,141],[205,142],[132,143],[83,143],[81,143],[151,139],[154,144],[152,145],[160,146],[161,147],[164,146],[167,148],[165,149],[181,143],[191,143],[195,150],[194,151],[203,152],[200,153],[201,154],[82,155],[208,156],[84,157],[172,137],[79,143],[159,143],[138,143],[177,158],[176,143],[174,159],[178,160],[179,161],[173,162],[180,163],[182,164],[183,165],[184,166],[189,167],[199,168],[186,143],[130,143],[207,169],[206,170],[198,171],[188,172],[187,173],[185,143],[221,174],[292,175],[299,176],[291,175],[306,177],[283,178],[282,179],[305,180],[300,181],[303,182],[285,183],[284,184],[280,185],[279,186],[302,187],[281,188],[286,189],[290,189],[308,190],[307,189],[294,191],[295,192],[297,193],[293,194],[296,195],[301,180],[288,196],[289,197],[298,198],[278,199],[304,200],[261,201],[236,202],[263,203],[225,204],[264,205],[227,206],[226,207],[266,203],[267,203],[222,203],[269,203],[272,203],[273,203],[223,203],[224,203],[252,208],[251,209],[262,210],[228,211],[253,212],[218,213],[250,214]],"exportedModulesMap":[[49,1],[51,1],[77,2],[52,1],[69,3],[74,4],[75,5],[71,1],[70,6],[72,7],[76,7],[56,8],[68,9],[57,8],[60,8],[62,10],[63,8],[67,11],[235,12],[233,13],[106,14],[104,15],[105,16],[103,17],[65,18],[66,19],[85,20],[88,21],[89,22],[95,23],[90,3],[91,24],[93,25],[86,26],[94,27],[80,24],[96,28],[127,29],[128,30],[217,31],[129,32],[135,33],[136,34],[137,35],[142,36],[143,37],[146,38],[148,39],[149,37],[150,40],[153,41],[155,42],[156,37],[157,34],[158,35],[162,43],[163,37],[166,44],[168,45],[169,34],[170,35],[171,37],[175,46],[190,47],[212,48],[192,49],[193,37],[196,50],[197,40],[202,51],[204,52],[209,53],[210,37],[211,35],[213,54],[134,55],[131,56],[133,57],[216,58],[215,59],[115,60],[116,61],[114,62],[99,13],[126,63],[109,64],[108,65],[111,66],[107,67],[110,68],[120,69],[118,62],[119,70],[124,71],[122,62],[123,72],[125,73],[113,74],[240,75],[245,76],[242,77],[249,78],[247,79],[246,80],[248,81],[259,82],[260,83],[258,84],[257,85],[256,86],[275,87],[276,87],[310,88],[311,89],[312,90],[313,91],[314,92],[315,93],[316,94],[317,95],[318,96],[319,97],[320,97],[322,98],[321,99],[323,100],[324,101],[325,102],[309,103],[326,104],[327,105],[328,106],[361,107],[329,108],[330,109],[331,110],[332,111],[333,112],[334,113],[335,114],[336,115],[337,116],[338,117],[339,117],[340,118],[342,119],[344,120],[343,121],[345,122],[346,123],[347,124],[348,125],[349,126],[350,127],[351,128],[352,129],[353,130],[354,131],[355,132],[356,133],[357,134],[358,135],[359,136],[139,137],[141,138],[144,139],[147,140],[145,141],[205,142],[132,143],[83,143],[81,143],[151,139],[154,144],[152,145],[160,146],[161,147],[164,146],[167,148],[165,149],[181,143],[191,143],[195,150],[194,151],[203,152],[200,153],[201,154],[82,155],[208,156],[84,157],[172,137],[79,143],[159,143],[138,143],[177,158],[176,143],[174,159],[178,160],[179,161],[173,162],[180,163],[182,164],[183,165],[184,166],[189,167],[199,168],[186,143],[130,143],[207,169],[206,170],[198,171],[188,172],[187,173],[185,143],[221,174],[292,175],[299,176],[291,175],[306,177],[283,178],[282,179],[305,180],[300,181],[303,182],[285,183],[284,184],[280,185],[279,186],[302,187],[281,188],[286,189],[290,189],[308,190],[307,189],[294,191],[295,192],[297,193],[293,194],[296,195],[301,180],[288,196],[289,197],[298,198],[278,199],[304,200],[261,208],[236,215],[263,203],[225,216],[264,217],[227,217],[226,217],[266,203],[267,203],[222,203],[269,203],[272,203],[273,203],[223,203],[224,203],[252,208],[262,210],[228,211],[218,218],[250,208]],"semanticDiagnosticsPerFile":[49,50,51,77,52,53,69,48,74,75,71,70,72,76,73,54,55,56,68,57,58,59,60,62,61,63,67,229,230,231,232,235,233,234,102,101,106,104,105,103,65,66,64,85,88,89,95,90,91,93,86,94,87,80,96,127,128,217,129,135,136,137,142,143,146,148,149,150,153,155,156,157,158,162,163,166,168,169,170,171,175,190,212,192,193,196,197,202,204,209,210,211,213,134,131,133,214,216,215,97,115,116,112,114,99,126,109,108,111,107,110,120,117,118,119,124,121,122,123,125,113,238,239,240,245,242,237,241,249,243,244,247,246,248,259,260,258,257,255,256,47,220,275,276,310,311,312,313,314,315,316,317,318,319,320,322,321,323,324,325,309,360,326,327,328,361,329,330,331,332,333,334,335,336,337,338,339,340,341,342,344,343,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,254,78,139,141,144,147,145,205,132,83,81,151,154,152,160,161,164,167,165,181,191,195,194,203,200,201,82,208,84,172,79,159,138,140,177,176,174,178,179,173,180,182,183,184,189,199,186,130,207,206,198,188,187,185,92,221,98,45,46,8,10,9,2,11,12,13,14,15,16,17,18,3,19,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,44,292,299,291,306,283,282,305,300,303,285,284,280,279,302,281,286,287,290,277,308,307,294,295,297,293,296,301,288,289,298,278,304,100,261,236,263,225,264,227,226,265,266,267,222,268,269,270,271,272,273,223,224,252,251,262,219,228,253,274,218,250]},"version":"5.4.5"} \ No newline at end of file diff --git a/dist/chatClient.d.ts b/dist/chatClient.d.ts index 15f7c90..e646699 100644 --- a/dist/chatClient.d.ts +++ b/dist/chatClient.d.ts @@ -1,6 +1,5 @@ import { ChainInfo } from "@keplr-wallet/types"; interface ConfigOptions { - modelName: string; lockAmount?: string; chainInfo?: ChainInfo; walletName?: string; @@ -19,7 +18,6 @@ interface questionTypes { session_id?: string; } declare class ChatClient { - modelName: string; chainInfo: ChainInfo; lockAmount: string; singlePaymentAmount: string; @@ -36,7 +34,7 @@ declare class ChatClient { private assistantRoleName; private lastNesaClientPromise; private lastUserMinimumLockPromise; - private lastGetAgentInfoPromise; + private lastGetAgentInfoPromiseMap; private lastInitOfflineSignerPromise; private chatProgressReadable; private nesaClient; @@ -56,10 +54,10 @@ declare class ChatClient { checkSinglePaymentAmount(): string; requestChatQueue(readableStream: any, question: questionTypes): void; requestCloseHeartbeat(): void; - requestAgentInfo(result: any, readableStream: any): any; - checkSignBroadcastResult(readableStream?: any): Promise; + requestAgentInfo(result: any, readableStream: any, modelName: string): any; + checkSignBroadcastResult(readableStream?: any, modelName?: string): Promise; requestChatStatus(): Promise; requestSession(): Promise; - requestChat(question: questionTypes): Promise; + requestChat(question: questionTypes, modelName: string): Promise; } export default ChatClient; diff --git a/dist/chatClient.js b/dist/chatClient.js index 711072a..97e22a9 100644 --- a/dist/chatClient.js +++ b/dist/chatClient.js @@ -21,17 +21,19 @@ class ChatClient { this.isRegisterSessioning = false; this.agentUrl = ""; this.assistantRoleName = ""; - this.modelName = options?.modelName?.toLowerCase(); + // private lastGetAgentInfoPromise: any; + this.lastGetAgentInfoPromiseMap = {}; this.chainInfo = options.chainInfo || default_config_1.defaultChainInfo; this.lockAmount = options.lockAmount || default_config_1.defaultLockAmount; this.signaturePayment = {}; - this.singlePaymentAmount = options.singlePaymentAmount || default_config_1.defaultSinglePaymentAmount; + this.singlePaymentAmount = + options.singlePaymentAmount || default_config_1.defaultSinglePaymentAmount; this.lowBalance = options.lowBalance || default_config_1.defaultLowBalance; - this.lockAmountDenom = ''; - this.walletName = options.walletName || ''; - this.privateKey = options.privateKey || ''; + this.lockAmountDenom = ""; + this.walletName = options.walletName || ""; + this.privateKey = options.privateKey || ""; this.isEverRequestSession = false; - this.isBrowser = typeof window !== 'undefined'; + this.isBrowser = options.privateKey ? false : typeof window !== "undefined"; this.isBrowser && (window.nesaSdkVersion = default_config_1.sdkVersion); this.tokenPrice = 0; this.initWallet(); @@ -43,34 +45,24 @@ class ChatClient { if (this.isBrowser) { this.lastInitOfflineSignerPromise = new Promise(async (resolve, reject) => { try { - if (this.walletName === 'npm:@leapwallet/metamask-cosmos-snap') { - // await window?.ethereum.request({ - // method: 'wallet_requestSnaps', - // params: { - // 'npm:@leapwallet/metamask-cosmos-snap': {}, - // }, - // }); - await (0, cosmos_snap_provider_1.suggestChain)(this.chainInfo, { force: false }); + if (this.walletName === "npm:@leapwallet/metamask-cosmos-snap") { const offlineSigner = new cosmos_snap_provider_1.CosmjsOfflineSigner(this.chainInfo.chainId); this.offLinesigner = offlineSigner; resolve(this.offLinesigner); this.getNesaClient(); } else if (window?.keplr) { - const { keplr } = window; - await keplr.experimentalSuggestChain(this.chainInfo); - await keplr.enable(this.chainInfo.chainId); this.offLinesigner = window.getOfflineSigner(this.chainInfo.chainId); resolve(this.offLinesigner); this.getNesaClient(); } else { - console.log('No wallet installed, please install keplr or metamask wallet first'); - reject('No wallet installed, please install keplr or metamask wallet first'); + console.log("No wallet installed, please install keplr or metamask wallet first"); + reject("No wallet installed, please install keplr or metamask wallet first"); } } catch (error) { - console.log('initOfflineSigner-error: ', error); + console.log("initOfflineSigner-error: ", error); reject(error); } }); @@ -78,10 +70,10 @@ class ChatClient { else { this.lastInitOfflineSignerPromise = new Promise(async (resolve, reject) => { if (!this.privateKey) { - reject('In the node environment, please provide the privateKey'); + reject("In the node environment, please provide the privateKey"); } else { - const wallet = await proto_signing_1.DirectSecp256k1Wallet.fromKey(Buffer.from(this.privateKey, "hex"), 'nesa'); + const wallet = await proto_signing_1.DirectSecp256k1Wallet.fromKey(Buffer.from(this.privateKey, "hex"), "nesa"); this.offLinesigner = wallet; resolve(this.offLinesigner); this.getNesaClient(); @@ -93,7 +85,7 @@ class ChatClient { if (this.lastNesaClientPromise) { return this.lastNesaClientPromise; } - console.log('Init nesa client'); + console.log("Init nesa client"); this.lastNesaClientPromise = new Promise((resolve, reject) => { if (this.offLinesigner) { walletOperation_1.default.getNesaClient(this.chainInfo, this.offLinesigner) @@ -102,14 +94,14 @@ class ChatClient { this.getChainParams(client); }) .catch((error) => { - console.log('initNesaClientError: ', error); + console.log("initNesaClientError: ", error); this.lastNesaClientPromise = undefined; reject(error); }); } else { this.lastNesaClientPromise = undefined; - reject(new Error('Wallet connect error')); + reject(new Error("Wallet connect error")); } }); } @@ -117,35 +109,35 @@ class ChatClient { if (this.lastUserMinimumLockPromise) { return this.lastUserMinimumLockPromise; } - console.log('Init params'); - this.lastUserMinimumLockPromise = new Promise((resolve) => { - walletOperation_1.default.requestParams(nesaClient) - .then((params) => { - this.chatProgressReadable && this.chatProgressReadable.push({ + console.log("Init params"); + const getRequestParams = async () => { + try { + const params = await walletOperation_1.default.requestParams(nesaClient); + this.chatProgressReadable?.push({ code: 301, message: "Connected to Nesa chain", }); - resolve(params); - }) - .catch((error) => { - console.log('getChainParamsError: ', error); + return params; + } + catch (error) { this.lastUserMinimumLockPromise = undefined; - }); - }); + } + }; + this.lastUserMinimumLockPromise = getRequestParams(); } version() { return default_config_1.sdkVersion; } checkChainInfo() { - return this.chainInfo?.rpc - && this.chainInfo?.rest - && this.chainInfo?.feeCurrencies - && this.chainInfo?.feeCurrencies.length > 0 - && this.chainInfo?.feeCurrencies[0]?.coinMinimalDenom; + return (this.chainInfo?.rpc && + this.chainInfo?.rest && + this.chainInfo?.feeCurrencies && + this.chainInfo?.feeCurrencies.length > 0 && + this.chainInfo?.feeCurrencies[0]?.coinMinimalDenom); } getSignaturePayment() { if (this.signaturePayment[this.totalSignedPayment]) { - return ''; + return ""; } const signaturePayment = encryptUtils_1.default.signMessage(`${this.totalSignedPayment}${this.chainInfo.feeCurrencies[0].coinMinimalDenom}`, this.chatSeq, false); this.signaturePayment[this.totalSignedPayment] = signaturePayment; @@ -153,16 +145,24 @@ class ChatClient { } checkSinglePaymentAmount() { if (new bignumber_js_1.BigNumber(this.totalSignedPayment).isLessThanOrEqualTo(this.lowBalance)) { - this.totalSignedPayment = Number(new bignumber_js_1.BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).toFixed(0, 1)); + this.totalSignedPayment = Number(new bignumber_js_1.BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .toFixed(0, 1)); return this.getSignaturePayment(); } - if (new bignumber_js_1.BigNumber(this.totalSignedPayment).minus(this.totalUsedPayment).isLessThanOrEqualTo(this.lowBalance)) { + if (new bignumber_js_1.BigNumber(this.totalSignedPayment) + .minus(this.totalUsedPayment) + .isLessThanOrEqualTo(this.lowBalance)) { if (new bignumber_js_1.BigNumber(this.totalSignedPayment).isLessThan(this.totalUsedPayment)) { this.totalSignedPayment = Number(this.totalUsedPayment); return this.getSignaturePayment(); } - if (new bignumber_js_1.BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).isLessThanOrEqualTo(this.lockAmount)) { - this.totalSignedPayment = Number(new bignumber_js_1.BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).toFixed(0, 1)); + if (new bignumber_js_1.BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .isLessThanOrEqualTo(this.lockAmount)) { + this.totalSignedPayment = Number(new bignumber_js_1.BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .toFixed(0, 1)); } else { this.totalSignedPayment = Number(this.lockAmount); @@ -172,6 +172,7 @@ class ChatClient { return this.getSignaturePayment(); } requestChatQueue(readableStream, question) { + console.log("requestChatQueue"); this.isChatinging = true; this.chatSeq += 1; let messageTimes = 0; @@ -181,7 +182,7 @@ class ChatClient { ws = new WebSocket(this.agentUrl); } else { - const WebSocket = require('ws'); + const WebSocket = require("ws"); ws = new WebSocket(this.agentUrl); } ws.addEventListener("open", () => { @@ -189,11 +190,11 @@ class ChatClient { const questionStr = JSON.stringify({ stream: true, ...question, - model: question?.model?.toLowerCase() + model: question?.model?.toLowerCase(), }); if (question.messages && this.assistantRoleName) { question.messages = question.messages.map((item) => { - if (item.role === 'assistant') { + if (item.role === "assistant") { item.role = this.assistantRoleName; } return item; @@ -230,10 +231,11 @@ class ChatClient { } if (messageTimes === 0) { if (messageJson === "ack") { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 305, - message: "Conducting inference", - }); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 305, + message: "Conducting inference", + }); } else { ws.close(); @@ -252,19 +254,21 @@ class ChatClient { code: 203, message: messageJson?.content?.split("[DONE]")[1], }); - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); readableStream.push(null); this.isChatinging = false; } else { if (messageTimes === 1) { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 306, - message: "Receiving responses", - }); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 306, + message: "Receiving responses", + }); messageTimes += 1; } const signedMessage = this.checkSinglePaymentAmount(); @@ -275,7 +279,7 @@ class ChatClient { readableStream.push({ code: 200, message: messageJson?.content, - session_id: messageJson?.session_id || '', + session_id: messageJson?.session_id || "", total_payment, }); this.totalUsedPayment += this.tokenPrice; @@ -297,12 +301,13 @@ class ChatClient { } }; ws.onclose = (error) => { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); if (error?.reason) { - console.log('onclose: ', error?.reason); + console.log("onclose: ", error?.reason); readableStream.push({ code: 205, message: error?.reason, @@ -316,10 +321,12 @@ class ChatClient { } }; ws.onerror = (error) => { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }); + console.log("Websocket onERROR"); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); readableStream.push({ code: 204, message: error?.reason || "Error: Connection failed", @@ -333,11 +340,11 @@ class ChatClient { }; } catch (error) { - this.chatProgressReadable && this.chatProgressReadable.push({ + this.chatProgressReadable?.push({ code: 307, - message: "Task completed, wait for another query" + message: "Task completed, wait for another query", }); - console.log('websocketCatchError: ', error); + console.log("websocketCatchError: ", error); readableStream.push({ code: 207, message: error.message || "Error: Connection failed", @@ -351,96 +358,120 @@ class ChatClient { } } requestCloseHeartbeat() { + console.log("requestCloseHeartbeat"); socket_1.socket.forceClose = true; socket_1.socket.close(); + setTimeout(() => console.log("socket.socket_open", socket_1.socket.socket_open, { socket: socket_1.socket })); } - requestAgentInfo(result, readableStream) { - if (this.lastGetAgentInfoPromise) { - return this.lastGetAgentInfoPromise; + requestAgentInfo(result, readableStream, modelName) { + console.log("requestAgentInfo"); + // if (this.lastGetAgentInfoPromise) { + // console.log("requestAgentInfo same promise"); + // return this.lastGetAgentInfoPromise; + // } + if (this.lastGetAgentInfoPromiseMap[modelName]) { + console.log("requestAgentInfo same promise"); + return this.lastGetAgentInfoPromiseMap[modelName]; } - this.lastGetAgentInfoPromise = new Promise((resolve, reject) => { - walletOperation_1.default.requestAgentInfo(this.nesaClient, result?.account, this.modelName) + // console.log("requestAgentInfo promise creatoin"); + // this.lastGetAgentInfoPromise = new Promise( + this.lastGetAgentInfoPromiseMap[modelName] = new Promise((resolve, reject) => { + walletOperation_1.default.requestAgentInfo(this.nesaClient, result?.account, modelName) .then((agentInfo) => { if (agentInfo && agentInfo?.inferenceAgent) { const selectAgent = agentInfo?.inferenceAgent; let agentWsUrl = selectAgent.url; let agentHeartbeatUrl = selectAgent.url; if (selectAgent.url?.endsWith("/")) { - agentWsUrl = agentWsUrl + 'chat'; - agentHeartbeatUrl = agentHeartbeatUrl + 'heartbeat'; + agentWsUrl = agentWsUrl + "chat"; + agentHeartbeatUrl = agentHeartbeatUrl + "heartbeat"; } else { - agentWsUrl = agentWsUrl + '/chat'; - agentHeartbeatUrl = agentHeartbeatUrl + '/heartbeat'; + agentWsUrl = agentWsUrl + "/chat"; + agentHeartbeatUrl = agentHeartbeatUrl + "/heartbeat"; } let firstInitHeartbeat = true; - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 303, - message: "Connecting to the validator", - }); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 303, + message: "Connecting to the validator", + }); socket_1.socket.init({ ws_url: agentHeartbeatUrl, onopen: () => { if (firstInitHeartbeat) { this.agentUrl = agentWsUrl; this.isRegisterSessioning = false; - this.chatProgressReadable && this.chatProgressReadable.push({ + this.chatProgressReadable?.push({ code: 304, message: "Waiting for query", }); - readableStream && readableStream.push(null); + readableStream && readableStream?.push(null); firstInitHeartbeat = false; resolve(result); } }, onerror: () => { - readableStream && readableStream.push({ - code: 319, - message: 'Agent connection error: ' + selectAgent.url, - }); + readableStream && + readableStream.push({ + code: 319, + message: "Agent connection error: " + selectAgent.url, + }); readableStream && readableStream.push(null); reject(new Error("Agent heartbeat packet connection failed")); - } + }, }); } else { this.isRegisterSessioning = false; - readableStream && readableStream.push({ - code: 319, - message: 'Agent not found', - }); + readableStream && + readableStream.push({ + code: 319, + message: "Agent not found", + }); readableStream && readableStream.push(null); reject(new Error("No agent found")); } }) .catch((error) => { console.log("requestAgentInfoError: ", error); - this.lastGetAgentInfoPromise = undefined; - readableStream && readableStream.push({ - code: 319, - message: 'Agent connection error: ' + error?.message || error.toString() - }); + this.lastGetAgentInfoPromiseMap[modelName] = undefined; + // this.lastGetAgentInfoPromise = undefined; + readableStream && + readableStream.push({ + code: 319, + message: "Agent connection error: " + error?.message || + error.toString(), + }); readableStream && readableStream.push(null); reject(error); }); }); + return this.lastGetAgentInfoPromiseMap[modelName]; + // return this.lastGetAgentInfoPromise; } - checkSignBroadcastResult(readableStream) { + checkSignBroadcastResult(readableStream, modelName = "" + // isNew?: boolean + ) { return new Promise((resolve, reject) => { if (!this.nesaClient) { - reject(new Error('Please wait for the requestSession registration result')); + reject(new Error("Please wait for the requestSession registration result")); } else { - this.nesaClient.broadcastRegisterSession() + const reqSession = this.nesaClient.broadcastRegisterSession(modelName); + console.log("reqSession", reqSession); + reqSession .then((result) => { - resolve(this.requestAgentInfo(result, readableStream)); + console.log("broadcastRegisterSession after", modelName); + resolve(this.requestAgentInfo(result, readableStream, modelName)); }) .catch((error) => { - console.log('checkSignBroadcastResultError: ', error); - readableStream && readableStream.push({ - code: 318, - message: error?.message, - }); + console.log("checkSignBroadcastResultError: ", error); + readableStream && + readableStream.push({ + code: 318, + message: error?.message, + }); readableStream && readableStream.push(null); reject(error); }); @@ -464,13 +495,12 @@ class ChatClient { if (!this.checkChainInfo()) { reject(new Error("Invalid chainInfo, you must provide rpc, rest, feeCurrencies, feeCurrencies")); } - else if (!this.modelName) { - reject(new Error("ModelName is null")); - } else if (this.isRegisterSessioning) { reject(new Error("Registering session, please wait")); } - else if (!this.lockAmount || new bignumber_js_1.BigNumber(this.lockAmount).isNaN() || new bignumber_js_1.BigNumber(this.lockAmount).isLessThan(this.singlePaymentAmount)) { + else if (!this.lockAmount || + new bignumber_js_1.BigNumber(this.lockAmount).isNaN() || + new bignumber_js_1.BigNumber(this.lockAmount).isLessThan(this.singlePaymentAmount)) { reject(new Error("LockAmount invalid value or less than singlePaymentAmount")); } else { @@ -491,15 +521,17 @@ class ChatClient { // reject(new Error("LockAmount cannot be less than " + params?.params?.userMinimumLock?.amount)) readableStream.push({ code: 311, - message: "LockAmount cannot be less than " + params?.params?.userMinimumLock?.amount, + message: "LockAmount cannot be less than " + + params?.params?.userMinimumLock?.amount, }); } else { - walletOperation_1.default.registerSession(nesaClient, this.modelName, this.lockAmount, params?.params?.userMinimumLock?.denom, this.chainInfo, this.offLinesigner) + walletOperation_1.default.registerSession(nesaClient, "Orenguteng/Llama-3-8B-Lexi-Uncensored".toLowerCase(), this.lockAmount, params?.params?.userMinimumLock?.denom, this.chainInfo, this.offLinesigner) .then((result) => { - console.log('registerSession-result: ', result); - if (result?.transactionHash) { - this.chatProgressReadable && this.chatProgressReadable.push({ + console.log("registerSession-result: ", result); + if (Object.values(result)?.[0] + ?.transactionHash) { + this.chatProgressReadable?.push({ code: 302, message: "Choosing an inference validator", }); @@ -507,8 +539,9 @@ class ChatClient { code: 200, message: result?.transactionHash, }); - this.checkSignBroadcastResult(readableStream).catch(() => { }); - // resolve(result) + Object.keys(result).forEach((modelName) => { + this.checkSignBroadcastResult(readableStream, modelName).catch(() => { }); + }); } else { this.isRegisterSessioning = false; @@ -516,13 +549,12 @@ class ChatClient { code: 312, message: JSON.stringify(result), }); - // reject(result); } }) .catch((error) => { readableStream.push({ code: 313, - message: error?.message || error.toString() + message: error?.message || error.toString(), }); this.isRegisterSessioning = false; // reject(error); @@ -542,40 +574,41 @@ class ChatClient { code: 315, message: error?.message || error.toString(), }); - // reject(error) }); - }).catch((error) => { + }) + .catch((error) => { readableStream.push({ code: 316, message: error?.message || error.toString(), }); - // reject(error) }); - }).catch((error) => { + }) + .catch((error) => { readableStream.push({ code: 317, message: error?.message || error.toString(), }); - // reject(error) }); } }); } - requestChat(question) { + requestChat(question, modelName) { return new Promise((resolve, reject) => { if (!question?.model) { - reject(new Error('Model is required')); + reject(new Error("Model is required")); } else if (this.isRegisterSessioning) { reject(new Error("Registering session, please wait")); } else if (!this.isEverRequestSession) { reject(new Error("Please call requestSession first to complete Session registration")); + // } else if (!this.agentUrl) { } - else if (!this.agentUrl) { - this.checkSignBroadcastResult() + else { + console.log("requestChat modelName", modelName); + this.checkSignBroadcastResult(undefined, modelName) .then((result) => { - console.log('checkSignBroadcastResult-result: ', result); + console.log("checkSignBroadcastResult-result: ", result); const readableStream = new stream_browserify_1.Readable({ objectMode: true }); readableStream._read = () => { }; resolve(readableStream); @@ -590,19 +623,8 @@ class ChatClient { reject(error); }); } - else { - const readableStream = new stream_browserify_1.Readable({ objectMode: true }); - readableStream._read = () => { }; - resolve(readableStream); - if (this.isChatinging) { - this.chatQueue.push({ readableStream, question }); - } - else { - this.requestChatQueue(readableStream, question); - } - } }); } } exports.default = ChatClient; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGF0Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0VBQTBDO0FBQzFDLHdFQUFnRDtBQUNoRCx5REFBNkM7QUFFN0MscURBQWtJO0FBQ2xJLHFDQUFrQztBQUNsQywrQ0FBeUM7QUFDekMsMkVBQXFGO0FBQ3JGLHlEQUE2RDtBQXVCN0QsTUFBTSxVQUFVO0lBNkJkLFlBQVksT0FBc0I7UUFyQjFCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxzQkFBaUIsR0FBRyxFQUFFLENBQUE7UUFlNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxpQ0FBZ0IsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksa0NBQWlCLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLG1CQUFtQixJQUFJLDJDQUEwQixDQUFDO1FBQ3JGLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxrQ0FBaUIsQ0FBQTtRQUN6RCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQTtRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFBO1FBQzFD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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGF0Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsa0VBQTBDO0FBQzFDLHdFQUFnRDtBQUNoRCx5REFBNkM7QUFFN0MscURBTTBCO0FBQzFCLHFDQUFrQztBQUNsQywrQ0FBeUM7QUFDekMsMkVBRzBDO0FBQzFDLHlEQUE4RDtBQXNCOUQsTUFBTSxVQUFVO0lBNkJkLFlBQVksT0FBc0I7UUF0QjFCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsWUFBTyxHQUFHLENBQUMsQ0FBQztRQUNaLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQix1QkFBa0IsR0FBRyxDQUFDLENBQUM7UUFDdkIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxzQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFHL0Isd0NBQXdDO1FBQ2hDLCtCQUEwQixHQUFpQyxFQUFFLENBQUM7UUFZcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLGlDQUFnQixDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxrQ0FBaUIsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxtQkFBbUI7WUFDdEIsT0FBTyxDQUFDLG1CQUFtQixJQUFJLDJDQUEwQixDQUFDO1FBQzVELElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsSUFBSSxrQ0FBaUIsQ0FBQztRQUMxRCxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxVQUFVLEdB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 \ No newline at end of file diff --git a/dist/client.d.ts b/dist/client.d.ts index f80636d..ce4b544 100644 --- a/dist/client.d.ts +++ b/dist/client.d.ts @@ -2,11 +2,11 @@ import { OfflineSigner } from "@cosmjs/proto-signing"; import { SigningStargateClient, SigningStargateClientOptions, GasPrice, Event, QueryClient } from "@cosmjs/stargate"; import { CometClient } from "@cosmjs/tendermint-rpc"; -import { Logger } from './logger'; -import { VRF } from './codec/agent/v1/tx'; +import { Logger } from "./logger"; +import { VRF } from "./codec/agent/v1/tx"; import { Payment, Params, SessionStatus } from "./codec/agent/v1/agent"; import { Coin } from "./codec/cosmos/base/v1beta1/coin"; -import { AgentExtension } from './queries'; +import { AgentExtension } from "./queries"; import { QueryParamsResponse, QueryInferenceAgentResponse, QuerySessionResponse, QueryVRFSeedResponse, QuerySessionByAgentResponse } from "./codec/agent/v1/query"; import { StdFee } from "@cosmjs/amino"; export type NesaClientOptions = SigningStargateClientOptions & { @@ -35,15 +35,15 @@ export declare class NesaClient { readonly chainId: string; readonly estimatedBlockTime: number; readonly estimatedIndexerTime: number; - private broadcastPromise; - private signResult; + private signResultMap; + private broadcastPromiseMap; static connectWithSigner(endpoint: string, signer: OfflineSigner, senderAddress: string, chainId: string | undefined, options: NesaClientOptions): Promise; private constructor(); updateParams(authority: string, params: Params): Promise; registerInferenceAgent(url: string, version: Long): Promise; - broadcastRegisterSession(): any; - signRegisterSession(sessionId: string, modelName: string, fee: StdFee, lockBalance?: Coin, vrf?: VRF): Promise; - registerSession(sessionId: string, modelName: string, lockBalance?: Coin, vrf?: VRF): Promise; + broadcastRegisterSession(modelName1: string, signResult?: any): any; + signRegisterSession(sessionId: string, modelName: string | undefined, fee: StdFee, lockBalance?: Coin, vrf?: VRF): Promise; + registerSession(sessionId: string, lockBalance?: Coin, vrf?: VRF): Promise; submitPayment(sessionId: string, signature: Uint8Array, payment?: Payment): Promise; getParams(): Promise; getInferenceAgent(account: string, modelName: string, limit: Long, key: Uint8Array): Promise; diff --git a/dist/client.js b/dist/client.js index 6b44aac..a2f5bdb 100644 --- a/dist/client.js +++ b/dist/client.js @@ -14,12 +14,12 @@ const encoding_1 = require("@cosmjs/encoding"); function nesaRegistry() { return new proto_signing_1.Registry([ ...stargate_1.defaultRegistryTypes, - ['/agent.v1.MsgUpdateParams', tx_1.MsgUpdateParams], + ["/agent.v1.MsgUpdateParams", tx_1.MsgUpdateParams], // ['/agent.v1.MsgRegisterModel', MsgRegisterModel], - ['/agent.v1.MsgRegisterInferenceAgent', tx_1.MsgRegisterInferenceAgent], - ['/agent.v1.MsgRegisterSession', tx_1.MsgRegisterSession], - ['/agent.v1.MsgSubmitPayment', tx_1.MsgSubmitPayment], - ['/agent.v1.VRF', tx_1.VRF], + ["/agent.v1.MsgRegisterInferenceAgent", tx_1.MsgRegisterInferenceAgent], + ["/agent.v1.MsgRegisterSession", tx_1.MsgRegisterSession], + ["/agent.v1.MsgSubmitPayment", tx_1.MsgSubmitPayment], + ["/agent.v1.VRF", tx_1.VRF], ]); } class NesaClient { @@ -36,6 +36,10 @@ class NesaClient { return new NesaClient(signingClient, tmClient, senderAddress, chainId, options); } constructor(signingClient, tmClient, senderAddress, chainId, options) { + // private broadcastPromise: any; + // private signResult: any; + this.signResultMap = {}; + this.broadcastPromiseMap = {}; this.sign = signingClient; this.tm = tmClient; this.query = stargate_1.QueryClient.withExtensions(tmClient, queries_1.setupAgentExtension); @@ -48,17 +52,17 @@ class NesaClient { this.estimatedIndexerTime = options.estimatedIndexerTime; } async updateParams(authority, params) { - this.logger.verbose('Update Params'); + this.logger.verbose("Update Params"); const senderAddress = this.senderAddress; const updateParamsMsg = { - typeUrl: '/agent.v1.MsgUpdateParams', + typeUrl: "/agent.v1.MsgUpdateParams", value: tx_1.MsgUpdateParams.fromPartial({ authority, - params + params, }), }; - this.logger.debug('Update Params Message: ', updateParamsMsg); - const result = await this.sign.signAndBroadcast(senderAddress, [updateParamsMsg], 'auto'); + this.logger.debug("Update Params Message: ", updateParamsMsg); + const result = await this.sign.signAndBroadcast(senderAddress, [updateParamsMsg], "auto"); if ((0, stargate_1.isDeliverTxFailure)(result)) { throw new Error((0, utils_1.createDeliverTxFailureMessage)(result)); } @@ -74,14 +78,14 @@ class NesaClient { this.logger.verbose(`Register Inference Agent`); const senderAddress = this.senderAddress; const registerInferenceAgentMsg = { - typeUrl: '/agent.v1.MsgRegisterInferenceAgent', + typeUrl: "/agent.v1.MsgRegisterInferenceAgent", value: tx_1.MsgRegisterInferenceAgent.fromPartial({ account: senderAddress, url, - version + version, }), }; - this.logger.debug('Register Model Message: ', registerInferenceAgentMsg); + this.logger.debug("Register Model Message: ", registerInferenceAgentMsg); const result = await this.sign.signAndBroadcast(senderAddress, [registerInferenceAgentMsg], "auto"); if ((0, stargate_1.isDeliverTxFailure)(result)) { throw new Error((0, utils_1.createDeliverTxFailureMessage)(result)); @@ -89,18 +93,24 @@ class NesaClient { return { events: result.events, transactionHash: result.transactionHash, - height: result.height + height: result.height, }; } - broadcastRegisterSession() { - if (!this.signResult) { - return new Error('Please sign first'); + broadcastRegisterSession(modelName1, signResult) { + const modelName = "orenguteng/llama-3-8b-lexi-uncensored"; + console.log({ modelName, modelName1 }); + if (!signResult && !this.signResultMap[modelName]) { + console.log("broadcast error", this.signResultMap, signResult); + return new Error("Please sign first"); } - if (this.broadcastPromise) { - return this.broadcastPromise; + const res = signResult || this.signResultMap[modelName]; + console.log("this.broadcastPromiseMap", this.broadcastPromiseMap); + if (this.broadcastPromiseMap[modelName]) { + return this.broadcastPromiseMap[modelName]; } - this.broadcastPromise = new Promise((resolve, reject) => { - this.sign.broadcastTx(Uint8Array.from(tx_2.TxRaw.encode(this.signResult).finish())) + const promise = new Promise((resolve, reject) => { + this.sign + .broadcastTx(Uint8Array.from(tx_2.TxRaw.encode(res).finish())) .then((result) => { if ((0, stargate_1.isDeliverTxFailure)(result)) { reject(new Error((0, utils_1.createDeliverTxFailureMessage)(result))); @@ -110,53 +120,120 @@ class NesaClient { events: result.events, transactionHash: result.transactionHash, height: result.height, - account: tx_1.MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value).account + account: tx_1.MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value).account, }); } - }).catch((error) => { + }) + .catch((error) => { reject(error); }); }); + this.broadcastPromiseMap[modelName] = promise; + return promise; } - async signRegisterSession(sessionId, modelName, fee, lockBalance, vrf) { + async signRegisterSession(sessionId, modelName = "", fee, lockBalance, vrf) { + console.log("signRegisterSession"); this.logger.verbose(`Register Session`); const senderAddress = this.senderAddress; const registerSessionMsg = { - typeUrl: '/agent.v1.MsgRegisterSession', + typeUrl: "/agent.v1.MsgRegisterSession", value: tx_1.MsgRegisterSession.fromPartial({ account: senderAddress, sessionId, - modelName, + modelName: modelName, lockBalance, - vrf + vrf, }), + // value: MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Orenguteng/Llama-3-8B-Lexi-Uncensored".toLowerCase(), + // lockBalance, + // vrf, + // }), + // MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase(), + // lockBalance, + // vrf, + // }), }; + // const registerSessionMsg2 = { + // typeUrl: "/agent.v1.MsgRegisterSession", + // value: MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase(), + // lockBalance, + // vrf, + // }), + // }; const signResult = await this.sign.sign(senderAddress, [registerSessionMsg], fee, ""); - this.signResult = signResult; - const hex = Buffer.from(Uint8Array.from(tx_2.TxRaw.encode(this.signResult).finish())).toString('hex'); - this.broadcastPromise = undefined; - this.broadcastRegisterSession(); - return { - sessionId, - transactionHash: (0, encoding_1.toHex)((0, crypto_1.sha256)(Buffer.from(hex, 'hex'))).toUpperCase() - }; + // const hex = Buffer.from( + // Uint8Array.from(TxRaw.encode(signResult).finish()) + // ).toString("hex"); + // acc[modelName] = { + // sessionId, + // transactionHash: toHex(sha256(Buffer.from(hex, "hex"))).toUpperCase(), + // }; + this.broadcastPromiseMap[modelName] = undefined; + await this.broadcastRegisterSession(modelName, signResult); + // const signResult2 = await this.sign.sign( + // senderAddress, + // [registerSessionMsg2], + // fee, + // "" + // ); + // await this.broadcastRegisterSession(modelName, signResult2); + this.signResultMap[modelName] = signResult; + this.signResultMap["Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase()] = signResult; + // this.signResultMap["Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase()] = signResult2; + // const signResult2 = await this.sign.sign( + // senderAddress, + // [registerSessionMsg2], + // fee, + // "" + // ); + // console.log("signResult2", signResult2); + // this.signResult = signResult; + return Object.entries(this.signResultMap).reduce((acc, [modelName, signResult]) => { + const hex = Buffer.from(Uint8Array.from(tx_2.TxRaw.encode(signResult).finish())).toString("hex"); + acc[modelName] = { + sessionId, + transactionHash: (0, encoding_1.toHex)((0, crypto_1.sha256)(Buffer.from(hex, "hex"))).toUpperCase(), + }; + // this.broadcastPromiseMap[modelName] = undefined; + // this.broadcastRegisterSession(modelName, signResult); + return acc; + }, {}); + // const hex = Buffer.from( + // Uint8Array.from(TxRaw.encode(this.signResult).finish()) + // ).toString("hex"); + // return { + // sessionId, + // transactionHash: toHex(sha256(Buffer.from(hex, "hex"))).toUpperCase(), + // }; } async registerSession( // account: string, - sessionId, modelName, lockBalance, vrf) { + sessionId, + // modelName: string, + lockBalance, vrf) { + console.log("client -> registerSession"); this.logger.verbose(`Register Session`); const senderAddress = this.senderAddress; const registerSessionMsg = { - typeUrl: '/agent.v1.MsgRegisterSession', + typeUrl: "/agent.v1.MsgRegisterSession", value: tx_1.MsgRegisterSession.fromPartial({ account: senderAddress, sessionId, - modelName, + // modelName, lockBalance, - vrf + vrf, }), }; - this.logger.debug('Register Session Message: ', registerSessionMsg); + this.logger.debug("Register Session Message: ", registerSessionMsg); const result = await this.sign.signAndBroadcast(senderAddress, [registerSessionMsg], "auto"); if ((0, stargate_1.isDeliverTxFailure)(result)) { throw new Error((0, utils_1.createDeliverTxFailureMessage)(result)); @@ -165,7 +242,8 @@ class NesaClient { events: result.events, transactionHash: result.transactionHash, height: result.height, - account: tx_1.MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value).account + account: tx_1.MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value) + .account, }; } async submitPayment( @@ -174,15 +252,15 @@ class NesaClient { this.logger.verbose(`Submit Payment`); const senderAddress = this.senderAddress; const submitPaymentMsg = { - typeUrl: '/agent.v1.MsgSubmitPayment', + typeUrl: "/agent.v1.MsgSubmitPayment", value: tx_1.MsgSubmitPayment.fromPartial({ account: senderAddress, sessionId, signature, - payment + payment, }), }; - this.logger.debug('Submit Payment Message: ', submitPaymentMsg); + this.logger.debug("Submit Payment Message: ", submitPaymentMsg); const result = await this.sign.signAndBroadcast(senderAddress, [submitPaymentMsg], "auto"); if ((0, stargate_1.isDeliverTxFailure)(result)) { throw new Error((0, utils_1.createDeliverTxFailureMessage)(result)); @@ -198,6 +276,7 @@ class NesaClient { return result; } async getInferenceAgent(account, modelName, limit, key) { + console.log("getInferenceAgent", { account, modelName, limit, key }); const result = await this.query.agent.inferenceAgentRequest(account, modelName, limit, key); return result; } @@ -215,4 +294,4 @@ class NesaClient { } } exports.NesaClient = NesaClient; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBZ0U7QUFDaEUsK0NBUTBCO0FBQzFCLDJEQUFtRTtBQUNuRSxxQ0FBOEM7QUFDOUMsbUNBQXdEO0FBQ3hELDRDQVU2QjtBQUc3Qix1Q0FBZ0U7QUFZaEUsMERBQTBEO0FBQzFELDJDQUF1QztBQUN2QywrQ0FBeUM7QUFTekMsU0FBUyxZQUFZO0lBQ25CLE9BQU8sSUFBSSx3QkFBUSxDQUFDO1FBQ2xCLEdBQUcsK0JBQW9CO1FBQ3ZCLENBQUMsMkJBQTJCLEVBQUUsb0JBQWUsQ0FBQztRQUM5QyxvREFBb0Q7UUFDcEQsQ0FBQyxxQ0FBcUMsRUFBRSw4QkFBeUIsQ0FBQztRQUNsRSxDQUFDLDhCQUE4QixFQUFFLHVCQUFrQixDQUFDO1FBQ3BELENBQUMsNEJBQTRCLEVBQUUscUJBQWdCLENBQUM7UUFDaEQsQ0FBQyxlQUFlLEVBQUUsUUFBRyxDQUFDO0tBQ3ZCLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFlRCxNQUFhLFVBQVU7SUFnQmQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkMsUUFBZ0IsRUFDaEIsTUFBcUIsRUFDckIsYUFBcUIsRUFDckIsT0FBMkIsRUFDM0IsT0FBMEI7UUFFMUIsTUFBTSxhQUFhLEdBQUc7WUFDcEIsR0FBRyxPQUFPO1lBQ1YsUUFBUSxFQUFFLFlBQVksRUFBRTtTQUN6QixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDZCQUFZLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxnQ0FBcUIsQ0FBQyxnQkFBZ0IsQ0FDaEUsUUFBUSxFQUNSLE1BQU0sRUFDTixhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBZ0U7QUFDaEUsK0NBUTBCO0FBQzFCLDJEQUFtRTtBQUNuRSxxQ0FBOEM7QUFDOUMsbUNBQXdEO0FBQ3hELDRDQVU2QjtBQUc3Qix1Q0FBZ0U7QUFZaEUsMERBQTBEO0FBQzFELDJDQUF3QztBQUN4QywrQ0FBeUM7QUFTekMsU0FBUyxZQUFZO0lBQ25CLE9BQU8sSUFBSSx3QkFBUSxDQUFDO1FBQ2xCLEdBQUcsK0JBQW9CO1FBQ3ZCLENBQUMsMkJBQTJCLEVBQUUsb0JBQWUsQ0FBQztRQUM5QyxvREFBb0Q7UUFDcEQsQ0FBQyxxQ0FBcUMsRUFBRSw4QkFBeUIsQ0FBQztRQUNsRSxDQUFDLDhCQUE4QixFQUFFLHVCQUFrQixDQUFDO1FBQ3BELENBQUMsNEJBQTRCLEVBQUUscUJBQWdCLENBQUM7UUFDaEQsQ0FBQyxlQUFlLEVBQUUsUUFBRyxDQUFDO0tBQ3ZCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFlRCxNQUFhLFVBQVU7SUFpQmQsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FDbkMsUUFBZ0IsRUFDaEIsTUFBcUIsRUFDckIsYUFBcUIsRUFDckIsT0FBMkIsRUFDM0IsT0FBMEI7UUFFMUIsTUFBTSxhQUFhLEdBQUc7WUFDcEIsR0FBRyxPQUFPO1lBQ1YsUUFBUSxFQUFFLFlBQVksRUFBRTtTQUN6QixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDZCQUFZLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxnQ0FBcUIsQ0FBQyxnQkFBZ0IsQ0FDaEUsUUFBUSxFQUNSLE1BQU0sRUFDTixhQUFhLENBQ2QsQ0FBQztRQUNGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FB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 \ No newline at end of file diff --git a/dist/encryptUtils.d.ts b/dist/encryptUtils.d.ts index 8e10ded..9d82f9f 100644 --- a/dist/encryptUtils.d.ts +++ b/dist/encryptUtils.d.ts @@ -8,7 +8,14 @@ declare class EncryptUtils { }; static sortObjectKeys(obj: Record): Record; static signMessage(message: string, chatSeq: number, isQuestion?: boolean): string; - static requestVrf(client: any, offlineSigner: any): Promise; + static requestVrf(client: any, offlineSigner: any): Promise<{ + vrf: { + seed: any; + proof: any; + hashRandom: any[] | Uint8Array; + }; + sessionId: string; + }>; static signHeartbeat(message: string): string; } export default EncryptUtils; diff --git a/dist/encryptUtils.js b/dist/encryptUtils.js index 26fb5c3..c77a1d0 100644 --- a/dist/encryptUtils.js +++ b/dist/encryptUtils.js @@ -33,8 +33,8 @@ const walletOperation_1 = __importDefault(require("./walletOperation")); class EncryptUtils { static generateKey() { let privateKeyBuf; - if (typeof window === 'undefined') { - const crypto = require('crypto'); + if (typeof window === "undefined") { + const crypto = require("crypto"); privateKeyBuf = crypto.randomBytes(32); } else { @@ -100,7 +100,7 @@ class EncryptUtils { compressedPublicKey = "03" + this.publicKey.x; } const [hash, proof] = (0, utils_1.Evaluate)(this.privateKeyBuf, res.seed); - console.log('sessionId: ', compressedPublicKey); + console.log("sessionId: ", compressedPublicKey); resolve({ vrf: { seed: res.seed, @@ -115,7 +115,7 @@ class EncryptUtils { } }) .catch((err) => { - console.log('requestVrf-err: ', err); + console.log("requestVrf-err: ", err); reject(err); }); }); @@ -136,4 +136,4 @@ class EncryptUtils { } } exports.default = EncryptUtils; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VuY3J5cHRVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXNDO0FBQ3RDLG1DQUFrQztBQUNsQyxrRUFBb0Q7QUFDcEQsd0VBQWdEO0FBRWhELE1BQU0sWUFBWTtJQU9oQixNQUFNLENBQUMsV0FBVztRQUNoQixJQUFJLGFBQWEsQ0FBQTtRQUNqQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsbUNBQW1DLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsT0FBTztZQUNMLFVBQVU7WUFDVixTQUFTO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQXdCO1FBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUNwQixJQUFJLEVBQUU7aUJBQ04sTUFBTSxDQUFDLENBQUMsR0FBd0IsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDeEMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pELE9BQU8sR0FBRyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBZSxFQUFFLE9BQWUsRUFBRSxVQUFvQjtRQUN2RSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdFLFdBQVcsR0FBRyxHQUFHLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ2pELENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFHLE9BQU8sQ0FBQTtRQUN2QixDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxJQUFJLEdBQ04sU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUMvQixDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQzlCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdCLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDO1FBQzVELE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQVcsRUFBRSxhQUFrQjtRQUMvQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLHlCQUFlLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7aUJBQ2xELElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNkLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDbkQsSUFBSSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7b0JBQzdCLElBQUksVUFBVSxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDM0IsbUJBQW1CLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sbUJBQW1CLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUNoRCxDQUFDO29CQUNELE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsSUFBQSxnQkFBUSxFQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUM3RCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO29CQUMvQyxPQUFPLENBQUM7d0JBQ04sR0FBRyxFQUFFOzRCQUNILElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTs0QkFDZCxLQUFLOzRCQUNMLFVBQVUsRUFBRSxJQUFJO3lCQUNqQjt3QkFDRCxTQUFTLEVBQUUsbUJBQW1CO3FCQUMvQixDQUFDLENBQUE7Z0JBQ0osQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDLENBQUM7aUJBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDcEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWU7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxJQUFJLElBQUksR0FDTixTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDOUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDM0MsTUFBTSxhQUFhLEdBQUcsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDNUQsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBRUQsa0JBQWUsWUFBWSxDQUFDIn0= \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdFV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VuY3J5cHRVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQXNDO0FBQ3RDLG1DQUFtQztBQUNuQyxrRUFBb0Q7QUFDcEQsd0VBQWdEO0FBRWhELE1BQU0sWUFBWTtJQU9oQixNQUFNLENBQUMsV0FBVztRQUNoQixJQUFJLGFBQWEsQ0FBQztRQUNsQixJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsbUNBQW1DLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsT0FBTztZQUNMLFVBQVU7WUFDVixTQUFTO1NBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQXdCO1FBQzVDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFD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 \ No newline at end of file diff --git a/dist/walletOperation.d.ts b/dist/walletOperation.d.ts index 8aa4e36..b7aceb2 100644 --- a/dist/walletOperation.d.ts +++ b/dist/walletOperation.d.ts @@ -1,7 +1,7 @@ import { ChainInfo } from "@keplr-wallet/types"; declare class WalletOperation { static getNesaClient(chainInfo: ChainInfo, offlineSigner: any): Promise; - static registerSession(client: any, modelName: string, lockAmount: string, denom: string, chainInfo: ChainInfo, offlineSigner: any): Promise; + static registerSession(client: any, modelName: string | undefined, lockAmount: string, denom: string, chainInfo: ChainInfo, offlineSigner: any): Promise; static requestAgentInfo(client: any, agentName: string, modelName: string): Promise; static requestParams(client: any): Promise; static requestVrfSeed(client: any, offlineSigner: any): Promise; diff --git a/dist/walletOperation.js b/dist/walletOperation.js index 512fbe2..8061e95 100644 --- a/dist/walletOperation.js +++ b/dist/walletOperation.js @@ -13,41 +13,46 @@ class WalletOperation { if (offlineSigner) { const { chainId, rpc } = chainInfo; const account = (await offlineSigner.getAccounts())[0]; - client_1.NesaClient.connectWithSigner(rpc, offlineSigner, account.address, chainId, { - gasPrice: stargate_1.GasPrice.fromString(`0.025${chainInfo.feeCurrencies[0].coinMinimalDenom}`), - estimatedBlockTime: 6, - estimatedIndexerTime: 5, - }).then((client) => { + try { + const client = await client_1.NesaClient.connectWithSigner(rpc, offlineSigner, account.address, chainId, { + gasPrice: stargate_1.GasPrice.fromString(`0.025${chainInfo.feeCurrencies[0].coinMinimalDenom}`), + estimatedBlockTime: 6, + estimatedIndexerTime: 5, + }); resolve(client); - }).catch((error) => { - reject(error); - }); + } + catch (e) { + reject(e); + } } else { reject(new Error("No wallet installed, please install keplr or metamask wallet first")); } }); } - static registerSession(client, modelName, lockAmount, denom, chainInfo, offlineSigner) { + static registerSession(client, modelName = "", lockAmount, denom, chainInfo, offlineSigner) { encryptUtils_1.default.generateKey(); return new Promise(async (resolve, reject) => { const lockBalance = { denom: denom, amount: lockAmount }; - encryptUtils_1.default.requestVrf(client, offlineSigner).then(async (res) => { - const fee = { - amount: [{ denom: chainInfo.feeCurrencies[0].coinMinimalDenom, amount: "6" }], - gas: "200000", - }; - if (res?.vrf && res?.sessionId) { - resolve(client.signRegisterSession(res.sessionId, modelName, fee, lockBalance, res.vrf)); - } - else { - reject(new Error('Vrf seed is null')); - } - }); + const res = await encryptUtils_1.default.requestVrf(client, offlineSigner); + const res2 = await encryptUtils_1.default.requestVrf(client, offlineSigner); + console.log("res", { res1: res?.sessionId, res2: res2?.sessionId }); + const fee = { + amount: [ + { denom: chainInfo.feeCurrencies[0].coinMinimalDenom, amount: "6" }, + ], + gas: "200000", + }; + if (res?.vrf && res?.sessionId) { + resolve(client.signRegisterSession(res.sessionId, modelName, fee, lockBalance, res.vrf)); + } + else { + reject(new Error("Vrf seed is null")); + } }); } static requestAgentInfo(client, agentName, modelName) { - console.log('modelName: ', modelName); + console.log("modelName: ", modelName); return new Promise(async (resolve, reject) => { if (client) { resolve(client.getInferenceAgent(agentName, modelName, long_1.default.fromNumber(0), new Uint8Array())); @@ -75,4 +80,4 @@ class WalletOperation { } } exports.default = WalletOperation; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0T3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dhbGxldE9wZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFDQUFzQztBQUN0QywrQ0FBNEM7QUFFNUMsa0VBQTBDO0FBQzFDLGdEQUF3QjtBQUV4QixNQUFNLGVBQWU7SUFDbkIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFvQixFQUFFLGFBQWtCO1FBQzNELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztnQkFDbkMsTUFBTSxPQUFPLEdBQWdCLENBQUMsTUFBTSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEUsbUJBQVUsQ0FBQyxpQkFBaUIsQ0FDMUIsR0FBRyxFQUNILGFBQWEsRUFDYixPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sRUFDUDtvQkFDRSxRQUFRLEVBQUUsbUJBQVEsQ0FBQyxVQUFVLENBQzNCLFFBQVEsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUN0RDtvQkFDRCxrQkFBa0IsRUFBRSxDQUFDO29CQUNyQixvQkFBb0IsRUFBRSxDQUFDO2lCQUN4QixDQUNGLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDakIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDZixDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsSUFB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 \ No newline at end of file +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0T3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dhbGxldE9wZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHFDQUFzQztBQUN0QywrQ0FBNEM7QUFFNUMsa0VBQTBDO0FBQzFDLGdEQUF3QjtBQUV4QixNQUFNLGVBQWU7SUFDbkIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxTQUFvQixFQUFFLGFBQWtCO1FBQzNELE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLGFBQWEsRUFBRSxDQUFDO2dCQUNsQixNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztnQkFDbkMsTUFBTSxPQUFPLEdBQWdCLENBQUMsTUFBTSxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFcEUsSUFBSSxDQUFDO29CQUNILE1BQU0sTUFBTSxHQUFHLE1BQU0sbUJBQVUsQ0FBQyxpQkFBaUIsQ0FDL0MsR0FBRyxFQUNILGFBQWEsRUFDYixPQUFPLENBQUMsT0FBTyxFQUNmLE9BQU8sRUFDUDt3QkFDRSxRQUFRLEVBQUUsbUJBQVEsQ0FBQyxVQUFVLENBQzNCLFFBQVEsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUN0RDt3QkFDRCxrQkFBa0IsRUFBRSxDQUFDO3dCQUNyQixvQkFBb0IsRUFBRSxDQUFDO3FCQUN4QixDQUNGLENBQUM7b0JBRUYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNsQixDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUNKLElBQUksS0FBSyxDQUNQLG9FQUFvRSxD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 \ No newline at end of file diff --git a/src/chatClient.ts b/src/chatClient.ts index f66bedb..83ae66a 100644 --- a/src/chatClient.ts +++ b/src/chatClient.ts @@ -1,36 +1,43 @@ import EncryptUtils from "./encryptUtils"; import WalletOperation from "./walletOperation"; import { Readable } from "stream-browserify"; -import { ChainInfo } from "@keplr-wallet/types" -import { defaultChainInfo, defaultLockAmount, defaultSinglePaymentAmount, defaultLowBalance, sdkVersion } from "./default.config"; +import { ChainInfo } from "@keplr-wallet/types"; +import { + defaultChainInfo, + defaultLockAmount, + defaultSinglePaymentAmount, + defaultLowBalance, + sdkVersion, +} from "./default.config"; import { socket } from "./socket"; -import { BigNumber } from 'bignumber.js'; -import { CosmjsOfflineSigner, suggestChain } from '@leapwallet/cosmos-snap-provider'; -import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing" +import { BigNumber } from "bignumber.js"; +import { + CosmjsOfflineSigner, + // suggestChain, +} from "@leapwallet/cosmos-snap-provider"; +import { DirectSecp256k1Wallet } from "@cosmjs/proto-signing"; interface ConfigOptions { - modelName: string; lockAmount?: string; chainInfo?: ChainInfo; walletName?: string; singlePaymentAmount?: string; lowBalance?: string; - privateKey?: string + privateKey?: string; } interface questionTypes { - messages: any - model: string - stream?: boolean - frequency_penalty?: any - presence_penalty?: any - temperature?: any - top_p?: any + messages: any; + model: string; + stream?: boolean; + frequency_penalty?: any; + presence_penalty?: any; + temperature?: any; + top_p?: any; session_id?: string; } class ChatClient { - public modelName: string; public chainInfo: ChainInfo; public lockAmount: string; public singlePaymentAmount: string; @@ -44,130 +51,138 @@ class ChatClient { private isChatinging = false; private isRegisterSessioning = false; private agentUrl = ""; - private assistantRoleName = "" - private lastNesaClientPromise: any - private lastUserMinimumLockPromise: any - private lastGetAgentInfoPromise: any - private lastInitOfflineSignerPromise: any - private chatProgressReadable: any - private nesaClient: any - private offLinesigner: any + private assistantRoleName = ""; + private lastNesaClientPromise: any; + private lastUserMinimumLockPromise: any; + // private lastGetAgentInfoPromise: any; + private lastGetAgentInfoPromiseMap: { [modelName: string]: any } = {}; + private lastInitOfflineSignerPromise: any; + private chatProgressReadable: any; + private nesaClient: any; + private offLinesigner: any; private signaturePayment: any; - private isBrowser: boolean - private privateKey: string - private isEverRequestSession: boolean - private tokenPrice: number + private isBrowser: boolean; + private privateKey: string; + private isEverRequestSession: boolean; + private tokenPrice: number; constructor(options: ConfigOptions) { - this.modelName = options?.modelName?.toLowerCase(); this.chainInfo = options.chainInfo || defaultChainInfo; this.lockAmount = options.lockAmount || defaultLockAmount; - this.signaturePayment = {} - this.singlePaymentAmount = options.singlePaymentAmount || defaultSinglePaymentAmount; - this.lowBalance = options.lowBalance || defaultLowBalance - this.lockAmountDenom = '' - this.walletName = options.walletName || '' - this.privateKey = options.privateKey || '' - this.isEverRequestSession = false - this.isBrowser = typeof window !== 'undefined' - this.isBrowser && (window.nesaSdkVersion = sdkVersion) - this.tokenPrice = 0 - this.initWallet() + this.signaturePayment = {}; + this.singlePaymentAmount = + options.singlePaymentAmount || defaultSinglePaymentAmount; + this.lowBalance = options.lowBalance || defaultLowBalance; + this.lockAmountDenom = ""; + this.walletName = options.walletName || ""; + this.privateKey = options.privateKey || ""; + this.isEverRequestSession = false; + this.isBrowser = options.privateKey ? false : typeof window !== "undefined"; + this.isBrowser && (window.nesaSdkVersion = sdkVersion); + this.tokenPrice = 0; + this.initWallet(); } initWallet() { if (this.lastInitOfflineSignerPromise) { - return this.lastInitOfflineSignerPromise + return this.lastInitOfflineSignerPromise; } if (this.isBrowser) { - this.lastInitOfflineSignerPromise = new Promise(async (resolve, reject) => { - try { - if (this.walletName === 'npm:@leapwallet/metamask-cosmos-snap') { - // await window?.ethereum.request({ - // method: 'wallet_requestSnaps', - // params: { - // 'npm:@leapwallet/metamask-cosmos-snap': {}, - // }, - // }); - await suggestChain(this.chainInfo, { force: false }); - const offlineSigner = new CosmjsOfflineSigner(this.chainInfo.chainId); - this.offLinesigner = offlineSigner - resolve(this.offLinesigner) - this.getNesaClient() - } else if (window?.keplr) { - const { keplr } = window; - await keplr.experimentalSuggestChain(this.chainInfo); - await keplr.enable(this.chainInfo.chainId); - this.offLinesigner = window.getOfflineSigner!(this.chainInfo.chainId); - resolve(this.offLinesigner) - this.getNesaClient() - } else { - console.log('No wallet installed, please install keplr or metamask wallet first') - reject('No wallet installed, please install keplr or metamask wallet first') + this.lastInitOfflineSignerPromise = new Promise( + async (resolve, reject) => { + try { + if (this.walletName === "npm:@leapwallet/metamask-cosmos-snap") { + const offlineSigner = new CosmjsOfflineSigner( + this.chainInfo.chainId + ); + this.offLinesigner = offlineSigner; + resolve(this.offLinesigner); + this.getNesaClient(); + } else if (window?.keplr) { + this.offLinesigner = window.getOfflineSigner!( + this.chainInfo.chainId + ); + resolve(this.offLinesigner); + this.getNesaClient(); + } else { + console.log( + "No wallet installed, please install keplr or metamask wallet first" + ); + reject( + "No wallet installed, please install keplr or metamask wallet first" + ); + } + } catch (error) { + console.log("initOfflineSigner-error: ", error); + reject(error); } - } catch (error) { - console.log('initOfflineSigner-error: ', error) - reject(error) } - }) + ); } else { - this.lastInitOfflineSignerPromise = new Promise(async (resolve, reject) => { - if (!this.privateKey) { - reject('In the node environment, please provide the privateKey') - } - else { - const wallet = await DirectSecp256k1Wallet.fromKey(Buffer.from(this.privateKey, "hex"), 'nesa') - this.offLinesigner = wallet - resolve(this.offLinesigner) - this.getNesaClient() + this.lastInitOfflineSignerPromise = new Promise( + async (resolve, reject) => { + if (!this.privateKey) { + reject("In the node environment, please provide the privateKey"); + } else { + const wallet = await DirectSecp256k1Wallet.fromKey( + Buffer.from(this.privateKey, "hex"), + "nesa" + ); + this.offLinesigner = wallet; + resolve(this.offLinesigner); + this.getNesaClient(); + } } - }) + ); } } getNesaClient() { if (this.lastNesaClientPromise) { - return this.lastNesaClientPromise + return this.lastNesaClientPromise; } - console.log('Init nesa client') + console.log("Init nesa client"); this.lastNesaClientPromise = new Promise((resolve, reject) => { if (this.offLinesigner) { WalletOperation.getNesaClient(this.chainInfo, this.offLinesigner) .then((client) => { - resolve(client) - this.getChainParams(client) + resolve(client); + this.getChainParams(client); }) .catch((error) => { - console.log('initNesaClientError: ', error) - this.lastNesaClientPromise = undefined - reject(error) - }) + console.log("initNesaClientError: ", error); + this.lastNesaClientPromise = undefined; + reject(error); + }); } else { - this.lastNesaClientPromise = undefined - reject(new Error('Wallet connect error')) + this.lastNesaClientPromise = undefined; + reject(new Error("Wallet connect error")); } - }) + }); } getChainParams(nesaClient: any) { if (this.lastUserMinimumLockPromise) { - return this.lastUserMinimumLockPromise + return this.lastUserMinimumLockPromise; } - console.log('Init params') - this.lastUserMinimumLockPromise = new Promise((resolve) => { - WalletOperation.requestParams(nesaClient) - .then((params) => { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 301, - message: "Connected to Nesa chain", - }) - resolve(params) - }) - .catch((error) => { - console.log('getChainParamsError: ', error) - this.lastUserMinimumLockPromise = undefined - }) - }) + console.log("Init params"); + + const getRequestParams = async () => { + try { + const params = await WalletOperation.requestParams(nesaClient); + + this.chatProgressReadable?.push({ + code: 301, + message: "Connected to Nesa chain", + }); + + return params; + } catch (error) { + this.lastUserMinimumLockPromise = undefined; + } + }; + + this.lastUserMinimumLockPromise = getRequestParams(); } version() { @@ -175,52 +190,81 @@ class ChatClient { } checkChainInfo() { - return this.chainInfo?.rpc - && this.chainInfo?.rest - && this.chainInfo?.feeCurrencies - && this.chainInfo?.feeCurrencies.length > 0 - && this.chainInfo?.feeCurrencies[0]?.coinMinimalDenom + return ( + this.chainInfo?.rpc && + this.chainInfo?.rest && + this.chainInfo?.feeCurrencies && + this.chainInfo?.feeCurrencies.length > 0 && + this.chainInfo?.feeCurrencies[0]?.coinMinimalDenom + ); } getSignaturePayment() { if (this.signaturePayment[this.totalSignedPayment]) { - return '' + return ""; } - const signaturePayment = EncryptUtils.signMessage(`${this.totalSignedPayment}${this.chainInfo.feeCurrencies[0].coinMinimalDenom}`, this.chatSeq, false); - this.signaturePayment[this.totalSignedPayment] = signaturePayment + const signaturePayment = EncryptUtils.signMessage( + `${this.totalSignedPayment}${this.chainInfo.feeCurrencies[0].coinMinimalDenom}`, + this.chatSeq, + false + ); + this.signaturePayment[this.totalSignedPayment] = signaturePayment; return signaturePayment; } checkSinglePaymentAmount() { - if (new BigNumber(this.totalSignedPayment).isLessThanOrEqualTo(this.lowBalance)) { - this.totalSignedPayment = Number(new BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).toFixed(0, 1)); - return this.getSignaturePayment() + if ( + new BigNumber(this.totalSignedPayment).isLessThanOrEqualTo( + this.lowBalance + ) + ) { + this.totalSignedPayment = Number( + new BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .toFixed(0, 1) + ); + return this.getSignaturePayment(); } - if (new BigNumber(this.totalSignedPayment).minus(this.totalUsedPayment).isLessThanOrEqualTo(this.lowBalance)) { - if (new BigNumber(this.totalSignedPayment).isLessThan(this.totalUsedPayment)) { + if ( + new BigNumber(this.totalSignedPayment) + .minus(this.totalUsedPayment) + .isLessThanOrEqualTo(this.lowBalance) + ) { + if ( + new BigNumber(this.totalSignedPayment).isLessThan(this.totalUsedPayment) + ) { this.totalSignedPayment = Number(this.totalUsedPayment); - return this.getSignaturePayment() + return this.getSignaturePayment(); } - if (new BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).isLessThanOrEqualTo(this.lockAmount)) { - this.totalSignedPayment = Number(new BigNumber(this.totalSignedPayment).plus(this.singlePaymentAmount).toFixed(0, 1)); + if ( + new BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .isLessThanOrEqualTo(this.lockAmount) + ) { + this.totalSignedPayment = Number( + new BigNumber(this.totalSignedPayment) + .plus(this.singlePaymentAmount) + .toFixed(0, 1) + ); } else { this.totalSignedPayment = Number(this.lockAmount); } - return this.getSignaturePayment() + return this.getSignaturePayment(); } - return this.getSignaturePayment() + return this.getSignaturePayment(); } requestChatQueue(readableStream: any, question: questionTypes) { + console.log("requestChatQueue"); this.isChatinging = true; this.chatSeq += 1; let messageTimes = 0; try { - let ws + let ws: WebSocket; if (this.isBrowser) { ws = new WebSocket(this.agentUrl); } else { - const WebSocket = require('ws'); + const WebSocket = require("ws"); ws = new WebSocket(this.agentUrl); } ws.addEventListener("open", () => { @@ -228,17 +272,21 @@ class ChatClient { const questionStr = JSON.stringify({ stream: true, ...question, - model: question?.model?.toLowerCase() + model: question?.model?.toLowerCase(), }); if (question.messages && this.assistantRoleName) { question.messages = question.messages.map((item: any) => { - if (item.role === 'assistant') { - item.role = this.assistantRoleName + if (item.role === "assistant") { + item.role = this.assistantRoleName; } - return item - }) + return item; + }); } - const signedMessage = EncryptUtils.signMessage(questionStr, this.chatSeq, true); + const signedMessage = EncryptUtils.signMessage( + questionStr, + this.chatSeq, + true + ); if (signedMessage) { ws.send( JSON.stringify({ @@ -259,21 +307,22 @@ class ChatClient { } }); ws.onmessage = (event: any) => { - let messageJson + let messageJson; try { - messageJson = JSON.parse(event?.data) + messageJson = JSON.parse(event?.data); if (messageJson?.role) { - this.assistantRoleName = messageJson.role + this.assistantRoleName = messageJson.role; } } catch (error) { - messageJson = event?.data + messageJson = event?.data; } if (messageTimes === 0) { if (messageJson === "ack") { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 305, - message: "Conducting inference", - }) + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 305, + message: "Conducting inference", + }); } else { ws.close(); readableStream.push({ @@ -290,19 +339,21 @@ class ChatClient { code: 203, message: messageJson?.content?.split("[DONE]")[1], }); - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }) + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); readableStream.push(null); this.isChatinging = false; } else { if (messageTimes === 1) { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 306, - message: "Receiving responses", - }) - messageTimes += 1 + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 306, + message: "Receiving responses", + }); + messageTimes += 1; } const signedMessage = this.checkSinglePaymentAmount(); const total_payment = { @@ -312,16 +363,18 @@ class ChatClient { readableStream.push({ code: 200, message: messageJson?.content, - session_id: messageJson?.session_id || '', + session_id: messageJson?.session_id || "", total_payment, }); this.totalUsedPayment += this.tokenPrice; - if (new BigNumber(this.totalUsedPayment).isGreaterThan(this.lockAmount)) { + if ( + new BigNumber(this.totalUsedPayment).isGreaterThan(this.lockAmount) + ) { readableStream.push({ code: 205, message: '{"code":1015,"msg":"balance insufficient"}', }); - ws.close() + ws.close(); } else if (signedMessage) { const data = JSON.stringify({ chat_seq: this.chatSeq, @@ -333,12 +386,13 @@ class ChatClient { } }; ws.onclose = (error: any) => { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }) + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); if (error?.reason) { - console.log('onclose: ', error?.reason) + console.log("onclose: ", error?.reason); readableStream.push({ code: 205, message: error?.reason, @@ -353,10 +407,12 @@ class ChatClient { } }; ws.onerror = (error: any) => { - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 307, - message: "Task completed, wait for another query" - }) + console.log("Websocket onERROR"); + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 307, + message: "Task completed, wait for another query", + }); readableStream.push({ code: 204, message: error?.reason || "Error: Connection failed", @@ -370,11 +426,11 @@ class ChatClient { } }; } catch (error: any) { - this.chatProgressReadable && this.chatProgressReadable.push({ + this.chatProgressReadable?.push({ code: 307, - message: "Task completed, wait for another query" - }) - console.log('websocketCatchError: ', error) + message: "Task completed, wait for another query", + }); + console.log("websocketCatchError: ", error); readableStream.push({ code: 207, message: error.message || "Error: Connection failed", @@ -390,174 +446,242 @@ class ChatClient { } requestCloseHeartbeat() { - socket.forceClose = true - socket.close() + console.log("requestCloseHeartbeat"); + socket.forceClose = true; + socket.close(); + + setTimeout(() => + console.log("socket.socket_open", socket.socket_open, { socket }) + ); } - requestAgentInfo(result: any, readableStream: any) { - if (this.lastGetAgentInfoPromise) { - return this.lastGetAgentInfoPromise; + requestAgentInfo(result: any, readableStream: any, modelName: string) { + console.log("requestAgentInfo"); + // if (this.lastGetAgentInfoPromise) { + // console.log("requestAgentInfo same promise"); + // return this.lastGetAgentInfoPromise; + // } + if (this.lastGetAgentInfoPromiseMap[modelName]) { + console.log("requestAgentInfo same promise"); + return this.lastGetAgentInfoPromiseMap[modelName]; } - this.lastGetAgentInfoPromise = new Promise((resolve, reject) => { - WalletOperation.requestAgentInfo(this.nesaClient, result?.account, this.modelName) - .then((agentInfo: any) => { - if (agentInfo && agentInfo?.inferenceAgent) { - const selectAgent = agentInfo?.inferenceAgent - let agentWsUrl = selectAgent.url - let agentHeartbeatUrl = selectAgent.url - if (selectAgent.url?.endsWith("/")) { - agentWsUrl = agentWsUrl + 'chat'; - agentHeartbeatUrl = agentHeartbeatUrl + 'heartbeat'; + // console.log("requestAgentInfo promise creatoin"); + // this.lastGetAgentInfoPromise = new Promise( + this.lastGetAgentInfoPromiseMap[modelName] = new Promise( + (resolve, reject) => { + WalletOperation.requestAgentInfo( + this.nesaClient, + result?.account, + modelName + ) + .then((agentInfo: any) => { + if (agentInfo && agentInfo?.inferenceAgent) { + const selectAgent = agentInfo?.inferenceAgent; + let agentWsUrl = selectAgent.url; + let agentHeartbeatUrl = selectAgent.url; + if (selectAgent.url?.endsWith("/")) { + agentWsUrl = agentWsUrl + "chat"; + agentHeartbeatUrl = agentHeartbeatUrl + "heartbeat"; + } else { + agentWsUrl = agentWsUrl + "/chat"; + agentHeartbeatUrl = agentHeartbeatUrl + "/heartbeat"; + } + let firstInitHeartbeat = true; + this.chatProgressReadable && + this.chatProgressReadable.push({ + code: 303, + message: "Connecting to the validator", + }); + socket.init({ + ws_url: agentHeartbeatUrl, + onopen: () => { + if (firstInitHeartbeat) { + this.agentUrl = agentWsUrl; + this.isRegisterSessioning = false; + this.chatProgressReadable?.push({ + code: 304, + message: "Waiting for query", + }); + readableStream && readableStream?.push(null); + firstInitHeartbeat = false; + resolve(result); + } + }, + onerror: () => { + readableStream && + readableStream.push({ + code: 319, + message: "Agent connection error: " + selectAgent.url, + }); + readableStream && readableStream.push(null); + reject(new Error("Agent heartbeat packet connection failed")); + }, + }); } else { - agentWsUrl = agentWsUrl + '/chat'; - agentHeartbeatUrl = agentHeartbeatUrl + '/heartbeat'; - } - let firstInitHeartbeat = true - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 303, - message: "Connecting to the validator", - }) - socket.init({ - ws_url: agentHeartbeatUrl, - onopen: () => { - if (firstInitHeartbeat) { - this.agentUrl = agentWsUrl; - this.isRegisterSessioning = false; - this.chatProgressReadable && this.chatProgressReadable.push({ - code: 304, - message: "Waiting for query", - }) - readableStream && readableStream.push(null) - firstInitHeartbeat = false - resolve(result); - } - }, - onerror: () => { - readableStream && readableStream.push({ + this.isRegisterSessioning = false; + readableStream && + readableStream.push({ code: 319, - message: 'Agent connection error: ' + selectAgent.url, - }) - readableStream && readableStream.push(null) - reject(new Error("Agent heartbeat packet connection failed")); - } - }); - } else { - this.isRegisterSessioning = false; - readableStream && readableStream.push({ - code: 319, - message: 'Agent not found', - }) - readableStream && readableStream.push(null) - reject(new Error("No agent found")) - } - }) - .catch((error) => { - console.log("requestAgentInfoError: ", error); - this.lastGetAgentInfoPromise = undefined - readableStream && readableStream.push({ - code: 319, - message: 'Agent connection error: ' + error?.message || error.toString() + message: "Agent not found", + }); + readableStream && readableStream.push(null); + reject(new Error("No agent found")); + } }) - readableStream && readableStream.push(null) - reject(error); - }) - }); + .catch((error) => { + console.log("requestAgentInfoError: ", error); + this.lastGetAgentInfoPromiseMap[modelName] = undefined; + // this.lastGetAgentInfoPromise = undefined; + readableStream && + readableStream.push({ + code: 319, + message: + "Agent connection error: " + error?.message || + error.toString(), + }); + readableStream && readableStream.push(null); + reject(error); + }); + } + ); + + return this.lastGetAgentInfoPromiseMap[modelName]; + + // return this.lastGetAgentInfoPromise; } - checkSignBroadcastResult(readableStream?: any) { + checkSignBroadcastResult( + readableStream?: any, + modelName: string = "" + // isNew?: boolean + ) { return new Promise((resolve, reject) => { if (!this.nesaClient) { - reject(new Error('Please wait for the requestSession registration result')) + reject( + new Error("Please wait for the requestSession registration result") + ); } else { - this.nesaClient.broadcastRegisterSession() + const reqSession = this.nesaClient.broadcastRegisterSession(modelName); + console.log("reqSession", reqSession); + reqSession .then((result: any) => { - resolve(this.requestAgentInfo(result, readableStream)) + console.log("broadcastRegisterSession after", modelName); + resolve(this.requestAgentInfo(result, readableStream, modelName)); }) .catch((error: any) => { - console.log('checkSignBroadcastResultError: ', error) - readableStream && readableStream.push({ - code: 318, - message: error?.message, - }) - readableStream && readableStream.push(null) - reject(error) - }) + console.log("checkSignBroadcastResultError: ", error); + readableStream && + readableStream.push({ + code: 318, + message: error?.message, + }); + readableStream && readableStream.push(null); + reject(error); + }); } - }) + }); } requestChatStatus() { return new Promise((resolve) => { const readableStream = new Readable({ objectMode: true }); - readableStream._read = () => { }; + readableStream._read = () => {}; readableStream.push({ code: 300, message: "Connecting to Nesa chain", - }) - this.chatProgressReadable = readableStream + }); + this.chatProgressReadable = readableStream; resolve(readableStream); - }) + }); } requestSession() { return new Promise((resolve, reject) => { if (!this.checkChainInfo()) { - reject(new Error("Invalid chainInfo, you must provide rpc, rest, feeCurrencies, feeCurrencies")); - } else if (!this.modelName) { - reject(new Error("ModelName is null")); + reject( + new Error( + "Invalid chainInfo, you must provide rpc, rest, feeCurrencies, feeCurrencies" + ) + ); } else if (this.isRegisterSessioning) { reject(new Error("Registering session, please wait")); - } else if (!this.lockAmount || new BigNumber(this.lockAmount).isNaN() || new BigNumber(this.lockAmount).isLessThan(this.singlePaymentAmount)) { - reject(new Error("LockAmount invalid value or less than singlePaymentAmount")) + } else if ( + !this.lockAmount || + new BigNumber(this.lockAmount).isNaN() || + new BigNumber(this.lockAmount).isLessThan(this.singlePaymentAmount) + ) { + reject( + new Error("LockAmount invalid value or less than singlePaymentAmount") + ); } else { - this.isEverRequestSession = true + this.isEverRequestSession = true; const readableStream = new Readable({ objectMode: true }); - readableStream._read = () => { }; + readableStream._read = () => {}; resolve(readableStream); this.initWallet() .then(() => { this.getNesaClient() .then((nesaClient: any) => { - this.nesaClient = nesaClient + this.nesaClient = nesaClient; this.getChainParams(nesaClient) .then((params: any) => { if (params && params?.params) { - this.tokenPrice = params?.params?.tokenPrice?.low - if (new BigNumber(this.lockAmount).isLessThan(params?.params?.userMinimumLock?.amount)) { + this.tokenPrice = params?.params?.tokenPrice?.low; + if ( + new BigNumber(this.lockAmount).isLessThan( + params?.params?.userMinimumLock?.amount + ) + ) { // reject(new Error("LockAmount cannot be less than " + params?.params?.userMinimumLock?.amount)) readableStream.push({ code: 311, - message: "LockAmount cannot be less than " + params?.params?.userMinimumLock?.amount, - }) + message: + "LockAmount cannot be less than " + + params?.params?.userMinimumLock?.amount, + }); } else { - WalletOperation.registerSession(nesaClient, this.modelName, this.lockAmount, params?.params?.userMinimumLock?.denom, this.chainInfo, this.offLinesigner) - .then((result: any) => { - console.log('registerSession-result: ', result) - if (result?.transactionHash) { - this.chatProgressReadable && this.chatProgressReadable.push({ + WalletOperation.registerSession( + nesaClient, + "Orenguteng/Llama-3-8B-Lexi-Uncensored".toLowerCase(), + this.lockAmount, + params?.params?.userMinimumLock?.denom, + this.chainInfo, + this.offLinesigner + ) + .then((result) => { + console.log("registerSession-result: ", result); + if ( + (Object.values(result)?.[0] as any) + ?.transactionHash + ) { + this.chatProgressReadable?.push({ code: 302, message: "Choosing an inference validator", - }) + }); readableStream.push({ code: 200, message: result?.transactionHash, - }) - this.checkSignBroadcastResult(readableStream).catch(() => { }) - // resolve(result) + }); + + Object.keys(result).forEach((modelName) => { + this.checkSignBroadcastResult( + readableStream, + modelName + ).catch(() => {}); + }); } else { this.isRegisterSessioning = false; readableStream.push({ code: 312, message: JSON.stringify(result), - }) - // reject(result); + }); } }) .catch((error) => { readableStream.push({ code: 313, - message: error?.message || error.toString() - }) + message: error?.message || error.toString(), + }); this.isRegisterSessioning = false; // reject(error); }); @@ -566,7 +690,7 @@ class ChatClient { readableStream.push({ code: 314, message: JSON.stringify(params), - }) + }); // reject(new Error("Chain configuration loading failed.")) } }) @@ -574,41 +698,46 @@ class ChatClient { readableStream.push({ code: 315, message: error?.message || error.toString(), - }) - // reject(error) - }) - }).catch((error: any) => { + }); + }); + }) + .catch((error: any) => { readableStream.push({ code: 316, message: error?.message || error.toString(), - }) - // reject(error) - }) - }).catch((error: any) => { + }); + }); + }) + .catch((error: any) => { readableStream.push({ code: 317, message: error?.message || error.toString(), - }) - // reject(error) - }) + }); + }); } }); } - requestChat(question: questionTypes) { + requestChat(question: questionTypes, modelName: string) { return new Promise((resolve, reject) => { if (!question?.model) { - reject(new Error('Model is required')) + reject(new Error("Model is required")); } else if (this.isRegisterSessioning) { reject(new Error("Registering session, please wait")); } else if (!this.isEverRequestSession) { - reject(new Error("Please call requestSession first to complete Session registration")); - } else if (!this.agentUrl) { - this.checkSignBroadcastResult() + reject( + new Error( + "Please call requestSession first to complete Session registration" + ) + ); + // } else if (!this.agentUrl) { + } else { + console.log("requestChat modelName", modelName); + this.checkSignBroadcastResult(undefined, modelName) .then((result: any) => { - console.log('checkSignBroadcastResult-result: ', result) + console.log("checkSignBroadcastResult-result: ", result); const readableStream = new Readable({ objectMode: true }); - readableStream._read = () => { }; + readableStream._read = () => {}; resolve(readableStream); if (this.isChatinging) { this.chatQueue.push({ readableStream, question }); @@ -617,17 +746,8 @@ class ChatClient { } }) .catch((error) => { - reject(error) - }) - } else { - const readableStream = new Readable({ objectMode: true }); - readableStream._read = () => { }; - resolve(readableStream); - if (this.isChatinging) { - this.chatQueue.push({ readableStream, question }); - } else { - this.requestChatQueue(readableStream, question); - } + reject(error); + }); } }); } diff --git a/src/client.ts b/src/client.ts index a907d0d..907d369 100644 --- a/src/client.ts +++ b/src/client.ts @@ -6,11 +6,11 @@ import { GasPrice, isDeliverTxFailure, Event, - QueryClient + QueryClient, } from "@cosmjs/stargate"; import { CometClient, connectComet } from "@cosmjs/tendermint-rpc"; -import { Logger, NoopLogger } from './logger'; -import { createDeliverTxFailureMessage } from './utils'; +import { Logger, NoopLogger } from "./logger"; +import { createDeliverTxFailureMessage } from "./utils"; import { MsgUpdateParams, // MsgRegisterModel, @@ -21,10 +21,10 @@ import { VRF, // MsgClaimSession, // MsgCancelSession -} from './codec/agent/v1/tx'; +} from "./codec/agent/v1/tx"; import { Payment, Params, SessionStatus } from "./codec/agent/v1/agent"; import { Coin } from "./codec/cosmos/base/v1beta1/coin"; -import { AgentExtension, setupAgentExtension } from './queries'; +import { AgentExtension, setupAgentExtension } from "./queries"; import { // QueryModelAllResponse, // QueryModelResponse, @@ -33,11 +33,11 @@ import { QuerySessionResponse, // QuerySessionByAgentResponse, QueryVRFSeedResponse, - QuerySessionByAgentResponse + QuerySessionByAgentResponse, } from "./codec/agent/v1/query"; import { StdFee } from "@cosmjs/amino"; import { TxRaw } from "cosmjs-types/cosmos/tx/v1beta1/tx"; -import { sha256 } from '@cosmjs/crypto' +import { sha256 } from "@cosmjs/crypto"; import { toHex } from "@cosmjs/encoding"; export type NesaClientOptions = SigningStargateClientOptions & { @@ -50,13 +50,13 @@ export type NesaClientOptions = SigningStargateClientOptions & { function nesaRegistry(): Registry { return new Registry([ ...defaultStargateTypes, - ['/agent.v1.MsgUpdateParams', MsgUpdateParams], + ["/agent.v1.MsgUpdateParams", MsgUpdateParams], // ['/agent.v1.MsgRegisterModel', MsgRegisterModel], - ['/agent.v1.MsgRegisterInferenceAgent', MsgRegisterInferenceAgent], - ['/agent.v1.MsgRegisterSession', MsgRegisterSession], - ['/agent.v1.MsgSubmitPayment', MsgSubmitPayment], - ['/agent.v1.VRF', VRF], - ]) + ["/agent.v1.MsgRegisterInferenceAgent", MsgRegisterInferenceAgent], + ["/agent.v1.MsgRegisterSession", MsgRegisterSession], + ["/agent.v1.MsgSubmitPayment", MsgSubmitPayment], + ["/agent.v1.VRF", VRF], + ]); } /// This is the default message result with no extra data @@ -70,13 +70,12 @@ export interface MsgResult { export type RegisterSessionResult = MsgResult & { readonly account: string; -} +}; export class NesaClient { public readonly gasPrice: GasPrice; public readonly sign: SigningStargateClient; - public readonly query: QueryClient & - AgentExtension; + public readonly query: QueryClient & AgentExtension; public readonly tm: CometClient; public readonly senderAddress: string; public readonly logger: Logger; @@ -85,8 +84,10 @@ export class NesaClient { // public readonly revisionNumber: Long; public readonly estimatedBlockTime: number; public readonly estimatedIndexerTime: number; - private broadcastPromise: any - private signResult: any + // private broadcastPromise: any; + // private signResult: any; + private signResultMap: { [modelName: string]: any } = {}; + private broadcastPromiseMap: { [modelName: string]: any } = {}; public static async connectWithSigner( endpoint: string, @@ -126,10 +127,7 @@ export class NesaClient { ) { this.sign = signingClient; this.tm = tmClient; - this.query = QueryClient.withExtensions( - tmClient, - setupAgentExtension - ); + this.query = QueryClient.withExtensions(tmClient, setupAgentExtension); this.senderAddress = senderAddress; this.chainId = chainId; // this.revisionNumber = parseRevisionNumber(chainId); @@ -144,20 +142,20 @@ export class NesaClient { authority: string, params: Params ): Promise { - this.logger.verbose('Update Params'); + this.logger.verbose("Update Params"); const senderAddress = this.senderAddress; const updateParamsMsg = { - typeUrl: '/agent.v1.MsgUpdateParams', + typeUrl: "/agent.v1.MsgUpdateParams", value: MsgUpdateParams.fromPartial({ authority, - params + params, }), }; - this.logger.debug('Update Params Message: ', updateParamsMsg); + this.logger.debug("Update Params Message: ", updateParamsMsg); const result = await this.sign.signAndBroadcast( senderAddress, [updateParamsMsg], - 'auto' + "auto" ); if (isDeliverTxFailure(result)) { throw new Error(createDeliverTxFailureMessage(result)); @@ -172,19 +170,19 @@ export class NesaClient { public async registerInferenceAgent( // account: string, url: string, - version: Long, + version: Long ): Promise { this.logger.verbose(`Register Inference Agent`); const senderAddress = this.senderAddress; const registerInferenceAgentMsg = { - typeUrl: '/agent.v1.MsgRegisterInferenceAgent', + typeUrl: "/agent.v1.MsgRegisterInferenceAgent", value: MsgRegisterInferenceAgent.fromPartial({ account: senderAddress, url, - version + version, }), }; - this.logger.debug('Register Model Message: ', registerInferenceAgentMsg); + this.logger.debug("Register Model Message: ", registerInferenceAgentMsg); const result = await this.sign.signAndBroadcast( senderAddress, [registerInferenceAgentMsg], @@ -197,91 +195,189 @@ export class NesaClient { return { events: result.events, transactionHash: result.transactionHash, - height: result.height + height: result.height, }; } - public broadcastRegisterSession() { - if (!this.signResult) { - return new Error('Please sign first') + public broadcastRegisterSession(modelName1: string, signResult?: any) { + const modelName = "orenguteng/llama-3-8b-lexi-uncensored"; + console.log({ modelName, modelName1 }); + if (!signResult && !this.signResultMap[modelName]) { + console.log("broadcast error", this.signResultMap, signResult); + return new Error("Please sign first"); } - if (this.broadcastPromise) { - return this.broadcastPromise + + const res = signResult || this.signResultMap[modelName]; + + console.log("this.broadcastPromiseMap", this.broadcastPromiseMap); + + if (this.broadcastPromiseMap[modelName]) { + return this.broadcastPromiseMap[modelName]; } - this.broadcastPromise = new Promise((resolve, reject) => { - this.sign.broadcastTx(Uint8Array.from(TxRaw.encode(this.signResult).finish())) + + const promise = new Promise((resolve, reject) => { + this.sign + .broadcastTx(Uint8Array.from(TxRaw.encode(res).finish())) .then((result) => { if (isDeliverTxFailure(result)) { - reject(new Error(createDeliverTxFailureMessage(result))) + reject(new Error(createDeliverTxFailureMessage(result))); } else { resolve({ events: result.events, transactionHash: result.transactionHash, height: result.height, - account: MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value).account - }) + account: MsgRegisterSessionResponse.decode( + result.msgResponses[0]?.value + ).account, + }); } - }).catch((error) => { - reject(error) }) - }) + .catch((error) => { + reject(error); + }); + }); + + this.broadcastPromiseMap[modelName] = promise; + + return promise; } public async signRegisterSession( sessionId: string, - modelName: string, + modelName: string = "", fee: StdFee, lockBalance?: Coin, - vrf?: VRF, + vrf?: VRF ): Promise { + console.log("signRegisterSession"); this.logger.verbose(`Register Session`); const senderAddress = this.senderAddress; const registerSessionMsg = { - typeUrl: '/agent.v1.MsgRegisterSession', + typeUrl: "/agent.v1.MsgRegisterSession", value: MsgRegisterSession.fromPartial({ account: senderAddress, sessionId, - modelName, + modelName: modelName, lockBalance, - vrf + vrf, }), + // value: MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Orenguteng/Llama-3-8B-Lexi-Uncensored".toLowerCase(), + // lockBalance, + // vrf, + // }), + + // MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase(), + // lockBalance, + // vrf, + // }), }; + // const registerSessionMsg2 = { + // typeUrl: "/agent.v1.MsgRegisterSession", + // value: MsgRegisterSession.fromPartial({ + // account: senderAddress, + // sessionId, + // modelName: "Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase(), + // lockBalance, + // vrf, + // }), + // }; + const signResult = await this.sign.sign( senderAddress, [registerSessionMsg], fee, "" - ) - this.signResult = signResult - const hex = Buffer.from(Uint8Array.from(TxRaw.encode(this.signResult).finish())).toString('hex') - this.broadcastPromise = undefined - this.broadcastRegisterSession() - return { - sessionId, - transactionHash: toHex(sha256(Buffer.from(hex, 'hex'))).toUpperCase() - } + ); + + // const hex = Buffer.from( + // Uint8Array.from(TxRaw.encode(signResult).finish()) + // ).toString("hex"); + + // acc[modelName] = { + // sessionId, + // transactionHash: toHex(sha256(Buffer.from(hex, "hex"))).toUpperCase(), + // }; + + this.broadcastPromiseMap[modelName] = undefined; + await this.broadcastRegisterSession(modelName, signResult); + + // const signResult2 = await this.sign.sign( + // senderAddress, + // [registerSessionMsg2], + // fee, + // "" + // ); + + // await this.broadcastRegisterSession(modelName, signResult2); + + this.signResultMap[modelName] = signResult; + this.signResultMap["Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase()] = signResult; + // this.signResultMap["Yodayo-Ai/Kivotos-Xl-2.0".toLowerCase()] = signResult2; + // const signResult2 = await this.sign.sign( + // senderAddress, + // [registerSessionMsg2], + // fee, + // "" + // ); + + // console.log("signResult2", signResult2); + // this.signResult = signResult; + + return Object.entries(this.signResultMap).reduce< + Record + >((acc, [modelName, signResult]) => { + const hex = Buffer.from( + Uint8Array.from(TxRaw.encode(signResult).finish()) + ).toString("hex"); + + acc[modelName] = { + sessionId, + transactionHash: toHex(sha256(Buffer.from(hex, "hex"))).toUpperCase(), + }; + + // this.broadcastPromiseMap[modelName] = undefined; + // this.broadcastRegisterSession(modelName, signResult); + + return acc; + }, {}); + + // const hex = Buffer.from( + // Uint8Array.from(TxRaw.encode(this.signResult).finish()) + // ).toString("hex"); + + // return { + // sessionId, + // transactionHash: toHex(sha256(Buffer.from(hex, "hex"))).toUpperCase(), + // }; } public async registerSession( // account: string, sessionId: string, - modelName: string, + // modelName: string, lockBalance?: Coin, - vrf?: VRF, + vrf?: VRF ): Promise { + console.log("client -> registerSession"); this.logger.verbose(`Register Session`); const senderAddress = this.senderAddress; const registerSessionMsg = { - typeUrl: '/agent.v1.MsgRegisterSession', + typeUrl: "/agent.v1.MsgRegisterSession", value: MsgRegisterSession.fromPartial({ account: senderAddress, sessionId, - modelName, + // modelName, lockBalance, - vrf + vrf, }), }; - this.logger.debug('Register Session Message: ', registerSessionMsg); + this.logger.debug("Register Session Message: ", registerSessionMsg); const result = await this.sign.signAndBroadcast( senderAddress, [registerSessionMsg], @@ -295,7 +391,8 @@ export class NesaClient { events: result.events, transactionHash: result.transactionHash, height: result.height, - account: MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value).account + account: MsgRegisterSessionResponse.decode(result.msgResponses[0]?.value) + .account, }; } @@ -303,20 +400,20 @@ export class NesaClient { // account: string, sessionId: string, signature: Uint8Array, - payment?: Payment, + payment?: Payment ): Promise { this.logger.verbose(`Submit Payment`); const senderAddress = this.senderAddress; const submitPaymentMsg = { - typeUrl: '/agent.v1.MsgSubmitPayment', + typeUrl: "/agent.v1.MsgSubmitPayment", value: MsgSubmitPayment.fromPartial({ account: senderAddress, sessionId, signature, - payment + payment, }), }; - this.logger.debug('Submit Payment Message: ', submitPaymentMsg); + this.logger.debug("Submit Payment Message: ", submitPaymentMsg); const result = await this.sign.signAndBroadcast( senderAddress, [submitPaymentMsg], @@ -338,8 +435,19 @@ export class NesaClient { return result; } - public async getInferenceAgent(account: string, modelName: string, limit: Long, key: Uint8Array): Promise { - const result = await this.query.agent.inferenceAgentRequest(account, modelName, limit, key); + public async getInferenceAgent( + account: string, + modelName: string, + limit: Long, + key: Uint8Array + ): Promise { + console.log("getInferenceAgent", { account, modelName, limit, key }); + const result = await this.query.agent.inferenceAgentRequest( + account, + modelName, + limit, + key + ); return result; } @@ -348,8 +456,22 @@ export class NesaClient { return result; } - public async getSessionByAgent(account: string, status: SessionStatus, limit: Long, orderDesc: boolean, key: Uint8Array, expireTime?: Date): Promise { - const result = await this.query.agent.sessionByAgentRequest(account, status, limit, orderDesc, key, expireTime); + public async getSessionByAgent( + account: string, + status: SessionStatus, + limit: Long, + orderDesc: boolean, + key: Uint8Array, + expireTime?: Date + ): Promise { + const result = await this.query.agent.sessionByAgentRequest( + account, + status, + limit, + orderDesc, + key, + expireTime + ); return result; } diff --git a/src/encryptUtils.ts b/src/encryptUtils.ts index d20f4c7..b5be5b8 100644 --- a/src/encryptUtils.ts +++ b/src/encryptUtils.ts @@ -1,5 +1,5 @@ import * as CryptoJS from "crypto-js"; -import { Evaluate } from './utils' +import { Evaluate } from "./utils"; import * as Secp256k1 from "@lionello/secp256k1-js"; import WalletOperation from "./walletOperation"; @@ -11,9 +11,9 @@ class EncryptUtils { public static privateKeyBuf: any; static generateKey() { - let privateKeyBuf - if (typeof window === 'undefined') { - const crypto = require('crypto'); + let privateKeyBuf; + if (typeof window === "undefined") { + const crypto = require("crypto"); privateKeyBuf = crypto.randomBytes(32); } else { privateKeyBuf = window.crypto.getRandomValues(new Uint8Array(32)); @@ -49,12 +49,16 @@ class EncryptUtils { } let messageData; if (isQuestion) { - const sortSignDataHash = CryptoJS.SHA256(message).toString(CryptoJS.enc.Hex); + const sortSignDataHash = CryptoJS.SHA256(message).toString( + CryptoJS.enc.Hex + ); messageData = `${sortSignDataHash}|${chatSeq}`; } else { - messageData = message + messageData = message; } - const signDataHash = CryptoJS.SHA256(messageData).toString(CryptoJS.enc.Hex); + const signDataHash = CryptoJS.SHA256(messageData).toString( + CryptoJS.enc.Hex + ); const digest = Secp256k1.uint256(signDataHash, 16); const signature = Secp256k1.ecsign(this.privateKey, digest); let sigV = @@ -66,7 +70,13 @@ class EncryptUtils { return signatureData; } - static requestVrf(client: any, offlineSigner: any): Promise { + static requestVrf( + client: any, + offlineSigner: any + ): Promise<{ + vrf: { seed: any; proof: any; hashRandom: any[] | Uint8Array }; + sessionId: string; + }> { return new Promise((resolve, reject) => { WalletOperation.requestVrfSeed(client, offlineSigner) .then((res) => { @@ -79,7 +89,7 @@ class EncryptUtils { compressedPublicKey = "03" + this.publicKey.x; } const [hash, proof] = Evaluate(this.privateKeyBuf, res.seed); - console.log('sessionId: ', compressedPublicKey) + console.log("sessionId: ", compressedPublicKey); resolve({ vrf: { seed: res.seed, @@ -87,16 +97,16 @@ class EncryptUtils { hashRandom: hash, }, sessionId: compressedPublicKey, - }) + }); } else { reject(new Error("Vrf seed is null")); } }) .catch((err) => { - console.log('requestVrf-err: ', err) - reject(err) - }) - }) + console.log("requestVrf-err: ", err); + reject(err); + }); + }); } static signHeartbeat(message: string) { diff --git a/src/walletOperation.ts b/src/walletOperation.ts index 3e924e1..a886699 100644 --- a/src/walletOperation.ts +++ b/src/walletOperation.ts @@ -1,7 +1,7 @@ import { AccountData } from "@cosmjs/proto-signing"; import { NesaClient } from "./client"; import { GasPrice } from "@cosmjs/stargate"; -import { ChainInfo } from "@keplr-wallet/types" +import { ChainInfo } from "@keplr-wallet/types"; import EncryptUtils from "./encryptUtils"; import Long from "long"; @@ -11,73 +11,112 @@ class WalletOperation { if (offlineSigner) { const { chainId, rpc } = chainInfo; const account: AccountData = (await offlineSigner.getAccounts())[0]; - NesaClient.connectWithSigner( - rpc, - offlineSigner, - account.address, - chainId, - { - gasPrice: GasPrice.fromString( - `0.025${chainInfo.feeCurrencies[0].coinMinimalDenom}` - ), - estimatedBlockTime: 6, - estimatedIndexerTime: 5, - } - ).then((client) => { - resolve(client) - }).catch((error) => { - reject(error) - }) + + try { + const client = await NesaClient.connectWithSigner( + rpc, + offlineSigner, + account.address, + chainId, + { + gasPrice: GasPrice.fromString( + `0.025${chainInfo.feeCurrencies[0].coinMinimalDenom}` + ), + estimatedBlockTime: 6, + estimatedIndexerTime: 5, + } + ); + + resolve(client); + } catch (e) { + reject(e); + } } else { - reject(new Error("No wallet installed, please install keplr or metamask wallet first")); + reject( + new Error( + "No wallet installed, please install keplr or metamask wallet first" + ) + ); } - }) + }); } - static registerSession(client: any, modelName: string, lockAmount: string, denom: string, chainInfo: ChainInfo, offlineSigner: any): Promise { + static registerSession( + client: any, + modelName: string = "", + lockAmount: string, + denom: string, + chainInfo: ChainInfo, + offlineSigner: any + ): Promise { EncryptUtils.generateKey(); return new Promise(async (resolve, reject) => { const lockBalance = { denom: denom, amount: lockAmount }; - EncryptUtils.requestVrf(client, offlineSigner).then(async (res) => { - const fee = { - amount: [{ denom: chainInfo.feeCurrencies[0].coinMinimalDenom, amount: "6" }], - gas: "200000", - } - if (res?.vrf && res?.sessionId) { - resolve(client.signRegisterSession(res.sessionId, modelName, fee, lockBalance, res.vrf)) - } else { - reject(new Error('Vrf seed is null')) - } - }) - }) + const res = await EncryptUtils.requestVrf(client, offlineSigner); + const res2 = await EncryptUtils.requestVrf(client, offlineSigner); + + console.log("res", { res1: res?.sessionId, res2: res2?.sessionId }); + + const fee = { + amount: [ + { denom: chainInfo.feeCurrencies[0].coinMinimalDenom, amount: "6" }, + ], + gas: "200000", + }; + + if (res?.vrf && res?.sessionId) { + resolve( + client.signRegisterSession( + res.sessionId, + modelName, + fee, + lockBalance, + res.vrf + ) + ); + } else { + reject(new Error("Vrf seed is null")); + } + }); } - static requestAgentInfo(client: any, agentName: string, modelName: string): Promise { - console.log('modelName: ', modelName) + static requestAgentInfo( + client: any, + agentName: string, + modelName: string + ): Promise { + console.log("modelName: ", modelName); return new Promise(async (resolve, reject) => { if (client) { - resolve(client.getInferenceAgent(agentName, modelName, Long.fromNumber(0), new Uint8Array())) + resolve( + client.getInferenceAgent( + agentName, + modelName, + Long.fromNumber(0), + new Uint8Array() + ) + ); } else { reject("Client init failed"); } - }) + }); } static requestParams(client: any): Promise { return new Promise(async (resolve, reject) => { if (client) { - resolve(client.getParams()) + resolve(client.getParams()); } else { reject("Client init failed"); } - }) + }); } static requestVrfSeed(client: any, offlineSigner: any): Promise { return new Promise(async (resolve) => { const account: AccountData = (await offlineSigner.getAccounts())[0]; - resolve(client.getVRFSeed(account.address)) - }) + resolve(client.getVRFSeed(account.address)); + }); } }