From bb95a6b0256a236988623c454a879282b5b06159 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 9 Dec 2024 19:06:32 +0200 Subject: [PATCH 01/79] Added support for operator and setting flow limits to sui its --- sui/deploy-contract.js | 11 ++++++-- sui/its.js | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 9a3d853a2..ab1f58edb 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -235,15 +235,22 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const [itsObjectId, itsv0ObjectId, ownerCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ + const [itsObjectId, itsv0ObjectId, ownerCapObjectId, operatorCapId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::its::ITS`, `${published.packageId}::its_v0::ITS_v0`, `${published.packageId}::owner_cap::OwnerCap`, + `${published.packageId}::operator_cap::OperatorCap`, ]); const channelId = await getItsChannelId(client, itsv0ObjectId); - chain.contracts.ITS.objects = { ITS: itsObjectId, ITSv0: itsv0ObjectId, ChannelId: channelId, OwnerCap: ownerCapObjectId }; + chain.contracts.ITS.objects = { + ITS: itsObjectId, + ITSv0: itsv0ObjectId, + ChannelId: channelId, + OwnerCap: ownerCapObjectId, + OperatorCap: operatorCapId, + }; const tx = new Transaction(); tx.moveCall({ diff --git a/sui/its.js b/sui/its.js index f69838d45..3ba75164a 100644 --- a/sui/its.js +++ b/sui/its.js @@ -18,6 +18,54 @@ function parseTrustedChains(config, trustedChain) { return trustedChain.split(','); } +async function setFlowLimits(keypair, client, config, contracts, args, options) { + let [tokenIds, coinTypes, flowLimits ] = args; + + const { ITS: itsConfig } = contracts; + + const { OperatorCap, ITS } = itsConfig.objects; + + const txBuilder = new TxBuilder(client); + + tokenIds = tokenIds.split(','); + coinTypes = coinTypes.split(','); + flowLimits = flowLimits.split(',').map((flowLimit) => { + return Number(flowLimit); + }); + + if (tokenIds.length != flowLimits.length || tokenIds.length != coinTypes.length) throw new Error(', and have to have the same length.'); + + for (const i in tokenIds) { + const tokenId = await txBuilder.moveCall({ + target: `${itsConfig.address}::token_id::from_address`, + arguments: [tokenIds[i]], + }); + + await txBuilder.moveCall({ + target: `${itsConfig.address}::its::set_flow_limit_as_operator`, + arguments: [ITS, OperatorCap, tokenId, flowLimits[i]], + typeArguments: [coinTypes[i]], + }); + } + + if (options.offline) { + const tx = txBuilder.tx; + const sender = options.sender || keypair.toSuiAddress(); + tx.setSender(sender); + await saveGeneratedTx(tx, `Set trusted address for ${trustedChain} to ${trustedAddress}`, client, options); + } else { + await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); + } + + // Update ITS config + for (const trustedChain of trustedChains) { + // Add trusted address to ITS config + if (!contracts.ITS.trustedAddresses) contracts.ITS.trustedAddresses = {}; + + contracts.ITS.trustedAddresses[trustedChain] = trustedAddress; + } +} + async function setupTrustedAddress(keypair, client, config, contracts, args, options) { const [trustedChain, trustedAddress] = args; @@ -125,8 +173,17 @@ if (require.main === module) { mainProcessor(removeTrustedAddress, options, [trustedChain], processCommand); }); + const setFlowLimitsProgram = new Command() + .name('set-flow-limits') + .command('set-flow-limits ') + .description(`Set flow limits for multiple tokens. , and can both be comma separated lists`) + .action((tokenIds, coinTypes, flowLimits, options) => { + mainProcessor(setFlowLimits, options, [tokenIds, coinTypes, flowLimits], processCommand); + }); + program.addCommand(setupTrustedAddressProgram); program.addCommand(removeTrustedAddressProgram); + program.addCommand(setFlowLimitsProgram); addOptionsToCommands(program, addBaseOptions, { offline: true }); From 8ca2b12d33ebfc9491565d1ba9a33c292b1bba89 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 9 Dec 2024 19:08:19 +0200 Subject: [PATCH 02/79] made lint happy --- sui/its.js | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/sui/its.js b/sui/its.js index 3ba75164a..37d7e3b5f 100644 --- a/sui/its.js +++ b/sui/its.js @@ -19,7 +19,7 @@ function parseTrustedChains(config, trustedChain) { } async function setFlowLimits(keypair, client, config, contracts, args, options) { - let [tokenIds, coinTypes, flowLimits ] = args; + let [tokenIds, coinTypes, flowLimits] = args; const { ITS: itsConfig } = contracts; @@ -33,7 +33,8 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) return Number(flowLimit); }); - if (tokenIds.length != flowLimits.length || tokenIds.length != coinTypes.length) throw new Error(', and have to have the same length.'); + if (tokenIds.length !== flowLimits.length || tokenIds.length !== coinTypes.length) + throw new Error(', and have to have the same length.'); for (const i in tokenIds) { const tokenId = await txBuilder.moveCall({ @@ -52,18 +53,10 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) const tx = txBuilder.tx; const sender = options.sender || keypair.toSuiAddress(); tx.setSender(sender); - await saveGeneratedTx(tx, `Set trusted address for ${trustedChain} to ${trustedAddress}`, client, options); + await saveGeneratedTx(tx, `Set flow limits for ${tokenIds} to ${flowLimits}`, client, options); } else { await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); } - - // Update ITS config - for (const trustedChain of trustedChains) { - // Add trusted address to ITS config - if (!contracts.ITS.trustedAddresses) contracts.ITS.trustedAddresses = {}; - - contracts.ITS.trustedAddresses[trustedChain] = trustedAddress; - } } async function setupTrustedAddress(keypair, client, config, contracts, args, options) { From 06e924dd9b78e57859f5676e4971cf9458d6c995 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 17 Dec 2024 15:00:19 +0200 Subject: [PATCH 03/79] fix a small bug --- sui/deploy-contract.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index af215c594..0ebaa78f0 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -237,7 +237,7 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const [itsObjectId, itsv0ObjectId, ownerCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ + const [itsObjectId, itsv0ObjectId, ownerCapObjectId, operatorCapId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::its::ITS`, `${published.packageId}::its_v0::ITS_v0`, `${published.packageId}::owner_cap::OwnerCap`, From 8f6da851d79412e288d4e961c791aa45d2c8345e Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 17 Dec 2024 15:00:33 +0200 Subject: [PATCH 04/79] prettier --- sui/deploy-contract.js | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 0ebaa78f0..cac1d7672 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -237,13 +237,16 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const [itsObjectId, itsv0ObjectId, ownerCapObjectId, operatorCapId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ - `${published.packageId}::its::ITS`, - `${published.packageId}::its_v0::ITS_v0`, - `${published.packageId}::owner_cap::OwnerCap`, - `${published.packageId}::operator_cap::OperatorCap`, - `${suiPackageAddress}::package::UpgradeCap`, - ]); + const [itsObjectId, itsv0ObjectId, ownerCapObjectId, operatorCapId, upgradeCapObjectId] = getObjectIdsByObjectTypes( + published.publishTxn, + [ + `${published.packageId}::its::ITS`, + `${published.packageId}::its_v0::ITS_v0`, + `${published.packageId}::owner_cap::OwnerCap`, + `${published.packageId}::operator_cap::OperatorCap`, + `${suiPackageAddress}::package::UpgradeCap`, + ], + ); const channelId = await getItsChannelId(client, itsv0ObjectId); From cc0f516a173364ced35e6e824c796db02eb5fe36 Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 17 Jan 2025 17:18:10 +0200 Subject: [PATCH 05/79] added a script to migrate tokens and moved custom token manager deployments to the factory. --- evm/interchainTokenFactory.js | 69 ++++++++++++++++++++++++++++++- evm/its.js | 76 ++++++----------------------------- evm/utils.js | 6 +++ 3 files changed, 86 insertions(+), 65 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 067562abe..ceaf69ce8 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -8,7 +8,7 @@ const { BigNumber, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); +const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo, isValidChain } = require('./utils'); const { addEvmOptions } = require('./cli-utils'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); @@ -20,7 +20,7 @@ async function processCommand(config, chain, options) { const contracts = chain.contracts; const contractName = 'InterchainTokenFactory'; - + console.log(contracts); const interchainTokenFactoryAddress = address || contracts.InterchainTokenFactory?.address; const interchainTokenServiceAddress = contracts.InterchainTokenService?.address; @@ -143,6 +143,7 @@ async function processCommand(config, chain, options) { const tokenId = await interchainTokenFactory.interchainTokenId(wallet.address, deploymentSalt); printInfo('tokenId', tokenId); + printInfo('token address', await interchainTokenService.interchainTokenAddress(tokenId)); await handleTx(tx, chain, interchainTokenService, options.action, 'TokenManagerDeployed', 'InterchainTokenDeploymentStarted'); @@ -225,6 +226,64 @@ async function processCommand(config, chain, options) { break; } + case 'registerCustomToken': { + const { tokenAddress, tokenManagerType, operator, gasValue } = options; + + const deploymentSalt = getDeploymentSalt(options); + + validateParameters({ + isValidAddress: { tokenAddress }, + isAddress: { operator }, + isValidNumber: { tokenManagerType, gasValue }, + }); + + const tx = await interchainTokenFactory.registerCustomToken( + deploymentSalt, + tokenAddress, + tokenManagerType, + operator, + gasValue, + { value: gasValue, ...gasOptions }, + ); + const tokenId = await interchainTokenFactory.linkedTokenId(wallet.address, deploymentSalt); + printInfo('tokenId', tokenId); + + await handleTx(tx, chain, interchainTokenService, options.action, 'TokenManagerDeployed', 'InterchainTokenDeploymentStarted'); + + break; + } + + case 'linkToken': { + const { destinationChain, destinationTokenAddress, tokenManagerType, linkParams, gasValue } = options; + + const deploymentSalt = getDeploymentSalt(options); + + isValidDestinationChain(config, destinationChain); + + validateParameters({ + isNonEmptyString: { destinationChain }, + isValidNumber: { tokenManagerType, gasValue }, + isValidBytesArray: { linkParams, destinationTokenAddress }, + }); + + const tx = await interchainTokenFactory.linkToken( + deploymentSalt, + destinationChain, + destinationTokenAddress, + tokenManagerType, + linkParams, + gasValue, + { value: gasValue, ...gasOptions }, + ); + + const tokenId = await interchainTokenFactory.linkedTokenId(wallet.address, deploymentSalt); + printInfo('tokenId', tokenId); + + await handleTx(tx, chain, interchainTokenService, options.action, 'LinkTokenStarted'); + + break; + } + default: { throw new Error(`Unknown action ${action}`); } @@ -255,6 +314,8 @@ if (require.main === module) { 'deployRemoteInterchainToken', 'registerCanonicalInterchainToken', 'deployRemoteCanonicalInterchainToken', + 'registerCustomToken', + 'linkToken', ]) .makeOptionMandatory(true), ); @@ -267,11 +328,15 @@ if (require.main === module) { program.addOption(new Option('--symbol ', 'token symbol')); program.addOption(new Option('--decimals ', 'token decimals')); program.addOption(new Option('--minter ', 'token minter').default(AddressZero)); + program.addOption(new Option('--operator ', 'token manager operator').default(AddressZero)); + program.addOption(new Option('--tokenManagerType ', 'token manager type')); program.addOption(new Option('--initialSupply ', 'initial supply').default(1e9)); program.addOption(new Option('--destinationChain ', 'destination chain')); program.addOption(new Option('--destinationAddress ', 'destination address')); program.addOption(new Option('--gasValue ', 'gas value').default(0)); program.addOption(new Option('--rawSalt ', 'raw deployment salt').env('RAW_SALT')); + program.addOption(new Option('--destinationTokenAddress ', 'destination token address')); + program.addOption(new Option('--linkParams ', 'parameters to use for linking')); program.action((options) => { main(options); diff --git a/evm/its.js b/evm/its.js index 14277f11b..4b3009ac1 100644 --- a/evm/its.js +++ b/evm/its.js @@ -251,67 +251,6 @@ async function processCommand(config, chain, options) { break; } - case 'deployTokenManager': { - const { destinationChain, type, operator, tokenAddress, gasValue } = options; - - const deploymentSalt = getDeploymentSalt(options); - const tokenManagerType = tokenManagerImplementations[type]; - - validateParameters({ - isString: { destinationChain }, - isValidAddress: { tokenAddress }, - isValidCalldata: { operator }, - isValidNumber: { gasValue, tokenManagerType }, - }); - - isValidDestinationChain(config, destinationChain); - - const params = defaultAbiCoder.encode(['bytes', 'address'], [operator, tokenAddress]); - - const tx = await interchainTokenService.deployTokenManager( - deploymentSalt, - destinationChain, - tokenManagerType, - params, - gasValue, - gasOptions, - ); - - await handleTx(tx, chain, interchainTokenService, options.action, 'TokenManagerDeployed', 'TokenManagerDeploymentStarted'); - - break; - } - - case 'deployInterchainToken': { - const { destinationChain, name, symbol, decimals, minter, gasValue } = options; - - const deploymentSalt = getDeploymentSalt(options); - - validateParameters({ - isNonEmptyString: { name, symbol }, - isString: { destinationChain }, - isAddress: { minter }, - isValidNumber: { decimals, gasValue }, - }); - - isValidDestinationChain(config, destinationChain); - - const tx = await interchainTokenService.deployInterchainToken( - deploymentSalt, - destinationChain, - name, - symbol, - decimals, - minter, - gasValue, - { value: gasValue, ...gasOptions }, - ); - - await handleTx(tx, chain, interchainTokenService, options.action, 'TokenManagerDeployed', 'InterchainTokenDeploymentStarted'); - - break; - } - case 'contractCallValue': { const { sourceChain, sourceAddress, payload } = options; @@ -667,6 +606,18 @@ async function processCommand(config, chain, options) { break; } + case 'migrateInterchainToken': { + const { tokenId } = options; + + validateParameters({ isKeccak256Hash: { tokenId } }); + + const tx = await interchainTokenService.migrateInterchainToken(tokenId); + + await handleTx(tx, chain, interchainTokenService, options.action); + + break; + } + default: { throw new Error(`Unknown action ${action}`); } @@ -697,8 +648,6 @@ if (require.main === module) { 'flowLimit', 'flowOutAmount', 'flowInAmount', - 'deployTokenManager', - 'deployInterchainToken', 'contractCallValue', 'expressExecute', 'interchainTransfer', @@ -710,6 +659,7 @@ if (require.main === module) { 'setPauseStatus', 'execute', 'checks', + 'migrateInterchainToken' ]) .makeOptionMandatory(true), ); diff --git a/evm/utils.js b/evm/utils.js index 033ee4fe5..57c6d5753 100644 --- a/evm/utils.js +++ b/evm/utils.js @@ -209,6 +209,11 @@ function isValidBytesAddress(input) { return addressRegex.test(input); } +function isValidBytesArray(input) { + const bytesRegex = /^0x[a-fA-F0-9]/; + return bytesRegex.test(input); +} + const isContract = async (address, provider) => { const code = await provider.getCode(address); return code && code !== '0x'; @@ -272,6 +277,7 @@ const validationFunctions = { isValidAddress, isValidPrivateKey, isValidTokenId, + isValidBytesArray, }; function validateParameters(parameters) { From 7ac4625c4ae00dc2fcb09cab387bd9c71740ffbc Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 17 Jan 2025 17:37:48 +0200 Subject: [PATCH 06/79] made lint happy --- evm/interchainTokenFactory.js | 10 +++++++++- evm/its.js | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index ceaf69ce8..0d2215e78 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -8,7 +8,15 @@ const { BigNumber, } = ethers; const { Command, Option } = require('commander'); -const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo, isValidChain } = require('./utils'); +const { + printInfo, + prompt, + mainProcessor, + validateParameters, + getContractJSON, + getGasOptions, + printWalletInfo, +} = require('./utils'); const { addEvmOptions } = require('./cli-utils'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); diff --git a/evm/its.js b/evm/its.js index 4b3009ac1..5de384e26 100644 --- a/evm/its.js +++ b/evm/its.js @@ -3,7 +3,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider, - utils: { hexZeroPad, toUtf8Bytes, keccak256, defaultAbiCoder }, + utils: { hexZeroPad, toUtf8Bytes, keccak256 }, BigNumber, constants: { AddressZero }, Contract, @@ -659,7 +659,7 @@ if (require.main === module) { 'setPauseStatus', 'execute', 'checks', - 'migrateInterchainToken' + 'migrateInterchainToken', ]) .makeOptionMandatory(true), ); From a858b1ba96a01fbd28a55b816fc81cf6a97eaa71 Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 17 Jan 2025 17:52:26 +0200 Subject: [PATCH 07/79] prettier --- evm/interchainTokenFactory.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 0d2215e78..b9daddcd2 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -8,15 +8,7 @@ const { BigNumber, } = ethers; const { Command, Option } = require('commander'); -const { - printInfo, - prompt, - mainProcessor, - validateParameters, - getContractJSON, - getGasOptions, - printWalletInfo, -} = require('./utils'); +const { printInfo, prompt, mainProcessor, validateParameters, getContractJSON, getGasOptions, printWalletInfo } = require('./utils'); const { addEvmOptions } = require('./cli-utils'); const { getDeploymentSalt, handleTx, isValidDestinationChain } = require('./its'); const { getWallet } = require('./sign-utils'); From 0410347b04f49325e1c8c8bc849cd8dd6ffd7adf Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 17 Jan 2025 19:44:55 +0200 Subject: [PATCH 08/79] addressed some comments --- .github/workflows/test-evm.yaml | 3 --- evm/interchainTokenFactory.js | 3 +-- evm/its.js | 40 ++++++++++++++++++++++++++++----- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 6832bc8d2..960750de2 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -118,9 +118,6 @@ jobs: - name: Upgrade ITS using create2 run: node evm/deploy-its.js -m create2 -u -y - - name: InterchainTokenService deploy interchain token on current chain - run: node evm/its.js --action deployInterchainToken --name "test" --symbol "TST" --decimals 18 --minter 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 --destinationChain '' --gasValue 0 --salt "salt" -y - - name: InterchainTokenService set hub run: node evm/its.js --action setTrustedAddress --trustedChain axelar --trustedAddress axelar1xyz -y diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index b9daddcd2..ca5c496ca 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -20,7 +20,6 @@ async function processCommand(config, chain, options) { const contracts = chain.contracts; const contractName = 'InterchainTokenFactory'; - console.log(contracts); const interchainTokenFactoryAddress = address || contracts.InterchainTokenFactory?.address; const interchainTokenServiceAddress = contracts.InterchainTokenService?.address; @@ -143,7 +142,7 @@ async function processCommand(config, chain, options) { const tokenId = await interchainTokenFactory.interchainTokenId(wallet.address, deploymentSalt); printInfo('tokenId', tokenId); - printInfo('token address', await interchainTokenService.interchainTokenAddress(tokenId)); + printInfo('Token address', await interchainTokenService.registeredTokenAddress(tokenId)); await handleTx(tx, chain, interchainTokenService, options.action, 'TokenManagerDeployed', 'InterchainTokenDeploymentStarted'); diff --git a/evm/its.js b/evm/its.js index 5de384e26..e7873534c 100644 --- a/evm/its.js +++ b/evm/its.js @@ -3,7 +3,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider, - utils: { hexZeroPad, toUtf8Bytes, keccak256 }, + utils: { hexZeroPad, toUtf8Bytes, keccak256, concat }, BigNumber, constants: { AddressZero }, Contract, @@ -30,6 +30,7 @@ const IInterchainTokenService = getContractJSON('IInterchainTokenService'); const InterchainTokenService = getContractJSON('InterchainTokenService'); const InterchainTokenFactory = getContractJSON('InterchainTokenFactory'); const IInterchainTokenDeployer = getContractJSON('IInterchainTokenDeployer'); +const ITokenManager = getContractJSON('ITokenManager'); const IOwnable = getContractJSON('IOwnable'); const { addEvmOptions } = require('./cli-utils'); const { getSaltFromKey } = require('@axelar-network/axelar-gmp-sdk-solidity/scripts/utils'); @@ -223,7 +224,11 @@ async function processCommand(config, chain, options) { const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); - const flowLimit = await interchainTokenService.flowLimit(tokenIdBytes32); + const tokenManagerAddress = await interchainTokenService.deployedTokenManager(tokenIdBytes32); + + const tokenManager = new Contract(tokenManagerAddress, ITokenManager.abi, wallet); + + const flowLimit = await tokenManager.flowLimit(); printInfo(`Flow limit for TokenManager with tokenId ${tokenId}`, flowLimit); break; @@ -234,7 +239,11 @@ async function processCommand(config, chain, options) { const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); - const flowOutAmount = await interchainTokenService.flowOutAmount(tokenIdBytes32); + const tokenManagerAddress = await interchainTokenService.deployedTokenManager(tokenIdBytes32); + + const tokenManager = new Contract(tokenManagerAddress, ITokenManager.abi, wallet); + + const flowOutAmount = await tokenManager.flowOutAmount(); printInfo(`Flow out amount for TokenManager with tokenId ${tokenId}`, flowOutAmount); break; @@ -245,7 +254,11 @@ async function processCommand(config, chain, options) { const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); - const flowInAmount = await interchainTokenService.flowInAmount(tokenIdBytes32); + const tokenManagerAddress = await interchainTokenService.deployedTokenManager(tokenIdBytes32); + + const tokenManager = new Contract(tokenManagerAddress, ITokenManager.abi, wallet); + + const flowInAmount = await tokenManager.flowInAmount(); printInfo(`Flow out amount for TokenManager with tokenId ${tokenId}`, flowInAmount); break; @@ -362,12 +375,14 @@ async function processCommand(config, chain, options) { const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); - const tx = await interchainTokenService.callContractWithInterchainToken( + const metadata = concat(['0x00000000', data]); + + const tx = await interchainTokenService.interchainTransfer( tokenIdBytes32, destinationChain, destinationAddress, amount, - data, + metadata, gasValue, { value: gasValue, ...gasOptions }, ); @@ -377,6 +392,18 @@ async function processCommand(config, chain, options) { break; } + case 'registerTokenMetadata': { + const { tokenAddress, gasValue } = options; + + validateParameters({ isValidAddress: { tokenAddress }, isNumber: { gasValue } }); + + const tx = await interchainTokenService.registerTokenMetadata(tokenAddress, gasValue, { value: gasValue, ...gasOptions }); + + await handleTx(tx, chain, interchainTokenService, options.action); + + break; + } + case 'setFlowLimits': { const tokenIds = options.tokenIds.split(','); const flowLimitsStrings = options.flowLimits.split(','); @@ -660,6 +687,7 @@ if (require.main === module) { 'execute', 'checks', 'migrateInterchainToken', + 'registerTokenMetadata', ]) .makeOptionMandatory(true), ); From 23af47311ed45afb876bd9740a64651df9d5db88 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:13:55 +0200 Subject: [PATCH 09/79] remove callContractWithInterchainToken --- evm/its.js | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/evm/its.js b/evm/its.js index e7873534c..7e20db6da 100644 --- a/evm/its.js +++ b/evm/its.js @@ -359,39 +359,6 @@ async function processCommand(config, chain, options) { break; } - case 'callContractWithInterchainToken': { - const { destinationChain, destinationAddress, amount, data, gasValue } = options; - - validateParameters({ - isValidTokenId: { tokenId }, - isNonEmptyString: { destinationChain, destinationAddress }, - isValidNumber: { amount, gasValue }, - isValidCalldata: { data }, - }); - - if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); - } - - const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); - - const metadata = concat(['0x00000000', data]); - - const tx = await interchainTokenService.interchainTransfer( - tokenIdBytes32, - destinationChain, - destinationAddress, - amount, - metadata, - gasValue, - { value: gasValue, ...gasOptions }, - ); - - await handleTx(tx, chain, interchainTokenService, options.action, 'InterchainTransfer', 'InterchainTransferWithData'); - - break; - } - case 'registerTokenMetadata': { const { tokenAddress, gasValue } = options; @@ -678,7 +645,6 @@ if (require.main === module) { 'contractCallValue', 'expressExecute', 'interchainTransfer', - 'callContractWithInterchainToken', 'setFlowLimits', 'trustedAddress', 'setTrustedAddress', From 4a9a73a919f1f6422a9b18cf93e1992dc78f7eb6 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:14:14 +0200 Subject: [PATCH 10/79] Update evm/its.js Co-authored-by: Milap Sheth --- evm/its.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/evm/its.js b/evm/its.js index 7e20db6da..5a01c0dc9 100644 --- a/evm/its.js +++ b/evm/its.js @@ -259,7 +259,7 @@ async function processCommand(config, chain, options) { const tokenManager = new Contract(tokenManagerAddress, ITokenManager.abi, wallet); const flowInAmount = await tokenManager.flowInAmount(); - printInfo(`Flow out amount for TokenManager with tokenId ${tokenId}`, flowInAmount); + printInfo(`Flow in amount for TokenManager with tokenId ${tokenId}`, flowInAmount); break; } From 44fff22ffa40a99fba1a9159fff6965081990a7a Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:24:36 +0200 Subject: [PATCH 11/79] add a test for register custom token --- .github/workflows/test-evm.yaml | 3 +++ evm/its.js | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 960750de2..bcf3738fd 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -130,6 +130,9 @@ jobs: - name: InterchainTokenFactory deploy interchain token to destination chain run: node evm/interchainTokenFactory.js --action deployRemoteInterchainToken --destinationChain remote --minter 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y + - name: InterchainTokenFactory register custom token + run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + # Note that tokenId is hardcoded since it's derivation must always be the same - name: InterchainTokenService interchain transfer to destination chain run: node evm/its.js --action interchainTransfer --destinationChain remote --tokenId 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --destinationAddress 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --amount 1 --gasValue 0 -y diff --git a/evm/its.js b/evm/its.js index 5a01c0dc9..8bf31ba63 100644 --- a/evm/its.js +++ b/evm/its.js @@ -3,7 +3,7 @@ const { ethers } = require('hardhat'); const { getDefaultProvider, - utils: { hexZeroPad, toUtf8Bytes, keccak256, concat }, + utils: { hexZeroPad, toUtf8Bytes, keccak256 }, BigNumber, constants: { AddressZero }, Contract, From fbab1c326c3e23e787b7bc0e11e623d5dad91fe2 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:28:22 +0200 Subject: [PATCH 12/79] try fixing the test --- .github/workflows/test-evm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index bcf3738fd..962ea7903 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -131,7 +131,7 @@ jobs: run: node evm/interchainTokenFactory.js --action deployRemoteInterchainToken --destinationChain remote --minter 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y - name: InterchainTokenFactory register custom token - run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y # Note that tokenId is hardcoded since it's derivation must always be the same - name: InterchainTokenService interchain transfer to destination chain From aa134ea71303f152c42ab1bc4cf403b02c885e4a Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:55:18 +0200 Subject: [PATCH 13/79] install latest its --- .github/workflows/test-evm.yaml | 3 + package-lock.json | 3299 ++++++++++++++++++++----------- package.json | 2 +- 3 files changed, 2165 insertions(+), 1139 deletions(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 962ea7903..8c01e5028 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -133,6 +133,9 @@ jobs: - name: InterchainTokenFactory register custom token run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y + - name: InterchainTokenFactory link token + run: node evm/interchainTokenFactory.js --action linkToken --destinationChain remote --destinationTokenAddress "0x1234" --tokenManagerType 4 --linkParams "0x5678" --salt "salt" -y + # Note that tokenId is hardcoded since it's derivation must always be the same - name: InterchainTokenService interchain transfer to destination chain run: node evm/its.js --action interchainTransfer --destinationChain remote --tokenId 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --destinationAddress 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --amount 1 --gasValue 0 -y diff --git a/package-lock.json b/package-lock.json index 749b2663d..9b934f072 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-cgp-sui": "1.0.3", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "2.0.1", + "@axelar-network/interchain-token-service": "0.0.0-snapshot.869b412", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1", @@ -44,8 +44,9 @@ } }, "node_modules/@0no-co/graphql.web": { - "version": "1.0.12", - "license": "MIT", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.13.tgz", + "integrity": "sha512-jqYxOevheVTU1S36ZdzAkJIdvRp2m3OYIG5SEoKDw5NI8eVwkoI0D/Q3DYNGmXCxkA6CQuoa7zvMiDPTLqUNuw==", "peerDependencies": { "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" }, @@ -57,7 +58,8 @@ }, "node_modules/@0no-co/graphqlsp": { "version": "1.12.16", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@0no-co/graphqlsp/-/graphqlsp-1.12.16.tgz", + "integrity": "sha512-B5pyYVH93Etv7xjT6IfB7QtMBdaaC07yjbhN6v8H7KgFStMkPvi+oWYBTibMFRMY89qwc9H8YixXg8SXDVgYWw==", "dependencies": { "@gql.tada/internal": "^1.0.0", "graphql": "^15.5.0 || ^16.0.0 || ^17.0.0" @@ -69,8 +71,9 @@ }, "node_modules/@aws-crypto/sha256-js": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", + "integrity": "sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^1.2.2", "@aws-sdk/types": "^3.1.0", @@ -79,8 +82,9 @@ }, "node_modules/@aws-crypto/util": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-1.2.2.tgz", + "integrity": "sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.1.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -88,38 +92,43 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.714.0", + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.7.2", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.8.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.1" } }, "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.8.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true }, "node_modules/@axelar-network/axelar-cgp-solidity": { "version": "6.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-solidity/-/axelar-cgp-solidity-6.4.0.tgz", + "integrity": "sha512-Xnw5xi234B1cmTCzgudV8zq+DDjJ1d1U362CM0vKH1FWmZprKIdqgmOYkiRyu+QiVhnznKiBURiSEHVrNjtYpw==", "dependencies": { "@axelar-network/axelar-gmp-sdk-solidity": "5.10.0" }, @@ -129,7 +138,8 @@ }, "node_modules/@axelar-network/axelar-cgp-solidity/node_modules/@axelar-network/axelar-gmp-sdk-solidity": { "version": "5.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-5.10.0.tgz", + "integrity": "sha512-s8SImALvYB+5AeiT3tbfWNBI2Mhqw1x91i/zM3DNpVUCnAR2HKtsB9T84KnUn/OJjOVgb4h0lv7q9smeYniRPw==", "engines": { "node": ">=18" } @@ -153,14 +163,16 @@ }, "node_modules/@axelar-network/axelar-gmp-sdk-solidity": { "version": "6.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-gmp-sdk-solidity/-/axelar-gmp-sdk-solidity-6.0.4.tgz", + "integrity": "sha512-o8pv+krIAlEwzid0Ac8qwykDsavc+1DRPvyFQ3V0R0zTQFtYLJIIXXXt7FRb8b+LJDAuX+E0bB3N2X+hlcxk/g==", "engines": { "node": ">=18" } }, "node_modules/@axelar-network/interchain-token-service": { - "version": "2.0.1", - "license": "MIT", + "version": "0.0.0-snapshot.869b412", + "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-0.0.0-snapshot.869b412.tgz", + "integrity": "sha512-tSMi7qdzY9TxeU57GedpuvvYZlOGeJWeqPRd1uW1YIUIIAKLWOAOPdz8+CFz4DQ7cyzESH7vkHhkF6aj35PgUA==", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4" @@ -171,21 +183,24 @@ }, "node_modules/@chainsafe/as-sha256": { "version": "0.3.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.3.1.tgz", + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==", + "dev": true }, "node_modules/@chainsafe/persistent-merkle-tree": { "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.4.2.tgz", + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@chainsafe/as-sha256": "^0.3.1" } }, "node_modules/@chainsafe/ssz": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.9.4.tgz", + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@chainsafe/as-sha256": "^0.3.1", "@chainsafe/persistent-merkle-tree": "^0.4.2", @@ -194,7 +209,9 @@ }, "node_modules/@confio/ics23": { "version": "0.6.8", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@confio/ics23/-/ics23-0.6.8.tgz", + "integrity": "sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==", + "deprecated": "Unmaintained. The codebase for this package was moved to https://github.com/cosmos/ics23 but then the JS implementation was removed in https://github.com/cosmos/ics23/pull/353. Please consult the maintainers of https://github.com/cosmos for further assistance.", "dependencies": { "@noble/hashes": "^1.0.0", "protobufjs": "^6.8.8" @@ -202,7 +219,8 @@ }, "node_modules/@cosmjs/amino": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", + "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", "dependencies": { "@cosmjs/crypto": "^0.32.4", "@cosmjs/encoding": "^0.32.4", @@ -212,7 +230,8 @@ }, "node_modules/@cosmjs/cosmwasm-stargate": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.32.4.tgz", + "integrity": "sha512-Fuo9BGEiB+POJ5WeRyBGuhyKR1ordvxZGLPuPosFJOH9U0gKMgcjwKMCgAlWFkMlHaTB+tNdA8AifWiHrI7VgA==", "dependencies": { "@cosmjs/amino": "^0.32.4", "@cosmjs/crypto": "^0.32.4", @@ -228,7 +247,8 @@ }, "node_modules/@cosmjs/crypto": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.4.tgz", + "integrity": "sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==", "dependencies": { "@cosmjs/encoding": "^0.32.4", "@cosmjs/math": "^0.32.4", @@ -241,7 +261,8 @@ }, "node_modules/@cosmjs/encoding": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.4.tgz", + "integrity": "sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==", "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -250,7 +271,8 @@ }, "node_modules/@cosmjs/json-rpc": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.4.tgz", + "integrity": "sha512-/jt4mBl7nYzfJ2J/VJ+r19c92mUKF0Lt0JxM3MXEJl7wlwW5haHAWtzRujHkyYMXOwIR+gBqT2S0vntXVBRyhQ==", "dependencies": { "@cosmjs/stream": "^0.32.4", "xstream": "^11.14.0" @@ -258,14 +280,16 @@ }, "node_modules/@cosmjs/math": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.4.tgz", + "integrity": "sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==", "dependencies": { "bn.js": "^5.2.0" } }, "node_modules/@cosmjs/proto-signing": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", + "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", "dependencies": { "@cosmjs/amino": "^0.32.4", "@cosmjs/crypto": "^0.32.4", @@ -277,7 +301,8 @@ }, "node_modules/@cosmjs/socket": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.4.tgz", + "integrity": "sha512-davcyYziBhkzfXQTu1l5NrpDYv0K9GekZCC9apBRvL1dvMc9F/ygM7iemHjUA+z8tJkxKxrt/YPjJ6XNHzLrkw==", "dependencies": { "@cosmjs/stream": "^0.32.4", "isomorphic-ws": "^4.0.1", @@ -287,7 +312,8 @@ }, "node_modules/@cosmjs/stargate": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.4.tgz", + "integrity": "sha512-usj08LxBSsPRq9sbpCeVdyLx2guEcOHfJS9mHGCLCXpdAPEIEQEtWLDpEUc0LEhWOx6+k/ChXTc5NpFkdrtGUQ==", "dependencies": { "@confio/ics23": "^0.6.8", "@cosmjs/amino": "^0.32.4", @@ -303,14 +329,16 @@ }, "node_modules/@cosmjs/stream": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.4.tgz", + "integrity": "sha512-Gih++NYHEiP+oyD4jNEUxU9antoC0pFSg+33Hpp0JlHwH0wXhtD3OOKnzSfDB7OIoEbrzLJUpEjOgpCp5Z+W3A==", "dependencies": { "xstream": "^11.14.0" } }, "node_modules/@cosmjs/tendermint-rpc": { "version": "0.32.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.4.tgz", + "integrity": "sha512-MWvUUno+4bCb/LmlMIErLypXxy7ckUuzEmpufYYYd9wgbdCXaTaO08SZzyFM5PI8UJ/0S2AmUrgWhldlbxO8mw==", "dependencies": { "@cosmjs/crypto": "^0.32.4", "@cosmjs/encoding": "^0.32.4", @@ -326,12 +354,14 @@ }, "node_modules/@cosmjs/utils": { "version": "0.32.4", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.4.tgz", + "integrity": "sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==" }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -342,8 +372,9 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -359,16 +390,18 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -389,16 +422,18 @@ }, "node_modules/@eslint/js": { "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@ethereumjs/rlp": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", "dev": true, - "license": "MPL-2.0", "peer": true, "bin": { "rlp": "bin/rlp" @@ -409,8 +444,9 @@ }, "node_modules/@ethereumjs/util": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", "dev": true, - "license": "MPL-2.0", "peer": true, "dependencies": { "@ethereumjs/rlp": "^4.0.1", @@ -423,8 +459,9 @@ }, "node_modules/@ethereumjs/util/node_modules/@noble/curves": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "1.4.0" @@ -435,8 +472,9 @@ }, "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 16" @@ -447,8 +485,9 @@ }, "node_modules/@ethereumjs/util/node_modules/@scure/base": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://paulmillr.com/funding/" @@ -456,8 +495,9 @@ }, "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/curves": "~1.4.0", @@ -470,8 +510,9 @@ }, "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "~1.4.0", @@ -483,8 +524,9 @@ }, "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/curves": "1.4.2", @@ -495,6 +537,8 @@ }, "node_modules/@ethersproject/abi": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "funding": [ { "type": "individual", @@ -505,7 +549,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -520,6 +563,8 @@ }, "node_modules/@ethersproject/abstract-provider": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "funding": [ { "type": "individual", @@ -530,7 +575,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -543,6 +587,8 @@ }, "node_modules/@ethersproject/abstract-signer": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "funding": [ { "type": "individual", @@ -553,7 +599,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -564,6 +609,8 @@ }, "node_modules/@ethersproject/address": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "funding": [ { "type": "individual", @@ -574,7 +621,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -585,6 +631,8 @@ }, "node_modules/@ethersproject/base64": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "funding": [ { "type": "individual", @@ -595,13 +643,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0" } }, "node_modules/@ethersproject/basex": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "funding": [ { "type": "individual", @@ -612,7 +661,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/properties": "^5.7.0" @@ -620,6 +668,8 @@ }, "node_modules/@ethersproject/bignumber": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "funding": [ { "type": "individual", @@ -630,7 +680,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -639,6 +688,8 @@ }, "node_modules/@ethersproject/bytes": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "funding": [ { "type": "individual", @@ -649,13 +700,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/constants": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "funding": [ { "type": "individual", @@ -666,13 +718,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0" } }, "node_modules/@ethersproject/contracts": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "funding": [ { "type": "individual", @@ -683,7 +736,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/abstract-provider": "^5.7.0", @@ -699,6 +751,8 @@ }, "node_modules/@ethersproject/hash": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "funding": [ { "type": "individual", @@ -709,7 +763,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -724,6 +777,8 @@ }, "node_modules/@ethersproject/hdnode": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "funding": [ { "type": "individual", @@ -734,7 +789,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/basex": "^5.7.0", @@ -752,6 +806,8 @@ }, "node_modules/@ethersproject/json-wallets": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "funding": [ { "type": "individual", @@ -762,7 +818,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", @@ -781,6 +836,8 @@ }, "node_modules/@ethersproject/keccak256": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "funding": [ { "type": "individual", @@ -791,7 +848,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" @@ -799,6 +855,8 @@ }, "node_modules/@ethersproject/logger": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "funding": [ { "type": "individual", @@ -808,11 +866,12 @@ "type": "individual", "url": "https://www.buymeacoffee.com/ricmoo" } - ], - "license": "MIT" + ] }, "node_modules/@ethersproject/networks": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "funding": [ { "type": "individual", @@ -823,13 +882,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/pbkdf2": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "funding": [ { "type": "individual", @@ -840,7 +900,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/sha2": "^5.7.0" @@ -848,6 +907,8 @@ }, "node_modules/@ethersproject/properties": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", "funding": [ { "type": "individual", @@ -858,13 +919,14 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/logger": "^5.7.0" } }, "node_modules/@ethersproject/providers": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", "funding": [ { "type": "individual", @@ -875,7 +937,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -901,7 +962,8 @@ }, "node_modules/@ethersproject/providers/node_modules/ws": { "version": "7.4.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", "engines": { "node": ">=8.3.0" }, @@ -920,6 +982,8 @@ }, "node_modules/@ethersproject/random": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "funding": [ { "type": "individual", @@ -930,7 +994,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -938,6 +1001,8 @@ }, "node_modules/@ethersproject/rlp": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "funding": [ { "type": "individual", @@ -948,7 +1013,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0" @@ -956,6 +1020,8 @@ }, "node_modules/@ethersproject/sha2": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "funding": [ { "type": "individual", @@ -966,7 +1032,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -975,6 +1040,8 @@ }, "node_modules/@ethersproject/signing-key": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "funding": [ { "type": "individual", @@ -985,7 +1052,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -997,7 +1063,8 @@ }, "node_modules/@ethersproject/signing-key/node_modules/elliptic": { "version": "6.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -1010,10 +1077,13 @@ }, "node_modules/@ethersproject/signing-key/node_modules/elliptic/node_modules/bn.js": { "version": "4.12.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" }, "node_modules/@ethersproject/solidity": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "funding": [ { "type": "individual", @@ -1024,7 +1094,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1036,6 +1105,8 @@ }, "node_modules/@ethersproject/strings": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "funding": [ { "type": "individual", @@ -1046,7 +1117,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -1055,6 +1125,8 @@ }, "node_modules/@ethersproject/transactions": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "funding": [ { "type": "individual", @@ -1065,7 +1137,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", @@ -1080,6 +1151,8 @@ }, "node_modules/@ethersproject/units": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "funding": [ { "type": "individual", @@ -1090,7 +1163,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bignumber": "^5.7.0", "@ethersproject/constants": "^5.7.0", @@ -1099,6 +1171,8 @@ }, "node_modules/@ethersproject/wallet": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "funding": [ { "type": "individual", @@ -1109,7 +1183,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/abstract-signer": "^5.7.0", @@ -1130,6 +1203,8 @@ }, "node_modules/@ethersproject/web": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "funding": [ { "type": "individual", @@ -1140,7 +1215,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/base64": "^5.7.0", "@ethersproject/bytes": "^5.7.0", @@ -1151,6 +1225,8 @@ }, "node_modules/@ethersproject/wordlists": { "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "funding": [ { "type": "individual", @@ -1161,7 +1237,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/hash": "^5.7.0", @@ -1172,15 +1247,17 @@ }, "node_modules/@fastify/busboy": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@gql.tada/cli-utils": { "version": "1.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@gql.tada/cli-utils/-/cli-utils-1.6.3.tgz", + "integrity": "sha512-jFFSY8OxYeBxdKi58UzeMXG1tdm4FVjXa8WHIi66Gzu9JWtCE6mqom3a8xkmSw+mVaybFW5EN2WXf1WztJVNyQ==", "dependencies": { "@0no-co/graphqlsp": "^1.12.13", "@gql.tada/internal": "1.0.8", @@ -1204,7 +1281,8 @@ }, "node_modules/@gql.tada/internal": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@gql.tada/internal/-/internal-1.0.8.tgz", + "integrity": "sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==", "dependencies": { "@0no-co/graphql.web": "^1.0.5" }, @@ -1215,15 +1293,18 @@ }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -1235,8 +1316,9 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -1247,13 +1329,16 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.3", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6.0.0" @@ -1261,14 +1346,16 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -1277,14 +1364,16 @@ }, "node_modules/@ledgerhq/cryptoassets": { "version": "9.13.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/cryptoassets/-/cryptoassets-9.13.0.tgz", + "integrity": "sha512-MzGJyc48OGU/FLYGYwEJyfOgbJzlR8XJ9Oo6XpNpNUM1/E5NDqvD72V0D+0uWIJYN3e2NtyqHXShLZDu7P95YA==", "dependencies": { "invariant": "2" } }, "node_modules/@ledgerhq/devices": { "version": "8.4.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.4.4.tgz", + "integrity": "sha512-sz/ryhe/R687RHtevIE9RlKaV8kkKykUV4k29e7GAVwzHX1gqG+O75cu1NCJUHLbp3eABV5FdvZejqRUlLis9A==", "dependencies": { "@ledgerhq/errors": "^6.19.1", "@ledgerhq/logs": "^6.12.0", @@ -1294,11 +1383,13 @@ }, "node_modules/@ledgerhq/errors": { "version": "6.19.1", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.19.1.tgz", + "integrity": "sha512-75yK7Nnit/Gp7gdrJAz0ipp31CCgncRp+evWt6QawQEtQKYEDfGo10QywgrrBBixeRxwnMy1DP6g2oCWRf1bjw==" }, "node_modules/@ledgerhq/hw-app-eth": { "version": "6.32.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-eth/-/hw-app-eth-6.32.2.tgz", + "integrity": "sha512-5RmRw+vhzCE88hFPcpFOXelLTk9cjscweYJLritdAcTSkXV3jOdmAYvY1KLhG5Ungy561r8AQHm6NleR/Qjpjw==", "dependencies": { "@ethersproject/abi": "^5.5.0", "@ethersproject/rlp": "^5.5.0", @@ -1314,14 +1405,16 @@ }, "node_modules/@ledgerhq/hw-app-eth/node_modules/axios": { "version": "0.26.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "dependencies": { "follow-redirects": "^1.14.8" } }, "node_modules/@ledgerhq/hw-transport": { "version": "6.31.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.31.4.tgz", + "integrity": "sha512-6c1ir/cXWJm5dCWdq55NPgCJ3UuKuuxRvf//Xs36Bq9BwkV2YaRQhZITAkads83l07NAdR16hkTWqqpwFMaI6A==", "dependencies": { "@ledgerhq/devices": "^8.4.4", "@ledgerhq/errors": "^6.19.1", @@ -1331,7 +1424,8 @@ }, "node_modules/@ledgerhq/hw-transport-mocker": { "version": "6.29.4", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.29.4.tgz", + "integrity": "sha512-CLDIpQ/eqU8qrCYGY9MyHa+oMgqs6PuNkWtqbcaS4AzNx8L/9bv7y8CZwCjxX6oB/2ZEq42RlL6oZ6Ou3oHnoQ==", "dependencies": { "@ledgerhq/hw-transport": "^6.31.4", "@ledgerhq/logs": "^6.12.0", @@ -1340,8 +1434,9 @@ }, "node_modules/@ledgerhq/hw-transport-node-hid": { "version": "6.29.5", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid/-/hw-transport-node-hid-6.29.5.tgz", + "integrity": "sha512-2bAp4K50V1kdCufU9JdQPcw4aLyvA+yQRJU/X39B+PC+rnis40gEbqNh0henhzv876sXdbNk6G/MkDWXpwDIow==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@ledgerhq/devices": "^8.4.4", "@ledgerhq/errors": "^6.19.1", @@ -1355,8 +1450,9 @@ }, "node_modules/@ledgerhq/hw-transport-node-hid-noevents": { "version": "6.30.5", + "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-node-hid-noevents/-/hw-transport-node-hid-noevents-6.30.5.tgz", + "integrity": "sha512-nOPbhFU87LgLERVAQ+HhxV8E8c+7d8ptllkgiJUc4QwL2z9zkIOAEtgdvCaZ066Oi9XGnln/GF1oAgByYnYDPw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@ledgerhq/devices": "^8.4.4", "@ledgerhq/errors": "^6.19.1", @@ -1367,12 +1463,14 @@ }, "node_modules/@ledgerhq/logs": { "version": "6.12.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.12.0.tgz", + "integrity": "sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==" }, "node_modules/@metamask/eth-sig-util": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", "dev": true, - "license": "ISC", "dependencies": { "ethereumjs-abi": "^0.6.8", "ethereumjs-util": "^6.2.1", @@ -1386,21 +1484,24 @@ }, "node_modules/@metamask/eth-sig-util/node_modules/@types/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@metamask/eth-sig-util/node_modules/bn.js": { "version": "4.12.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true }, "node_modules/@metamask/eth-sig-util/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -1412,28 +1513,29 @@ } }, "node_modules/@mysten/bcs": { - "version": "1.2.0", - "license": "Apache-2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@mysten/bcs/-/bcs-1.2.1.tgz", + "integrity": "sha512-RMSaUsNb8oR0rTRVIOOcyoEVJqQi6DLvMXN+7mvDcki12FJFQ0lF89zQa7AV7cIurWlDQfJ8VIbCuRDyK+955A==", "dependencies": { "bs58": "^6.0.0" } }, "node_modules/@mysten/ledgerjs-hw-app-sui": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@mysten/ledgerjs-hw-app-sui/-/ledgerjs-hw-app-sui-0.4.1.tgz", - "integrity": "sha512-548l+mXOn0Tv0GH6p142ZQGKFQMiNMH2vylphZpEml4bsLxFLG/aW40QlEwqLpdeeSfJAAwCVYlm2Fp2AFJusA==", - "license": "Apache-2.0", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@mysten/ledgerjs-hw-app-sui/-/ledgerjs-hw-app-sui-0.4.2.tgz", + "integrity": "sha512-Ypcb7WHyno16RodUI9CFzHQg/Fy6xl+itgr1D4g7Rdo6sUWBKn83p9s9wldG6wvJv+d4QlilXz/HcEgqrlu5pA==", "dependencies": { "@ledgerhq/hw-transport": "^6.31.0", "fast-sha256": "^1.3.0" } }, "node_modules/@mysten/sui": { - "version": "1.17.0", - "license": "Apache-2.0", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/@mysten/sui/-/sui-1.20.0.tgz", + "integrity": "sha512-/XLogwOYaSP31lPt377fj5b+8sRIyt2Opi/Ssos5dssPqol9vgvN/ZzV5Y5qVl4VquhATJHRpwV33B5rIVi7Ow==", "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", - "@mysten/bcs": "1.2.0", + "@mysten/bcs": "1.2.1", "@noble/curves": "^1.4.2", "@noble/hashes": "^1.4.0", "@scure/bip32": "^1.4.0", @@ -1445,7 +1547,6 @@ "graphql": "^16.9.0", "jose": "^5.6.3", "poseidon-lite": "^0.2.0", - "tweetnacl": "^1.0.3", "valibot": "^0.36.0" }, "engines": { @@ -1454,24 +1555,16 @@ }, "node_modules/@mysten/sui/node_modules/bech32": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", + "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, "node_modules/@noble/curves": { - "version": "1.7.0", - "license": "MIT", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.1.tgz", + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", "dependencies": { - "@noble/hashes": "1.6.0" - }, - "engines": { - "node": "^14.21.3 || >=16" + "@noble/hashes": "1.7.1" }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves/node_modules/@noble/hashes": { - "version": "1.6.0", - "license": "MIT", "engines": { "node": "^14.21.3 || >=16" }, @@ -1480,8 +1573,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.6.1", - "license": "MIT", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "engines": { "node": "^14.21.3 || >=16" }, @@ -1491,19 +1585,21 @@ }, "node_modules/@noble/secp256k1": { "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ], - "license": "MIT" + ] }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1514,16 +1610,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1534,8 +1632,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-block": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.2.tgz", + "integrity": "sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1551,8 +1650,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-blockchain": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.2.tgz", + "integrity": "sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-common": "4.0.2", @@ -1574,8 +1674,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-common": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.2.tgz", + "integrity": "sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==", "dev": true, - "license": "MIT", "dependencies": { "@nomicfoundation/ethereumjs-util": "9.0.2", "crc-32": "^1.2.0" @@ -1583,8 +1684,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-ethash": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.2.tgz", + "integrity": "sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1599,8 +1701,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-evm": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.2.tgz", + "integrity": "sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@ethersproject/providers": "^5.7.1", "@nomicfoundation/ethereumjs-common": "4.0.2", @@ -1617,8 +1720,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-rlp": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.2.tgz", + "integrity": "sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==", "dev": true, - "license": "MPL-2.0", "bin": { "rlp": "bin/rlp" }, @@ -1628,8 +1732,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-statemanager": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.2.tgz", + "integrity": "sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-common": "4.0.2", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1641,8 +1746,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-trie": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.2.tgz", + "integrity": "sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-rlp": "5.0.2", "@nomicfoundation/ethereumjs-util": "9.0.2", @@ -1656,8 +1762,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-tx": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.2.tgz", + "integrity": "sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@chainsafe/ssz": "^0.9.2", "@ethersproject/providers": "^5.7.2", @@ -1672,8 +1779,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-util": { "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.2.tgz", + "integrity": "sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@chainsafe/ssz": "^0.10.0", "@nomicfoundation/ethereumjs-rlp": "5.0.2", @@ -1685,16 +1793,18 @@ }, "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/persistent-merkle-tree": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@chainsafe/persistent-merkle-tree/-/persistent-merkle-tree-0.5.0.tgz", + "integrity": "sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@chainsafe/as-sha256": "^0.3.1" } }, "node_modules/@nomicfoundation/ethereumjs-util/node_modules/@chainsafe/ssz": { "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@chainsafe/ssz/-/ssz-0.10.2.tgz", + "integrity": "sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@chainsafe/as-sha256": "^0.3.1", "@chainsafe/persistent-merkle-tree": "^0.5.0" @@ -1702,8 +1812,9 @@ }, "node_modules/@nomicfoundation/ethereumjs-vm": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.2.tgz", + "integrity": "sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@nomicfoundation/ethereumjs-block": "5.0.2", "@nomicfoundation/ethereumjs-blockchain": "7.0.2", @@ -1725,8 +1836,9 @@ }, "node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", + "integrity": "sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -1744,8 +1856,9 @@ }, "node_modules/@nomicfoundation/hardhat-network-helpers": { "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.12.tgz", + "integrity": "sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ethereumjs-util": "^7.1.4" @@ -1756,8 +1869,9 @@ }, "node_modules/@nomicfoundation/hardhat-toolbox": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz", + "integrity": "sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg==", "dev": true, - "license": "MIT", "peerDependencies": { "@ethersproject/abi": "^5.4.7", "@ethersproject/providers": "^5.4.7", @@ -1782,8 +1896,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz", + "integrity": "sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" }, @@ -1799,8 +1914,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz", + "integrity": "sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1808,8 +1924,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz", + "integrity": "sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1817,8 +1934,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz", + "integrity": "sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1826,8 +1944,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz", + "integrity": "sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1835,8 +1954,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz", + "integrity": "sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1844,8 +1964,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz", + "integrity": "sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1853,8 +1974,9 @@ }, "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz", + "integrity": "sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==", "dev": true, - "license": "MIT", "optional": true, "engines": { "node": ">= 12" @@ -1862,8 +1984,9 @@ }, "node_modules/@nomiclabs/hardhat-ethers": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", "dev": true, - "license": "MIT", "peer": true, "peerDependencies": { "ethers": "^5.0.0", @@ -1872,8 +1995,10 @@ }, "node_modules/@nomiclabs/hardhat-etherscan": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.8.tgz", + "integrity": "sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==", + "deprecated": "The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -1893,8 +2018,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-convert": "^1.9.0" @@ -1905,8 +2031,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -1919,8 +2046,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-name": "1.1.3" @@ -1928,14 +2056,16 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.8.0" @@ -1943,8 +2073,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -1957,8 +2088,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -1966,8 +2098,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -1975,8 +2108,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" @@ -1984,8 +2118,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^3.0.0" @@ -1996,8 +2131,9 @@ }, "node_modules/@nomiclabs/hardhat-etherscan/node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 4.0.0" @@ -2005,8 +2141,10 @@ }, "node_modules/@openzeppelin/defender-base-client": { "version": "1.54.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.6.tgz", + "integrity": "sha512-PTef+rMxkM5VQ7sLwLKSjp2DBakYQd661ZJiSRywx+q/nIpm3B/HYGcz5wPZCA5O/QcEP6TatXXDoeMwimbcnw==", + "deprecated": "This package has been deprecated and will no longer be maintained, please use @openzeppelin/defender-sdk package instead.", "dev": true, - "license": "MIT", "dependencies": { "amazon-cognito-identity-js": "^6.0.1", "async-retry": "^1.3.3", @@ -2017,8 +2155,10 @@ }, "node_modules/@openzeppelin/defender-relay-client": { "version": "1.54.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-relay-client/-/defender-relay-client-1.54.6.tgz", + "integrity": "sha512-eLmR8RPqkwo8TIFVLdyi0GhHZAF+5pDHR1iI2uP4YVyknUl6s5yIz+OsGCX539WA2HgJtp6ct2ufBaEQ4tIaCA==", + "deprecated": "This package has been deprecated and will no longer be maintained, please use @openzeppelin/defender-sdk package instead.", "dev": true, - "license": "MIT", "dependencies": { "@openzeppelin/defender-base-client": "1.54.6", "amazon-cognito-identity-js": "^6.0.1", @@ -2038,23 +2178,28 @@ }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -2062,54 +2207,63 @@ }, "node_modules/@protobufjs/float": { "version": "1.0.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "node_modules/@protobufjs/path": { "version": "1.1.2", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@rtsao/scc": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true }, "node_modules/@scure/base": { - "version": "1.2.1", - "license": "MIT", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.4.tgz", + "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip32": { - "version": "1.6.0", - "license": "MIT", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.6.2.tgz", + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", "dependencies": { - "@noble/curves": "~1.7.0", - "@noble/hashes": "~1.6.0", - "@scure/base": "~1.2.1" + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.2" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@scure/bip39": { - "version": "1.5.0", - "license": "MIT", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "dependencies": { - "@noble/hashes": "~1.6.0", - "@scure/base": "~1.2.1" + "@noble/hashes": "~1.7.1", + "@scure/base": "~1.2.4" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -2117,8 +2271,9 @@ }, "node_modules/@sentry/core": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2132,8 +2287,9 @@ }, "node_modules/@sentry/hub": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "5.30.0", "@sentry/utils": "5.30.0", @@ -2145,8 +2301,9 @@ }, "node_modules/@sentry/minimal": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/types": "5.30.0", @@ -2158,8 +2315,9 @@ }, "node_modules/@sentry/node": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/core": "5.30.0", "@sentry/hub": "5.30.0", @@ -2177,8 +2335,9 @@ }, "node_modules/@sentry/tracing": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", "dev": true, - "license": "MIT", "dependencies": { "@sentry/hub": "5.30.0", "@sentry/minimal": "5.30.0", @@ -2192,16 +2351,18 @@ }, "node_modules/@sentry/types": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=6" } }, "node_modules/@sentry/utils": { "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@sentry/types": "5.30.0", "tslib": "^1.9.3" @@ -2212,28 +2373,33 @@ }, "node_modules/@simplewebauthn/typescript-types": { "version": "7.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@simplewebauthn/typescript-types/-/typescript-types-7.4.0.tgz", + "integrity": "sha512-8/ZjHeUPe210Bt5oyaOIGx4h8lHdsQs19BiOT44gi/jBEgK7uBGA0Fy7NRsyh777al3m6WM0mBf0UR7xd4R7WQ==", + "deprecated": "This package has been renamed to @simplewebauthn/types. Please install @simplewebauthn/types instead to ensure you receive future updates." }, "node_modules/@smithy/types": { - "version": "3.7.2", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.1.0.tgz", + "integrity": "sha512-enhjdwp4D7CXmwLtD6zbcDMbo6/T6WtuuKCY49Xxc6OMOmUWlBEBDREsxxgV2LIdeQPW756+f97GzcgAwp3iLw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "node_modules/@smithy/types/node_modules/tslib": { "version": "2.8.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "antlr4ts": "^0.5.0-alpha.4" @@ -2241,11 +2407,13 @@ }, "node_modules/@stellar/js-xdr": { "version": "3.1.2", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.2.tgz", + "integrity": "sha512-VVolPL5goVEIsvuGqDc5uiKxV03lzfWdvYg1KikvwheDmTBO68CKDji3bAZ/kppZrx5iTA8z3Ld5yuytcvhvOQ==" }, "node_modules/@stellar/stellar-base": { "version": "13.0.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-13.0.1.tgz", + "integrity": "sha512-Xbd12mc9Oj/130Tv0URmm3wXG77XMshZtZ2yNCjqX5ZbMD5IYpbBs3DVCteLU/4SLj/Fnmhh1dzhrQXnk4r+pQ==", "dependencies": { "@stellar/js-xdr": "^3.1.2", "base32.js": "^0.1.0", @@ -2260,7 +2428,8 @@ }, "node_modules/@stellar/stellar-sdk": { "version": "13.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@stellar/stellar-sdk/-/stellar-sdk-13.1.0.tgz", + "integrity": "sha512-ARQkUdyGefXdTgwSF0eONkzv/geAqUfyfheJ9Nthz6GAr5b41fNwWW9UtE8JpXC4IpvE3t5elIUN5hKJzASN9w==", "dependencies": { "@stellar/stellar-base": "^13.0.1", "axios": "^1.7.9", @@ -2274,36 +2443,42 @@ }, "node_modules/@suchipi/femver": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@suchipi/femver/-/femver-1.0.0.tgz", + "integrity": "sha512-bprE8+K5V+DPX7q2e2K57ImqNBdfGHDIWaGI5xHxZoxbKOuQZn4wzPiUxOAHnsUr3w3xHrWXwN7gnG/iIuEMIg==" }, "node_modules/@tsconfig/node10": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@typechain/ethers-v5": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "lodash": "^4.17.15", @@ -2319,8 +2494,9 @@ }, "node_modules/@typechain/hardhat": { "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", + "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fs-extra": "^9.1.0" @@ -2336,8 +2512,9 @@ }, "node_modules/@typechain/hardhat/node_modules/fs-extra": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "at-least-node": "^1.0.0", @@ -2351,22 +2528,25 @@ }, "node_modules/@types/bn.js": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/chai": { "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/chai-as-promised": { "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/chai": "*" @@ -2374,8 +2554,9 @@ }, "node_modules/@types/concat-stream": { "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" @@ -2383,8 +2564,9 @@ }, "node_modules/@types/form-data": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" @@ -2392,8 +2574,9 @@ }, "node_modules/@types/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/minimatch": "*", @@ -2402,61 +2585,71 @@ }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/long": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/lru-cache": { "version": "5.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true }, "node_modules/@types/minimatch": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/mocha": { "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/node": { - "version": "22.10.2", - "license": "MIT", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dependencies": { "undici-types": "~6.20.0" } }, "node_modules/@types/pbkdf2": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/prettier": { "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/qs": { - "version": "6.9.17", + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/@types/readable-stream": { "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "safe-buffer": "~5.1.1" @@ -2464,43 +2657,50 @@ }, "node_modules/@types/readable-stream/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/@types/secp256k1": { "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/w3c-web-usb": { "version": "1.0.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz", + "integrity": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ==", + "dev": true }, "node_modules/@ungap/structured-clone": { "version": "1.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "dev": true }, "node_modules/abbrev": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/abortcontroller-polyfill": { "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/abstract-level": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.4.tgz", + "integrity": "sha512-eUP/6pbXBkMbXFdx4IH2fVgvB7M0JvR7/lIL33zcs0IBcwjdzSSl31TOJsaCzmKSSDF9h8QYSOJux4Nd4YJqFg==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^6.0.3", "catering": "^2.1.0", @@ -2516,8 +2716,9 @@ }, "node_modules/acorn": { "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, - "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2527,16 +2728,18 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "acorn": "^8.11.0" @@ -2547,20 +2750,23 @@ }, "node_modules/adm-zip": { "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.3.0" } }, "node_modules/aes-js": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" }, "node_modules/agent-base": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -2570,8 +2776,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -2582,8 +2789,9 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2597,8 +2805,9 @@ }, "node_modules/amazon-cognito-identity-js": { "version": "6.3.12", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz", + "integrity": "sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "1.2.2", "buffer": "4.9.2", @@ -2609,8 +2818,9 @@ }, "node_modules/amazon-cognito-identity-js/node_modules/buffer": { "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dev": true, - "license": "MIT", "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -2619,13 +2829,15 @@ }, "node_modules/amazon-cognito-identity-js/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/amdefine": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "dev": true, - "license": "BSD-3-Clause OR MIT", "optional": true, "peer": true, "engines": { @@ -2634,24 +2846,27 @@ }, "node_modules/ansi-align": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-colors": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -2664,8 +2879,9 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -2675,16 +2891,18 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2697,14 +2915,16 @@ }, "node_modules/antlr4ts": { "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", "dev": true, - "license": "BSD-3-Clause", "peer": true }, "node_modules/anymatch": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2715,31 +2935,35 @@ }, "node_modules/arg": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/array-back": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6" } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -2750,8 +2974,9 @@ }, "node_modules/array-includes": { "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2769,8 +2994,9 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -2778,8 +3004,9 @@ }, "node_modules/array-uniq": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -2787,8 +3014,9 @@ }, "node_modules/array.prototype.findlastindex": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2806,8 +3034,9 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2823,8 +3052,9 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2840,8 +3070,9 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", @@ -2860,22 +3091,25 @@ }, "node_modules/asap": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/assertion-error": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -2883,26 +3117,30 @@ }, "node_modules/async": { "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/async-retry": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "dev": true, - "license": "MIT", "dependencies": { "retry": "0.13.1" } }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/at-least-node": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, - "license": "ISC", "peer": true, "engines": { "node": ">= 4.0.0" @@ -2910,8 +3148,9 @@ }, "node_modules/available-typed-arrays": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, - "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2924,7 +3163,8 @@ }, "node_modules/axios": { "version": "1.7.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -2933,22 +3173,27 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base-x": { "version": "5.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" }, "node_modules/base32.js": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/base32.js/-/base32.js-0.1.0.tgz", + "integrity": "sha512-n3TkB02ixgBOhTvANakDb4xaMXnYUVkNoRFJjQflcqMQhyEKxEHdj3E6N8t8sUQ0mjH/3/JxzlXuz3ul/J90pQ==", "engines": { "node": ">=0.12.0" } }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -2962,32 +3207,35 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/bech32": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, "node_modules/bigint-crypto-utils": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", + "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/bignumber.js": { "version": "9.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -2997,16 +3245,18 @@ }, "node_modules/bindings": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, - "license": "MIT", "dependencies": { "file-uri-to-path": "1.0.0" } }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3015,6 +3265,8 @@ }, "node_modules/bl/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -3030,7 +3282,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3038,17 +3289,20 @@ }, "node_modules/blakejs": { "version": "1.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true }, "node_modules/bn.js": { "version": "5.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/boxen": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-align": "^3.0.0", "camelcase": "^6.2.0", @@ -3068,8 +3322,9 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3077,8 +3332,9 @@ }, "node_modules/braces": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -3088,12 +3344,14 @@ }, "node_modules/brorand": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browser-level": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", "dev": true, - "license": "MIT", "dependencies": { "abstract-level": "^1.0.2", "catering": "^2.1.1", @@ -3103,13 +3361,15 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true }, "node_modules/browserify-aes": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, - "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -3121,15 +3381,17 @@ }, "node_modules/bs58": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "dependencies": { "base-x": "^5.0.0" } }, "node_modules/bs58check": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "dev": true, - "license": "MIT", "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -3138,22 +3400,26 @@ }, "node_modules/bs58check/node_modules/base-x": { "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "^5.0.1" } }, "node_modules/bs58check/node_modules/bs58": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, - "license": "MIT", "dependencies": { "base-x": "^3.0.2" } }, "node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -3168,7 +3434,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -3176,19 +3441,22 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true }, "node_modules/buffer-xor": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true }, "node_modules/bufferutil": { - "version": "4.0.8", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.9.tgz", + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", "devOptional": true, "hasInstallScript": true, - "license": "MIT", "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -3199,16 +3467,18 @@ }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/call-bind": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -3224,8 +3494,9 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -3236,8 +3507,9 @@ }, "node_modules/call-bound": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "get-intrinsic": "^1.2.6" @@ -3251,16 +3523,18 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3270,30 +3544,34 @@ }, "node_modules/case": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/case/-/case-1.6.3.tgz", + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==", "dev": true, - "license": "(MIT OR GPL-3.0-or-later)", "engines": { "node": ">= 0.8.0" } }, "node_modules/caseless": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true, - "license": "Apache-2.0", "peer": true }, "node_modules/catering": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cbor": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "nofilter": "^3.1.0" @@ -3304,8 +3582,9 @@ }, "node_modules/chai": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, - "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -3321,8 +3600,9 @@ }, "node_modules/chai-as-promised": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, - "license": "WTFPL", "peer": true, "dependencies": { "check-error": "^1.0.2" @@ -3333,8 +3613,9 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3348,8 +3629,9 @@ }, "node_modules/charenc": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { "node": "*" @@ -3357,8 +3639,9 @@ }, "node_modules/check-error": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, - "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -3368,8 +3651,9 @@ }, "node_modules/chokidar": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3391,8 +3675,9 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -3402,18 +3687,21 @@ }, "node_modules/chownr": { "version": "1.1.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/ci-info": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true }, "node_modules/cipher-base": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1" @@ -3424,9 +3712,10 @@ }, "node_modules/classic-level": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.4.1.tgz", + "integrity": "sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "abstract-level": "^1.0.2", "catering": "^2.1.0", @@ -3440,16 +3729,18 @@ }, "node_modules/clean-stack": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-boxes": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -3459,8 +3750,9 @@ }, "node_modules/cli-table3": { "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "object-assign": "^4.1.0", @@ -3475,8 +3767,9 @@ }, "node_modules/cli-table3/node_modules/ansi-regex": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -3484,8 +3777,9 @@ }, "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -3493,8 +3787,9 @@ }, "node_modules/cli-table3/node_modules/string-width": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "is-fullwidth-code-point": "^2.0.0", @@ -3506,8 +3801,9 @@ }, "node_modules/cli-table3/node_modules/strip-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-regex": "^3.0.0" @@ -3518,8 +3814,9 @@ }, "node_modules/cliui": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3528,8 +3825,9 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -3539,13 +3837,15 @@ }, "node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, "node_modules/colors": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.1.90" @@ -3553,7 +3853,8 @@ }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -3563,13 +3864,15 @@ }, "node_modules/command-exists": { "version": "1.2.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true }, "node_modules/command-line-args": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-back": "^3.1.0", @@ -3583,8 +3886,9 @@ }, "node_modules/command-line-usage": { "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-back": "^4.0.2", @@ -3598,8 +3902,9 @@ }, "node_modules/command-line-usage/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-convert": "^1.9.0" @@ -3610,8 +3915,9 @@ }, "node_modules/command-line-usage/node_modules/array-back": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -3619,8 +3925,9 @@ }, "node_modules/command-line-usage/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -3633,8 +3940,9 @@ }, "node_modules/command-line-usage/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-name": "1.1.3" @@ -3642,14 +3950,16 @@ }, "node_modules/command-line-usage/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/command-line-usage/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.8.0" @@ -3657,8 +3967,9 @@ }, "node_modules/command-line-usage/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -3666,8 +3977,9 @@ }, "node_modules/command-line-usage/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^3.0.0" @@ -3678,8 +3990,9 @@ }, "node_modules/command-line-usage/node_modules/typical": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -3687,24 +4000,27 @@ }, "node_modules/commander": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" } }, "node_modules/concat-map": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/concat-stream": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "dev": true, "engines": [ "node >= 0.8" ], - "license": "MIT", "peer": true, "dependencies": { "buffer-from": "^1.0.0", @@ -3715,14 +4031,16 @@ }, "node_modules/concat-stream/node_modules/isarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "core-util-is": "~1.0.0", @@ -3736,14 +4054,16 @@ }, "node_modules/concat-stream/node_modules/safe-buffer": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "safe-buffer": "~5.1.0" @@ -3751,26 +4071,30 @@ }, "node_modules/cookie": { "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/cosmjs-types": { "version": "0.9.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", + "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==" }, "node_modules/crc-32": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -3780,8 +4104,9 @@ }, "node_modules/create-hash": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, - "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -3792,8 +4117,9 @@ }, "node_modules/create-hmac": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, - "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -3805,23 +4131,26 @@ }, "node_modules/create-require": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/cross-fetch": { - "version": "4.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node_modules/cross-spawn": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, - "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3833,8 +4162,9 @@ }, "node_modules/crypt": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { "node": "*" @@ -3842,14 +4172,13 @@ }, "node_modules/crypto-js": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "node_modules/csv-parser": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csv-parser/-/csv-parser-3.1.0.tgz", + "integrity": "sha512-egOwFF+imkpAE0gTrbzdf7c322lonHAmLPT2Ou1b5lhTSeXyfEdaMBdWuVeUJ6fsYuR0/ENonFo16kEXWKOQFw==", "bin": { "csv-parser": "bin/csv-parser" }, @@ -3859,8 +4188,9 @@ }, "node_modules/d": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "es5-ext": "^0.10.64", @@ -3871,13 +4201,14 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3887,25 +4218,27 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -3920,13 +4253,16 @@ }, "node_modules/death": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==", "dev": true, "peer": true }, "node_modules/debug": { "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -3941,8 +4277,9 @@ }, "node_modules/decamelize": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -3952,8 +4289,9 @@ }, "node_modules/decompress-response": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -3966,8 +4304,9 @@ }, "node_modules/deep-eql": { "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, - "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -3977,16 +4316,18 @@ }, "node_modules/deep-extend": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true }, "node_modules/deepbookv3": { "version": "1.0.0", @@ -3995,7 +4336,8 @@ }, "node_modules/define-data-property": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4010,7 +4352,8 @@ }, "node_modules/define-properties": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -4025,47 +4368,57 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/depd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/detect-libc": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/diff": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/difflib": { "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dev": true, "peer": true, "dependencies": { "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "path-type": "^4.0.0" @@ -4076,8 +4429,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4087,8 +4441,9 @@ }, "node_modules/dotenv": { "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -4098,8 +4453,9 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -4111,7 +4467,8 @@ }, "node_modules/elliptic": { "version": "6.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -4124,25 +4481,29 @@ }, "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" }, "node_modules/emoji-regex": { "version": "8.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "node_modules/end-of-stream": { "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/enquirer": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -4153,33 +4514,36 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/es-abstract": { - "version": "1.23.6", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, - "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", + "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.7", - "get-intrinsic": "^1.2.6", - "get-symbol-description": "^1.0.2", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", @@ -4187,31 +4551,33 @@ "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.4", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.3", + "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", - "is-typed-array": "^1.1.13", + "is-typed-array": "^1.1.15", "is-weakref": "^1.1.0", - "math-intrinsics": "^1.0.0", + "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.3", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.16" + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -4222,22 +4588,25 @@ }, "node_modules/es-define-property": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } }, "node_modules/es-errors": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "engines": { "node": ">= 0.4" } }, "node_modules/es-object-atoms": { - "version": "1.0.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -4246,13 +4615,15 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, - "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -4260,16 +4631,18 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", @@ -4284,9 +4657,10 @@ }, "node_modules/es5-ext": { "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, "hasInstallScript": true, - "license": "ISC", "peer": true, "dependencies": { "es6-iterator": "^2.0.3", @@ -4300,8 +4674,9 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "d": "1", @@ -4311,14 +4686,16 @@ }, "node_modules/es6-promise": { "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/es6-symbol": { "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "d": "^1.0.2", @@ -4330,16 +4707,18 @@ }, "node_modules/escalade": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -4349,8 +4728,9 @@ }, "node_modules/escodegen": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "dependencies": { "esprima": "^2.7.1", @@ -4371,6 +4751,8 @@ }, "node_modules/escodegen/node_modules/estraverse": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", "dev": true, "peer": true, "engines": { @@ -4379,8 +4761,9 @@ }, "node_modules/escodegen/node_modules/levn": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "~1.1.2", @@ -4392,8 +4775,9 @@ }, "node_modules/escodegen/node_modules/optionator": { "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "deep-is": "~0.1.3", @@ -4409,6 +4793,8 @@ }, "node_modules/escodegen/node_modules/prelude-ls": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", "dev": true, "peer": true, "engines": { @@ -4417,8 +4803,9 @@ }, "node_modules/escodegen/node_modules/type-check": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -4429,8 +4816,10 @@ }, "node_modules/eslint": { "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4483,8 +4872,9 @@ }, "node_modules/eslint-config-prettier": { "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", "dev": true, - "license": "MIT", "dependencies": { "get-stdin": "^6.0.0" }, @@ -4497,8 +4887,9 @@ }, "node_modules/eslint-config-richardpringle": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-richardpringle/-/eslint-config-richardpringle-2.0.0.tgz", + "integrity": "sha512-c2eaJF76KmvOz1KvQCu5nrHBM1H6qB9Z5aW+RYaw9yQsoELiZ09ms9F7NZdPV4Q15sYV8NEJje9rTwnrbUSX6w==", "dev": true, - "license": "MIT", "dependencies": { "eslint-config-prettier": "^6.10.1", "eslint-config-standard": "^14.1.1", @@ -4511,8 +4902,9 @@ }, "node_modules/eslint-config-standard": { "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true, - "license": "MIT", "peerDependencies": { "eslint": ">=6.2.2", "eslint-plugin-import": ">=2.18.0", @@ -4523,8 +4915,9 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -4533,16 +4926,18 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -4557,16 +4952,18 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, - "license": "MIT", "dependencies": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" @@ -4583,8 +4980,9 @@ }, "node_modules/eslint-plugin-import": { "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, - "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -4615,16 +5013,18 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -4634,16 +5034,18 @@ }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-mocha": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-6.3.0.tgz", + "integrity": "sha512-Cd2roo8caAyG21oKaaNTj7cqeYRWW1I2B5SfpKRp0Ip1gkfwoR1Ow0IGlPWnNjzywdF4n+kHL8/9vM6zCJUxdg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-utils": "^2.0.0", "ramda": "^0.27.0" @@ -4657,8 +5059,9 @@ }, "node_modules/eslint-plugin-node": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, - "license": "MIT", "dependencies": { "eslint-plugin-es": "^3.0.0", "eslint-utils": "^2.0.0", @@ -4676,22 +5079,26 @@ }, "node_modules/eslint-plugin-node/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-promise": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.3.1.tgz", + "integrity": "sha512-bY2sGqyptzFBDLh/GMbAxfdJC+b0f23ME63FOE4+Jao0oZ3E1LEwFtWJX/1pGMJLiTtrSSern2CRM/g+dfc0eQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=6" } }, "node_modules/eslint-plugin-standard": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.1.0.tgz", + "integrity": "sha512-ZL7+QRixjTR6/528YNGyDotyffm5OQst/sGxKDwGb9Uqs4In5Egi4+jbobhqJoyoCM6/7v/1A5fhQ7ScMtDjaQ==", "dev": true, "funding": [ { @@ -4707,15 +5114,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "peerDependencies": { "eslint": ">=5.0.0" } }, "node_modules/eslint-scope": { "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -4729,8 +5136,9 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -4743,16 +5151,18 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=4" } }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -4762,8 +5172,9 @@ }, "node_modules/esniff": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "d": "^1.0.1", @@ -4777,8 +5188,9 @@ }, "node_modules/espree": { "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -4793,8 +5205,9 @@ }, "node_modules/esprima": { "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "bin": { "esparse": "bin/esparse.js", @@ -4806,8 +5219,9 @@ }, "node_modules/esquery": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -4817,8 +5231,9 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -4828,24 +5243,27 @@ }, "node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/eth-gas-reporter": { "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@solidity-parser/parser": "^0.14.0", @@ -4873,6 +5291,8 @@ }, "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "dev": true, "funding": [ { @@ -4880,13 +5300,13 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "peer": true }, "node_modules/eth-gas-reporter/node_modules/@scure/base": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://paulmillr.com/funding/" @@ -4894,6 +5314,8 @@ }, "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "dev": true, "funding": [ { @@ -4901,7 +5323,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "~1.2.0", @@ -4911,6 +5332,8 @@ }, "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "dev": true, "funding": [ { @@ -4918,7 +5341,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "~1.2.0", @@ -4927,8 +5349,9 @@ }, "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "1.2.0", @@ -4939,8 +5362,9 @@ }, "node_modules/ethereum-bloom-filters": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "^1.4.0" @@ -4948,8 +5372,9 @@ }, "node_modules/ethereum-cryptography": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -4970,14 +5395,16 @@ }, "node_modules/ethereum-cryptography/node_modules/node-addon-api": { "version": "5.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "dev": true }, "node_modules/ethereum-cryptography/node_modules/secp256k1": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "elliptic": "^6.5.7", "node-addon-api": "^5.0.0", @@ -4989,8 +5416,10 @@ }, "node_modules/ethereumjs-abi": { "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "deprecated": "This library has been deprecated and usage is discouraged.", "dev": true, - "license": "MIT", "dependencies": { "bn.js": "^4.11.8", "ethereumjs-util": "^6.0.0" @@ -4998,21 +5427,24 @@ }, "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/ethereumjs-abi/node_modules/bn.js": { "version": "4.12.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "dev": true }, "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", "dev": true, - "license": "MPL-2.0", "dependencies": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -5025,8 +5457,9 @@ }, "node_modules/ethereumjs-util": { "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "dev": true, - "license": "MPL-2.0", "peer": true, "dependencies": { "@types/bn.js": "^5.1.0", @@ -5041,6 +5474,8 @@ }, "node_modules/ethers": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "funding": [ { "type": "individual", @@ -5051,7 +5486,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@ethersproject/abi": "5.7.0", "@ethersproject/abstract-provider": "5.7.0", @@ -5087,8 +5521,9 @@ }, "node_modules/ethjs-unit": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "bn.js": "4.11.6", @@ -5101,14 +5536,16 @@ }, "node_modules/ethjs-unit/node_modules/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/ethjs-util": { "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", "dev": true, - "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -5120,8 +5557,9 @@ }, "node_modules/event-emitter": { "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "d": "1", @@ -5130,28 +5568,32 @@ }, "node_modules/eventemitter3": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/eventsource": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", "engines": { "node": ">=12.0.0" } }, "node_modules/evp_bytestokey": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -5159,16 +5601,18 @@ }, "node_modules/expand-template": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "dev": true, - "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" } }, "node_modules/ext": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "type": "^2.7.2" @@ -5176,25 +5620,28 @@ }, "node_modules/fast-base64-decode": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz", + "integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==", + "dev": true }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "node_modules/fast-glob": { - "version": "3.3.2", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -5202,8 +5649,9 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "is-glob": "^4.0.1" @@ -5214,45 +5662,60 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, "node_modules/fast-sha256": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", - "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", - "license": "Unlicense" + "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==" }, "node_modules/fast-uri": { - "version": "3.0.3", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", "dev": true, - "license": "BSD-3-Clause", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "peer": true }, "node_modules/fastq": { - "version": "1.17.1", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/feaxios": { "version": "0.0.23", - "license": "MIT", + "resolved": "https://registry.npmjs.org/feaxios/-/feaxios-0.0.23.tgz", + "integrity": "sha512-eghR0A21fvbkcQBgZuMfQhrXxJzC0GNUGC9fXhBge33D+mFDTwl0aJ35zoQQn575BhyjQitRc5N4f+L4cP708g==", "dependencies": { "is-retry-allowed": "^3.0.0" } }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -5262,13 +5725,15 @@ }, "node_modules/file-uri-to-path": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true }, "node_modules/fill-range": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -5278,8 +5743,9 @@ }, "node_modules/find-replace": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-back": "^3.0.1" @@ -5290,8 +5756,9 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -5305,16 +5772,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -5326,18 +5795,20 @@ }, "node_modules/flatted": { "version": "3.3.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true }, "node_modules/follow-redirects": { "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -5349,15 +5820,17 @@ }, "node_modules/for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/form-data": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -5369,18 +5842,21 @@ }, "node_modules/fp-ts": { "version": "1.19.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true }, "node_modules/fs-constants": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { - "version": "11.2.0", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -5392,19 +5868,23 @@ }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/fs.realpath": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -5415,18 +5895,21 @@ }, "node_modules/function-bind": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { - "version": "1.1.7", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", @@ -5441,48 +5924,53 @@ }, "node_modules/functional-red-black-tree": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true }, "node_modules/functions-have-names": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-caller-file": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-func-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.6", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", - "dunder-proto": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", + "get-proto": "^1.0.0", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "math-intrinsics": "^1.0.0" + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -5493,25 +5981,41 @@ }, "node_modules/get-port": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/get-symbol-description": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -5526,8 +6030,9 @@ }, "node_modules/ghost-testrpc": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "chalk": "^2.4.2", @@ -5539,8 +6044,9 @@ }, "node_modules/ghost-testrpc/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-convert": "^1.9.0" @@ -5551,8 +6057,9 @@ }, "node_modules/ghost-testrpc/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -5565,8 +6072,9 @@ }, "node_modules/ghost-testrpc/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-name": "1.1.3" @@ -5574,14 +6082,16 @@ }, "node_modules/ghost-testrpc/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/ghost-testrpc/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.8.0" @@ -5589,8 +6099,9 @@ }, "node_modules/ghost-testrpc/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -5598,8 +6109,9 @@ }, "node_modules/ghost-testrpc/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^3.0.0" @@ -5610,13 +6122,16 @@ }, "node_modules/github-from-package": { "version": "0.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true }, "node_modules/glob": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5634,8 +6149,9 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -5645,8 +6161,9 @@ }, "node_modules/global-modules": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "global-prefix": "^3.0.0" @@ -5657,8 +6174,9 @@ }, "node_modules/global-prefix": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ini": "^1.3.5", @@ -5671,8 +6189,9 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "isexe": "^2.0.0" @@ -5683,8 +6202,9 @@ }, "node_modules/globals": { "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -5697,7 +6217,8 @@ }, "node_modules/globalthis": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -5711,8 +6232,9 @@ }, "node_modules/globby": { "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/glob": "^7.1.1", @@ -5730,7 +6252,8 @@ }, "node_modules/gopd": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "engines": { "node": ">= 0.4" }, @@ -5740,7 +6263,8 @@ }, "node_modules/gql.tada": { "version": "1.8.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gql.tada/-/gql.tada-1.8.10.tgz", + "integrity": "sha512-FrvSxgz838FYVPgZHGOSgbpOjhR+yq44rCzww3oOPJYi0OvBJjAgCiP6LEokZIYND2fUTXzQAyLgcvgw1yNP5A==", "dependencies": { "@0no-co/graphql.web": "^1.0.5", "@0no-co/graphqlsp": "^1.12.13", @@ -5757,25 +6281,29 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/graphql": { "version": "16.10.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/handlebars": { "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "minimist": "^1.2.5", @@ -5795,8 +6323,9 @@ }, "node_modules/handlebars/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.10.0" @@ -5804,8 +6333,9 @@ }, "node_modules/hardhat": { "version": "2.19.5", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.19.5.tgz", + "integrity": "sha512-vx8R7zWCYVgM56vA6o0Wqx2bIIptkN4TMs9QwDqZVNGRhMzBfzqUeEYbp+69gxWp1neg2V2nYQUaaUv7aom1kw==", "dev": true, - "license": "MIT", "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", @@ -5875,8 +6405,9 @@ }, "node_modules/hardhat-gas-reporter": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-uniq": "1.0.3", @@ -5889,25 +6420,29 @@ }, "node_modules/hardhat/node_modules/@noble/hashes": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "dev": true, "funding": [ { "type": "individual", "url": "https://paulmillr.com/funding/" } - ], - "license": "MIT" + ] }, "node_modules/hardhat/node_modules/@scure/base": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, - "license": "MIT", "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/hardhat/node_modules/@scure/bip32": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", "dev": true, "funding": [ { @@ -5915,7 +6450,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "@noble/hashes": "~1.2.0", "@noble/secp256k1": "~1.7.0", @@ -5924,6 +6458,8 @@ }, "node_modules/hardhat/node_modules/@scure/bip39": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", "dev": true, "funding": [ { @@ -5931,7 +6467,6 @@ "url": "https://paulmillr.com/funding/" } ], - "license": "MIT", "dependencies": { "@noble/hashes": "~1.2.0", "@scure/base": "~1.1.0" @@ -5939,8 +6474,9 @@ }, "node_modules/hardhat/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -5950,8 +6486,9 @@ }, "node_modules/hardhat/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5963,29 +6500,33 @@ }, "node_modules/hardhat/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/hardhat/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/hardhat/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/hardhat/node_modules/ethereum-cryptography": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", "dev": true, - "license": "MIT", "dependencies": { "@noble/hashes": "1.2.0", "@noble/secp256k1": "1.7.1", @@ -5995,8 +6536,9 @@ }, "node_modules/hardhat/node_modules/find-up": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^2.0.0" }, @@ -6006,8 +6548,9 @@ }, "node_modules/hardhat/node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -6019,24 +6562,27 @@ }, "node_modules/hardhat/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/hardhat/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/hardhat/node_modules/locate-path": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" @@ -6047,8 +6593,9 @@ }, "node_modules/hardhat/node_modules/p-limit": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^1.0.0" }, @@ -6058,8 +6605,9 @@ }, "node_modules/hardhat/node_modules/p-locate": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^1.1.0" }, @@ -6069,16 +6617,18 @@ }, "node_modules/hardhat/node_modules/path-exists": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/hardhat/node_modules/resolve": { "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, - "license": "MIT", "dependencies": { "path-parse": "^1.0.6" }, @@ -6088,16 +6638,18 @@ }, "node_modules/hardhat/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/hardhat/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -6107,16 +6659,18 @@ }, "node_modules/hardhat/node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/has-bigints": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6126,15 +6680,17 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { "es-define-property": "^1.0.0" }, @@ -6144,8 +6700,9 @@ }, "node_modules/has-proto": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, - "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, @@ -6158,8 +6715,9 @@ }, "node_modules/has-symbols": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6169,8 +6727,9 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -6183,8 +6742,9 @@ }, "node_modules/hash-base": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -6196,7 +6756,8 @@ }, "node_modules/hash.js": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -6204,8 +6765,9 @@ }, "node_modules/hasown": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -6215,21 +6777,24 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/heap": { "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/hmac-drbg": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -6238,8 +6803,9 @@ }, "node_modules/http-basic": { "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "caseless": "^0.12.0", @@ -6253,8 +6819,9 @@ }, "node_modules/http-errors": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, - "license": "MIT", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -6268,14 +6835,16 @@ }, "node_modules/http-https": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/http-response-object": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/node": "^10.0.3" @@ -6283,14 +6852,16 @@ }, "node_modules/http-response-object/node_modules/@types/node": { "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/https-proxy-agent": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -6301,8 +6872,9 @@ }, "node_modules/iconv-lite": { "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -6312,6 +6884,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -6325,26 +6899,28 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immutable": { "version": "4.3.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true }, "node_modules/import-fresh": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, - "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -6358,24 +6934,28 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/inflight": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6383,17 +6963,20 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/internal-slot": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -6405,8 +6988,9 @@ }, "node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 0.10" @@ -6414,23 +6998,26 @@ }, "node_modules/invariant": { "version": "2.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/io-ts": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", "dev": true, - "license": "MIT", "dependencies": { "fp-ts": "^1.0.0" } }, "node_modules/is-arguments": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bound": "^1.0.2", @@ -6445,8 +7032,9 @@ }, "node_modules/is-array-buffer": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -6460,11 +7048,15 @@ } }, "node_modules/is-async-function": { - "version": "2.0.0", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dev": true, - "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6475,8 +7067,9 @@ }, "node_modules/is-bigint": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, - "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, @@ -6489,8 +7082,9 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -6500,8 +7094,9 @@ }, "node_modules/is-boolean-object": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -6515,6 +7110,8 @@ }, "node_modules/is-buffer": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "dev": true, "funding": [ { @@ -6530,15 +7127,15 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6547,9 +7144,10 @@ } }, "node_modules/is-core-module": { - "version": "2.16.0", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, - "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -6562,8 +7160,9 @@ }, "node_modules/is-data-view": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -6578,8 +7177,9 @@ }, "node_modules/is-date-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -6593,16 +7193,18 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -6615,18 +7217,23 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, - "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -6637,8 +7244,9 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -6648,8 +7256,9 @@ }, "node_modules/is-hex-prefixed": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.5.0", "npm": ">=3" @@ -6657,19 +7266,9 @@ }, "node_modules/is-map": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6679,16 +7278,18 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -6702,24 +7303,27 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-regex": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -6735,7 +7339,8 @@ }, "node_modules/is-retry-allowed": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-3.0.0.tgz", + "integrity": "sha512-9xH0xvoggby+u0uGF7cZXdrutWiBiaFG8ZT4YFPXL8NzkyAwX3AKGLeFQLvzDpM430+nDFBZ1LHkie/8ocL06A==", "engines": { "node": ">=12" }, @@ -6745,8 +7350,9 @@ }, "node_modules/is-set": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6756,8 +7362,9 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -6770,8 +7377,9 @@ }, "node_modules/is-string": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -6785,8 +7393,9 @@ }, "node_modules/is-symbol": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -6801,8 +7410,9 @@ }, "node_modules/is-typed-array": { "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, - "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -6815,14 +7425,16 @@ }, "node_modules/is-typedarray": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -6832,8 +7444,9 @@ }, "node_modules/is-weakmap": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -6843,8 +7456,9 @@ }, "node_modules/is-weakref": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2" }, @@ -6857,8 +7471,9 @@ }, "node_modules/is-weakset": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -6872,18 +7487,21 @@ }, "node_modules/isarray": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "dev": true, - "license": "MIT", "dependencies": { "node-fetch": "^2.6.1", "unfetch": "^4.2.0" @@ -6891,27 +7509,31 @@ }, "node_modules/isomorphic-ws": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "peerDependencies": { "ws": "*" } }, "node_modules/jose": { "version": "5.9.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", + "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/js-cookie": { "version": "2.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", + "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", + "dev": true }, "node_modules/js-sdsl": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/js-sdsl" @@ -6919,16 +7541,19 @@ }, "node_modules/js-sha3": { "version": "0.8.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -6938,23 +7563,27 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -6964,8 +7593,9 @@ }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -6974,9 +7604,10 @@ } }, "node_modules/jsonschema": { - "version": "1.4.1", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", + "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": "*" @@ -6984,9 +7615,10 @@ }, "node_modules/keccak": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0", @@ -6998,16 +7630,18 @@ }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -7015,16 +7649,18 @@ }, "node_modules/klaw": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.9" } }, "node_modules/level": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.1.tgz", + "integrity": "sha512-oPBGkheysuw7DmzFQYyFe8NAia5jFLAgEnkgWnK3OXAuJr8qFT+xBQIwokAZPME2bhPFzS8hlYcL16m8UZrtwQ==", "dev": true, - "license": "MIT", "dependencies": { "abstract-level": "^1.0.4", "browser-level": "^1.0.1", @@ -7040,16 +7676,18 @@ }, "node_modules/level-supports": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/level-transcoder": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^6.0.3", "module-error": "^1.0.1" @@ -7060,8 +7698,9 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -7072,19 +7711,22 @@ }, "node_modules/libsodium-sumo": { "version": "0.7.15", - "license": "ISC" + "resolved": "https://registry.npmjs.org/libsodium-sumo/-/libsodium-sumo-0.7.15.tgz", + "integrity": "sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==" }, "node_modules/libsodium-wrappers-sumo": { "version": "0.7.15", - "license": "ISC", + "resolved": "https://registry.npmjs.org/libsodium-wrappers-sumo/-/libsodium-wrappers-sumo-0.7.15.tgz", + "integrity": "sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==", "dependencies": { "libsodium-sumo": "^0.7.15" } }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -7097,30 +7739,35 @@ }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true }, "node_modules/lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -7134,11 +7781,13 @@ }, "node_modules/long": { "version": "4.0.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -7148,57 +7797,65 @@ }, "node_modules/loupe": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, - "license": "MIT", "dependencies": { "get-func-name": "^2.0.1" } }, "node_modules/lru_map": { "version": "0.3.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/make-error": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/markdown-table": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/math-intrinsics": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/mcl-wasm": { "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8.9.0" } }, "node_modules/md5.js": { "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, - "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -7207,8 +7864,9 @@ }, "node_modules/memory-level": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", "dev": true, - "license": "MIT", "dependencies": { "abstract-level": "^1.0.0", "functional-red-black-tree": "^1.0.1", @@ -7220,6 +7878,8 @@ }, "node_modules/memorystream": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { "node": ">= 0.10.0" @@ -7227,8 +7887,9 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 8" @@ -7236,14 +7897,16 @@ }, "node_modules/micro-ftch": { "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/micromatch": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "braces": "^3.0.3", @@ -7255,14 +7918,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { "mime-db": "1.52.0" }, @@ -7272,8 +7937,9 @@ }, "node_modules/mimic-response": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -7283,16 +7949,19 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7302,15 +7971,18 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp": { "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "minimist": "^1.2.6" @@ -7321,21 +7993,24 @@ }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true }, "node_modules/mnemonist": { "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", "dev": true, - "license": "MIT", "dependencies": { "obliterator": "^2.0.0" } }, "node_modules/mocha": { "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", @@ -7368,16 +8043,19 @@ }, "node_modules/mocha/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/mocha/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -7394,8 +8072,9 @@ }, "node_modules/mocha/node_modules/minimatch": { "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7405,8 +8084,9 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7419,48 +8099,56 @@ }, "node_modules/module-error": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { "version": "2.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, "node_modules/napi-build-utils": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true }, "node_modules/napi-macros": { "version": "2.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.2.2.tgz", + "integrity": "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==", + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/neo-async": { "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/next-tick": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/node-abi": { - "version": "3.71.0", + "version": "3.73.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.73.0.tgz", + "integrity": "sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -7470,13 +8158,15 @@ }, "node_modules/node-addon-api": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true }, "node_modules/node-emoji": { "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "lodash": "^4.17.21" @@ -7484,8 +8174,9 @@ }, "node_modules/node-fetch": { "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -7503,7 +8194,8 @@ }, "node_modules/node-gyp-build": { "version": "4.8.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -7512,9 +8204,10 @@ }, "node_modules/node-hid": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-hid/-/node-hid-2.1.2.tgz", + "integrity": "sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg==", "dev": true, "hasInstallScript": true, - "license": "(MIT OR X11)", "dependencies": { "bindings": "^1.5.0", "node-addon-api": "^3.0.2", @@ -7529,13 +8222,15 @@ }, "node_modules/node-hid/node_modules/node-addon-api": { "version": "3.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true }, "node_modules/nofilter": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=12.19" @@ -7543,8 +8238,9 @@ }, "node_modules/nopt": { "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "abbrev": "1" @@ -7555,16 +8251,18 @@ }, "node_modules/normalize-path": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/number-to-bn": { "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "bn.js": "4.11.6", @@ -7577,14 +8275,16 @@ }, "node_modules/number-to-bn/node_modules/bn.js": { "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -7592,8 +8292,9 @@ }, "node_modules/object-inspect": { "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7603,15 +8304,17 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -7629,8 +8332,9 @@ }, "node_modules/object.fromentries": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7646,8 +8350,9 @@ }, "node_modules/object.groupby": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7659,8 +8364,9 @@ }, "node_modules/object.values": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -7675,14 +8381,16 @@ } }, "node_modules/obliterator": { - "version": "2.0.4", - "dev": true, - "license": "MIT" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.5.tgz", + "integrity": "sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw==", + "dev": true }, "node_modules/oboe": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", "dev": true, - "license": "BSD", "peer": true, "dependencies": { "http-https": "^1.0.0" @@ -7690,16 +8398,18 @@ }, "node_modules/once": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, - "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/optionator": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, - "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -7714,22 +8424,42 @@ }, "node_modules/ordinal": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", + "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/os-tmpdir": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -7742,8 +8472,9 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -7756,8 +8487,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -7770,20 +8502,23 @@ }, "node_modules/p-try": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/pako": { "version": "2.1.0", - "license": "(MIT AND Zlib)" + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, - "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -7793,12 +8528,15 @@ }, "node_modules/parse-cache-control": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", "dev": true, "peer": true }, "node_modules/path": { "version": "0.12.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dependencies": { "process": "^0.11.1", "util": "^0.10.3" @@ -7806,37 +8544,42 @@ }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -7844,16 +8587,18 @@ }, "node_modules/pathval": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/pbkdf2": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "license": "MIT", "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -7867,8 +8612,9 @@ }, "node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -7878,8 +8624,9 @@ }, "node_modules/pify": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -7887,20 +8634,23 @@ }, "node_modules/poseidon-lite": { "version": "0.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/poseidon-lite/-/poseidon-lite-0.2.1.tgz", + "integrity": "sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==" }, "node_modules/possible-typed-array-names": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/prebuild-install": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dev": true, - "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -7924,16 +8674,18 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -7946,21 +8698,24 @@ }, "node_modules/process": { "version": "0.11.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/promise": { "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "asap": "~2.0.6" @@ -7968,8 +8723,9 @@ }, "node_modules/protobufjs": { "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", "hasInstallScript": true, - "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -7992,12 +8748,14 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/pump": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -8005,19 +8763,21 @@ }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.13.1", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -8028,6 +8788,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -8042,25 +8804,27 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/ramda": { "version": "0.27.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", + "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", + "dev": true }, "node_modules/randombytes": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/raw-body": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -8073,8 +8837,9 @@ }, "node_modules/rc": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -8087,16 +8852,18 @@ }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -8108,8 +8875,9 @@ }, "node_modules/readdirp": { "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -8119,18 +8887,22 @@ }, "node_modules/readline-sync": { "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/readonly-date": { "version": "1.0.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/readonly-date/-/readonly-date-1.0.0.tgz", + "integrity": "sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==" }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dev": true, "peer": true, "dependencies": { @@ -8142,8 +8914,9 @@ }, "node_modules/recursive-readdir": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "minimatch": "^3.0.5" @@ -8154,25 +8927,27 @@ }, "node_modules/reduce-flatten": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6" } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.9", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "dunder-proto": "^1.0.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { @@ -8183,13 +8958,16 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -8201,8 +8979,9 @@ }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -8212,8 +8991,9 @@ }, "node_modules/req-cwd": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "req-from": "^2.0.0" @@ -8224,8 +9004,9 @@ }, "node_modules/req-from": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "resolve-from": "^3.0.0" @@ -8236,8 +9017,9 @@ }, "node_modules/req-from/node_modules/resolve-from": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -8245,24 +9027,27 @@ }, "node_modules/require-directory": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { - "version": "1.22.9", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -8271,30 +9056,36 @@ "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -8302,8 +9093,10 @@ }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8316,8 +9109,9 @@ }, "node_modules/ripemd160": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, - "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -8325,8 +9119,9 @@ }, "node_modules/rlp": { "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", "dev": true, - "license": "MPL-2.0", "dependencies": { "bn.js": "^5.2.0" }, @@ -8336,6 +9131,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -8351,13 +9148,14 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/run-parallel-limit": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", "dev": true, "funding": [ { @@ -8373,31 +9171,34 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rustbn.js": { "version": "0.2.0", - "dev": true, - "license": "(MIT OR Apache-2.0)" + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true }, "node_modules/rxjs": { "version": "7.8.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/rxjs/node_modules/tslib": { "version": "2.8.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/safe-array-concat": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -8414,6 +9215,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -8427,13 +9230,29 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safe-regex-test": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -8448,13 +9267,15 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "node_modules/sc-istanbul": { "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "abbrev": "1.0.x", @@ -8478,8 +9299,9 @@ }, "node_modules/sc-istanbul/node_modules/argparse": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "sprintf-js": "~1.0.2" @@ -8487,8 +9309,10 @@ }, "node_modules/sc-istanbul/node_modules/glob": { "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "inflight": "^1.0.4", @@ -8503,8 +9327,9 @@ }, "node_modules/sc-istanbul/node_modules/has-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -8512,8 +9337,9 @@ }, "node_modules/sc-istanbul/node_modules/js-yaml": { "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "argparse": "^1.0.7", @@ -8525,8 +9351,9 @@ }, "node_modules/sc-istanbul/node_modules/js-yaml/node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "bin": { "esparse": "bin/esparse.js", @@ -8538,14 +9365,16 @@ }, "node_modules/sc-istanbul/node_modules/resolve": { "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/sc-istanbul/node_modules/supports-color": { "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^1.0.0" @@ -8556,8 +9385,9 @@ }, "node_modules/sc-istanbul/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "isexe": "^2.0.0" @@ -8568,12 +9398,14 @@ }, "node_modules/scrypt-js": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "elliptic": "^6.5.7", "node-addon-api": "^5.0.0", @@ -8585,11 +9417,13 @@ }, "node_modules/secp256k1/node_modules/node-addon-api": { "version": "5.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, "node_modules/semver": { "version": "7.6.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" }, @@ -8599,16 +9433,18 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/set-function-length": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -8623,8 +9459,9 @@ }, "node_modules/set-function-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, - "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -8635,19 +9472,36 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true }, "node_modules/setprototypeof": { "version": "1.2.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true }, "node_modules/sha.js": { "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8658,8 +9512,9 @@ }, "node_modules/sha1": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", + "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "charenc": ">= 0.0.1", @@ -8671,8 +9526,9 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -8682,16 +9538,18 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/shelljs": { "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "glob": "^7.0.0", @@ -8707,8 +9565,9 @@ }, "node_modules/side-channel": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -8725,8 +9584,9 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, - "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -8740,8 +9600,9 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -8757,8 +9618,9 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -8775,6 +9637,8 @@ }, "node_modules/simple-concat": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "dev": true, "funding": [ { @@ -8789,11 +9653,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/simple-get": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "dev": true, "funding": [ { @@ -8809,7 +9674,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -8818,8 +9682,9 @@ }, "node_modules/slash": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -8827,8 +9692,9 @@ }, "node_modules/slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -8844,7 +9710,8 @@ }, "node_modules/smol-toml": { "version": "1.3.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", + "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", "engines": { "node": ">= 18" }, @@ -8854,7 +9721,8 @@ }, "node_modules/sodium-native": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.3.1.tgz", + "integrity": "sha512-YdP64gAdpIKHfL4ttuX4aIfjeunh9f+hNeQJpE9C8UMndB3zkgZ7YmmGT4J2+v6Ibyp6Wem8D1TcSrtdW0bqtg==", "optional": true, "dependencies": { "node-gyp-build": "^4.8.0" @@ -8862,8 +9730,9 @@ }, "node_modules/solc": { "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", "dev": true, - "license": "MIT", "dependencies": { "command-exists": "^1.2.8", "commander": "3.0.2", @@ -8884,13 +9753,15 @@ }, "node_modules/solc/node_modules/commander": { "version": "3.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true }, "node_modules/solc/node_modules/fs-extra": { "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^2.1.0", @@ -8901,16 +9772,19 @@ }, "node_modules/solc/node_modules/jsonfile": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", "dev": true, - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/solc/node_modules/rimraf": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -8920,16 +9794,18 @@ }, "node_modules/solc/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "node_modules/solidity-coverage": { "version": "0.8.14", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", + "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "@ethersproject/abi": "^5.0.9", @@ -8961,14 +9837,16 @@ }, "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", + "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/solidity-coverage/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-convert": "^1.9.0" @@ -8979,8 +9857,9 @@ }, "node_modules/solidity-coverage/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^3.2.1", @@ -8993,8 +9872,9 @@ }, "node_modules/solidity-coverage/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "color-name": "1.1.3" @@ -9002,14 +9882,16 @@ }, "node_modules/solidity-coverage/node_modules/color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/solidity-coverage/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.8.0" @@ -9017,8 +9899,9 @@ }, "node_modules/solidity-coverage/node_modules/fs-extra": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -9031,8 +9914,9 @@ }, "node_modules/solidity-coverage/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -9040,8 +9924,9 @@ }, "node_modules/solidity-coverage/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -9049,8 +9934,9 @@ }, "node_modules/solidity-coverage/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "has-flag": "^3.0.0" @@ -9061,8 +9947,9 @@ }, "node_modules/solidity-coverage/node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 4.0.0" @@ -9070,6 +9957,8 @@ }, "node_modules/source-map": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", "dev": true, "optional": true, "peer": true, @@ -9082,8 +9971,9 @@ }, "node_modules/source-map-support": { "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -9091,22 +9981,25 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, - "license": "BSD-3-Clause", "peer": true }, "node_modules/stacktrace-parser": { "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.7.1" }, @@ -9116,38 +10009,43 @@ }, "node_modules/stacktrace-parser/node_modules/type-fest": { "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/statuses": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-format": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", "dev": true, - "license": "WTFPL OR MIT", "peer": true }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -9159,8 +10057,9 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -9179,8 +10078,9 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -9196,8 +10096,9 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -9212,8 +10113,9 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -9223,16 +10125,18 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-hex-prefix": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", "dev": true, - "license": "MIT", "dependencies": { "is-hex-prefixed": "1.0.0" }, @@ -9243,8 +10147,9 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -9254,8 +10159,9 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -9265,8 +10171,9 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9276,15 +10183,17 @@ }, "node_modules/symbol-observable": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-2.0.3.tgz", + "integrity": "sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==", "engines": { "node": ">=0.10" } }, "node_modules/sync-request": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "http-response-object": "^3.0.1", @@ -9297,8 +10206,9 @@ }, "node_modules/sync-rpc": { "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "get-port": "^3.1.0" @@ -9306,8 +10216,9 @@ }, "node_modules/table": { "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "ajv": "^8.0.1", @@ -9322,8 +10233,9 @@ }, "node_modules/table-layout": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-back": "^4.0.1", @@ -9337,8 +10249,9 @@ }, "node_modules/table-layout/node_modules/array-back": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -9346,8 +10259,9 @@ }, "node_modules/table-layout/node_modules/typical": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -9355,8 +10269,9 @@ }, "node_modules/table/node_modules/ajv": { "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -9371,14 +10286,16 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/tar-fs": { - "version": "2.1.1", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "dev": true, - "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -9388,8 +10305,9 @@ }, "node_modules/tar-stream": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -9403,13 +10321,15 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/then-request": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/concat-stream": "^1.6.0", @@ -9430,14 +10350,16 @@ }, "node_modules/then-request/node_modules/@types/node": { "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/then-request/node_modules/form-data": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.2.tgz", + "integrity": "sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "asynckit": "^0.4.0", @@ -9451,8 +10373,9 @@ }, "node_modules/tmp": { "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, - "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -9462,8 +10385,9 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -9473,25 +10397,29 @@ }, "node_modules/toidentifier": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/toml": { "version": "3.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" }, "node_modules/tr46": { "version": "0.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/ts-command-line-args": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "chalk": "^4.1.0", @@ -9505,8 +10433,9 @@ }, "node_modules/ts-essentials": { "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", "dev": true, - "license": "MIT", "peer": true, "peerDependencies": { "typescript": ">=3.7.0" @@ -9514,8 +10443,9 @@ }, "node_modules/ts-node": { "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -9557,8 +10487,9 @@ }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.3.1" @@ -9566,8 +10497,9 @@ }, "node_modules/tsconfig-paths": { "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -9577,18 +10509,21 @@ }, "node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tsort": { "version": "0.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true }, "node_modules/tunnel-agent": { "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -9598,23 +10533,27 @@ }, "node_modules/tweetnacl": { "version": "1.0.3", - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "node_modules/tweetnacl-util": { "version": "0.15.1", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true }, "node_modules/type": { "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -9624,16 +10563,18 @@ }, "node_modules/type-detect": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -9643,8 +10584,9 @@ }, "node_modules/typechain": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@types/prettier": "^2.1.1", @@ -9667,8 +10609,9 @@ }, "node_modules/typechain/node_modules/fs-extra": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -9681,8 +10624,10 @@ }, "node_modules/typechain/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -9701,8 +10646,9 @@ }, "node_modules/typechain/node_modules/jsonfile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "license": "MIT", "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -9710,8 +10656,9 @@ }, "node_modules/typechain/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "peer": true, "bin": { "mkdirp": "bin/cmd.js" @@ -9722,8 +10669,9 @@ }, "node_modules/typechain/node_modules/prettier": { "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "peer": true, "bin": { "prettier": "bin-prettier.js" @@ -9737,8 +10685,9 @@ }, "node_modules/typechain/node_modules/universalify": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 4.0.0" @@ -9746,8 +10695,9 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -9759,8 +10709,9 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", @@ -9777,8 +10728,9 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -9797,8 +10749,9 @@ }, "node_modules/typed-array-length": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -9816,22 +10769,25 @@ }, "node_modules/typedarray": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/typescript": { - "version": "5.7.2", - "license": "Apache-2.0", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -9842,8 +10798,9 @@ }, "node_modules/typical": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -9851,8 +10808,9 @@ }, "node_modules/uglify-js": { "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, - "license": "BSD-2-Clause", "optional": true, "peer": true, "bin": { @@ -9864,8 +10822,9 @@ }, "node_modules/unbox-primitive": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", @@ -9880,9 +10839,10 @@ } }, "node_modules/undici": { - "version": "5.28.4", + "version": "5.28.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz", + "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==", "dev": true, - "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -9892,46 +10852,53 @@ }, "node_modules/undici-types": { "version": "6.20.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" }, "node_modules/unfetch": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", + "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==", + "dev": true }, "node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10.0.0" } }, "node_modules/unpipe": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/urijs": { "version": "1.19.11", - "license": "MIT" + "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", + "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==" }, "node_modules/usb": { "version": "2.9.0", + "resolved": "https://registry.npmjs.org/usb/-/usb-2.9.0.tgz", + "integrity": "sha512-G0I/fPgfHUzWH8xo2KkDxTTFruUWfppgSFJ+bQxz/kVY2x15EQ/XDB7dqD1G432G4gBG4jYQuF3U7j/orSs5nw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@types/w3c-web-usb": "^1.0.6", "node-addon-api": "^6.0.0", @@ -9943,14 +10910,16 @@ }, "node_modules/usb/node_modules/node-addon-api": { "version": "6.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", + "dev": true }, "node_modules/utf-8-validate": { "version": "5.0.10", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.10.tgz", + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", "devOptional": true, "hasInstallScript": true, - "license": "MIT", "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" @@ -9961,48 +10930,56 @@ }, "node_modules/utf8": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/util": { "version": "0.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dependencies": { "inherits": "2.0.3" } }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "node_modules/util/node_modules/inherits": { "version": "2.0.3", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" }, "node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/valibot": { "version": "0.36.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.36.0.tgz", + "integrity": "sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==" }, "node_modules/web3-core": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "@types/bn.js": "^5.1.1", @@ -10019,8 +10996,9 @@ }, "node_modules/web3-core-helpers": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "web3-eth-iban": "1.10.4", @@ -10032,8 +11010,9 @@ }, "node_modules/web3-core-method": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "@ethersproject/transactions": "^5.6.2", @@ -10048,8 +11027,9 @@ }, "node_modules/web3-core-promievent": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4" @@ -10060,8 +11040,9 @@ }, "node_modules/web3-core-requestmanager": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "util": "^0.12.5", @@ -10076,8 +11057,9 @@ }, "node_modules/web3-core-requestmanager/node_modules/util": { "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "inherits": "^2.0.3", @@ -10089,8 +11071,9 @@ }, "node_modules/web3-core-subscriptions": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4", @@ -10102,14 +11085,16 @@ }, "node_modules/web3-core/node_modules/@types/node": { "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/web3-eth-iban": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "bn.js": "^5.2.1", @@ -10121,8 +11106,9 @@ }, "node_modules/web3-providers-http": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "abortcontroller-polyfill": "^1.7.5", @@ -10136,8 +11122,9 @@ }, "node_modules/web3-providers-ipc": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "oboe": "2.1.5", @@ -10149,8 +11136,9 @@ }, "node_modules/web3-providers-ws": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4", @@ -10163,8 +11151,9 @@ }, "node_modules/web3-utils": { "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", "dev": true, - "license": "LGPL-3.0", "peer": true, "dependencies": { "@ethereumjs/util": "^8.1.0", @@ -10182,8 +11171,9 @@ }, "node_modules/web3-utils/node_modules/@noble/curves": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "1.4.0" @@ -10194,8 +11184,9 @@ }, "node_modules/web3-utils/node_modules/@noble/hashes": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">= 16" @@ -10206,8 +11197,9 @@ }, "node_modules/web3-utils/node_modules/@scure/base": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://paulmillr.com/funding/" @@ -10215,8 +11207,9 @@ }, "node_modules/web3-utils/node_modules/@scure/bip32": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/curves": "~1.4.0", @@ -10229,8 +11222,9 @@ }, "node_modules/web3-utils/node_modules/@scure/bip39": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/hashes": "~1.4.0", @@ -10242,8 +11236,9 @@ }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "@noble/curves": "1.4.2", @@ -10254,13 +11249,15 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/websocket": { "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "bufferutil": "^4.0.1", @@ -10276,8 +11273,9 @@ }, "node_modules/websocket/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ms": "2.0.0" @@ -10285,14 +11283,16 @@ }, "node_modules/websocket/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/whatwg-url": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10300,8 +11300,9 @@ }, "node_modules/which": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -10314,8 +11315,9 @@ }, "node_modules/which-boxed-primitive": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, - "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -10332,8 +11334,9 @@ }, "node_modules/which-builtin-type": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, - "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", @@ -10358,8 +11361,9 @@ }, "node_modules/which-collection": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, - "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -10375,8 +11379,9 @@ }, "node_modules/which-typed-array": { "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, - "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -10394,8 +11399,9 @@ }, "node_modules/widest-line": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, - "license": "MIT", "dependencies": { "string-width": "^4.0.0" }, @@ -10405,22 +11411,25 @@ }, "node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wordwrap": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/wordwrapjs": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "reduce-flatten": "^2.0.0", @@ -10432,8 +11441,9 @@ }, "node_modules/wordwrapjs/node_modules/typical": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -10441,13 +11451,15 @@ }, "node_modules/workerpool": { "version": "6.5.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true }, "node_modules/wrap-ansi": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -10462,12 +11474,14 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true }, "node_modules/ws": { "version": "7.5.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -10486,7 +11500,8 @@ }, "node_modules/xstream": { "version": "11.14.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xstream/-/xstream-11.14.0.tgz", + "integrity": "sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==", "dependencies": { "globalthis": "^1.0.1", "symbol-observable": "^2.0.3" @@ -10494,16 +11509,18 @@ }, "node_modules/y18n": { "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yaeti": { "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.32" @@ -10511,13 +11528,15 @@ }, "node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yargs": { "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -10533,16 +11552,18 @@ }, "node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", @@ -10555,8 +11576,9 @@ }, "node_modules/yn": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -10564,8 +11586,9 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, diff --git a/package.json b/package.json index 056bc2e6b..fb4f4df87 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-cgp-sui": "1.0.3", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "2.0.1", + "@axelar-network/interchain-token-service": "0.0.0-snapshot.869b412", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1", From 39ec04af1621aa6bf4ebc1d02658c7b0ebd767d5 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 14:59:17 +0200 Subject: [PATCH 14/79] fix deploy remote interchain token --- .github/workflows/test-evm.yaml | 2 +- evm/interchainTokenFactory.js | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 8c01e5028..6993480a6 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -128,7 +128,7 @@ jobs: run: node evm/interchainTokenFactory.js --action deployInterchainToken --name "test" --symbol "TST" --decimals 18 --minter 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y - name: InterchainTokenFactory deploy interchain token to destination chain - run: node evm/interchainTokenFactory.js --action deployRemoteInterchainToken --destinationChain remote --minter 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y + run: node evm/interchainTokenFactory.js --action deployRemoteInterchainToken --destinationChain remote --salt "salt" -y - name: InterchainTokenFactory register custom token run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index ca5c496ca..c51ef6924 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -150,13 +150,12 @@ async function processCommand(config, chain, options) { } case 'deployRemoteInterchainToken': { - const { minter, destinationChain, gasValue } = options; + const { destinationChain, gasValue } = options; const deploymentSalt = getDeploymentSalt(options); validateParameters({ isNonEmptyString: { destinationChain }, - isAddress: { minter }, isValidNumber: { gasValue }, }); @@ -166,7 +165,6 @@ async function processCommand(config, chain, options) { const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,address,string,uint256)']( deploymentSalt, - minter, destinationChain, gasValue, { @@ -310,7 +308,6 @@ if (require.main === module) { 'canonicalInterchainTokenId', 'interchainTokenAddress', 'deployInterchainToken', - 'deployRemoteInterchainToken', 'registerCanonicalInterchainToken', 'deployRemoteCanonicalInterchainToken', 'registerCustomToken', From 1a6fdacdbb7d4d1fd55f10e2c18ae25723aa6ddc Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 15:01:16 +0200 Subject: [PATCH 15/79] fix a bug --- evm/interchainTokenFactory.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index c51ef6924..4a1dbf255 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -162,8 +162,8 @@ async function processCommand(config, chain, options) { if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } - - const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,address,string,uint256)']( + console.log(interchainTokenFactory); + const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( deploymentSalt, destinationChain, gasValue, From db64b2e0a61e1f5d7f4aad99c97a9379bce64ada Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 15:06:42 +0200 Subject: [PATCH 16/79] add deployRemoteInterchainToken back to the list --- evm/interchainTokenFactory.js | 1 + 1 file changed, 1 insertion(+) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 4a1dbf255..a37ddb00a 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -308,6 +308,7 @@ if (require.main === module) { 'canonicalInterchainTokenId', 'interchainTokenAddress', 'deployInterchainToken', + 'deployRemoteInterchainToken', 'registerCanonicalInterchainToken', 'deployRemoteCanonicalInterchainToken', 'registerCustomToken', From a5823f59c9d5c250afb551c95679664ba7cc24b1 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 15:11:03 +0200 Subject: [PATCH 17/79] debug --- evm/interchainTokenFactory.js | 2 +- evm/its.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index a37ddb00a..bdc27af80 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -162,7 +162,7 @@ async function processCommand(config, chain, options) { if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } - console.log(interchainTokenFactory); + const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( deploymentSalt, destinationChain, diff --git a/evm/its.js b/evm/its.js index 8bf31ba63..0edcb198d 100644 --- a/evm/its.js +++ b/evm/its.js @@ -115,7 +115,7 @@ function isValidDestinationChain(config, destinationChain) { if (destinationChain === '') { return; } - + console.log(config, destinationChain); isValidChain(config, destinationChain); } From da621657dbf5157e40245c9a3933e05475626081 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 15:13:59 +0200 Subject: [PATCH 18/79] fix a check --- evm/interchainTokenFactory.js | 4 +++- evm/its.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index bdc27af80..cbb782cab 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -255,7 +255,9 @@ async function processCommand(config, chain, options) { const deploymentSalt = getDeploymentSalt(options); - isValidDestinationChain(config, destinationChain); + if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { + throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + } validateParameters({ isNonEmptyString: { destinationChain }, diff --git a/evm/its.js b/evm/its.js index 0edcb198d..7fe27ae37 100644 --- a/evm/its.js +++ b/evm/its.js @@ -115,7 +115,7 @@ function isValidDestinationChain(config, destinationChain) { if (destinationChain === '') { return; } - console.log(config, destinationChain); + isValidChain(config, destinationChain); } From 855b4dd298953a099573e9f04dfc62711e5bdc61 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 15:18:18 +0200 Subject: [PATCH 19/79] prettier --- evm/interchainTokenFactory.js | 2 +- evm/its.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index cbb782cab..c7f85062b 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -162,7 +162,7 @@ async function processCommand(config, chain, options) { if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } - + const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( deploymentSalt, destinationChain, diff --git a/evm/its.js b/evm/its.js index 7fe27ae37..8bf31ba63 100644 --- a/evm/its.js +++ b/evm/its.js @@ -115,7 +115,7 @@ function isValidDestinationChain(config, destinationChain) { if (destinationChain === '') { return; } - + isValidChain(config, destinationChain); } From 5334c58770bae3bbd6aff59adb3203a2f9817c9a Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 17:50:31 +0200 Subject: [PATCH 20/79] add flow limit setter/getter --- .github/workflows/test-evm.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 6993480a6..0a934b418 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -130,6 +130,7 @@ jobs: - name: InterchainTokenFactory deploy interchain token to destination chain run: node evm/interchainTokenFactory.js --action deployRemoteInterchainToken --destinationChain remote --salt "salt" -y + # Note that tokenAddress is hardcoded since it's derivation must always be the same - name: InterchainTokenFactory register custom token run: node evm/interchainTokenFactory.js --action registerCustomToken --tokenAddress 0x49c06259B42540a025A73a32eF2Fd183c0FDB1D2 --tokenManagerType 4 --operator 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --salt "salt" -y @@ -140,6 +141,14 @@ jobs: - name: InterchainTokenService interchain transfer to destination chain run: node evm/its.js --action interchainTransfer --destinationChain remote --tokenId 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --destinationAddress 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --amount 1 --gasValue 0 -y + # Note that tokenId is hardcoded since it's derivation must always be the same + - name: InterchainTokenService set flow limit + run: node evm/its.js --action setFlowLimit --tokenIds 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --flowLimits 123 -y + + # Note that tokenId is hardcoded since it's derivation must always be the same + - name: InterchainTokenService get flow limit + run: node evm/its.js --action flowLimit --tokenId 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 -y + - name: Add gasOptions to local.json run: | jq '.chains.test += {"gasOptions": {"gasLimit": 8000000}} | .chains.test.contracts.AxelarGateway += {"gasOptions": {"gasLimit": 8000000}}' ./axelar-chains-config/info/local.json > temp.json && mv temp.json ./axelar-chains-config/info/local.json From d883c8422e73efca13e5ef459da1c6402d5ea7a9 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 18:09:34 +0200 Subject: [PATCH 21/79] fix spelling --- .github/workflows/test-evm.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-evm.yaml b/.github/workflows/test-evm.yaml index 0a934b418..975d14ac2 100644 --- a/.github/workflows/test-evm.yaml +++ b/.github/workflows/test-evm.yaml @@ -143,7 +143,7 @@ jobs: # Note that tokenId is hardcoded since it's derivation must always be the same - name: InterchainTokenService set flow limit - run: node evm/its.js --action setFlowLimit --tokenIds 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --flowLimits 123 -y + run: node evm/its.js --action setFlowLimits --tokenIds 0x88a9d17b8f4e6e4aaceb3c8f53d54eedb144276f1dd2b9f2d17de784aa090be7 --flowLimits 123 -y # Note that tokenId is hardcoded since it's derivation must always be the same - name: InterchainTokenService get flow limit From 62c6c23976674f53da919d37ec563939568e4759 Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 20 Jan 2025 18:41:30 +0200 Subject: [PATCH 22/79] properly handle event --- evm/its.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/evm/its.js b/evm/its.js index 8bf31ba63..c33700a54 100644 --- a/evm/its.js +++ b/evm/its.js @@ -381,6 +381,7 @@ async function processCommand(config, chain, options) { } const tokenIdsBytes32 = []; + const tokenManagers = []; for (const tokenId of tokenIds) { if (!isValidTokenId(tokenId)) { @@ -389,13 +390,20 @@ async function processCommand(config, chain, options) { const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); tokenIdsBytes32.push(tokenIdBytes32); + + const tokenManager = new Contract( + await interchainTokenService.deployedTokenManager(tokenIdBytes32), + getContractJSON('ITokenManager').abi, + wallet, + ); + tokenManagers.push(tokenManager); } validateParameters({ isNumberArray: { flowLimits } }); const tx = await interchainTokenService.setFlowLimits(tokenIdsBytes32, flowLimits, gasOptions); - await handleTx(tx, chain, interchainTokenService, options.action, 'FlowLimitSet'); + await handleTx(tx, chain, tokenManagers[0], options.action, 'FlowLimitSet'); break; } From d3127cc9b09c08399d10deee3405fdcd0858fc43 Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 24 Jan 2025 14:18:37 +0200 Subject: [PATCH 23/79] stash --- .../info/sui-allowed-functions-local.json | 8 ++ package-lock.json | 110 +++++++++-------- package.json | 2 +- sui/gateway.js | 67 +++++++++- sui/its.js | 116 ++++++++++++++++++ 5 files changed, 245 insertions(+), 58 deletions(-) create mode 100644 axelar-chains-config/info/sui-allowed-functions-local.json diff --git a/axelar-chains-config/info/sui-allowed-functions-local.json b/axelar-chains-config/info/sui-allowed-functions-local.json new file mode 100644 index 000000000..e25e8ec62 --- /dev/null +++ b/axelar-chains-config/info/sui-allowed-functions-local.json @@ -0,0 +1,8 @@ +{ + "versions": [ + "0,0,0,0,0,0,0" + ], + "disallowedFunctions": [ + "approve_messages,rotate_signers,is_message_approved,is_message_executed,take_approved_message,send_message,disallow_function" + ] +} diff --git a/package-lock.json b/package-lock.json index 8f68b805f..f239d84b5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "1.0.3", + "@axelar-network/axelar-cgp-sui": "../axelar-cgp-sui", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", "@axelar-network/interchain-token-service": "0.0.0-snapshot.d61ef1b", "@cosmjs/cosmwasm-stargate": "^0.32.1", @@ -43,6 +43,40 @@ "node": ">=18" } }, + "../axelar-cgp-sui": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "@cosmjs/cosmwasm-stargate": "^0.32.2", + "@mysten/sui": "^1.3.0", + "deepbookv3": "github:axelarnetwork/deepbookv3#mainnet-v1.38.3", + "ethers": "^5.0.0", + "secp256k1": "^5.0.0", + "smol-toml": "^1.3.0", + "typescript": "^5.3.3" + }, + "devDependencies": { + "@changesets/cli": "^2.27.6", + "@ianvs/prettier-plugin-sort-imports": "^4.2.1", + "@types/node": "^20.14.11", + "@types/secp256k1": "^4.0.6", + "@typescript-eslint/eslint-plugin": "^7.13.1", + "@typescript-eslint/parser": "^7.13.1", + "chai": "^4.3.7", + "chalk": "^4.1.2", + "diff": "^7.0.0", + "dotenv": "^16.3.1", + "eslint": "^8.57.0", + "eslint-config-richardpringle": "^2.0.0", + "mocha": "^10.4.0", + "prettier": "^2.8.7", + "prettier-plugin-sort-imports": "^1.8.5", + "typescript": "^5.5.3" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@0no-co/graphql.web": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.13.tgz", @@ -145,21 +179,8 @@ } }, "node_modules/@axelar-network/axelar-cgp-sui": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-sui/-/axelar-cgp-sui-1.0.3.tgz", - "integrity": "sha512-JlKaJ0tWtndtx/VLNIcEeKVYPaHgEEhVyeL7vBn695cXKlc9moTkxwmMNvAr3rhXMN6GbyeG8GXx62Rx7QbpSw==", - "dependencies": { - "@cosmjs/cosmwasm-stargate": "^0.32.2", - "@mysten/sui": "^1.3.0", - "deepbookv3": "github:axelarnetwork/deepbookv3#mainnet-v1.38.3", - "ethers": "^5.0.0", - "secp256k1": "^5.0.0", - "smol-toml": "^1.3.0", - "typescript": "^5.3.3" - }, - "engines": { - "node": ">=18" - } + "resolved": "../axelar-cgp-sui", + "link": true }, "node_modules/@axelar-network/axelar-gmp-sdk-solidity": { "version": "6.0.4", @@ -651,6 +672,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, "funding": [ { "type": "individual", @@ -726,6 +748,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, "funding": [ { "type": "individual", @@ -779,6 +802,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, "funding": [ { "type": "individual", @@ -808,6 +832,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, "funding": [ { "type": "individual", @@ -890,6 +915,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dev": true, "funding": [ { "type": "individual", @@ -927,6 +953,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dev": true, "funding": [ { "type": "individual", @@ -964,6 +991,7 @@ "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, "engines": { "node": ">=8.3.0" }, @@ -984,6 +1012,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dev": true, "funding": [ { "type": "individual", @@ -1022,6 +1051,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dev": true, "funding": [ { "type": "individual", @@ -1084,6 +1114,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dev": true, "funding": [ { "type": "individual", @@ -1153,6 +1184,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dev": true, "funding": [ { "type": "individual", @@ -1173,6 +1205,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dev": true, "funding": [ { "type": "individual", @@ -1227,6 +1260,7 @@ "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dev": true, "funding": [ { "type": "individual", @@ -2760,7 +2794,8 @@ "node_modules/aes-js": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true }, "node_modules/agent-base": { "version": "6.0.2", @@ -4329,11 +4364,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/deepbookv3": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/axelarnetwork/deepbookv3.git#ecb56deeb02918e7856f8c35620b63d1af4b5720", - "license": "Apache-2.0" - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -5476,6 +5506,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dev": true, "funding": [ { "type": "individual", @@ -8196,6 +8227,7 @@ "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "devOptional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -9399,26 +9431,8 @@ "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/secp256k1": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", - "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.7", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/secp256k1/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true }, "node_modules/semver": { "version": "7.6.3", @@ -9708,17 +9722,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/smol-toml": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", - "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, "node_modules/sodium-native": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.3.1.tgz", @@ -10788,6 +10791,7 @@ "version": "5.7.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/package.json b/package.json index 3e1a5153a..bdc3f9291 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "homepage": "https://github.com/axelarnetwork/axelar-contract-deployments#readme", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "1.0.3", + "@axelar-network/axelar-cgp-sui": "../axelar-cgp-sui", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", "@axelar-network/interchain-token-service": "0.0.0-snapshot.d61ef1b", "@cosmjs/cosmwasm-stargate": "^0.32.1", diff --git a/sui/gateway.js b/sui/gateway.js index 6a8e4ef26..30e064e43 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -2,13 +2,13 @@ const { Command, Option } = require('commander'); const { Transaction } = require('@mysten/sui/transactions'); const { bcs } = require('@mysten/sui/bcs'); const { ethers } = require('hardhat'); -const { bcsStructs, CLOCK_PACKAGE_ID } = require('@axelar-network/axelar-cgp-sui'); +const { bcsStructs, CLOCK_PACKAGE_ID, TxBuilder } = require('@axelar-network/axelar-cgp-sui'); const { utils: { arrayify, keccak256, toUtf8Bytes }, constants: { HashZero }, } = ethers; -const { saveConfig, printInfo, loadConfig, getMultisigProof, getChainConfig } = require('../common/utils'); +const { saveConfig, printInfo, loadConfig, getMultisigProof, getChainConfig, writeJSON } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, @@ -23,6 +23,7 @@ const { } = require('./utils'); const secp256k1 = require('secp256k1'); const chalk = require('chalk'); +const { readJSON } = require(`${__dirname}/../axelar-chains-config`); const COMMAND_TYPE_APPROVE_MESSAGES = 0; const COMMAND_TYPE_ROTATE_SIGNERS = 1; @@ -292,7 +293,6 @@ async function allowFunctions(keypair, client, config, chain, contractConfig, ar if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); const tx = new Transaction(); - console.log(contractConfig.objects); for (const i in versions) { tx.moveCall({ @@ -323,7 +323,6 @@ async function disallowFunctions(keypair, client, config, chain, contractConfig, if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); const tx = new Transaction(); - console.log(contractConfig.objects); for (const i in versions) { tx.moveCall({ @@ -509,6 +508,52 @@ async function testNewField(value, options) { console.log(`Set the value to ${value} and it was set to ${returnedValue}.`); } +async function pause(keypair, client, config, chain, contracts, args, options) { + const response = await client.getObject({ + id: contracts.objects.Gatewayv0, + options: { + showContent: true, + showBcs: true + }, + }); + let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; + allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); + + const versionsArg = []; + const allowedFunctionsArg = []; + + for (const version in allowedFunctionsArray) { + const allowedFunctions = allowedFunctionsArray[version]; + + // Do not dissalow `allow_function` because that locks the gateway forever. + if (version == allowedFunctionsArray.length - 1) { + const index = allowedFunctions.indexOf('allow_function'); + if (index > -1) { // only splice array when item is found + allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only + } + } + + printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); + + versionsArg.push((new Array(allowedFunctions.length)).fill(version).join()); + allowedFunctionsArg.push(allowedFunctions.join()); + } + + // Write the + writeJSON({ + versions: versionsArg, + disallowedFunctions: allowedFunctionsArg, + }, `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + + return disallowFunctions(keypair, client, config, chain, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); +} + +async function unpause(keypair, client, config, chain, contracts, args, options) { + const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + + return allowFunctions(keypair, client, config, chain, contracts, [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], options); +} + async function mainProcessor(processor, args, options) { const config = loadConfig(options.env); @@ -611,6 +656,20 @@ if (require.main === module) { testNewField(value, options); }); + program + .command('pause') + .description('Pause the gateway') + .action((options) => { + mainProcessor(pause, [], options); + }); + + program + .command('unpause') + .description('Unpause the gateway') + .action((options) => { + mainProcessor(unpause, [], options); + }); + addOptionsToCommands(program, addBaseOptions, { offline: true }); program.parse(); diff --git a/sui/its.js b/sui/its.js index f69838d45..0bed84325 100644 --- a/sui/its.js +++ b/sui/its.js @@ -86,6 +86,113 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { await broadcastFromTxBuilder(txBuilder, keypair, 'Remove Trusted Address'); } +async function allowFunctions(keypair, client, config, contractConfig, args, options) { + const contracts = contractConfig.ITS; + console.log(contracts); + const packageId = contracts.address; + + const [versionsArg, functionNamesArg] = args; + + const versions = versionsArg.split(','); + const functionNames = functionNamesArg.split(','); + + if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); + + const builder = new TxBuilder(client); + for (const i in versions) { + await builder.moveCall({ + target: `${packageId}::interchain_token_service::allow_function`, + arguments: [ + contracts.objects.InterchainTokenService, + contracts.objects.OwnerCap, + versions[i], + functionNames[i], + ], + }); + } + + return { + tx, + message: 'Allow Functions', + }; +} + +async function disallowFunctions(keypair, client, config, contractConfig, args, options) { + const packageId = contractConfig.address; + + const [versionsArg, functionNamesArg] = args; + + const versions = versionsArg.split(','); + const functionNames = functionNamesArg.split(','); + + if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); + + const tx = new Transaction(); + + for (const i in versions) { + tx.moveCall({ + target: `${packageId}::gateway::disallow_function`, + arguments: [ + tx.object(contractConfig.objects.Gateway), + tx.object(contractConfig.objects.OwnerCap), + tx.pure.u64(versions[i]), + tx.pure.string(functionNames[i]), + ], + }); + } + + return { + tx, + message: 'Disallow Functions', + }; +} + +async function pause(keypair, client, config, contracts, args, options) { + const response = await client.getObject({ + id: contracts.objects.Gatewayv0, + options: { + showContent: true, + showBcs: true + }, + }); + let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; + allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); + + const versionsArg = []; + const allowedFunctionsArg = []; + + for (const version in allowedFunctionsArray) { + const allowedFunctions = allowedFunctionsArray[version]; + + // Do not dissalow `allow_function` because that locks the gateway forever. + if (version == allowedFunctionsArray.length - 1) { + const index = allowedFunctions.indexOf('allow_function'); + if (index > -1) { // only splice array when item is found + allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only + } + } + + printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); + + versionsArg.push((new Array(allowedFunctions.length)).fill(version).join()); + allowedFunctionsArg.push(allowedFunctions.join()); + } + + // Write the + writeJSON({ + versions: versionsArg, + disallowedFunctions: allowedFunctionsArg, + }, `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + + return disallowFunctions(keypair, client, config, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); +} + +async function unpause(keypair, client, config, contracts, args, options) { + const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + + return allowFunctions(keypair, client, config, contracts, [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], options); +} + async function processCommand(command, config, chain, args, options) { const [keypair, client] = getWallet(chain, options); @@ -125,8 +232,17 @@ if (require.main === module) { mainProcessor(removeTrustedAddress, options, [trustedChain], processCommand); }); + const allowFunctionsProgram = new Command() + .name('allow-functions') + .description('Allow functions') + .command('allow-functions ') + .action((versions, functions, options) => { + mainProcessor(allowFunctions, options, [versions, functions], processCommand); + }); + program.addCommand(setupTrustedAddressProgram); program.addCommand(removeTrustedAddressProgram); + program.addCommand(allowFunctionsProgram); addOptionsToCommands(program, addBaseOptions, { offline: true }); From 30b30b183c685540ffab379651dcd704c7eda9ea Mon Sep 17 00:00:00 2001 From: Foivos Date: Mon, 27 Jan 2025 18:21:17 +0200 Subject: [PATCH 24/79] update naming, cgp-sui package version should be uptdated after release --- package-lock.json | 8 +++---- package.json | 2 +- sui/deploy-contract.js | 47 +++++++++++++++++++++++++++++------------- sui/utils/utils.js | 3 +-- 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1340d81a9..fa7983235 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "MIT", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "1.0.3", + "@axelar-network/axelar-cgp-sui": "0.0.0-snapshot.02915b7", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", @@ -145,9 +145,9 @@ } }, "node_modules/@axelar-network/axelar-cgp-sui": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-sui/-/axelar-cgp-sui-1.0.3.tgz", - "integrity": "sha512-JlKaJ0tWtndtx/VLNIcEeKVYPaHgEEhVyeL7vBn695cXKlc9moTkxwmMNvAr3rhXMN6GbyeG8GXx62Rx7QbpSw==", + "version": "0.0.0-snapshot.02915b7", + "resolved": "https://registry.npmjs.org/@axelar-network/axelar-cgp-sui/-/axelar-cgp-sui-0.0.0-snapshot.02915b7.tgz", + "integrity": "sha512-tinW30ThbIx64KCY+/BuQhtFgkxgTVPR2Sx1idBzREXJ8HogZ02j4RdJR6DiP5UVQB0OxrGuQ/WRGsfzUImwKg==", "dependencies": { "@cosmjs/cosmwasm-stargate": "^0.32.2", "@mysten/sui": "^1.3.0", diff --git a/package.json b/package.json index eb84d1f21..561f1633c 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "homepage": "https://github.com/axelarnetwork/axelar-contract-deployments#readme", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "1.0.3", + "@axelar-network/axelar-cgp-sui": "0.0.0-snapshot.02915b7", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 891c4de11..dfa783784 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -48,7 +48,7 @@ const PACKAGE_DIRS = [ 'operators', 'abi', 'governance', - 'its', + 'interchain_token_service', 'squid', 'interchain_token', ]; @@ -59,6 +59,7 @@ const PACKAGE_DIRS = [ const PACKAGE_CONFIGS = { cmdOptions: { AxelarGateway: () => GATEWAY_CMD_OPTIONS, + InterchainTokenService: () => ITS_CMD_OPTIONS, }, postDeployFunctions: { AxelarGateway: postDeployAxelarGateway, @@ -66,7 +67,7 @@ const PACKAGE_CONFIGS = { GasService: postDeployGasService, Example: postDeployExample, Operators: postDeployOperators, - ITS: postDeployIts, + InterchainTokenService: postDeployIts, Squid: postDeploySquid, Utils: postDeployUtils, }, @@ -136,8 +137,8 @@ async function postDeployExample(published, keypair, client, config, chain, opti // GMP Example Params const [gmpSingletonObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [`${published.packageId}::gmp::Singleton`]); - // ITS Example Params - const itsObjectId = chain.contracts.ITS?.objects?.ITS; + // InterchainTokenService Example Params + const itsObjectId = chain.contracts.InterchainTokenService?.objects?.InterchainTokenService; const [itsSingletonObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [`${published.packageId}::its::Singleton`]); const tx = new Transaction(); @@ -246,27 +247,41 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const [itsObjectId, itsv0ObjectId, ownerCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ - `${published.packageId}::its::ITS`, - `${published.packageId}::its_v0::ITS_v0`, + const { chainName, itsHubAddress } = options; + + const [ownerCapObjectId, creatorCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::owner_cap::OwnerCap`, + `${published.packageId}::creator_cap::CreatorCap`, `${suiPackageAddress}::package::UpgradeCap`, ]); - const channelId = await getItsChannelId(client, itsv0ObjectId); + let tx = new Transaction(); + tx.moveCall({ + target: `${published.packageId}::interchain_token_service::setup`, + arguments: [tx.object(creatorCapObjectId), tx.pure.string(chainName), tx.pure.string(itsHubAddress)], + }); - chain.contracts.ITS.objects = { - ITS: itsObjectId, - ITSv0: itsv0ObjectId, + const setupReceipt = await broadcast(client, keypair, tx, 'Setup'); + + const [InterchainTokenServiceObjectId, InterchainTokenServiceV0ObjectId] = getObjectIdsByObjectTypes(setupReceipt, [ + `${published.packageId}::interchain_token_service::InterchainTokenService`, + `${published.packageId}::interchain_token_service_v0::InterchainTokenService_v0`, + ]); + await new Promise((resolve)=> setTimeout(resolve, 2000)); + const channelId = await getItsChannelId(client, InterchainTokenServiceV0ObjectId); + + chain.contracts.InterchainTokenService.objects = { + InterchainTokenService: InterchainTokenServiceObjectId, + InterchainTokenServicev0: InterchainTokenServiceV0ObjectId, ChannelId: channelId, OwnerCap: ownerCapObjectId, UpgradeCap: upgradeCapObjectId, }; - const tx = new Transaction(); + tx = new Transaction(); tx.moveCall({ target: `${published.packageId}::discovery::register_transaction`, - arguments: [tx.object(itsObjectId), tx.object(relayerDiscovery)], + arguments: [tx.object(InterchainTokenServiceObjectId), tx.object(relayerDiscovery)], }); await broadcast(client, keypair, tx, 'Registered Transaction'); @@ -285,7 +300,7 @@ async function postDeploySquid(published, keypair, client, config, chain, option const tx = new Transaction(); tx.moveCall({ target: `${published.packageId}::discovery::register_transaction`, - arguments: [tx.object(squidObjectId), tx.object(chain.contracts.ITS.objects.ITS), tx.object(relayerDiscovery)], + arguments: [tx.object(squidObjectId), tx.object(chain.contracts.InterchainTokenService.objects.InterchainTokenService), tx.object(relayerDiscovery)], }); await broadcast(client, keypair, tx, 'Registered Transaction'); @@ -404,6 +419,10 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; +const ITS_CMD_OPTIONS = [ + new Option('--itsHubAddress ', 'The address of the ITS HUB').env('ITS_HUB_ADDRESS'), +]; + const addDeployOptions = (program) => { // Get the package name from the program name const packageName = program.name(); diff --git a/sui/utils/utils.js b/sui/utils/utils.js index 617215244..65add8b87 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -60,7 +60,6 @@ const getBcsBytesByObjectId = async (client, objectId) => { showBcs: true, }, }); - return fromB64(response.data.bcs.bcsBytes); }; @@ -128,7 +127,7 @@ const getSingletonChannelId = async (client, singletonObjectId) => { const getItsChannelId = async (client, itsObjectId) => { const bcsBytes = await getBcsBytesByObjectId(client, itsObjectId); - const data = bcsStructs.its.ITS.parse(bcsBytes); + const data = bcsStructs.its.InterchainTokenService.parse(bcsBytes); const channelId = data.value.channel.id; return '0x' + channelId; }; From c6a359f97745fd366038bb96538585d55909cd7f Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:17:50 +0200 Subject: [PATCH 25/79] prettier --- sui/deploy-contract.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index dfa783784..2b885300c 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -267,7 +267,7 @@ async function postDeployIts(published, keypair, client, config, chain, options) `${published.packageId}::interchain_token_service::InterchainTokenService`, `${published.packageId}::interchain_token_service_v0::InterchainTokenService_v0`, ]); - await new Promise((resolve)=> setTimeout(resolve, 2000)); + await new Promise((resolve) => setTimeout(resolve, 2000)); const channelId = await getItsChannelId(client, InterchainTokenServiceV0ObjectId); chain.contracts.InterchainTokenService.objects = { @@ -300,7 +300,11 @@ async function postDeploySquid(published, keypair, client, config, chain, option const tx = new Transaction(); tx.moveCall({ target: `${published.packageId}::discovery::register_transaction`, - arguments: [tx.object(squidObjectId), tx.object(chain.contracts.InterchainTokenService.objects.InterchainTokenService), tx.object(relayerDiscovery)], + arguments: [ + tx.object(squidObjectId), + tx.object(chain.contracts.InterchainTokenService.objects.InterchainTokenService), + tx.object(relayerDiscovery), + ], }); await broadcast(client, keypair, tx, 'Registered Transaction'); @@ -419,9 +423,7 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [ - new Option('--itsHubAddress ', 'The address of the ITS HUB').env('ITS_HUB_ADDRESS'), -]; +const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the ITS HUB').env('ITS_HUB_ADDRESS')]; const addDeployOptions = (program) => { // Get the package name from the program name From d046a4922cb2edbc7972ae8b1f0817d7270e4207 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:18:25 +0200 Subject: [PATCH 26/79] hopefully fix tests --- .github/workflows/test-sui.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 895dee37f..323205c09 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -141,8 +141,8 @@ jobs: - name: Deploy ABI run: node sui/deploy-contract deploy Abi - - name: Deploy ITS - run: node sui/deploy-contract deploy ITS + - name: Deploy InterchainTokenService + run: node sui/deploy-contract deploy InterchainTokenService - name: Deploy Example run: node sui/deploy-contract deploy Example From 943ca5dda9d2dfa3c358a0b9256b3e22f7d2a5f4 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:20:17 +0200 Subject: [PATCH 27/79] prettier --- sui/gateway.js | 35 ++++++++++++++++++++++++----------- sui/its.js | 44 ++++++++++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 29 deletions(-) diff --git a/sui/gateway.js b/sui/gateway.js index 30e064e43..05e5a3443 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -513,12 +513,12 @@ async function pause(keypair, client, config, chain, contracts, args, options) { id: contracts.objects.Gatewayv0, options: { showContent: true, - showBcs: true + showBcs: true, }, }); let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); - + const versionsArg = []; const allowedFunctionsArg = []; @@ -528,30 +528,43 @@ async function pause(keypair, client, config, chain, contracts, args, options) { // Do not dissalow `allow_function` because that locks the gateway forever. if (version == allowedFunctionsArray.length - 1) { const index = allowedFunctions.indexOf('allow_function'); - if (index > -1) { // only splice array when item is found + + if (index > -1) { + // only splice array when item is found allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only } } printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); - versionsArg.push((new Array(allowedFunctions.length)).fill(version).join()); + versionsArg.push(new Array(allowedFunctions.length).fill(version).join()); allowedFunctionsArg.push(allowedFunctions.join()); } - // Write the - writeJSON({ - versions: versionsArg, - disallowedFunctions: allowedFunctionsArg, - }, `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); - + // Write the + writeJSON( + { + versions: versionsArg, + disallowedFunctions: allowedFunctionsArg, + }, + `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`, + ); + return disallowFunctions(keypair, client, config, chain, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); } async function unpause(keypair, client, config, chain, contracts, args, options) { const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); - return allowFunctions(keypair, client, config, chain, contracts, [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], options); + return allowFunctions( + keypair, + client, + config, + chain, + contracts, + [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], + options, + ); } async function mainProcessor(processor, args, options) { diff --git a/sui/its.js b/sui/its.js index 0bed84325..c18f5b5e0 100644 --- a/sui/its.js +++ b/sui/its.js @@ -90,7 +90,7 @@ async function allowFunctions(keypair, client, config, contractConfig, args, opt const contracts = contractConfig.ITS; console.log(contracts); const packageId = contracts.address; - + const [versionsArg, functionNamesArg] = args; const versions = versionsArg.split(','); @@ -99,15 +99,11 @@ async function allowFunctions(keypair, client, config, contractConfig, args, opt if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); const builder = new TxBuilder(client); + for (const i in versions) { await builder.moveCall({ target: `${packageId}::interchain_token_service::allow_function`, - arguments: [ - contracts.objects.InterchainTokenService, - contracts.objects.OwnerCap, - versions[i], - functionNames[i], - ], + arguments: [contracts.objects.InterchainTokenService, contracts.objects.OwnerCap, versions[i], functionNames[i]], }); } @@ -152,12 +148,12 @@ async function pause(keypair, client, config, contracts, args, options) { id: contracts.objects.Gatewayv0, options: { showContent: true, - showBcs: true + showBcs: true, }, }); let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); - + const versionsArg = []; const allowedFunctionsArg = []; @@ -167,30 +163,42 @@ async function pause(keypair, client, config, contracts, args, options) { // Do not dissalow `allow_function` because that locks the gateway forever. if (version == allowedFunctionsArray.length - 1) { const index = allowedFunctions.indexOf('allow_function'); - if (index > -1) { // only splice array when item is found + + if (index > -1) { + // only splice array when item is found allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only } } printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); - versionsArg.push((new Array(allowedFunctions.length)).fill(version).join()); + versionsArg.push(new Array(allowedFunctions.length).fill(version).join()); allowedFunctionsArg.push(allowedFunctions.join()); } - // Write the - writeJSON({ - versions: versionsArg, - disallowedFunctions: allowedFunctionsArg, - }, `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); - + // Write the + writeJSON( + { + versions: versionsArg, + disallowedFunctions: allowedFunctionsArg, + }, + `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`, + ); + return disallowFunctions(keypair, client, config, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); } async function unpause(keypair, client, config, contracts, args, options) { const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); - return allowFunctions(keypair, client, config, contracts, [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], options); + return allowFunctions( + keypair, + client, + config, + contracts, + [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], + options, + ); } async function processCommand(command, config, chain, args, options) { From 305cec635244cc22adad94b4a98e3ba5858c4ac0 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:23:59 +0200 Subject: [PATCH 28/79] remove info file --- .../info/sui-allowed-functions-local.json | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 axelar-chains-config/info/sui-allowed-functions-local.json diff --git a/axelar-chains-config/info/sui-allowed-functions-local.json b/axelar-chains-config/info/sui-allowed-functions-local.json deleted file mode 100644 index e25e8ec62..000000000 --- a/axelar-chains-config/info/sui-allowed-functions-local.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "versions": [ - "0,0,0,0,0,0,0" - ], - "disallowedFunctions": [ - "approve_messages,rotate_signers,is_message_approved,is_message_executed,take_approved_message,send_message,disallow_function" - ] -} From efc7ebd84c5ef56a89a6a4bbac7f4ca9fde55c37 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:30:44 +0200 Subject: [PATCH 29/79] fix sui test --- .github/workflows/test-sui.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 323205c09..dd7fa1c41 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -142,7 +142,7 @@ jobs: run: node sui/deploy-contract deploy Abi - name: Deploy InterchainTokenService - run: node sui/deploy-contract deploy InterchainTokenService + run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress "hub_address" - name: Deploy Example run: node sui/deploy-contract deploy Example From 375e068efbaab4c7772b2705b52b129a2278d717 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 14:31:10 +0200 Subject: [PATCH 30/79] fix sui test --- .github/workflows/test-sui.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 323205c09..dd7fa1c41 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -142,7 +142,7 @@ jobs: run: node sui/deploy-contract deploy Abi - name: Deploy InterchainTokenService - run: node sui/deploy-contract deploy InterchainTokenService + run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress "hub_address" - name: Deploy Example run: node sui/deploy-contract deploy Example From 030229a18415de82bf202c859a380c36205468e3 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 15:28:07 +0200 Subject: [PATCH 31/79] rename ITS to InterchainTokenService in its-example as well --- sui/its-example.js | 48 +++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index d9c016759..c2682c205 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -1,5 +1,5 @@ const { Command, Option } = require('commander'); -const { ITSMessageType, SUI_PACKAGE_ID, CLOCK_PACKAGE_ID, TxBuilder, copyMovePackage } = require('@axelar-network/axelar-cgp-sui'); +const { InterchainTokenServiceMessageType, SUI_PACKAGE_ID, CLOCK_PACKAGE_ID, TxBuilder, copyMovePackage } = require('@axelar-network/axelar-cgp-sui'); const { loadConfig, saveConfig, printInfo, getChainConfig } = require('../common/utils'); const { addBaseOptions, @@ -24,14 +24,14 @@ const { async function sendToken(keypair, client, contracts, args, options) { const [symbol, destinationChain, destinationAddress, feeAmount, amount] = args; - const { Example, GasService, AxelarGateway, ITS } = contracts; + const { Example, GasService, AxelarGateway, InterchainTokenService } = contracts; const ItsToken = contracts[symbol.toUpperCase()]; if (!ItsToken) { throw new Error(`Token ${symbol} not found. Deploy it first with 'node sui/its-example.js deploy-token' command`); } - checkTrustedAddresses(ITS.trustedAddresses, destinationChain); + checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); const decimals = ItsToken.decimals; @@ -41,7 +41,7 @@ async function sendToken(keypair, client, contracts, args, options) { const objectIds = { singleton: Example.objects.ItsSingleton, - its: ITS.objects.ITS, + its: InterchainTokenService.objects.InterchainTokenService, gateway: AxelarGateway.objects.Gateway, gasService: GasService.objects.GasService, }; @@ -53,7 +53,7 @@ async function sendToken(keypair, client, contracts, args, options) { const gas = tx.splitCoins(tx.gas, [unitFeeAmount]); const TokenId = await txBuilder.moveCall({ - target: `${ITS.address}::token_id::from_u256`, + target: `${InterchainTokenService.address}::token_id::from_u256`, arguments: [ItsToken.objects.TokenId], }); @@ -87,12 +87,12 @@ async function sendToken(keypair, client, contracts, args, options) { } async function sendDeployment(keypair, client, contracts, args, options) { - const { AxelarGateway, GasService, ITS, Example } = contracts; + const { AxelarGateway, GasService, InterchainTokenService, Example } = contracts; const [symbol, destinationChain, feeAmount] = args; const Token = contracts[symbol.toUpperCase()]; const feeUnitAmount = getUnitAmount(feeAmount); - checkTrustedAddresses(ITS.trustedAddresses, destinationChain); + checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); const txBuilder = new TxBuilder(client); @@ -100,14 +100,14 @@ async function sendDeployment(keypair, client, contracts, args, options) { const gas = tx.splitCoins(tx.gas, [feeUnitAmount]); const TokenId = await txBuilder.moveCall({ - target: `${ITS.address}::token_id::from_u256`, + target: `${InterchainTokenService.address}::token_id::from_u256`, arguments: [Token.objects.TokenId], }); await txBuilder.moveCall({ target: `${Example.address}::its::deploy_remote_interchain_token`, arguments: [ - ITS.objects.ITS, + InterchainTokenService.objects.InterchainTokenService, AxelarGateway.objects.Gateway, GasService.objects.GasService, destinationChain, @@ -123,10 +123,10 @@ async function sendDeployment(keypair, client, contracts, args, options) { } async function handleReceivedMessage(keypair, client, contracts, args, options, actionName) { - const { ITS } = contracts; + const { InterchainTokenService } = contracts; const [sourceChain, messageId, sourceAddress, tokenSymbol, payload] = args; - checkTrustedAddresses(ITS.trustedAddresses, sourceChain); + checkTrustedAddresses(InterchainTokenService.trustedAddresses, sourceChain); // Prepare Object Ids const symbol = tokenSymbol.toUpperCase(); @@ -141,7 +141,7 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, source_chain: sourceChain, message_id: messageId, source_address: sourceAddress, - destination_id: ITS.objects.ChannelId, + destination_id: InterchainTokenService.objects.ChannelId, payload, }; @@ -186,8 +186,8 @@ async function deployToken(keypair, client, contracts, args, options) { const [TreasuryCap, Metadata] = getObjectIdsByObjectTypes(publishTxn, [`TreasuryCap<${tokenType}>`, `Metadata<${tokenType}>`]); - // Register Token in ITS - const { Example, ITS } = contracts; + // Register Token in InterchainTokenService + const { Example, InterchainTokenService } = contracts; let tokenId; const postDeployTxBuilder = new TxBuilder(client); @@ -195,20 +195,20 @@ async function deployToken(keypair, client, contracts, args, options) { if (options.origin) { await postDeployTxBuilder.moveCall({ target: `${Example.address}::its::register_coin`, - arguments: [ITS.objects.ITS, Metadata], + arguments: [InterchainTokenService.objects.InterchainTokenService, Metadata], typeArguments: [tokenType], }); - const result = await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as an origin in ITS successfully`, { + const result = await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as an origin in InterchainTokenService successfully`, { showEvents: true, }); tokenId = result.events[0].parsedJson.token_id.id; } else { await postDeployTxBuilder.moveCall({ - target: `${ITS.address}::its::give_unregistered_coin`, - arguments: [ITS.objects.ITS, TreasuryCap, Metadata], + target: `${InterchainTokenService.address}::its::give_unregistered_coin`, + arguments: [InterchainTokenService.objects.InterchainTokenService, TreasuryCap, Metadata], typeArguments: [tokenType], }); - await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as a non-origin in ITS successfully`, { + await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as a non-origin in InterchainTokenService successfully`, { showEvents: true, }); } @@ -230,14 +230,14 @@ async function deployToken(keypair, client, contracts, args, options) { async function printReceiveDeploymentInfo(contracts, args, options) { const [name, symbol, decimals] = args; - const messageType = ITSMessageType.InterchainTokenDeployment; + const messageType = InterchainTokenServiceMessageType.InterchainTokenDeployment; const tokenId = options.tokenId; const byteName = toUtf8Bytes(name); const byteSymbol = toUtf8Bytes(symbol); const tokenDecimals = parseInt(decimals); const tokenDistributor = options.distributor; - // ITS transfer payload from Ethereum to Sui + // InterchainTokenService transfer payload from Ethereum to Sui const payload = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [messageType, tokenId, byteName, byteSymbol, tokenDecimals, tokenDistributor], @@ -268,7 +268,7 @@ async function printReceiveTransferInfo(contracts, args, options) { const payload = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], - [ITSMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], + [InterchainTokenServiceMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], ); printInfo( @@ -321,7 +321,7 @@ async function mainProcessor(command, options, args, processor) { if (require.main === module) { const program = new Command(); - program.name('ITS Example').description('SUI ITS Example scripts'); + program.name('InterchainTokenService Example').description('SUI InterchainTokenService Example scripts'); const sendTokenTransferProgram = new Command() .name('send-token') @@ -394,7 +394,7 @@ if (require.main === module) { .name('print-transfer-info') .description('Print receive token info. This script will be useful for testing receive token flow.') .command('print-receive-transfer ') - .addOption(new Option('--itsBytes ', 'ITS Bytes').default(ethers.constants.HashZero)) + .addOption(new Option('--itsBytes ', 'InterchainTokenService Bytes').default(ethers.constants.HashZero)) .action((symbol, sourceAddress, amount, options) => { const config = loadConfig(options.env); const chain = getChainConfig(config, options.chainName); From d8a6c2aad06f080a60f350a0d8ec421fcf09f28b Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 15:36:17 +0200 Subject: [PATCH 32/79] some more renaming --- sui/its-example.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index c2682c205..6399697ee 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -64,7 +64,7 @@ async function sendToken(keypair, client, contracts, args, options) { }); await txBuilder.moveCall({ - target: `${Example.address}::its::send_interchain_transfer_call`, + target: `${Example.address}::interchain_token_service::send_interchain_transfer_call`, arguments: [ objectIds.singleton, objectIds.its, @@ -105,7 +105,7 @@ async function sendDeployment(keypair, client, contracts, args, options) { }); await txBuilder.moveCall({ - target: `${Example.address}::its::deploy_remote_interchain_token`, + target: `${Example.address}::interchain_token_service::deploy_remote_interchain_token`, arguments: [ InterchainTokenService.objects.InterchainTokenService, AxelarGateway.objects.Gateway, @@ -194,7 +194,7 @@ async function deployToken(keypair, client, contracts, args, options) { if (options.origin) { await postDeployTxBuilder.moveCall({ - target: `${Example.address}::its::register_coin`, + target: `${Example.address}::interchain_token_service::register_coin`, arguments: [InterchainTokenService.objects.InterchainTokenService, Metadata], typeArguments: [tokenType], }); @@ -204,7 +204,7 @@ async function deployToken(keypair, client, contracts, args, options) { tokenId = result.events[0].parsedJson.token_id.id; } else { await postDeployTxBuilder.moveCall({ - target: `${InterchainTokenService.address}::its::give_unregistered_coin`, + target: `${InterchainTokenService.address}::interchain_token_service::give_unregistered_coin`, arguments: [InterchainTokenService.objects.InterchainTokenService, TreasuryCap, Metadata], typeArguments: [tokenType], }); From 282d92d657acbf4920e0569c6d8f6f3ebfc2d570 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 15:46:12 +0200 Subject: [PATCH 33/79] some more renaming again --- sui/its-example.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index 6399697ee..f49336d2e 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -64,7 +64,7 @@ async function sendToken(keypair, client, contracts, args, options) { }); await txBuilder.moveCall({ - target: `${Example.address}::interchain_token_service::send_interchain_transfer_call`, + target: `${Example.address}::its::send_interchain_transfer_call`, arguments: [ objectIds.singleton, objectIds.its, @@ -105,7 +105,7 @@ async function sendDeployment(keypair, client, contracts, args, options) { }); await txBuilder.moveCall({ - target: `${Example.address}::interchain_token_service::deploy_remote_interchain_token`, + target: `${Example.address}::its::deploy_remote_interchain_token`, arguments: [ InterchainTokenService.objects.InterchainTokenService, AxelarGateway.objects.Gateway, @@ -194,7 +194,7 @@ async function deployToken(keypair, client, contracts, args, options) { if (options.origin) { await postDeployTxBuilder.moveCall({ - target: `${Example.address}::interchain_token_service::register_coin`, + target: `${Example.address}::its::register_coin`, arguments: [InterchainTokenService.objects.InterchainTokenService, Metadata], typeArguments: [tokenType], }); From c511953f4b8d40f545affe03acbf4514afb04e07 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 15:56:19 +0200 Subject: [PATCH 34/79] some renaming went wrong --- sui/its-example.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index f49336d2e..d65350e4e 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -1,5 +1,5 @@ const { Command, Option } = require('commander'); -const { InterchainTokenServiceMessageType, SUI_PACKAGE_ID, CLOCK_PACKAGE_ID, TxBuilder, copyMovePackage } = require('@axelar-network/axelar-cgp-sui'); +const { ITSMessageType, SUI_PACKAGE_ID, CLOCK_PACKAGE_ID, TxBuilder, copyMovePackage } = require('@axelar-network/axelar-cgp-sui'); const { loadConfig, saveConfig, printInfo, getChainConfig } = require('../common/utils'); const { addBaseOptions, @@ -230,7 +230,7 @@ async function deployToken(keypair, client, contracts, args, options) { async function printReceiveDeploymentInfo(contracts, args, options) { const [name, symbol, decimals] = args; - const messageType = InterchainTokenServiceMessageType.InterchainTokenDeployment; + const messageType = ITSMessageType.InterchainTokenDeployment; const tokenId = options.tokenId; const byteName = toUtf8Bytes(name); const byteSymbol = toUtf8Bytes(symbol); @@ -268,7 +268,7 @@ async function printReceiveTransferInfo(contracts, args, options) { const payload = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], - [InterchainTokenServiceMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], + [ITSMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], ); printInfo( From e7c5ec59d5d8aa54e2dfdb257942190af05acfe4 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 15:57:41 +0200 Subject: [PATCH 35/79] prettier --- sui/its-example.js | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index d65350e4e..bb2b59a79 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -198,9 +198,14 @@ async function deployToken(keypair, client, contracts, args, options) { arguments: [InterchainTokenService.objects.InterchainTokenService, Metadata], typeArguments: [tokenType], }); - const result = await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as an origin in InterchainTokenService successfully`, { - showEvents: true, - }); + const result = await broadcastFromTxBuilder( + postDeployTxBuilder, + keypair, + `Setup ${symbol} as an origin in InterchainTokenService successfully`, + { + showEvents: true, + }, + ); tokenId = result.events[0].parsedJson.token_id.id; } else { await postDeployTxBuilder.moveCall({ @@ -208,9 +213,14 @@ async function deployToken(keypair, client, contracts, args, options) { arguments: [InterchainTokenService.objects.InterchainTokenService, TreasuryCap, Metadata], typeArguments: [tokenType], }); - await broadcastFromTxBuilder(postDeployTxBuilder, keypair, `Setup ${symbol} as a non-origin in InterchainTokenService successfully`, { - showEvents: true, - }); + await broadcastFromTxBuilder( + postDeployTxBuilder, + keypair, + `Setup ${symbol} as a non-origin in InterchainTokenService successfully`, + { + showEvents: true, + }, + ); } // Save the deployed token info in the contracts object. From 89b85473deaab6702179c8a8848353164c576057 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:02:15 +0200 Subject: [PATCH 36/79] rename in its.js as well --- sui/its.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/sui/its.js b/sui/its.js index f69838d45..4f1f90cea 100644 --- a/sui/its.js +++ b/sui/its.js @@ -4,7 +4,7 @@ const { loadConfig, saveConfig, getChainConfig } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, getWallet, printWalletInfo, broadcastFromTxBuilder, saveGeneratedTx } = require('./utils'); const SPECIAL_CHAINS_TAGS = { - ALL_EVM: 'all-evm', // All EVM chains that have ITS deployed + ALL_EVM: 'all-evm', // All EVM chains that have InterchainTokenService deployed }; function parseTrustedChains(config, trustedChain) { @@ -21,9 +21,9 @@ function parseTrustedChains(config, trustedChain) { async function setupTrustedAddress(keypair, client, config, contracts, args, options) { const [trustedChain, trustedAddress] = args; - const { ITS: itsConfig } = contracts; + const { InterchainTokenService: itsConfig } = contracts; - const { OwnerCap, ITS } = itsConfig.objects; + const { OwnerCap, InterchainTokenService } = itsConfig.objects; const txBuilder = new TxBuilder(client); @@ -35,8 +35,8 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt }); await txBuilder.moveCall({ - target: `${itsConfig.address}::its::set_trusted_addresses`, - arguments: [ITS, OwnerCap, trustedAddressesObject], + target: `${itsConfig.address}::interchain_token_serviceset_trusted_addresses`, + arguments: [InterchainTokenService, OwnerCap, trustedAddressesObject], }); if (options.offline) { @@ -48,19 +48,19 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); } - // Update ITS config + // Update InterchainTokenService config for (const trustedChain of trustedChains) { - // Add trusted address to ITS config - if (!contracts.ITS.trustedAddresses) contracts.ITS.trustedAddresses = {}; + // Add trusted address to InterchainTokenService config + if (!contracts.InterchainTokenService.trustedAddresses) contracts.InterchainTokenService.trustedAddresses = {}; - contracts.ITS.trustedAddresses[trustedChain] = trustedAddress; + contracts.InterchainTokenService.trustedAddresses[trustedChain] = trustedAddress; } } async function removeTrustedAddress(keypair, client, contracts, args, options) { const [trustedChain] = args; - const trustedAddressesObject = contracts.ITS.trustedAddresses; + const trustedAddressesObject = contracts.InterchainTokenService.trustedAddresses; if (!trustedAddressesObject) throw new Error('No trusted addresses found'); @@ -75,12 +75,12 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { } await txBuilder.moveCall({ - target: `${contracts.ITS.address}::its::remove_trusted_addresses`, - arguments: [contracts.ITS.objects.ITS, contracts.ITS.objects.OwnerCap, chainNames], + target: `${contracts.InterchainTokenService.address}::interchain_token_serviceremove_trusted_addresses`, + arguments: [contracts.InterchainTokenService.objects.InterchainTokenService, contracts.InterchainTokenService.objects.OwnerCap, chainNames], }); for (const chainName of chainNames) { - delete contracts.ITS.trustedAddresses[chainName]; + delete contracts.InterchainTokenService.trustedAddresses[chainName]; } await broadcastFromTxBuilder(txBuilder, keypair, 'Remove Trusted Address'); @@ -103,15 +103,15 @@ async function mainProcessor(command, options, args, processor) { if (require.main === module) { const program = new Command(); - program.name('ITS').description('SUI ITS scripts'); + program.name('InterchainTokenService').description('SUI InterchainTokenService scripts'); - // This command is used to setup the trusted address on the ITS contract. + // This command is used to setup the trusted address on the InterchainTokenService contract. // The trusted address is used to verify the message from the source chain. const setupTrustedAddressProgram = new Command() .name('setup-trusted-address') .command('setup-trusted-address ') .description( - `Setup trusted address. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all ITS-deployed EVM chains`, + `Setup trusted address. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all InterchainTokenService-deployed EVM chains`, ) .action((trustedChain, trustedAddress, options) => { mainProcessor(setupTrustedAddress, options, [trustedChain, trustedAddress], processCommand); From a3e3a506381ad87ecbfc1dee0b2a15c23b86b87c Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:14:37 +0200 Subject: [PATCH 37/79] fix trusted addresses --- sui/its.js | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/sui/its.js b/sui/its.js index 4f1f90cea..9e06ac017 100644 --- a/sui/its.js +++ b/sui/its.js @@ -19,7 +19,7 @@ function parseTrustedChains(config, trustedChain) { } async function setupTrustedAddress(keypair, client, config, contracts, args, options) { - const [trustedChain, trustedAddress] = args; + const [trustedChain] = args; const { InterchainTokenService: itsConfig } = contracts; @@ -29,21 +29,16 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt const trustedChains = parseTrustedChains(config, trustedChain); - const trustedAddressesObject = await txBuilder.moveCall({ - target: `${itsConfig.address}::trusted_addresses::new`, - arguments: [trustedChains, trustedChains.map(() => trustedAddress)], - }); - await txBuilder.moveCall({ - target: `${itsConfig.address}::interchain_token_serviceset_trusted_addresses`, - arguments: [InterchainTokenService, OwnerCap, trustedAddressesObject], + target: `${itsConfig.address}::interchain_token_service::add_trusted_chains`, + arguments: [InterchainTokenService, OwnerCap, trustedChains], }); if (options.offline) { const tx = txBuilder.tx; const sender = options.sender || keypair.toSuiAddress(); tx.setSender(sender); - await saveGeneratedTx(tx, `Set trusted address for ${trustedChain} to ${trustedAddress}`, client, options); + await saveGeneratedTx(tx, `Added trusted chain ${trustedChain}`, client, options); } else { await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); } @@ -51,9 +46,9 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt // Update InterchainTokenService config for (const trustedChain of trustedChains) { // Add trusted address to InterchainTokenService config - if (!contracts.InterchainTokenService.trustedAddresses) contracts.InterchainTokenService.trustedAddresses = {}; + if (!contracts.InterchainTokenService.trustedAddresses) contracts.InterchainTokenService.trustedAddresses = []; - contracts.InterchainTokenService.trustedAddresses[trustedChain] = trustedAddress; + contracts.InterchainTokenService.trustedAddresses.push(trustedChain); } } @@ -75,7 +70,7 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { } await txBuilder.moveCall({ - target: `${contracts.InterchainTokenService.address}::interchain_token_serviceremove_trusted_addresses`, + target: `${contracts.InterchainTokenService.address}::interchain_token_service::remove_trusted_chains`, arguments: [contracts.InterchainTokenService.objects.InterchainTokenService, contracts.InterchainTokenService.objects.OwnerCap, chainNames], }); @@ -109,12 +104,12 @@ if (require.main === module) { // The trusted address is used to verify the message from the source chain. const setupTrustedAddressProgram = new Command() .name('setup-trusted-address') - .command('setup-trusted-address ') + .command('setup-trusted-address ') .description( - `Setup trusted address. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all InterchainTokenService-deployed EVM chains`, + `Add trusted chain. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all InterchainTokenService-deployed EVM chains`, ) - .action((trustedChain, trustedAddress, options) => { - mainProcessor(setupTrustedAddress, options, [trustedChain, trustedAddress], processCommand); + .action((trustedChain, options) => { + mainProcessor(setupTrustedAddress, options, [trustedChain], processCommand); }); const removeTrustedAddressProgram = new Command() From 757e6e85565f783a8f6e84bd249fd0b1f8f67a53 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:14:53 +0200 Subject: [PATCH 38/79] prettier --- sui/its.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sui/its.js b/sui/its.js index 9e06ac017..b99d52d76 100644 --- a/sui/its.js +++ b/sui/its.js @@ -71,7 +71,11 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { await txBuilder.moveCall({ target: `${contracts.InterchainTokenService.address}::interchain_token_service::remove_trusted_chains`, - arguments: [contracts.InterchainTokenService.objects.InterchainTokenService, contracts.InterchainTokenService.objects.OwnerCap, chainNames], + arguments: [ + contracts.InterchainTokenService.objects.InterchainTokenService, + contracts.InterchainTokenService.objects.OwnerCap, + chainNames, + ], }); for (const chainName of chainNames) { From 434424be9997af4f17827002db58cef6dfaf85c9 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:26:32 +0200 Subject: [PATCH 39/79] fix its-example some --- sui/its-example.js | 1 - sui/utils/utils.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index bb2b59a79..76a44b5e1 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -49,7 +49,6 @@ async function sendToken(keypair, client, contracts, args, options) { const txBuilder = new TxBuilder(client); const tx = txBuilder.tx; - const gas = tx.splitCoins(tx.gas, [unitFeeAmount]); const TokenId = await txBuilder.moveCall({ diff --git a/sui/utils/utils.js b/sui/utils/utils.js index 65add8b87..9060283c1 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -266,7 +266,7 @@ const parseGatewayInfo = (chain) => { }; const checkTrustedAddresses = (trustedAddresses, destinationChain) => { - if (!trustedAddresses[destinationChain]) { + if (!trustedAddresses.includes(destinationChain)) { throw new Error( `${destinationChain} is not trusted. Run 'node sui/its-example.js setup-trusted-address ' to setup trusted address`, ); From d074ca1654c08c7dce91b273b8820a985d7a0f47 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:36:39 +0200 Subject: [PATCH 40/79] testing error fails --- sui/gateway.js | 1 + 1 file changed, 1 insertion(+) diff --git a/sui/gateway.js b/sui/gateway.js index 6a8e4ef26..92c1017e7 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -153,6 +153,7 @@ async function approve(keypair, client, config, chain, contractConfig, args, opt const packageId = contractConfig.address; const [sourceChain, messageId, sourceAddress, destinationId, payloadHash] = args; + console.log([sourceChain, messageId, sourceAddress, destinationId, payloadHash]); const encodedMessages = bcs .vector(bcsStructs.gateway.Message) .serialize([ From 5146813edae1daea42699edca06510ce02a96aca Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 16:47:56 +0200 Subject: [PATCH 41/79] some more renaming --- .github/workflows/test-sui.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index dd7fa1c41..6d889592a 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -196,7 +196,7 @@ jobs: echo "emptyTokenName=Empty" >> $GITHUB_ENV echo "emptyTokenDecimals=6" >> $GITHUB_ENV config=$(cat axelar-chains-config/info/local.json) - echo "channelId=$(echo $config | jq -r '.chains.sui.contracts.ITS.objects.ChannelId')" >> $GITHUB_ENV + echo "channelId=$(echo $config | jq -r '.chains.sui.contracts.InterchainTokenService.objects.ChannelId')" >> $GITHUB_ENV echo "destinationContractAddress=$(echo $config | jq -r '.chains.sui.contracts.Example.objects.ItsChannelId')" >> $GITHUB_ENV - name: Deploy Test Tokens From 80152505f59ad67337df817ed83755f65e84f5ca Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 19:34:59 +0200 Subject: [PATCH 42/79] fixed some tests --- sui/its-example.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index 76a44b5e1..5762baedd 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -247,10 +247,14 @@ async function printReceiveDeploymentInfo(contracts, args, options) { const tokenDistributor = options.distributor; // InterchainTokenService transfer payload from Ethereum to Sui - const payload = defaultAbiCoder.encode( + let payload = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [messageType, tokenId, byteName, byteSymbol, tokenDecimals, tokenDistributor], ); + payload = defaultAbiCoder.encode( + ['uint256', 'string', 'bytes'], + [ITSMessageType.ReceiveFromItsHub, 'axelar', payload], + ); printInfo( JSON.stringify( @@ -275,10 +279,14 @@ async function printReceiveTransferInfo(contracts, args, options) { const itsBytes = options.itsBytes; const channelId = options.channelId || Example.objects.ItsChannelId; - const payload = defaultAbiCoder.encode( + let payload = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [ITSMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], ); + payload = defaultAbiCoder.encode( + ['uint256', 'string', 'bytes'], + [ITSMessageType.ReceiveFromItsHub, 'axelar', payload], + ); printInfo( JSON.stringify( From 43789a3dc94195788147e08e8f24fc93f4a05186 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 19:52:25 +0200 Subject: [PATCH 43/79] fix source address --- .github/workflows/test-sui.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 6d889592a..9501d33bf 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -223,8 +223,8 @@ jobs: - name: Receive Token from another chain run: | - node sui/gateway.js approve --proof wallet $sourceChain $transferMessageId $sourceAddress $channelId $transferPayloadHash - node sui/its-example receive-token $sourceChain $transferMessageId $sourceAddress $symbol $transferPayload + node sui/gateway.js approve --proof wallet $sourceChain $transferMessageId hub_address $channelId $transferPayloadHash + node sui/its-example receive-token $sourceChain $transferMessageId hub_address $symbol $transferPayload - name: Send Token Deployment to another chain run: | @@ -232,8 +232,8 @@ jobs: - name: Receive Token Deployment from another chain run: | - node sui/gateway.js approve --proof wallet $sourceChain $deployMessageId $sourceAddress $channelId $deployPayloadHash - node sui/its-example receive-deployment $sourceChain $deployMessageId $sourceAddress $emptyTokenSymbol $deployPayload + node sui/gateway.js approve --proof wallet $sourceChain $deployMessageId hub_address $channelId $deployPayloadHash + node sui/its-example receive-deployment $sourceChain $deployMessageId hub_address $emptyTokenSymbol $deployPayload ###### Command: Operators ###### From 8047bd0a5f674b687fcbc856081bf58f51a7c51d Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 20:18:13 +0200 Subject: [PATCH 44/79] try more fixes --- sui/its-example.js | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index 5762baedd..ee29d822d 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -125,7 +125,8 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, const { InterchainTokenService } = contracts; const [sourceChain, messageId, sourceAddress, tokenSymbol, payload] = args; - checkTrustedAddresses(InterchainTokenService.trustedAddresses, sourceChain); + const [, originChain] = defaultAbiCoder.decode(['uint256', 'string', 'bytes'], payload); + checkTrustedAddresses(InterchainTokenService.trustedAddresses, originChain); // Prepare Object Ids const symbol = tokenSymbol.toUpperCase(); @@ -143,7 +144,7 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, destination_id: InterchainTokenService.objects.ChannelId, payload, }; - + console.log(messageInfo); await broadcastExecuteApprovedMessage(client, keypair, discoveryInfo, gatewayInfo, messageInfo, actionName); } @@ -237,7 +238,7 @@ async function deployToken(keypair, client, contracts, args, options) { } async function printReceiveDeploymentInfo(contracts, args, options) { - const [name, symbol, decimals] = args; + const [sourceChain, name, symbol, decimals] = args; const messageType = ITSMessageType.InterchainTokenDeployment; const tokenId = options.tokenId; @@ -251,10 +252,7 @@ async function printReceiveDeploymentInfo(contracts, args, options) { ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [messageType, tokenId, byteName, byteSymbol, tokenDecimals, tokenDistributor], ); - payload = defaultAbiCoder.encode( - ['uint256', 'string', 'bytes'], - [ITSMessageType.ReceiveFromItsHub, 'axelar', payload], - ); + payload = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, payload]); printInfo( JSON.stringify( @@ -271,7 +269,7 @@ async function printReceiveDeploymentInfo(contracts, args, options) { async function printReceiveTransferInfo(contracts, args, options) { const { Example } = contracts; - const [symbol, sourceAddress, amount] = args; + const [sourceChain, symbol, sourceAddress, amount] = args; const Token = contracts[symbol]; const unitAmount = getUnitAmount(amount, Token.decimals); @@ -283,10 +281,7 @@ async function printReceiveTransferInfo(contracts, args, options) { ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [ITSMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], ); - payload = defaultAbiCoder.encode( - ['uint256', 'string', 'bytes'], - [ITSMessageType.ReceiveFromItsHub, 'axelar', payload], - ); + payload = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, payload]); printInfo( JSON.stringify( @@ -398,24 +393,24 @@ if (require.main === module) { const printDeploymentInfoProgram = new Command() .name('print-deployment-info') .description('Print deployment info. This script will be useful for testing receive deployment flow.') - .command('print-receive-deployment ') + .command('print-receive-deployment ') .addOption(new Option('--distributor ', 'Distributor address').default(ethers.constants.HashZero)) .addOption(new Option('--tokenId ', 'Token ID').default(hexlify(randomBytes(32)))) - .action((name, symbol, decimals, options) => { + .action((sourceChain, name, symbol, decimals, options) => { const config = loadConfig(options.env); const chain = getChainConfig(config, options.chainName); - printReceiveDeploymentInfo(chain.contracts, [name, symbol, decimals], options); + printReceiveDeploymentInfo(chain.contracts, [sourceChain, name, symbol, decimals], options); }); const printReceiveTransferInfoProgram = new Command() .name('print-transfer-info') .description('Print receive token info. This script will be useful for testing receive token flow.') - .command('print-receive-transfer ') + .command('print-receive-transfer ') .addOption(new Option('--itsBytes ', 'InterchainTokenService Bytes').default(ethers.constants.HashZero)) - .action((symbol, sourceAddress, amount, options) => { + .action((sourceChain, symbol, sourceAddress, amount, options) => { const config = loadConfig(options.env); const chain = getChainConfig(config, options.chainName); - printReceiveTransferInfo(chain.contracts, [symbol, sourceAddress, amount], options); + printReceiveTransferInfo(chain.contracts, [sourceChain, symbol, sourceAddress, amount], options); }); program.addCommand(sendTokenTransferProgram); From fb26303fc285b31b21eaaf23bac90cd7196fdecf Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 20:29:52 +0200 Subject: [PATCH 45/79] try to fix test.yaml again --- .github/workflows/test-sui.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 9501d33bf..10c8103f1 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -205,8 +205,8 @@ jobs: node sui/its-example deploy-token ${{ env.emptyTokenSymbol }} ${{ env.emptyTokenName }} ${{ env.emptyTokenDecimals }} # Prepare additional parameters for the example: - transferInfo=$(node sui/its-example.js print-receive-transfer ${{ env.symbol }} ${{ env.sourceAddress }} ${{ env.amount }}) - deploymentInfo=$(node sui/its-example.js print-receive-deployment ${{ env.emptyTokenName }} ${{ env.emptyTokenSymbol }} ${{ env.emptyTokenDecimals }}) + transferInfo=$(node sui/its-example.js print-receive-transfer ${{ env.sourceChain }} ${{ env.symbol }} ${{ env.sourceAddress }} ${{ env.amount }}) + deploymentInfo=$(node sui/its-example.js print-receive-deployment ${{ env.sourceChain }} ${{ env.emptyTokenName }} ${{ env.emptyTokenSymbol }} ${{ env.emptyTokenDecimals }}) echo "transferPayloadHash=$(echo $transferInfo | jq -r .payloadHash)" >> $GITHUB_ENV echo "transferPayload=$(echo $transferInfo | jq -r .payload)" >> $GITHUB_ENV @@ -223,8 +223,8 @@ jobs: - name: Receive Token from another chain run: | - node sui/gateway.js approve --proof wallet $sourceChain $transferMessageId hub_address $channelId $transferPayloadHash - node sui/its-example receive-token $sourceChain $transferMessageId hub_address $symbol $transferPayload + node sui/gateway.js approve --proof wallet axelar $transferMessageId hub_address $channelId $transferPayloadHash + node sui/its-example receive-token axelar $transferMessageId hub_address $symbol $transferPayload - name: Send Token Deployment to another chain run: | From 11f69b0af7d2baaae69e03aa93534ed40db79ab5 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 20:38:37 +0200 Subject: [PATCH 46/79] more fixing --- .github/workflows/test-sui.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 10c8103f1..3c6622415 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -232,8 +232,8 @@ jobs: - name: Receive Token Deployment from another chain run: | - node sui/gateway.js approve --proof wallet $sourceChain $deployMessageId hub_address $channelId $deployPayloadHash - node sui/its-example receive-deployment $sourceChain $deployMessageId hub_address $emptyTokenSymbol $deployPayload + node sui/gateway.js approve --proof wallet axelar $deployMessageId hub_address $channelId $deployPayloadHash + node sui/its-example receive-deployment axelar $deployMessageId hub_address $emptyTokenSymbol $deployPayload ###### Command: Operators ###### From 7a641bea6855ccf03b610614b1b5d897a2f3907d Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 28 Jan 2025 21:21:44 +0200 Subject: [PATCH 47/79] fix pausing a bit --- sui/gateway.js | 8 +++--- sui/its.js | 68 +++++++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/sui/gateway.js b/sui/gateway.js index 084d3f27e..b6c19965a 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -2,7 +2,7 @@ const { Command, Option } = require('commander'); const { Transaction } = require('@mysten/sui/transactions'); const { bcs } = require('@mysten/sui/bcs'); const { ethers } = require('hardhat'); -const { bcsStructs, CLOCK_PACKAGE_ID, TxBuilder } = require('@axelar-network/axelar-cgp-sui'); +const { bcsStructs, CLOCK_PACKAGE_ID } = require('@axelar-network/axelar-cgp-sui'); const { utils: { arrayify, keccak256, toUtf8Bytes }, constants: { HashZero }, @@ -527,7 +527,7 @@ async function pause(keypair, client, config, chain, contracts, args, options) { const allowedFunctions = allowedFunctionsArray[version]; // Do not dissalow `allow_function` because that locks the gateway forever. - if (version == allowedFunctionsArray.length - 1) { + if (Number(version) === allowedFunctionsArray.length - 1) { const index = allowedFunctions.indexOf('allow_function'); if (index > -1) { @@ -548,14 +548,14 @@ async function pause(keypair, client, config, chain, contracts, args, options) { versions: versionsArg, disallowedFunctions: allowedFunctionsArg, }, - `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`, + `${__dirname}/../axelar-chains-config/info/sui-gateway-allowed-functions-${options.env}.json`, ); return disallowFunctions(keypair, client, config, chain, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); } async function unpause(keypair, client, config, chain, contracts, args, options) { - const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-gateway-allowed-functions-${options.env}.json`); return allowFunctions( keypair, diff --git a/sui/its.js b/sui/its.js index 11e7d9f20..f627a186f 100644 --- a/sui/its.js +++ b/sui/its.js @@ -1,7 +1,9 @@ const { Command } = require('commander'); const { TxBuilder } = require('@axelar-network/axelar-cgp-sui'); -const { loadConfig, saveConfig, getChainConfig } = require('../common/utils'); +const { loadConfig, saveConfig, getChainConfig, printInfo, writeJSON } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, getWallet, printWalletInfo, broadcastFromTxBuilder, saveGeneratedTx } = require('./utils'); +const { Transaction } = require('@mysten/sui/transactions'); +const { readJSON } = require(`${__dirname}/../axelar-chains-config`); const SPECIAL_CHAINS_TAGS = { ALL_EVM: 'all-evm', // All EVM chains that have InterchainTokenService deployed @@ -86,8 +88,7 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { } async function allowFunctions(keypair, client, config, contractConfig, args, options) { - const contracts = contractConfig.ITS; - console.log(contracts); + const contracts = contractConfig.InterchainTokenService; const packageId = contracts.address; const [versionsArg, functionNamesArg] = args; @@ -106,14 +107,12 @@ async function allowFunctions(keypair, client, config, contractConfig, args, opt }); } - return { - tx, - message: 'Allow Functions', - }; + await broadcastFromTxBuilder(builder, keypair, 'Allow Functions'); } async function disallowFunctions(keypair, client, config, contractConfig, args, options) { - const packageId = contractConfig.address; + const contracts = contractConfig.InterchainTokenService; + const packageId = contracts.address; const [versionsArg, functionNamesArg] = args; @@ -122,29 +121,27 @@ async function disallowFunctions(keypair, client, config, contractConfig, args, if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); - const tx = new Transaction(); + const builder = new TxBuilder(client); for (const i in versions) { - tx.moveCall({ - target: `${packageId}::gateway::disallow_function`, + await builder.moveCall({ + target: `${packageId}::interchain_token_service::disallow_function`, arguments: [ - tx.object(contractConfig.objects.Gateway), - tx.object(contractConfig.objects.OwnerCap), - tx.pure.u64(versions[i]), - tx.pure.string(functionNames[i]), + contracts.objects.InterchainTokenService, + contracts.objects.OwnerCap, + versions[i], + functionNames[i], ], }); } - return { - tx, - message: 'Disallow Functions', - }; + + await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions'); } async function pause(keypair, client, config, contracts, args, options) { const response = await client.getObject({ - id: contracts.objects.Gatewayv0, + id: contracts.InterchainTokenService.objects.InterchainTokenServicev0, options: { showContent: true, showBcs: true, @@ -160,9 +157,8 @@ async function pause(keypair, client, config, contracts, args, options) { const allowedFunctions = allowedFunctionsArray[version]; // Do not dissalow `allow_function` because that locks the gateway forever. - if (version == allowedFunctionsArray.length - 1) { + if (Number(version) === allowedFunctionsArray.length - 1) { const index = allowedFunctions.indexOf('allow_function'); - if (index > -1) { // only splice array when item is found allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only @@ -181,16 +177,16 @@ async function pause(keypair, client, config, contracts, args, options) { versions: versionsArg, disallowedFunctions: allowedFunctionsArg, }, - `${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`, + `${__dirname}/../axelar-chains-config/info/sui-its-allowed-functions-${options.env}.json`, ); - return disallowFunctions(keypair, client, config, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); + return await disallowFunctions(keypair, client, config, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); } async function unpause(keypair, client, config, contracts, args, options) { - const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-allowed-functions-${options.env}.json`); + const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-its-allowed-functions-${options.env}.json`); - return allowFunctions( + return await allowFunctions( keypair, client, config, @@ -247,9 +243,29 @@ if (require.main === module) { mainProcessor(allowFunctions, options, [versions, functions], processCommand); }); + const pauseProgram = new Command() + .name('pause') + .description('Pause ITS') + .command('pause') + .action((options) => { + mainProcessor(pause, options, [], processCommand); + }); + + const unpauseProgram = new Command() + .name('unpause') + .description('Unpause ITS') + .command('unpause') + .action((options) => { + mainProcessor(unpause, options, [], processCommand); + }); + + + program.addCommand(setupTrustedAddressProgram); program.addCommand(removeTrustedAddressProgram); program.addCommand(allowFunctionsProgram); + program.addCommand(pauseProgram); + program.addCommand(unpauseProgram); addOptionsToCommands(program, addBaseOptions, { offline: true }); From 25d37a73db356ad4788d6130054f0caf90b16305 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:08:22 +0200 Subject: [PATCH 48/79] rename all ITS to InterchainTokenService --- common/utils.js | 4 +-- cosmwasm/submit-proposal.js | 4 +-- evm/deploy-its.js | 52 +++++++++++++++++------------------ evm/interchainTokenFactory.js | 4 +-- evm/its.js | 12 ++++---- evm/multisig.js | 2 +- stellar/its.js | 4 +-- sui/deploy-contract.js | 2 +- sui/its.js | 4 +-- 9 files changed, 44 insertions(+), 44 deletions(-) diff --git a/common/utils.js b/common/utils.js index 8fa77a696..34be150c9 100644 --- a/common/utils.js +++ b/common/utils.js @@ -441,10 +441,10 @@ const getMultisigProof = async (config, chain, multisigSessionId) => { const calculateDomainSeparator = (chain, router, network) => keccak256(Buffer.from(`${chain}${router}${network}`)); const getItsEdgeContract = (chainConfig) => { - const itsEdgeContract = chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.ITS?.objects?.ChannelId; + const itsEdgeContract = chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.InterchainTokenService?.objects?.ChannelId; if (!itsEdgeContract) { - throw new Error(`Missing ITS edge contract for chain ${chainConfig.name}`); + throw new Error(`Missing InterchainTokenService edge contract for chain ${chainConfig.name}`); } return itsEdgeContract; diff --git a/cosmwasm/submit-proposal.js b/cosmwasm/submit-proposal.js index d959a8223..c23bc87ae 100644 --- a/cosmwasm/submit-proposal.js +++ b/cosmwasm/submit-proposal.js @@ -293,8 +293,8 @@ const programHandler = () => { const registerItsChainCmd = program .command('its-hub-register-chains') - .description('Submit an execute wasm contract proposal to register an ITS chain') - .argument('', 'list of chains to register on ITS hub') + .description('Submit an execute wasm contract proposal to register an InterchainTokenService chain') + .argument('', 'list of chains to register on InterchainTokenService hub') .action((chains, options) => { options.chains = chains; mainProcessor(registerItsChain, options); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index d285d84d0..b81ee7c09 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -30,7 +30,7 @@ const { addEvmOptions } = require('./cli-utils'); const { Command, Option } = require('commander'); /** - * Function that handles the ITS deployment. + * Function that handles the InterchainTokenService deployment. * @param {*} wallet * @param {*} chain * @param {*} deployOptions @@ -53,7 +53,7 @@ async function deployAll(config, wallet, chain, options) { const contractConfig = contracts[contractName] || {}; const itsFactoryContractConfig = contracts[itsFactoryContractName] || {}; - const salt = options.salt ? `ITS ${options.salt}` : 'ITS'; + const salt = options.salt ? `InterchainTokenService ${options.salt}` : 'InterchainTokenService'; let proxySalt, factorySalt; // If reusing the proxy, then proxy salt is the existing value @@ -61,14 +61,14 @@ async function deployAll(config, wallet, chain, options) { proxySalt = contractConfig.proxySalt; factorySalt = itsFactoryContractConfig.salt; } else if (options.proxySalt) { - proxySalt = `ITS ${options.proxySalt}`; - factorySalt = `ITS Factory ${options.proxySalt}`; + proxySalt = `InterchainTokenService ${options.proxySalt}`; + factorySalt = `InterchainTokenService Factory ${options.proxySalt}`; } else if (options.salt) { - proxySalt = `ITS ${options.salt}`; - factorySalt = `ITS Factory ${options.salt}`; + proxySalt = `InterchainTokenService ${options.salt}`; + factorySalt = `InterchainTokenService Factory ${options.salt}`; } else { - proxySalt = 'ITS'; - factorySalt = 'ITS Factory'; + proxySalt = 'InterchainTokenService'; + factorySalt = 'InterchainTokenService Factory'; } const implementationSalt = `${salt} Implementation`; @@ -99,7 +99,7 @@ async function deployAll(config, wallet, chain, options) { }); if (!isValidAddress(interchainTokenService)) { - throw new Error(`Invalid ITS address: ${interchainTokenService}`); + throw new Error(`Invalid InterchainTokenService address: ${interchainTokenService}`); } if (options.reuseProxy) { @@ -130,8 +130,8 @@ async function deployAll(config, wallet, chain, options) { const isCurrentChainConsensus = isConsensusChain(chain); - // Register all EVM chains that ITS is or will be deployed on. - // Add a "skip": true under ITS key in the config if the chain will not have ITS. + // Register all EVM chains that InterchainTokenService is or will be deployed on. + // Add a "skip": true under InterchainTokenService key in the config if the chain will not have InterchainTokenService. const itsChains = Object.values(config.chains).filter( (chain) => chain.chainType === 'evm' && chain.contracts?.InterchainTokenService?.skip !== true, ); @@ -143,7 +143,7 @@ async function deployAll(config, wallet, chain, options) { : 'hub', ); - // If ITS Hub is deployed, register it as a trusted chain as well + // If InterchainTokenService Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -296,7 +296,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.gatewayCaller, ]; - printInfo('ITS Implementation args', args); + printInfo('InterchainTokenService Implementation args', args); return await deployContract( proxyDeployMethod, @@ -323,7 +323,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.predeployCodehash = predeployCodehash; const args = [contractConfig.implementation, wallet.address, deploymentParams]; - printInfo('ITS Proxy args', args); + printInfo('InterchainTokenService Proxy args', args); return await deployContract( proxyDeployMethod, @@ -358,7 +358,7 @@ async function deployAll(config, wallet, chain, options) { contractName: 'InterchainProxy', async deploy() { const args = [itsFactoryContractConfig.implementation, wallet.address, '0x']; - printInfo('ITS Factory Proxy args', args); + printInfo('InterchainTokenService Factory Proxy args', args); return await deployContract( proxyDeployMethod, @@ -463,13 +463,13 @@ async function upgrade(_, chain, options) { const contract = new Contract(contractConfig.address, InterchainTokenService.abi, wallet); const codehash = await getBytecodeHash(contractConfig.implementation, chain.axelarId, provider); - printInfo(`ITS Proxy`, contract.address); + printInfo(`InterchainTokenService Proxy`, contract.address); const currImplementation = await contract.implementation(); - printInfo(`Current ITS implementation`, currImplementation); - printInfo(`New ITS implementation`, contractConfig.implementation); + printInfo(`Current InterchainTokenService implementation`, currImplementation); + printInfo(`New InterchainTokenService implementation`, contractConfig.implementation); - if (predictOnly || prompt(`Proceed with ITS upgrade on ${chain.name}?`, options.yes)) { + if (predictOnly || prompt(`Proceed with InterchainTokenService upgrade on ${chain.name}?`, options.yes)) { return; } @@ -488,16 +488,16 @@ async function upgrade(_, chain, options) { const itsFactory = new Contract(itsFactoryContractConfig.address, InterchainTokenFactory.abi, wallet); const factoryCodehash = await getBytecodeHash(itsFactoryContractConfig.implementation, chain.axelarId, provider); - printInfo(`ITS Factory Proxy`, itsFactory.address); + printInfo(`InterchainTokenService Factory Proxy`, itsFactory.address); const factoryImplementation = await itsFactory.implementation(); - printInfo(`Current ITS Factory implementation`, factoryImplementation); - printInfo(`New ITS Factory implementation`, itsFactoryContractConfig.implementation); + printInfo(`Current InterchainTokenService Factory implementation`, factoryImplementation); + printInfo(`New InterchainTokenService Factory implementation`, itsFactoryContractConfig.implementation); if ( options.predictOnly || prompt( - `Proceed with ITS Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, + `Proceed with InterchainTokenService Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, options.yes, ) ) { @@ -549,17 +549,17 @@ if (require.main === module) { program.addOption(new Option('--reuseProxy', 'reuse existing proxy (useful for upgrade deployments')); program.addOption(new Option('--contractName ', 'contract name').default('InterchainTokenService')); // added for consistency - program.addOption(new Option('-s, --salt ', 'deployment salt to use for ITS deployment').env('SALT')); + program.addOption(new Option('-s, --salt ', 'deployment salt to use for InterchainTokenService deployment').env('SALT')); program.addOption( new Option( '--proxySalt ', - 'deployment salt to use for ITS proxies, this allows deploying latest releases to new chains while deriving the same proxy address', + 'deployment salt to use for InterchainTokenService proxies, this allows deploying latest releases to new chains while deriving the same proxy address', ) .default('v1.0.0') .env('PROXY_SALT'), ); program.addOption( - new Option('-o, --operatorAddress ', 'address of the ITS operator/rate limiter').env('OPERATOR_ADDRESS'), + new Option('-o, --operatorAddress ', 'address of the InterchainTokenService operator/rate limiter').env('OPERATOR_ADDRESS'), ); program.action(async (options) => { diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 22890dda2..408b5e8a8 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -160,7 +160,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( @@ -256,7 +256,7 @@ async function processCommand(config, chain, options) { const deploymentSalt = getDeploymentSalt(options); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } validateParameters({ diff --git a/evm/its.js b/evm/its.js index 3d50de11c..c05b84105 100644 --- a/evm/its.js +++ b/evm/its.js @@ -72,7 +72,7 @@ async function handleTx(tx, chain, contract, action, firstEvent, secondEvent) { async function getTrustedChainsAndAddresses(config, interchainTokenService) { const allChains = Object.values(config.chains).map((chain) => chain.axelarId); - // If ITS Hub is deployed, register it as a trusted chain as well + // If InterchainTokenService Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -312,7 +312,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); @@ -341,7 +341,7 @@ async function processCommand(config, chain, options) { implementationType !== tokenManagerImplementations.MINT_BURN && implementationType !== tokenManagerImplementations.INTERCHAIN_TOKEN ) { - printInfo('Approving ITS for a transfer for token with token manager type', implementationType); + printInfo('Approving InterchainTokenService for a transfer for token with token manager type', implementationType); await token.approve(interchainTokenService.address, amount, gasOptions).then((tx) => tx.wait()); } @@ -561,7 +561,7 @@ async function processCommand(config, chain, options) { printInfo('Trusted chains', trustedChains); printInfo('Trusted addresses', trustedAddresses); - // check if all trusted addresses match ITS address + // check if all trusted addresses match InterchainTokenService address for (const trustedAddress of trustedAddresses) { if (trustedAddress !== interchainTokenServiceAddress) { printError( @@ -647,13 +647,13 @@ async function main(options) { if (require.main === module) { const program = new Command(); - program.name('ITS').description('Script to perform ITS commands'); + program.name('InterchainTokenService').description('Script to perform InterchainTokenService commands'); addEvmOptions(program, { address: true, salt: true }); program.addOption(new Option('-c, --contractName ', 'contract name').default('InterchainTokenService')); program.addOption( - new Option('--action ', 'ITS action') + new Option('--action ', 'InterchainTokenService action') .choices([ 'contractId', 'tokenManagerAddress', diff --git a/evm/multisig.js b/evm/multisig.js index 4f677d1f4..2870a6501 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -400,7 +400,7 @@ if (require.main === module) { new Option('--nativeValue ', 'execute multisig proposal nativeValue').makeOptionMandatory(false).default(0), ); - // option for setFlowLimit in ITS + // option for setFlowLimit in InterchainTokenService program.addOption(new Option('--tokenIds ', 'token ids')); program.action((options) => { diff --git a/stellar/its.js b/stellar/its.js index 9ff21691c..7acaa6b7c 100644 --- a/stellar/its.js +++ b/stellar/its.js @@ -49,14 +49,14 @@ if (require.main === module) { program .command('set-trusted-chain ') - .description('set a trusted ITS chain') + .description('set a trusted InterchainTokenService chain') .action((chainName, options) => { mainProcessor(setTrustedChain, chainName, options); }); program .command('remove-trusted-chain ') - .description('remove a trusted ITS chain') + .description('remove a trusted InterchainTokenService chain') .action((chainName, options) => { mainProcessor(removeTrustedChain, chainName, options); }); diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 2b885300c..bac2cb95d 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -423,7 +423,7 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the ITS HUB').env('ITS_HUB_ADDRESS')]; +const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS')]; const addDeployOptions = (program) => { // Get the package name from the program name diff --git a/sui/its.js b/sui/its.js index f627a186f..bf9c8ab78 100644 --- a/sui/its.js +++ b/sui/its.js @@ -245,7 +245,7 @@ if (require.main === module) { const pauseProgram = new Command() .name('pause') - .description('Pause ITS') + .description('Pause InterchainTokenService') .command('pause') .action((options) => { mainProcessor(pause, options, [], processCommand); @@ -253,7 +253,7 @@ if (require.main === module) { const unpauseProgram = new Command() .name('unpause') - .description('Unpause ITS') + .description('Unpause InterchainTokenService') .command('unpause') .action((options) => { mainProcessor(unpause, options, [], processCommand); From 17de80a5f0d4180df6374cae6cbc84cde5c75180 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:11:47 +0200 Subject: [PATCH 49/79] use variables for hub chain name and address --- .github/workflows/test-sui.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 3c6622415..fb1fefdb8 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -67,6 +67,8 @@ jobs: SUI_ADDRESS=$(sui keytool export --key-identity wallet --json | jq .key.suiAddress | sed 's/"//g') echo "SUI_PRIVATE_KEY=${SUI_PRIVATE_KEY}" >> $GITHUB_ENV echo "SUI_ADDRESS=${SUI_ADDRESS}" >> $GITHUB_ENV + echo "ITS_HUB_CHAIN_NAME=axelar" >> $GITHUB_ENV + echo "ITS_HUB_ADDRESS=hub_address" >> $GITHUB_ENV - name: Spin up Sui Network # sui-test-validator will be deprecated in the future. @@ -142,7 +144,7 @@ jobs: run: node sui/deploy-contract deploy Abi - name: Deploy InterchainTokenService - run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress "hub_address" + run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress ${{ env.ITS_HUB_ADDRESS }} - name: Deploy Example run: node sui/deploy-contract deploy Example @@ -223,8 +225,8 @@ jobs: - name: Receive Token from another chain run: | - node sui/gateway.js approve --proof wallet axelar $transferMessageId hub_address $channelId $transferPayloadHash - node sui/its-example receive-token axelar $transferMessageId hub_address $symbol $transferPayload + node sui/gateway.js approve --proof wallet ${{ env.ITS_HUB_CHAIN_NAME }} $transferMessageId ${{ env.ITS_HUB_ADDRESS }} $channelId $transferPayloadHash + node sui/its-example receive-token ${{ env.ITS_HUB_CHAIN_NAME }} $transferMessageId ${{ env.ITS_HUB_ADDRESS }} $symbol $transferPayload - name: Send Token Deployment to another chain run: | @@ -232,8 +234,8 @@ jobs: - name: Receive Token Deployment from another chain run: | - node sui/gateway.js approve --proof wallet axelar $deployMessageId hub_address $channelId $deployPayloadHash - node sui/its-example receive-deployment axelar $deployMessageId hub_address $emptyTokenSymbol $deployPayload + node sui/gateway.js approve --proof wallet ${{ env.ITS_HUB_CHAIN_NAME }} $deployMessageId ${{ env.ITS_HUB_ADDRESS }} $channelId $deployPayloadHash + node sui/its-example receive-deployment ${{ env.ITS_HUB_CHAIN_NAME }} $deployMessageId ${{ env.ITS_HUB_ADDRESS }} $emptyTokenSymbol $deployPayload ###### Command: Operators ###### From 349519672255f4d85747a1ad9d4f4a58e755418a Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:36:24 +0200 Subject: [PATCH 50/79] addressed some comments --- .github/workflows/test-sui.yaml | 9 ++++++-- sui/deploy-contract.js | 7 +++--- sui/gateway.js | 1 - sui/its-example.js | 26 ++++++++------------- sui/its.js | 40 +++++++++------------------------ sui/utils/utils.js | 9 -------- 6 files changed, 29 insertions(+), 63 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index fb1fefdb8..eb8ab9715 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -104,6 +104,11 @@ jobs: "AxelarGateway": {} } } + }, + "axelar": { + "contracts": { + "InterchainTokenService": "${{ env.ITS_HUB_ADDRESS }}" + } } }' > ./axelar-chains-config/info/local.json @@ -144,7 +149,7 @@ jobs: run: node sui/deploy-contract deploy Abi - name: Deploy InterchainTokenService - run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress ${{ env.ITS_HUB_ADDRESS }} + run: node sui/deploy-contract deploy InterchainTokenService - name: Deploy Example run: node sui/deploy-contract deploy Example @@ -217,7 +222,7 @@ jobs: - name: Setup Trusted Addresses run: | - node sui/its.js setup-trusted-address $sourceChain $sourceAddress + node sui/its.js add-trusted-chains $sourceChain $sourceAddress - name: Send Token to another chain run: | diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index bac2cb95d..797b1947a 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -59,7 +59,6 @@ const PACKAGE_DIRS = [ const PACKAGE_CONFIGS = { cmdOptions: { AxelarGateway: () => GATEWAY_CMD_OPTIONS, - InterchainTokenService: () => ITS_CMD_OPTIONS, }, postDeployFunctions: { AxelarGateway: postDeployAxelarGateway, @@ -247,7 +246,9 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const { chainName, itsHubAddress } = options; + const { chainName } = options; + + const itsHubAddress = config.axelar.contracts.InterchainTokenService.address; const [ownerCapObjectId, creatorCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::owner_cap::OwnerCap`, @@ -423,8 +424,6 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS')]; - const addDeployOptions = (program) => { // Get the package name from the program name const packageName = program.name(); diff --git a/sui/gateway.js b/sui/gateway.js index b6c19965a..3d7b5fd29 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -154,7 +154,6 @@ async function approve(keypair, client, config, chain, contractConfig, args, opt const packageId = contractConfig.address; const [sourceChain, messageId, sourceAddress, destinationId, payloadHash] = args; - console.log([sourceChain, messageId, sourceAddress, destinationId, payloadHash]); const encodedMessages = bcs .vector(bcsStructs.gateway.Message) .serialize([ diff --git a/sui/its-example.js b/sui/its-example.js index ee29d822d..d14aa0318 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -12,7 +12,6 @@ const { broadcastFromTxBuilder, moveDir, broadcastExecuteApprovedMessage, - checkTrustedAddresses, parseDiscoveryInfo, parseGatewayInfo, } = require('./utils'); @@ -31,8 +30,6 @@ async function sendToken(keypair, client, contracts, args, options) { throw new Error(`Token ${symbol} not found. Deploy it first with 'node sui/its-example.js deploy-token' command`); } - checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); - const decimals = ItsToken.decimals; const unitAmount = getUnitAmount(amount, decimals); @@ -91,8 +88,6 @@ async function sendDeployment(keypair, client, contracts, args, options) { const Token = contracts[symbol.toUpperCase()]; const feeUnitAmount = getUnitAmount(feeAmount); - checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); - const txBuilder = new TxBuilder(client); const tx = txBuilder.tx; @@ -125,9 +120,6 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, const { InterchainTokenService } = contracts; const [sourceChain, messageId, sourceAddress, tokenSymbol, payload] = args; - const [, originChain] = defaultAbiCoder.decode(['uint256', 'string', 'bytes'], payload); - checkTrustedAddresses(InterchainTokenService.trustedAddresses, originChain); - // Prepare Object Ids const symbol = tokenSymbol.toUpperCase(); @@ -144,7 +136,7 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, destination_id: InterchainTokenService.objects.ChannelId, payload, }; - console.log(messageInfo); + await broadcastExecuteApprovedMessage(client, keypair, discoveryInfo, gatewayInfo, messageInfo, actionName); } @@ -248,18 +240,18 @@ async function printReceiveDeploymentInfo(contracts, args, options) { const tokenDistributor = options.distributor; // InterchainTokenService transfer payload from Ethereum to Sui - let payload = defaultAbiCoder.encode( + const itsMessage = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [messageType, tokenId, byteName, byteSymbol, tokenDecimals, tokenDistributor], ); - payload = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, payload]); + const hubMessage = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, itsMessage]); printInfo( JSON.stringify( { - payload, + payload: hubMessage, tokenId, - payloadHash: keccak256(payload), + payloadHash: keccak256(hubMessage), }, null, 2, @@ -277,18 +269,18 @@ async function printReceiveTransferInfo(contracts, args, options) { const itsBytes = options.itsBytes; const channelId = options.channelId || Example.objects.ItsChannelId; - let payload = defaultAbiCoder.encode( + const itsMessage = defaultAbiCoder.encode( ['uint256', 'uint256', 'bytes', 'bytes', 'uint256', 'bytes'], [ITSMessageType.InterchainTokenTransfer, tokenId, sourceAddress, channelId, unitAmount, itsBytes], ); - payload = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, payload]); + const hubMessage = defaultAbiCoder.encode(['uint256', 'string', 'bytes'], [ITSMessageType.ReceiveFromItsHub, sourceChain, itsMessage]); printInfo( JSON.stringify( { - payload, + payload: hubMessage, tokenId, - payloadHash: keccak256(payload), + payloadHash: keccak256(hubMessage), }, null, 2, diff --git a/sui/its.js b/sui/its.js index bf9c8ab78..02b703e01 100644 --- a/sui/its.js +++ b/sui/its.js @@ -20,7 +20,7 @@ function parseTrustedChains(config, trustedChain) { return trustedChain.split(','); } -async function setupTrustedAddress(keypair, client, config, contracts, args, options) { +async function setupTrustedChain(keypair, client, config, contracts, args, options) { const [trustedChain] = args; const { InterchainTokenService: itsConfig } = contracts; @@ -44,33 +44,17 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt } else { await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); } - - // Update InterchainTokenService config - for (const trustedChain of trustedChains) { - // Add trusted address to InterchainTokenService config - if (!contracts.InterchainTokenService.trustedAddresses) contracts.InterchainTokenService.trustedAddresses = []; - - contracts.InterchainTokenService.trustedAddresses.push(trustedChain); - } } -async function removeTrustedAddress(keypair, client, contracts, args, options) { +async function removeTrustedChain(keypair, client, contracts, args, options) { const [trustedChain] = args; - const trustedAddressesObject = contracts.InterchainTokenService.trustedAddresses; - - if (!trustedAddressesObject) throw new Error('No trusted addresses found'); - const chainNames = trustedChain.split(','); if (chainNames.length === 0) throw new Error('No chain names provided'); const txBuilder = new TxBuilder(client); - for (const chainName of chainNames) { - if (!trustedAddressesObject[chainName]) throw new Error(`No trusted addresses found for chain ${trustedChain}`); - } - await txBuilder.moveCall({ target: `${contracts.InterchainTokenService.address}::interchain_token_service::remove_trusted_chains`, arguments: [ @@ -80,10 +64,6 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { ], }); - for (const chainName of chainNames) { - delete contracts.InterchainTokenService.trustedAddresses[chainName]; - } - await broadcastFromTxBuilder(txBuilder, keypair, 'Remove Trusted Address'); } @@ -217,22 +197,22 @@ if (require.main === module) { // This command is used to setup the trusted address on the InterchainTokenService contract. // The trusted address is used to verify the message from the source chain. - const setupTrustedAddressProgram = new Command() - .name('setup-trusted-address') - .command('setup-trusted-address ') + const setupTrustedChainsProgram = new Command() + .name('add-trusted-chains') + .command('add-trusted-chains ') .description( `Add trusted chain. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all InterchainTokenService-deployed EVM chains`, ) .action((trustedChain, options) => { - mainProcessor(setupTrustedAddress, options, [trustedChain], processCommand); + mainProcessor(setupTrustedChain, options, [trustedChain], processCommand); }); - const removeTrustedAddressProgram = new Command() + const removeTrustedChainsProgram = new Command() .name('remove-trusted-address') .description('Remove trusted address') .command('remove-trusted-address ') .action((trustedChain, options) => { - mainProcessor(removeTrustedAddress, options, [trustedChain], processCommand); + mainProcessor(removeTrustedChain, options, [trustedChain], processCommand); }); const allowFunctionsProgram = new Command() @@ -261,8 +241,8 @@ if (require.main === module) { - program.addCommand(setupTrustedAddressProgram); - program.addCommand(removeTrustedAddressProgram); + program.addCommand(setupTrustedChainsProgram); + program.addCommand(removeTrustedChainsProgram); program.addCommand(allowFunctionsProgram); program.addCommand(pauseProgram); program.addCommand(unpauseProgram); diff --git a/sui/utils/utils.js b/sui/utils/utils.js index 9060283c1..e181ddafd 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -265,14 +265,6 @@ const parseGatewayInfo = (chain) => { }; }; -const checkTrustedAddresses = (trustedAddresses, destinationChain) => { - if (!trustedAddresses.includes(destinationChain)) { - throw new Error( - `${destinationChain} is not trusted. Run 'node sui/its-example.js setup-trusted-address ' to setup trusted address`, - ); - } -}; - const getStructs = async (client, packageId) => { const packageData = await client.getObject({ id: packageId, options: { showBcs: true } }); const structs = {}; @@ -371,7 +363,6 @@ module.exports = { getBagContentId, moveDir, getTransactionList, - checkTrustedAddresses, parseDiscoveryInfo, parseGatewayInfo, getStructs, From 38e807e277563fbf27918f65a7890109c144c27c Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:39:22 +0200 Subject: [PATCH 51/79] update test-sui --- .github/workflows/test-sui.yaml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 3c6622415..eb8ab9715 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -67,6 +67,8 @@ jobs: SUI_ADDRESS=$(sui keytool export --key-identity wallet --json | jq .key.suiAddress | sed 's/"//g') echo "SUI_PRIVATE_KEY=${SUI_PRIVATE_KEY}" >> $GITHUB_ENV echo "SUI_ADDRESS=${SUI_ADDRESS}" >> $GITHUB_ENV + echo "ITS_HUB_CHAIN_NAME=axelar" >> $GITHUB_ENV + echo "ITS_HUB_ADDRESS=hub_address" >> $GITHUB_ENV - name: Spin up Sui Network # sui-test-validator will be deprecated in the future. @@ -102,6 +104,11 @@ jobs: "AxelarGateway": {} } } + }, + "axelar": { + "contracts": { + "InterchainTokenService": "${{ env.ITS_HUB_ADDRESS }}" + } } }' > ./axelar-chains-config/info/local.json @@ -142,7 +149,7 @@ jobs: run: node sui/deploy-contract deploy Abi - name: Deploy InterchainTokenService - run: node sui/deploy-contract deploy InterchainTokenService --itsHubAddress "hub_address" + run: node sui/deploy-contract deploy InterchainTokenService - name: Deploy Example run: node sui/deploy-contract deploy Example @@ -215,7 +222,7 @@ jobs: - name: Setup Trusted Addresses run: | - node sui/its.js setup-trusted-address $sourceChain $sourceAddress + node sui/its.js add-trusted-chains $sourceChain $sourceAddress - name: Send Token to another chain run: | @@ -223,8 +230,8 @@ jobs: - name: Receive Token from another chain run: | - node sui/gateway.js approve --proof wallet axelar $transferMessageId hub_address $channelId $transferPayloadHash - node sui/its-example receive-token axelar $transferMessageId hub_address $symbol $transferPayload + node sui/gateway.js approve --proof wallet ${{ env.ITS_HUB_CHAIN_NAME }} $transferMessageId ${{ env.ITS_HUB_ADDRESS }} $channelId $transferPayloadHash + node sui/its-example receive-token ${{ env.ITS_HUB_CHAIN_NAME }} $transferMessageId ${{ env.ITS_HUB_ADDRESS }} $symbol $transferPayload - name: Send Token Deployment to another chain run: | @@ -232,8 +239,8 @@ jobs: - name: Receive Token Deployment from another chain run: | - node sui/gateway.js approve --proof wallet axelar $deployMessageId hub_address $channelId $deployPayloadHash - node sui/its-example receive-deployment axelar $deployMessageId hub_address $emptyTokenSymbol $deployPayload + node sui/gateway.js approve --proof wallet ${{ env.ITS_HUB_CHAIN_NAME }} $deployMessageId ${{ env.ITS_HUB_ADDRESS }} $channelId $deployPayloadHash + node sui/its-example receive-deployment ${{ env.ITS_HUB_CHAIN_NAME }} $deployMessageId ${{ env.ITS_HUB_ADDRESS }} $emptyTokenSymbol $deployPayload ###### Command: Operators ###### From ec915aaf5f39bedf90b09d832a781c4d86f19f6f Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:42:12 +0200 Subject: [PATCH 52/79] update its.js --- sui/its.js | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/sui/its.js b/sui/its.js index b99d52d76..8252ef1d4 100644 --- a/sui/its.js +++ b/sui/its.js @@ -18,7 +18,7 @@ function parseTrustedChains(config, trustedChain) { return trustedChain.split(','); } -async function setupTrustedAddress(keypair, client, config, contracts, args, options) { +async function setupTrustedChain(keypair, client, config, contracts, args, options) { const [trustedChain] = args; const { InterchainTokenService: itsConfig } = contracts; @@ -42,33 +42,17 @@ async function setupTrustedAddress(keypair, client, config, contracts, args, opt } else { await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); } - - // Update InterchainTokenService config - for (const trustedChain of trustedChains) { - // Add trusted address to InterchainTokenService config - if (!contracts.InterchainTokenService.trustedAddresses) contracts.InterchainTokenService.trustedAddresses = []; - - contracts.InterchainTokenService.trustedAddresses.push(trustedChain); - } } -async function removeTrustedAddress(keypair, client, contracts, args, options) { +async function removeTrustedChain(keypair, client, contracts, args, options) { const [trustedChain] = args; - const trustedAddressesObject = contracts.InterchainTokenService.trustedAddresses; - - if (!trustedAddressesObject) throw new Error('No trusted addresses found'); - const chainNames = trustedChain.split(','); if (chainNames.length === 0) throw new Error('No chain names provided'); const txBuilder = new TxBuilder(client); - for (const chainName of chainNames) { - if (!trustedAddressesObject[chainName]) throw new Error(`No trusted addresses found for chain ${trustedChain}`); - } - await txBuilder.moveCall({ target: `${contracts.InterchainTokenService.address}::interchain_token_service::remove_trusted_chains`, arguments: [ @@ -78,10 +62,6 @@ async function removeTrustedAddress(keypair, client, contracts, args, options) { ], }); - for (const chainName of chainNames) { - delete contracts.InterchainTokenService.trustedAddresses[chainName]; - } - await broadcastFromTxBuilder(txBuilder, keypair, 'Remove Trusted Address'); } @@ -106,26 +86,26 @@ if (require.main === module) { // This command is used to setup the trusted address on the InterchainTokenService contract. // The trusted address is used to verify the message from the source chain. - const setupTrustedAddressProgram = new Command() - .name('setup-trusted-address') - .command('setup-trusted-address ') + const setupTrustedChainsProgram = new Command() + .name('add-trusted-chains') + .command('add-trusted-chains ') .description( `Add trusted chain. The can be a list of chains separated by commas. It can also be a special tag to indicate a specific set of chains e.g. '${SPECIAL_CHAINS_TAGS.ALL_EVM}' to target all InterchainTokenService-deployed EVM chains`, ) .action((trustedChain, options) => { - mainProcessor(setupTrustedAddress, options, [trustedChain], processCommand); + mainProcessor(setupTrustedChain, options, [trustedChain], processCommand); }); - const removeTrustedAddressProgram = new Command() + const removeTrustedChainsProgram = new Command() .name('remove-trusted-address') .description('Remove trusted address') .command('remove-trusted-address ') .action((trustedChain, options) => { - mainProcessor(removeTrustedAddress, options, [trustedChain], processCommand); + mainProcessor(removeTrustedChain, options, [trustedChain], processCommand); }); - program.addCommand(setupTrustedAddressProgram); - program.addCommand(removeTrustedAddressProgram); + program.addCommand(setupTrustedChainsProgram); + program.addCommand(removeTrustedChainsProgram); addOptionsToCommands(program, addBaseOptions, { offline: true }); From cb76ff42fc61e486bd2c2839a4cbf25576455b55 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:43:06 +0200 Subject: [PATCH 53/79] rename ITS to InterchainTokenSercvice everywhere --- common/utils.js | 4 +-- cosmwasm/submit-proposal.js | 4 +-- evm/deploy-its.js | 52 +++++++++++++++++------------------ evm/interchainTokenFactory.js | 4 +-- evm/its.js | 12 ++++---- evm/multisig.js | 2 +- stellar/its.js | 4 +-- sui/deploy-contract.js | 2 +- 8 files changed, 42 insertions(+), 42 deletions(-) diff --git a/common/utils.js b/common/utils.js index 8fa77a696..34be150c9 100644 --- a/common/utils.js +++ b/common/utils.js @@ -441,10 +441,10 @@ const getMultisigProof = async (config, chain, multisigSessionId) => { const calculateDomainSeparator = (chain, router, network) => keccak256(Buffer.from(`${chain}${router}${network}`)); const getItsEdgeContract = (chainConfig) => { - const itsEdgeContract = chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.ITS?.objects?.ChannelId; + const itsEdgeContract = chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.InterchainTokenService?.objects?.ChannelId; if (!itsEdgeContract) { - throw new Error(`Missing ITS edge contract for chain ${chainConfig.name}`); + throw new Error(`Missing InterchainTokenService edge contract for chain ${chainConfig.name}`); } return itsEdgeContract; diff --git a/cosmwasm/submit-proposal.js b/cosmwasm/submit-proposal.js index d959a8223..c23bc87ae 100644 --- a/cosmwasm/submit-proposal.js +++ b/cosmwasm/submit-proposal.js @@ -293,8 +293,8 @@ const programHandler = () => { const registerItsChainCmd = program .command('its-hub-register-chains') - .description('Submit an execute wasm contract proposal to register an ITS chain') - .argument('', 'list of chains to register on ITS hub') + .description('Submit an execute wasm contract proposal to register an InterchainTokenService chain') + .argument('', 'list of chains to register on InterchainTokenService hub') .action((chains, options) => { options.chains = chains; mainProcessor(registerItsChain, options); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index d285d84d0..b81ee7c09 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -30,7 +30,7 @@ const { addEvmOptions } = require('./cli-utils'); const { Command, Option } = require('commander'); /** - * Function that handles the ITS deployment. + * Function that handles the InterchainTokenService deployment. * @param {*} wallet * @param {*} chain * @param {*} deployOptions @@ -53,7 +53,7 @@ async function deployAll(config, wallet, chain, options) { const contractConfig = contracts[contractName] || {}; const itsFactoryContractConfig = contracts[itsFactoryContractName] || {}; - const salt = options.salt ? `ITS ${options.salt}` : 'ITS'; + const salt = options.salt ? `InterchainTokenService ${options.salt}` : 'InterchainTokenService'; let proxySalt, factorySalt; // If reusing the proxy, then proxy salt is the existing value @@ -61,14 +61,14 @@ async function deployAll(config, wallet, chain, options) { proxySalt = contractConfig.proxySalt; factorySalt = itsFactoryContractConfig.salt; } else if (options.proxySalt) { - proxySalt = `ITS ${options.proxySalt}`; - factorySalt = `ITS Factory ${options.proxySalt}`; + proxySalt = `InterchainTokenService ${options.proxySalt}`; + factorySalt = `InterchainTokenService Factory ${options.proxySalt}`; } else if (options.salt) { - proxySalt = `ITS ${options.salt}`; - factorySalt = `ITS Factory ${options.salt}`; + proxySalt = `InterchainTokenService ${options.salt}`; + factorySalt = `InterchainTokenService Factory ${options.salt}`; } else { - proxySalt = 'ITS'; - factorySalt = 'ITS Factory'; + proxySalt = 'InterchainTokenService'; + factorySalt = 'InterchainTokenService Factory'; } const implementationSalt = `${salt} Implementation`; @@ -99,7 +99,7 @@ async function deployAll(config, wallet, chain, options) { }); if (!isValidAddress(interchainTokenService)) { - throw new Error(`Invalid ITS address: ${interchainTokenService}`); + throw new Error(`Invalid InterchainTokenService address: ${interchainTokenService}`); } if (options.reuseProxy) { @@ -130,8 +130,8 @@ async function deployAll(config, wallet, chain, options) { const isCurrentChainConsensus = isConsensusChain(chain); - // Register all EVM chains that ITS is or will be deployed on. - // Add a "skip": true under ITS key in the config if the chain will not have ITS. + // Register all EVM chains that InterchainTokenService is or will be deployed on. + // Add a "skip": true under InterchainTokenService key in the config if the chain will not have InterchainTokenService. const itsChains = Object.values(config.chains).filter( (chain) => chain.chainType === 'evm' && chain.contracts?.InterchainTokenService?.skip !== true, ); @@ -143,7 +143,7 @@ async function deployAll(config, wallet, chain, options) { : 'hub', ); - // If ITS Hub is deployed, register it as a trusted chain as well + // If InterchainTokenService Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -296,7 +296,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.gatewayCaller, ]; - printInfo('ITS Implementation args', args); + printInfo('InterchainTokenService Implementation args', args); return await deployContract( proxyDeployMethod, @@ -323,7 +323,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.predeployCodehash = predeployCodehash; const args = [contractConfig.implementation, wallet.address, deploymentParams]; - printInfo('ITS Proxy args', args); + printInfo('InterchainTokenService Proxy args', args); return await deployContract( proxyDeployMethod, @@ -358,7 +358,7 @@ async function deployAll(config, wallet, chain, options) { contractName: 'InterchainProxy', async deploy() { const args = [itsFactoryContractConfig.implementation, wallet.address, '0x']; - printInfo('ITS Factory Proxy args', args); + printInfo('InterchainTokenService Factory Proxy args', args); return await deployContract( proxyDeployMethod, @@ -463,13 +463,13 @@ async function upgrade(_, chain, options) { const contract = new Contract(contractConfig.address, InterchainTokenService.abi, wallet); const codehash = await getBytecodeHash(contractConfig.implementation, chain.axelarId, provider); - printInfo(`ITS Proxy`, contract.address); + printInfo(`InterchainTokenService Proxy`, contract.address); const currImplementation = await contract.implementation(); - printInfo(`Current ITS implementation`, currImplementation); - printInfo(`New ITS implementation`, contractConfig.implementation); + printInfo(`Current InterchainTokenService implementation`, currImplementation); + printInfo(`New InterchainTokenService implementation`, contractConfig.implementation); - if (predictOnly || prompt(`Proceed with ITS upgrade on ${chain.name}?`, options.yes)) { + if (predictOnly || prompt(`Proceed with InterchainTokenService upgrade on ${chain.name}?`, options.yes)) { return; } @@ -488,16 +488,16 @@ async function upgrade(_, chain, options) { const itsFactory = new Contract(itsFactoryContractConfig.address, InterchainTokenFactory.abi, wallet); const factoryCodehash = await getBytecodeHash(itsFactoryContractConfig.implementation, chain.axelarId, provider); - printInfo(`ITS Factory Proxy`, itsFactory.address); + printInfo(`InterchainTokenService Factory Proxy`, itsFactory.address); const factoryImplementation = await itsFactory.implementation(); - printInfo(`Current ITS Factory implementation`, factoryImplementation); - printInfo(`New ITS Factory implementation`, itsFactoryContractConfig.implementation); + printInfo(`Current InterchainTokenService Factory implementation`, factoryImplementation); + printInfo(`New InterchainTokenService Factory implementation`, itsFactoryContractConfig.implementation); if ( options.predictOnly || prompt( - `Proceed with ITS Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, + `Proceed with InterchainTokenService Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, options.yes, ) ) { @@ -549,17 +549,17 @@ if (require.main === module) { program.addOption(new Option('--reuseProxy', 'reuse existing proxy (useful for upgrade deployments')); program.addOption(new Option('--contractName ', 'contract name').default('InterchainTokenService')); // added for consistency - program.addOption(new Option('-s, --salt ', 'deployment salt to use for ITS deployment').env('SALT')); + program.addOption(new Option('-s, --salt ', 'deployment salt to use for InterchainTokenService deployment').env('SALT')); program.addOption( new Option( '--proxySalt ', - 'deployment salt to use for ITS proxies, this allows deploying latest releases to new chains while deriving the same proxy address', + 'deployment salt to use for InterchainTokenService proxies, this allows deploying latest releases to new chains while deriving the same proxy address', ) .default('v1.0.0') .env('PROXY_SALT'), ); program.addOption( - new Option('-o, --operatorAddress ', 'address of the ITS operator/rate limiter').env('OPERATOR_ADDRESS'), + new Option('-o, --operatorAddress ', 'address of the InterchainTokenService operator/rate limiter').env('OPERATOR_ADDRESS'), ); program.action(async (options) => { diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 83a654d74..fdd1e63e7 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -160,7 +160,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( @@ -255,7 +255,7 @@ async function processCommand(config, chain, options) { const deploymentSalt = getDeploymentSalt(options); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } validateParameters({ diff --git a/evm/its.js b/evm/its.js index 3d50de11c..c05b84105 100644 --- a/evm/its.js +++ b/evm/its.js @@ -72,7 +72,7 @@ async function handleTx(tx, chain, contract, action, firstEvent, secondEvent) { async function getTrustedChainsAndAddresses(config, interchainTokenService) { const allChains = Object.values(config.chains).map((chain) => chain.axelarId); - // If ITS Hub is deployed, register it as a trusted chain as well + // If InterchainTokenService Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -312,7 +312,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); + throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); } const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); @@ -341,7 +341,7 @@ async function processCommand(config, chain, options) { implementationType !== tokenManagerImplementations.MINT_BURN && implementationType !== tokenManagerImplementations.INTERCHAIN_TOKEN ) { - printInfo('Approving ITS for a transfer for token with token manager type', implementationType); + printInfo('Approving InterchainTokenService for a transfer for token with token manager type', implementationType); await token.approve(interchainTokenService.address, amount, gasOptions).then((tx) => tx.wait()); } @@ -561,7 +561,7 @@ async function processCommand(config, chain, options) { printInfo('Trusted chains', trustedChains); printInfo('Trusted addresses', trustedAddresses); - // check if all trusted addresses match ITS address + // check if all trusted addresses match InterchainTokenService address for (const trustedAddress of trustedAddresses) { if (trustedAddress !== interchainTokenServiceAddress) { printError( @@ -647,13 +647,13 @@ async function main(options) { if (require.main === module) { const program = new Command(); - program.name('ITS').description('Script to perform ITS commands'); + program.name('InterchainTokenService').description('Script to perform InterchainTokenService commands'); addEvmOptions(program, { address: true, salt: true }); program.addOption(new Option('-c, --contractName ', 'contract name').default('InterchainTokenService')); program.addOption( - new Option('--action ', 'ITS action') + new Option('--action ', 'InterchainTokenService action') .choices([ 'contractId', 'tokenManagerAddress', diff --git a/evm/multisig.js b/evm/multisig.js index 4f677d1f4..2870a6501 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -400,7 +400,7 @@ if (require.main === module) { new Option('--nativeValue ', 'execute multisig proposal nativeValue').makeOptionMandatory(false).default(0), ); - // option for setFlowLimit in ITS + // option for setFlowLimit in InterchainTokenService program.addOption(new Option('--tokenIds ', 'token ids')); program.action((options) => { diff --git a/stellar/its.js b/stellar/its.js index 22613bdb5..ed1cfc34d 100644 --- a/stellar/its.js +++ b/stellar/its.js @@ -136,14 +136,14 @@ if (require.main === module) { program .command('set-trusted-chain ') - .description('set a trusted ITS chain') + .description('set a trusted InterchainTokenService chain') .action((chainName, options) => { mainProcessor(setTrustedChain, chainName, options); }); program .command('remove-trusted-chain ') - .description('remove a trusted ITS chain') + .description('remove a trusted InterchainTokenService chain') .action((chainName, options) => { mainProcessor(removeTrustedChain, chainName, options); }); diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index c5662cacc..c46dd5fcc 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -424,7 +424,7 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the ITS HUB').env('ITS_HUB_ADDRESS')]; +const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS')]; const addDeployOptions = (program) => { // Get the package name from the program name From be6c9e7b35eab249b08ac704779a890430f750f5 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:43:47 +0200 Subject: [PATCH 54/79] prettier --- common/utils.js | 3 ++- evm/deploy-its.js | 4 +++- sui/deploy-contract.js | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common/utils.js b/common/utils.js index 34be150c9..71cf5c8f0 100644 --- a/common/utils.js +++ b/common/utils.js @@ -441,7 +441,8 @@ const getMultisigProof = async (config, chain, multisigSessionId) => { const calculateDomainSeparator = (chain, router, network) => keccak256(Buffer.from(`${chain}${router}${network}`)); const getItsEdgeContract = (chainConfig) => { - const itsEdgeContract = chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.InterchainTokenService?.objects?.ChannelId; + const itsEdgeContract = + chainConfig.contracts.InterchainTokenService?.address || chainConfig.contracts.InterchainTokenService?.objects?.ChannelId; if (!itsEdgeContract) { throw new Error(`Missing InterchainTokenService edge contract for chain ${chainConfig.name}`); diff --git a/evm/deploy-its.js b/evm/deploy-its.js index b81ee7c09..3daf83a44 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -559,7 +559,9 @@ if (require.main === module) { .env('PROXY_SALT'), ); program.addOption( - new Option('-o, --operatorAddress ', 'address of the InterchainTokenService operator/rate limiter').env('OPERATOR_ADDRESS'), + new Option('-o, --operatorAddress ', 'address of the InterchainTokenService operator/rate limiter').env( + 'OPERATOR_ADDRESS', + ), ); program.action(async (options) => { diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index c46dd5fcc..98786703f 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -424,7 +424,9 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS')]; +const ITS_CMD_OPTIONS = [ + new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS'), +]; const addDeployOptions = (program) => { // Get the package name from the program name From 2d1e7f6d3fa8d26ec1f59f6778bb848468eea5e0 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:45:56 +0200 Subject: [PATCH 55/79] fix deploy script --- sui/deploy-contract.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 98786703f..63e13f6dc 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -59,7 +59,6 @@ const PACKAGE_DIRS = [ const PACKAGE_CONFIGS = { cmdOptions: { AxelarGateway: () => GATEWAY_CMD_OPTIONS, - InterchainTokenService: () => ITS_CMD_OPTIONS, }, postDeployFunctions: { AxelarGateway: postDeployAxelarGateway, @@ -247,7 +246,9 @@ async function postDeployAxelarGateway(published, keypair, client, config, chain async function postDeployIts(published, keypair, client, config, chain, options) { const relayerDiscovery = chain.contracts.RelayerDiscovery?.objects?.RelayerDiscovery; - const { chainName, itsHubAddress } = options; + const { chainName } = options; + + const itsHubAddress = config.axelar.contracts.InterchainTokenService.address; const [ownerCapObjectId, creatorCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::owner_cap::OwnerCap`, @@ -424,10 +425,6 @@ const GATEWAY_CMD_OPTIONS = [ new Option('--previousSigners ', 'number of previous signers to retain').default('15'), ]; -const ITS_CMD_OPTIONS = [ - new Option('--itsHubAddress ', 'The address of the InterchainTokenService HUB').env('ITS_HUB_ADDRESS'), -]; - const addDeployOptions = (program) => { // Get the package name from the program name const packageName = program.name(); From 42255fd03ecf504d3740f332ec06b71190b327a4 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 13:58:29 +0200 Subject: [PATCH 56/79] revert evm changes --- evm/deploy-its.js | 54 +++++++++++++++++------------------ evm/interchainTokenFactory.js | 4 +-- evm/its.js | 12 ++++---- evm/multisig.js | 2 +- 4 files changed, 35 insertions(+), 37 deletions(-) diff --git a/evm/deploy-its.js b/evm/deploy-its.js index 3daf83a44..d285d84d0 100644 --- a/evm/deploy-its.js +++ b/evm/deploy-its.js @@ -30,7 +30,7 @@ const { addEvmOptions } = require('./cli-utils'); const { Command, Option } = require('commander'); /** - * Function that handles the InterchainTokenService deployment. + * Function that handles the ITS deployment. * @param {*} wallet * @param {*} chain * @param {*} deployOptions @@ -53,7 +53,7 @@ async function deployAll(config, wallet, chain, options) { const contractConfig = contracts[contractName] || {}; const itsFactoryContractConfig = contracts[itsFactoryContractName] || {}; - const salt = options.salt ? `InterchainTokenService ${options.salt}` : 'InterchainTokenService'; + const salt = options.salt ? `ITS ${options.salt}` : 'ITS'; let proxySalt, factorySalt; // If reusing the proxy, then proxy salt is the existing value @@ -61,14 +61,14 @@ async function deployAll(config, wallet, chain, options) { proxySalt = contractConfig.proxySalt; factorySalt = itsFactoryContractConfig.salt; } else if (options.proxySalt) { - proxySalt = `InterchainTokenService ${options.proxySalt}`; - factorySalt = `InterchainTokenService Factory ${options.proxySalt}`; + proxySalt = `ITS ${options.proxySalt}`; + factorySalt = `ITS Factory ${options.proxySalt}`; } else if (options.salt) { - proxySalt = `InterchainTokenService ${options.salt}`; - factorySalt = `InterchainTokenService Factory ${options.salt}`; + proxySalt = `ITS ${options.salt}`; + factorySalt = `ITS Factory ${options.salt}`; } else { - proxySalt = 'InterchainTokenService'; - factorySalt = 'InterchainTokenService Factory'; + proxySalt = 'ITS'; + factorySalt = 'ITS Factory'; } const implementationSalt = `${salt} Implementation`; @@ -99,7 +99,7 @@ async function deployAll(config, wallet, chain, options) { }); if (!isValidAddress(interchainTokenService)) { - throw new Error(`Invalid InterchainTokenService address: ${interchainTokenService}`); + throw new Error(`Invalid ITS address: ${interchainTokenService}`); } if (options.reuseProxy) { @@ -130,8 +130,8 @@ async function deployAll(config, wallet, chain, options) { const isCurrentChainConsensus = isConsensusChain(chain); - // Register all EVM chains that InterchainTokenService is or will be deployed on. - // Add a "skip": true under InterchainTokenService key in the config if the chain will not have InterchainTokenService. + // Register all EVM chains that ITS is or will be deployed on. + // Add a "skip": true under ITS key in the config if the chain will not have ITS. const itsChains = Object.values(config.chains).filter( (chain) => chain.chainType === 'evm' && chain.contracts?.InterchainTokenService?.skip !== true, ); @@ -143,7 +143,7 @@ async function deployAll(config, wallet, chain, options) { : 'hub', ); - // If InterchainTokenService Hub is deployed, register it as a trusted chain as well + // If ITS Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -296,7 +296,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.gatewayCaller, ]; - printInfo('InterchainTokenService Implementation args', args); + printInfo('ITS Implementation args', args); return await deployContract( proxyDeployMethod, @@ -323,7 +323,7 @@ async function deployAll(config, wallet, chain, options) { contractConfig.predeployCodehash = predeployCodehash; const args = [contractConfig.implementation, wallet.address, deploymentParams]; - printInfo('InterchainTokenService Proxy args', args); + printInfo('ITS Proxy args', args); return await deployContract( proxyDeployMethod, @@ -358,7 +358,7 @@ async function deployAll(config, wallet, chain, options) { contractName: 'InterchainProxy', async deploy() { const args = [itsFactoryContractConfig.implementation, wallet.address, '0x']; - printInfo('InterchainTokenService Factory Proxy args', args); + printInfo('ITS Factory Proxy args', args); return await deployContract( proxyDeployMethod, @@ -463,13 +463,13 @@ async function upgrade(_, chain, options) { const contract = new Contract(contractConfig.address, InterchainTokenService.abi, wallet); const codehash = await getBytecodeHash(contractConfig.implementation, chain.axelarId, provider); - printInfo(`InterchainTokenService Proxy`, contract.address); + printInfo(`ITS Proxy`, contract.address); const currImplementation = await contract.implementation(); - printInfo(`Current InterchainTokenService implementation`, currImplementation); - printInfo(`New InterchainTokenService implementation`, contractConfig.implementation); + printInfo(`Current ITS implementation`, currImplementation); + printInfo(`New ITS implementation`, contractConfig.implementation); - if (predictOnly || prompt(`Proceed with InterchainTokenService upgrade on ${chain.name}?`, options.yes)) { + if (predictOnly || prompt(`Proceed with ITS upgrade on ${chain.name}?`, options.yes)) { return; } @@ -488,16 +488,16 @@ async function upgrade(_, chain, options) { const itsFactory = new Contract(itsFactoryContractConfig.address, InterchainTokenFactory.abi, wallet); const factoryCodehash = await getBytecodeHash(itsFactoryContractConfig.implementation, chain.axelarId, provider); - printInfo(`InterchainTokenService Factory Proxy`, itsFactory.address); + printInfo(`ITS Factory Proxy`, itsFactory.address); const factoryImplementation = await itsFactory.implementation(); - printInfo(`Current InterchainTokenService Factory implementation`, factoryImplementation); - printInfo(`New InterchainTokenService Factory implementation`, itsFactoryContractConfig.implementation); + printInfo(`Current ITS Factory implementation`, factoryImplementation); + printInfo(`New ITS Factory implementation`, itsFactoryContractConfig.implementation); if ( options.predictOnly || prompt( - `Proceed with InterchainTokenService Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, + `Proceed with ITS Factory upgrade to implementation ${itsFactoryContractConfig.implementation} on ${chain.name}?`, options.yes, ) ) { @@ -549,19 +549,17 @@ if (require.main === module) { program.addOption(new Option('--reuseProxy', 'reuse existing proxy (useful for upgrade deployments')); program.addOption(new Option('--contractName ', 'contract name').default('InterchainTokenService')); // added for consistency - program.addOption(new Option('-s, --salt ', 'deployment salt to use for InterchainTokenService deployment').env('SALT')); + program.addOption(new Option('-s, --salt ', 'deployment salt to use for ITS deployment').env('SALT')); program.addOption( new Option( '--proxySalt ', - 'deployment salt to use for InterchainTokenService proxies, this allows deploying latest releases to new chains while deriving the same proxy address', + 'deployment salt to use for ITS proxies, this allows deploying latest releases to new chains while deriving the same proxy address', ) .default('v1.0.0') .env('PROXY_SALT'), ); program.addOption( - new Option('-o, --operatorAddress ', 'address of the InterchainTokenService operator/rate limiter').env( - 'OPERATOR_ADDRESS', - ), + new Option('-o, --operatorAddress ', 'address of the ITS operator/rate limiter').env('OPERATOR_ADDRESS'), ); program.action(async (options) => { diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index fdd1e63e7..83a654d74 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -160,7 +160,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); + throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } const tx = await interchainTokenFactory['deployRemoteInterchainToken(bytes32,string,uint256)']( @@ -255,7 +255,7 @@ async function processCommand(config, chain, options) { const deploymentSalt = getDeploymentSalt(options); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); + throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } validateParameters({ diff --git a/evm/its.js b/evm/its.js index c05b84105..3d50de11c 100644 --- a/evm/its.js +++ b/evm/its.js @@ -72,7 +72,7 @@ async function handleTx(tx, chain, contract, action, firstEvent, secondEvent) { async function getTrustedChainsAndAddresses(config, interchainTokenService) { const allChains = Object.values(config.chains).map((chain) => chain.axelarId); - // If InterchainTokenService Hub is deployed, register it as a trusted chain as well + // If ITS Hub is deployed, register it as a trusted chain as well const itsHubAddress = config.axelar?.contracts?.InterchainTokenService?.address; if (itsHubAddress) { @@ -312,7 +312,7 @@ async function processCommand(config, chain, options) { }); if ((await interchainTokenService.trustedAddress(destinationChain)) === '') { - throw new Error(`Destination chain ${destinationChain} is not trusted by InterchainTokenService`); + throw new Error(`Destination chain ${destinationChain} is not trusted by ITS`); } const tokenIdBytes32 = hexZeroPad(tokenId.startsWith('0x') ? tokenId : '0x' + tokenId, 32); @@ -341,7 +341,7 @@ async function processCommand(config, chain, options) { implementationType !== tokenManagerImplementations.MINT_BURN && implementationType !== tokenManagerImplementations.INTERCHAIN_TOKEN ) { - printInfo('Approving InterchainTokenService for a transfer for token with token manager type', implementationType); + printInfo('Approving ITS for a transfer for token with token manager type', implementationType); await token.approve(interchainTokenService.address, amount, gasOptions).then((tx) => tx.wait()); } @@ -561,7 +561,7 @@ async function processCommand(config, chain, options) { printInfo('Trusted chains', trustedChains); printInfo('Trusted addresses', trustedAddresses); - // check if all trusted addresses match InterchainTokenService address + // check if all trusted addresses match ITS address for (const trustedAddress of trustedAddresses) { if (trustedAddress !== interchainTokenServiceAddress) { printError( @@ -647,13 +647,13 @@ async function main(options) { if (require.main === module) { const program = new Command(); - program.name('InterchainTokenService').description('Script to perform InterchainTokenService commands'); + program.name('ITS').description('Script to perform ITS commands'); addEvmOptions(program, { address: true, salt: true }); program.addOption(new Option('-c, --contractName ', 'contract name').default('InterchainTokenService')); program.addOption( - new Option('--action ', 'InterchainTokenService action') + new Option('--action ', 'ITS action') .choices([ 'contractId', 'tokenManagerAddress', diff --git a/evm/multisig.js b/evm/multisig.js index 2870a6501..4f677d1f4 100644 --- a/evm/multisig.js +++ b/evm/multisig.js @@ -400,7 +400,7 @@ if (require.main === module) { new Option('--nativeValue ', 'execute multisig proposal nativeValue').makeOptionMandatory(false).default(0), ); - // option for setFlowLimit in InterchainTokenService + // option for setFlowLimit in ITS program.addOption(new Option('--tokenIds ', 'token ids')); program.action((options) => { From 9c0d83b7f339947ec6ea5c4afef8198a46d39129 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 14:21:57 +0200 Subject: [PATCH 57/79] fix local.json test --- .github/workflows/test-sui.yaml | 38 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index eb8ab9715..b21740159 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -91,25 +91,27 @@ jobs: - name: Prepare local.json run: | echo '{ - "chains": { - "sui": { - "name": "Sui", - "axelarId": "sui", - "networkType": "localnet", - "chainType": "sui", - "tokenSymbol": "SUI", - "rpc": "http://127.0.0.1:9000", - "faucetUrl": "http://127.0.0.1:9123", - "contracts": { - "AxelarGateway": {} - } - } - }, - "axelar": { - "contracts": { - "InterchainTokenService": "${{ env.ITS_HUB_ADDRESS }}" - } + "chains": { + "sui": { + "name": "Sui", + "axelarId": "sui", + "networkType": "localnet", + "chainType": "sui", + "tokenSymbol": "SUI", + "rpc": "http://127.0.0.1:9000", + "faucetUrl": "http://127.0.0.1:9123", + "contracts": { + "AxelarGateway": {} + } } + }, + "axelar": { + "contracts": { + "InterchainTokenService": { + "address": "${{ env.ITS_HUB_ADDRESS }}" + } + } + } }' > ./axelar-chains-config/info/local.json # Create .env file with default hardhat private key that's prefunded From 235384c5a61af5fd8ebc846c8f0cd3a9ff6e385e Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 14:32:04 +0200 Subject: [PATCH 58/79] remove trusted address tracking on info --- sui/its-example.js | 8 -------- sui/utils/utils.js | 9 --------- 2 files changed, 17 deletions(-) diff --git a/sui/its-example.js b/sui/its-example.js index ee29d822d..a30fe1bcf 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -12,7 +12,6 @@ const { broadcastFromTxBuilder, moveDir, broadcastExecuteApprovedMessage, - checkTrustedAddresses, parseDiscoveryInfo, parseGatewayInfo, } = require('./utils'); @@ -31,8 +30,6 @@ async function sendToken(keypair, client, contracts, args, options) { throw new Error(`Token ${symbol} not found. Deploy it first with 'node sui/its-example.js deploy-token' command`); } - checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); - const decimals = ItsToken.decimals; const unitAmount = getUnitAmount(amount, decimals); @@ -91,8 +88,6 @@ async function sendDeployment(keypair, client, contracts, args, options) { const Token = contracts[symbol.toUpperCase()]; const feeUnitAmount = getUnitAmount(feeAmount); - checkTrustedAddresses(InterchainTokenService.trustedAddresses, destinationChain); - const txBuilder = new TxBuilder(client); const tx = txBuilder.tx; @@ -125,9 +120,6 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, const { InterchainTokenService } = contracts; const [sourceChain, messageId, sourceAddress, tokenSymbol, payload] = args; - const [, originChain] = defaultAbiCoder.decode(['uint256', 'string', 'bytes'], payload); - checkTrustedAddresses(InterchainTokenService.trustedAddresses, originChain); - // Prepare Object Ids const symbol = tokenSymbol.toUpperCase(); diff --git a/sui/utils/utils.js b/sui/utils/utils.js index 9060283c1..e181ddafd 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -265,14 +265,6 @@ const parseGatewayInfo = (chain) => { }; }; -const checkTrustedAddresses = (trustedAddresses, destinationChain) => { - if (!trustedAddresses.includes(destinationChain)) { - throw new Error( - `${destinationChain} is not trusted. Run 'node sui/its-example.js setup-trusted-address ' to setup trusted address`, - ); - } -}; - const getStructs = async (client, packageId) => { const packageData = await client.getObject({ id: packageId, options: { showBcs: true } }); const structs = {}; @@ -371,7 +363,6 @@ module.exports = { getBagContentId, moveDir, getTransactionList, - checkTrustedAddresses, parseDiscoveryInfo, parseGatewayInfo, getStructs, From d281992c10f87c5a0743d4747c408943c5ee0f58 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 18:30:23 +0200 Subject: [PATCH 59/79] some comments --- package-lock.json | 8 ++++---- package.json | 2 +- sui/its-example.js | 2 +- sui/its.js | 11 ++--------- 4 files changed, 8 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1ab273d11..fa7983235 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-cgp-sui": "0.0.0-snapshot.02915b7", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "0.0.0-snapshot.869b412", + "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1", @@ -170,9 +170,9 @@ } }, "node_modules/@axelar-network/interchain-token-service": { - "version": "0.0.0-snapshot.869b412", - "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-0.0.0-snapshot.869b412.tgz", - "integrity": "sha512-tSMi7qdzY9TxeU57GedpuvvYZlOGeJWeqPRd1uW1YIUIIAKLWOAOPdz8+CFz4DQ7cyzESH7vkHhkF6aj35PgUA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@axelar-network/interchain-token-service/-/interchain-token-service-2.1.0.tgz", + "integrity": "sha512-eRaDL7otxqZixzsSu3rYtMkFQ1buopNGAmc8fEHvJPPD1WYiRARx24z+61OTJjCHcRygBljl9oIlqmqiM6SAYg==", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4" diff --git a/package.json b/package.json index 55a3cfd07..aeaa9db4e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "homepage": "https://github.com/axelarnetwork/axelar-contract-deployments#readme", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "0.0.0-snapshot.02915b7", + "@axelar-network/axelar-cgp-sui": "2.1.0", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", "@axelar-network/interchain-token-service": "0.0.0-snapshot.869b412", "@cosmjs/cosmwasm-stargate": "^0.32.1", diff --git a/sui/its-example.js b/sui/its-example.js index d14aa0318..f91f93e4b 100644 --- a/sui/its-example.js +++ b/sui/its-example.js @@ -136,7 +136,7 @@ async function handleReceivedMessage(keypair, client, contracts, args, options, destination_id: InterchainTokenService.objects.ChannelId, payload, }; - + await broadcastExecuteApprovedMessage(client, keypair, discoveryInfo, gatewayInfo, messageInfo, actionName); } diff --git a/sui/its.js b/sui/its.js index 02b703e01..736ff1a4e 100644 --- a/sui/its.js +++ b/sui/its.js @@ -106,16 +106,10 @@ async function disallowFunctions(keypair, client, config, contractConfig, args, for (const i in versions) { await builder.moveCall({ target: `${packageId}::interchain_token_service::disallow_function`, - arguments: [ - contracts.objects.InterchainTokenService, - contracts.objects.OwnerCap, - versions[i], - functionNames[i], - ], + arguments: [contracts.objects.InterchainTokenService, contracts.objects.OwnerCap, versions[i], functionNames[i]], }); } - await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions'); } @@ -139,6 +133,7 @@ async function pause(keypair, client, config, contracts, args, options) { // Do not dissalow `allow_function` because that locks the gateway forever. if (Number(version) === allowedFunctionsArray.length - 1) { const index = allowedFunctions.indexOf('allow_function'); + if (index > -1) { // only splice array when item is found allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only @@ -239,8 +234,6 @@ if (require.main === module) { mainProcessor(unpause, options, [], processCommand); }); - - program.addCommand(setupTrustedChainsProgram); program.addCommand(removeTrustedChainsProgram); program.addCommand(allowFunctionsProgram); From 3af6734b1a4a8c45c3d6f15b48a5966854bc28b2 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 29 Jan 2025 18:30:35 +0200 Subject: [PATCH 60/79] made lint happy --- sui/its.js | 1 - 1 file changed, 1 deletion(-) diff --git a/sui/its.js b/sui/its.js index 736ff1a4e..4e39b8dcd 100644 --- a/sui/its.js +++ b/sui/its.js @@ -2,7 +2,6 @@ const { Command } = require('commander'); const { TxBuilder } = require('@axelar-network/axelar-cgp-sui'); const { loadConfig, saveConfig, getChainConfig, printInfo, writeJSON } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, getWallet, printWalletInfo, broadcastFromTxBuilder, saveGeneratedTx } = require('./utils'); -const { Transaction } = require('@mysten/sui/transactions'); const { readJSON } = require(`${__dirname}/../axelar-chains-config`); const SPECIAL_CHAINS_TAGS = { From 5de573ee6407ea9bb63d882ee449dadcb7eef6aa Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 30 Jan 2025 20:25:59 +0200 Subject: [PATCH 61/79] added a separate script to pause --- sui/pause.js | 226 +++++++++++++++++++++++++++++++++++++++++++++ sui/utils/utils.js | 12 +++ 2 files changed, 238 insertions(+) create mode 100644 sui/pause.js diff --git a/sui/pause.js b/sui/pause.js new file mode 100644 index 000000000..fc8714678 --- /dev/null +++ b/sui/pause.js @@ -0,0 +1,226 @@ +const { Command, Option } = require('commander'); +const { TxBuilder } = require('@axelar-network/axelar-cgp-sui'); +const { loadConfig, saveConfig, getChainConfig, printInfo } = require('../common/utils'); +const { + addBaseOptions, + addOptionsToCommands, + getWallet, + printWalletInfo, + broadcastFromTxBuilder, + getAllowedFunctions, +} = require('./utils'); + +const SPECIAL_PAUSE_FUNCTION_TAGS = { + ALL: 'all', // All EVM chains that have InterchainTokenService deployed + DEFAULT: 'default', +}; + +const SPECIAL_UNPAUSE_FUNCTION_TAGS = { + DISALLOWED: 'disallowed', // All EVM chains that have InterchainTokenService deployed + DEFAULT: 'default', +}; + +function getVaraiblesForPackage(chain, packageName) { + if (packageName === 'AxelarGateway') { + const contractConfig = chain.contracts.AxelarGateway; + return { + packageId: contractConfig.address, + singletonId: contractConfig.objects.Gateway, + versionedId: contractConfig.objects.Gatewayv0, + ownerCapId: contractConfig.objects.OwnerCap, + moduleName: 'gateway', + defaultFunctions: { + versions: [0, 0], + functionNames: ['approve_messages', 'rotate_signers'], + }, + contract: contractConfig, + }; + } +} + +async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { + if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); + + const builder = new TxBuilder(client); + + for (const i in versions) { + await builder.moveCall({ + target: `${packageId}::${moduleName}::allow_function`, + arguments: [singletonId, ownerCapId, versions[i], functionNames[i]], + }); + } + + await broadcastFromTxBuilder(builder, keypair, 'Allow Functions'); +} + +async function disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { + if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); + + const builder = new TxBuilder(client); + + for (const i in versions) { + await builder.moveCall({ + target: `${packageId}::${moduleName}::disallow_function`, + arguments: [singletonId, ownerCapId, versions[i], functionNames[i]], + }); + } + + await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions'); +} + +async function pause(keypair, client, chain, args, options) { + const [packageName] = args; + const functions = options.functions; + + const { packageId, singletonId, versionedId, ownerCapId, moduleName, defaultFunctions, contract } = getVaraiblesForPackage( + chain, + packageName, + ); + + let versionsArg = []; + let allowedFunctionsArg = []; + + if (functions === SPECIAL_PAUSE_FUNCTION_TAGS.ALL) { + const allowedFunctionsArray = await getAllowedFunctions(client, versionedId); + + for (const version in allowedFunctionsArray) { + let allowedFunctions = allowedFunctionsArray[version]; + + // Do not dissalow `allow_function` because that locks the gateway forever. + if (Number(version) === allowedFunctionsArray.length - 1) { + allowedFunctions = allowedFunctions.filter((allowedFunction) => allowedFunction !== 'allow_function'); + } + + printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); + + versionsArg = versionsArg.concat(new Array(allowedFunctions.length).fill(Number(version))); + allowedFunctionsArg = allowedFunctionsArg.concat(allowedFunctions); + } + } else if (functions === SPECIAL_PAUSE_FUNCTION_TAGS.DEFAULT) { + versionsArg = defaultFunctions.versions; + allowedFunctionsArg = defaultFunctions.functionNames; + } else { + const unparsedArray = functions.split(','); + + if (unparsedArray.length % 2 !== 0) { + throw new Error('Custom functions to pause must be an even length array, pairs of version-function name.'); + } + + for (let i = 0; i < unparsedArray.length / 2; i++) { + versionsArg.push(Number(unparsedArray[2 * i])); + allowedFunctionsArg.push(unparsedArray[2 * i + 1]); + } + } + + if (!contract.disallowedFunctions) { + contract.disallowedFunctions = { + versions: [], + functionNames: [], + }; + } + + contract.disallowedFunctions.versions = contract.disallowedFunctions.versions.concat(versionsArg); + contract.disallowedFunctions.functionNames = contract.disallowedFunctions.functionNames.concat(allowedFunctionsArg); + + return await disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg); +} + +async function unpause(keypair, client, chain, args, options) { + const [ packageName ] = args; + const functions = options.functions; + const { packageId, singletonId, ownerCapId, moduleName, defaultFunctions, contract } = getVaraiblesForPackage(chain, packageName); + + let versionsArg = []; + let allowedFunctionsArg = []; + + if (functions === SPECIAL_UNPAUSE_FUNCTION_TAGS.DISALLOWED) { + versionsArg = contract.disallowedFunctions.versions.slice(); + allowedFunctionsArg = contract.disallowedFunctions.functionNames.slice(); + } else if (functions === SPECIAL_UNPAUSE_FUNCTION_TAGS.DEFAULT) { + versionsArg = defaultFunctions.versions; + allowedFunctionsArg = defaultFunctions.functionNames; + } else { + const unparsedArray = functions.split(','); + + if (unparsedArray.length % 2 !== 0) { + throw new Error('Custom functions to pause must be an even length array, pairs of version-function name.'); + } + + for (let i = 0; i < unparsedArray.length / 2; i++) { + versionsArg.push(Number(unparsedArray[2 * i])); + allowedFunctionsArg.push(unparsedArray[2 * i + 1]); + } + } + + if (contract.disallowedFunctions) { + for (let i = contract.disallowedFunctions.versions.length - 1; i >= 0; i--) { + const version = contract.disallowedFunctions.versions[i]; + const functionName = contract.disallowedFunctions.functionNames[i]; + + for (let j = 0; j < versionsArg.length; j++) { + if (version === versionsArg[j] && functionName === allowedFunctionsArg[j]) { + contract.disallowedFunctions.versions.splice(i, 1); + contract.disallowedFunctions.functionNames.splice(i, 1); + break; + } + } + } + } + + return await allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg); +} + +async function processCommand(command, chain, args, options) { + const [keypair, client] = getWallet(chain, options); + + await printWalletInfo(keypair, client, chain, options); + + await command(keypair, client, chain, args, options); +} + +async function mainProcessor(command, options, args, processor) { + const config = loadConfig(options.env); + const chain = getChainConfig(config, options.chainName); + await processor(command, chain, args, options); + saveConfig(config, options.env); +} + +if (require.main === module) { + const program = new Command(); + program.name('Pause').description('SUI Pause scripts'); + + const pauseProgram = new Command() + .name('pause') + .description('Pause') + .command('pause ') + .addOption( + new Option( + '--functions ', + 'The functions to allow. Use use "default" for the default functions, "all" for all functions except the most recent "allow_function" and a comma separated list for custom pausing. The comma separated list has to be alternating version numbers and function names.', + ).default('default'), + ) + .action((packageName, options) => { + mainProcessor(pause, options, [packageName], processCommand); + }); + + const unpauseProgram = new Command() + .name('unpause') + .description('Unpause') + .command('unpause ') + .addOption( + new Option( + '--functions, ', + 'The functions to allow. Use use "disallowed" for previously disallowed functions, "default" for the default functions and a comma separated list for custom pausing. The comma separated list has to be alternating version numbers and function names.', + ).default('disallowed'), + ) + .action((packageName, options) => { + mainProcessor(unpause, options, [packageName], processCommand); + }); + + program.addCommand(pauseProgram); + program.addCommand(unpauseProgram); + + addOptionsToCommands(program, addBaseOptions, { offline: true }); + + program.parse(); +} diff --git a/sui/utils/utils.js b/sui/utils/utils.js index e181ddafd..d8be94d91 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -342,6 +342,17 @@ const isAllowed = async (client, keypair, chain, exec) => { return true; }; +const getAllowedFunctions = async (client, versionedObjectId) => { + const response = await client.getObject({ + id: versionedObjectId, + options: { + showContent: true, + }, + }); + const allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; + return allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); +}; + module.exports = { suiCoinId, getAmplifierSigners, @@ -368,4 +379,5 @@ module.exports = { getStructs, saveGeneratedTx, isAllowed, + getAllowedFunctions, }; From 18fb63ccb1d33dbd605f846ecad62d71f1db98d6 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 30 Jan 2025 20:32:59 +0200 Subject: [PATCH 62/79] added its as as pausable --- sui/pause.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sui/pause.js b/sui/pause.js index fc8714678..3f2c9a14f 100644 --- a/sui/pause.js +++ b/sui/pause.js @@ -35,7 +35,24 @@ function getVaraiblesForPackage(chain, packageName) { }, contract: contractConfig, }; + } else if (packageName === 'InterchainTokenService') { + const contractConfig = chain.contracts.InterchainTokenService; + return { + packageId: contractConfig.address, + singletonId: contractConfig.objects.InterchainTokenService, + versionedId: contractConfig.objects.InterchainTokenServicev0, + ownerCapId: contractConfig.objects.OwnerCap, + moduleName: 'interchain_token_service', + defaultFunctions: { + versions: [0, 0, 0, 0, 0, 0, 0, 0, 0], + functionNames: ['register_coin', 'deploy_remote_interchain_token', 'send_interchain_transfer', 'receive_interchain_transfer', 'receive_interchain_transfer_with_data', 'receive_deploy_interchain_token', 'mint_as_distributor', 'mint_to_as_distributor', 'burn_as_distributor' ], + }, + contract: contractConfig, + }; + } else { + throw new Error(`Unknown package ${packageName}.`); } + } async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { From 0e64c486221c334694a66a9d250c06f2d146c1c2 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 30 Jan 2025 20:36:30 +0200 Subject: [PATCH 63/79] revernt interchainTokenFactory changes --- evm/interchainTokenFactory.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/evm/interchainTokenFactory.js b/evm/interchainTokenFactory.js index 22890dda2..83a654d74 100644 --- a/evm/interchainTokenFactory.js +++ b/evm/interchainTokenFactory.js @@ -224,14 +224,14 @@ async function processCommand(config, chain, options) { } case 'registerCustomToken': { - const { tokenAddress, tokenManagerType, operator, gasValue } = options; + const { tokenAddress, tokenManagerType, operator } = options; const deploymentSalt = getDeploymentSalt(options); validateParameters({ isValidAddress: { tokenAddress }, isAddress: { operator }, - isValidNumber: { tokenManagerType, gasValue }, + isValidNumber: { tokenManagerType }, }); const tx = await interchainTokenFactory.registerCustomToken( @@ -239,8 +239,7 @@ async function processCommand(config, chain, options) { tokenAddress, tokenManagerType, operator, - gasValue, - { value: gasValue, ...gasOptions }, + gasOptions, ); const tokenId = await interchainTokenFactory.linkedTokenId(wallet.address, deploymentSalt); printInfo('tokenId', tokenId); From d653c4c9d31ff1e38725404c8d2728f756cb944e Mon Sep 17 00:00:00 2001 From: Foivos Date: Fri, 31 Jan 2025 15:44:46 +0200 Subject: [PATCH 64/79] add tests --- .github/workflows/test-sui.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index b21740159..845f46ca1 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -168,6 +168,12 @@ jobs: run: node sui/gas-service.js collectGas --amount 0.1 ###### Command: Gateway ###### + - name: Gateway Pause + run: node sui/pause.js pause AxelarGateway + + - name: Gateway Unpause + run: node sui/pause.js unpause AxelarGateway + - name: Gateway Approve run: node sui/gateway.js approve --proof wallet ethereum 0x32034b47cb29d162d9d803cc405356f4ac0ec07fe847ace431385fe8acf3e6e5-2 0x4F4495243837681061C4743b74B3eEdf548D56A5 0x6ce0d81b412abca2770eddb1549c9fcff721889c3aab1203dc93866db22ecc4b 0x56570de287d73cd1cb6092bb8fdee6173974955fdef345ae579ee9f475ea7432 @@ -190,6 +196,11 @@ jobs: node sui/gmp.js execute ethereum 0x32034b47cb29d162d9d803cc405356f4ac0ec07fe847ace431385fe8acf3e6e5-3 0x4F4495243837681061C4743b74B3eEdf548D56A5 0x1234 ###### Command: ITS Example ###### + - name: ITS Pause + run: node sui/pause.js pause InterchainTokenService + + - name: ITS Unpause + run: node sui/pause.js unpause InterchainTokenService - name: Prepare ITS Example Parameters run: | From 16638c3bc331c8e914a26f00d0c49af1dd8dda3f Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 4 Feb 2025 18:33:15 +0200 Subject: [PATCH 65/79] some refactoring --- sui/{pause.js => contract.js} | 66 +++++++++++++++++------------------ 1 file changed, 32 insertions(+), 34 deletions(-) rename sui/{pause.js => contract.js} (82%) diff --git a/sui/pause.js b/sui/contract.js similarity index 82% rename from sui/pause.js rename to sui/contract.js index 3f2c9a14f..c2bd0a082 100644 --- a/sui/pause.js +++ b/sui/contract.js @@ -20,39 +20,37 @@ const SPECIAL_UNPAUSE_FUNCTION_TAGS = { DEFAULT: 'default', }; -function getVaraiblesForPackage(chain, packageName) { - if (packageName === 'AxelarGateway') { - const contractConfig = chain.contracts.AxelarGateway; - return { - packageId: contractConfig.address, - singletonId: contractConfig.objects.Gateway, - versionedId: contractConfig.objects.Gatewayv0, - ownerCapId: contractConfig.objects.OwnerCap, - moduleName: 'gateway', - defaultFunctions: { - versions: [0, 0], - functionNames: ['approve_messages', 'rotate_signers'], - }, - contract: contractConfig, - }; - } else if (packageName === 'InterchainTokenService') { - const contractConfig = chain.contracts.InterchainTokenService; - return { - packageId: contractConfig.address, - singletonId: contractConfig.objects.InterchainTokenService, - versionedId: contractConfig.objects.InterchainTokenServicev0, - ownerCapId: contractConfig.objects.OwnerCap, - moduleName: 'interchain_token_service', - defaultFunctions: { - versions: [0, 0, 0, 0, 0, 0, 0, 0, 0], - functionNames: ['register_coin', 'deploy_remote_interchain_token', 'send_interchain_transfer', 'receive_interchain_transfer', 'receive_interchain_transfer_with_data', 'receive_deploy_interchain_token', 'mint_as_distributor', 'mint_to_as_distributor', 'burn_as_distributor' ], - }, - contract: contractConfig, - }; - } else { - throw new Error(`Unknown package ${packageName}.`); +const CONTRACT_INFO = { + AxelarGateway: { + singletonName: 'Gateway', + moduleName: 'gateway', + defaultFunctions: { + versions: [0, 0], + functionNames: ['approve_messages', 'rotate_signers'], + }, + }, + InterchainTokenService: { + singletonName: 'InterchainTokenService', + moduleName: 'interchain_token_service', + defaultFunctions: { + versions: [0, 0, 0, 0, 0, 0, 0, 0, 0], + functionNames: ['register_coin', 'deploy_remote_interchain_token', 'send_interchain_transfer', 'receive_interchain_transfer', 'receive_interchain_transfer_with_data', 'receive_deploy_interchain_token', 'mint_as_distributor', 'mint_to_as_distributor', 'burn_as_distributor' ], + }, } +} +function getVariablesForPackage(chain, packageName) { + const contractConfig = chain.contracts[packageName]; + const info = CONTRACT_INFO[packageName]; + return { + packageId: contractConfig.address, + singletonId: contractConfig.objects[info.singletonName], + versionedId: contractConfig.objects[info.singletonName + 'v0'], + ownerCapId: contractConfig.objects.OwnerCap, + moduleName: info.moduleName, + defaultFunctions: info.defaultFunctions, + contract: contractConfig, + } } async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { @@ -89,7 +87,7 @@ async function pause(keypair, client, chain, args, options) { const [packageName] = args; const functions = options.functions; - const { packageId, singletonId, versionedId, ownerCapId, moduleName, defaultFunctions, contract } = getVaraiblesForPackage( + const { packageId, singletonId, versionedId, ownerCapId, moduleName, defaultFunctions, contract } = getVariablesForPackage( chain, packageName, ); @@ -105,7 +103,7 @@ async function pause(keypair, client, chain, args, options) { // Do not dissalow `allow_function` because that locks the gateway forever. if (Number(version) === allowedFunctionsArray.length - 1) { - allowedFunctions = allowedFunctions.filter((allowedFunction) => allowedFunction !== 'allow_function'); + allowedFunctions = allowedFunctions.filter((allowedFunction) => allowedFunction !== 'allow_function' && allowedFunction !== 'disallow_function'); } printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); @@ -145,7 +143,7 @@ async function pause(keypair, client, chain, args, options) { async function unpause(keypair, client, chain, args, options) { const [ packageName ] = args; const functions = options.functions; - const { packageId, singletonId, ownerCapId, moduleName, defaultFunctions, contract } = getVaraiblesForPackage(chain, packageName); + const { packageId, singletonId, ownerCapId, moduleName, defaultFunctions, contract } = getVariablesForPackage(chain, packageName); let versionsArg = []; let allowedFunctionsArg = []; From 96368d092927694ceb6dbe79e7611f60135ad2f9 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 4 Feb 2025 18:49:00 +0200 Subject: [PATCH 66/79] using most recent version --- sui/contract.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sui/contract.js b/sui/contract.js index c2bd0a082..bac7e056e 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -42,6 +42,9 @@ const CONTRACT_INFO = { function getVariablesForPackage(chain, packageName) { const contractConfig = chain.contracts[packageName]; const info = CONTRACT_INFO[packageName]; + const defaultFunctions = info.defaultFunctions; + const version = Math.max(...Object.keys(contractConfig.versions).map((version) => Number(version))); + defaultFunctions.versions.fill(version); return { packageId: contractConfig.address, singletonId: contractConfig.objects[info.singletonName], From 721c65b5f46bdec98be353b18745708b7b00eb9c Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 5 Feb 2025 17:40:59 +0200 Subject: [PATCH 67/79] stash --- sui/contract.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/sui/contract.js b/sui/contract.js index bac7e056e..9ffc2cd76 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -161,7 +161,7 @@ async function unpause(keypair, client, chain, args, options) { const unparsedArray = functions.split(','); if (unparsedArray.length % 2 !== 0) { - throw new Error('Custom functions to pause must be an even length array, pairs of version-function name.'); + throw new Error('Custom functions to allow must be an even length array, pairs of version-function name.'); } for (let i = 0; i < unparsedArray.length / 2; i++) { @@ -214,9 +214,15 @@ if (require.main === module) { .addOption( new Option( '--functions ', - 'The functions to allow. Use use "default" for the default functions, "all" for all functions except the most recent "allow_function" and a comma separated list for custom pausing. The comma separated list has to be alternating version numbers and function names.', + 'The functions to allow. Use use "default" for the default functions, "all" for all functions except the most recent "allow_function" and a comma separated list for custom pausing.', ).default('default'), ) + .addOption( + new Option( + '--version, ', + 'The version to pause. Use all to pause all versions', + ).default('all'), + ) .action((packageName, options) => { mainProcessor(pause, options, [packageName], processCommand); }); @@ -228,9 +234,15 @@ if (require.main === module) { .addOption( new Option( '--functions, ', - 'The functions to allow. Use use "disallowed" for previously disallowed functions, "default" for the default functions and a comma separated list for custom pausing. The comma separated list has to be alternating version numbers and function names.', + 'The functions to pause. Use "disallowed" for previously disallowed functions, "default" for the default functions and a comma separated list for custom pausing.', ).default('disallowed'), ) + .addOption( + new Option( + '--version, ', + 'The version to pause. Use all to pause all versions', + ).default('all'), + ) .action((packageName, options) => { mainProcessor(unpause, options, [packageName], processCommand); }); From c5d8b4e1a4e185b60be198cb292a2f2e8117806a Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 5 Feb 2025 18:33:30 +0200 Subject: [PATCH 68/79] added a version option --- sui/contract.js | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/sui/contract.js b/sui/contract.js index 9ffc2cd76..c32c12156 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -102,6 +102,9 @@ async function pause(keypair, client, chain, args, options) { const allowedFunctionsArray = await getAllowedFunctions(client, versionedId); for (const version in allowedFunctionsArray) { + if ( options.version !== 'all' && options.version != version ) { + continue; + } let allowedFunctions = allowedFunctionsArray[version]; // Do not dissalow `allow_function` because that locks the gateway forever. @@ -118,16 +121,11 @@ async function pause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - const unparsedArray = functions.split(','); - - if (unparsedArray.length % 2 !== 0) { - throw new Error('Custom functions to pause must be an even length array, pairs of version-function name.'); - } - - for (let i = 0; i < unparsedArray.length / 2; i++) { - versionsArg.push(Number(unparsedArray[2 * i])); - allowedFunctionsArg.push(unparsedArray[2 * i + 1]); + if(options.version == 'all') { + throw new Error('Need to specify a version if providing specific functions.'); } + allowedFunctionsArg = functions.split(','); + versionsArg = allowedFunctionsArg.map(() => Number(options.version)); } if (!contract.disallowedFunctions) { @@ -158,16 +156,11 @@ async function unpause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - const unparsedArray = functions.split(','); - - if (unparsedArray.length % 2 !== 0) { - throw new Error('Custom functions to allow must be an even length array, pairs of version-function name.'); - } - - for (let i = 0; i < unparsedArray.length / 2; i++) { - versionsArg.push(Number(unparsedArray[2 * i])); - allowedFunctionsArg.push(unparsedArray[2 * i + 1]); + if(options.version == 'all') { + throw new Error('Need to specify a version if providing specific functions.'); } + allowedFunctionsArg = functions.split(','); + versionsArg = allowedFunctionsArg.map(() => Number(options.version)); } if (contract.disallowedFunctions) { From 8d3bf31aad220a279c35f43ae089495adc0ab56e Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 5 Feb 2025 18:33:40 +0200 Subject: [PATCH 69/79] prettier --- sui/contract.js | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/sui/contract.js b/sui/contract.js index c32c12156..926943c60 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -34,10 +34,20 @@ const CONTRACT_INFO = { moduleName: 'interchain_token_service', defaultFunctions: { versions: [0, 0, 0, 0, 0, 0, 0, 0, 0], - functionNames: ['register_coin', 'deploy_remote_interchain_token', 'send_interchain_transfer', 'receive_interchain_transfer', 'receive_interchain_transfer_with_data', 'receive_deploy_interchain_token', 'mint_as_distributor', 'mint_to_as_distributor', 'burn_as_distributor' ], + functionNames: [ + 'register_coin', + 'deploy_remote_interchain_token', + 'send_interchain_transfer', + 'receive_interchain_transfer', + 'receive_interchain_transfer_with_data', + 'receive_deploy_interchain_token', + 'mint_as_distributor', + 'mint_to_as_distributor', + 'burn_as_distributor', + ], }, - } -} + }, +}; function getVariablesForPackage(chain, packageName) { const contractConfig = chain.contracts[packageName]; @@ -53,7 +63,7 @@ function getVariablesForPackage(chain, packageName) { moduleName: info.moduleName, defaultFunctions: info.defaultFunctions, contract: contractConfig, - } + }; } async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { @@ -102,14 +112,16 @@ async function pause(keypair, client, chain, args, options) { const allowedFunctionsArray = await getAllowedFunctions(client, versionedId); for (const version in allowedFunctionsArray) { - if ( options.version !== 'all' && options.version != version ) { + if (options.version !== 'all' && options.version != version) { continue; } let allowedFunctions = allowedFunctionsArray[version]; // Do not dissalow `allow_function` because that locks the gateway forever. if (Number(version) === allowedFunctionsArray.length - 1) { - allowedFunctions = allowedFunctions.filter((allowedFunction) => allowedFunction !== 'allow_function' && allowedFunction !== 'disallow_function'); + allowedFunctions = allowedFunctions.filter( + (allowedFunction) => allowedFunction !== 'allow_function' && allowedFunction !== 'disallow_function', + ); } printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); @@ -121,7 +133,7 @@ async function pause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - if(options.version == 'all') { + if (options.version == 'all') { throw new Error('Need to specify a version if providing specific functions.'); } allowedFunctionsArg = functions.split(','); @@ -142,7 +154,7 @@ async function pause(keypair, client, chain, args, options) { } async function unpause(keypair, client, chain, args, options) { - const [ packageName ] = args; + const [packageName] = args; const functions = options.functions; const { packageId, singletonId, ownerCapId, moduleName, defaultFunctions, contract } = getVariablesForPackage(chain, packageName); @@ -156,7 +168,7 @@ async function unpause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - if(options.version == 'all') { + if (options.version == 'all') { throw new Error('Need to specify a version if providing specific functions.'); } allowedFunctionsArg = functions.split(','); @@ -210,12 +222,7 @@ if (require.main === module) { 'The functions to allow. Use use "default" for the default functions, "all" for all functions except the most recent "allow_function" and a comma separated list for custom pausing.', ).default('default'), ) - .addOption( - new Option( - '--version, ', - 'The version to pause. Use all to pause all versions', - ).default('all'), - ) + .addOption(new Option('--version, ', 'The version to pause. Use all to pause all versions').default('all')) .action((packageName, options) => { mainProcessor(pause, options, [packageName], processCommand); }); @@ -230,12 +237,7 @@ if (require.main === module) { 'The functions to pause. Use "disallowed" for previously disallowed functions, "default" for the default functions and a comma separated list for custom pausing.', ).default('disallowed'), ) - .addOption( - new Option( - '--version, ', - 'The version to pause. Use all to pause all versions', - ).default('all'), - ) + .addOption(new Option('--version, ', 'The version to pause. Use all to pause all versions').default('all')) .action((packageName, options) => { mainProcessor(unpause, options, [packageName], processCommand); }); From 9ae1275ca23c075e194d95496bfdf74ed42fae64 Mon Sep 17 00:00:00 2001 From: Foivos Date: Wed, 5 Feb 2025 18:53:17 +0200 Subject: [PATCH 70/79] removed pause and unpause from gateway and its --- sui/contract.js | 9 ++- sui/gateway.js | 150 +----------------------------------------------- sui/its.js | 134 +----------------------------------------- 3 files changed, 8 insertions(+), 285 deletions(-) diff --git a/sui/contract.js b/sui/contract.js index 926943c60..4bfc02027 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -112,9 +112,10 @@ async function pause(keypair, client, chain, args, options) { const allowedFunctionsArray = await getAllowedFunctions(client, versionedId); for (const version in allowedFunctionsArray) { - if (options.version !== 'all' && options.version != version) { + if (options.version !== 'all' && options.version !== version) { continue; } + let allowedFunctions = allowedFunctionsArray[version]; // Do not dissalow `allow_function` because that locks the gateway forever. @@ -133,9 +134,10 @@ async function pause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - if (options.version == 'all') { + if (options.version === 'all') { throw new Error('Need to specify a version if providing specific functions.'); } + allowedFunctionsArg = functions.split(','); versionsArg = allowedFunctionsArg.map(() => Number(options.version)); } @@ -168,9 +170,10 @@ async function unpause(keypair, client, chain, args, options) { versionsArg = defaultFunctions.versions; allowedFunctionsArg = defaultFunctions.functionNames; } else { - if (options.version == 'all') { + if (options.version === 'all') { throw new Error('Need to specify a version if providing specific functions.'); } + allowedFunctionsArg = functions.split(','); versionsArg = allowedFunctionsArg.map(() => Number(options.version)); } diff --git a/sui/gateway.js b/sui/gateway.js index 6d19aebd4..f30198eab 100644 --- a/sui/gateway.js +++ b/sui/gateway.js @@ -8,7 +8,7 @@ const { constants: { HashZero }, } = ethers; -const { saveConfig, printInfo, loadConfig, getMultisigProof, getChainConfig, writeJSON } = require('../common/utils'); +const { saveConfig, printInfo, loadConfig, getMultisigProof, getChainConfig } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, @@ -23,7 +23,6 @@ const { } = require('./utils'); const secp256k1 = require('secp256k1'); const chalk = require('chalk'); -const { readJSON } = require(`${__dirname}/../axelar-chains-config`); const COMMAND_TYPE_APPROVE_MESSAGES = 0; const COMMAND_TYPE_ROTATE_SIGNERS = 1; @@ -282,66 +281,6 @@ async function rotate(keypair, client, config, chain, contractConfig, args, opti }; } -async function allowFunctions(keypair, client, config, chain, contractConfig, args, options) { - const packageId = contractConfig.address; - - const [versionsArg, functionNamesArg] = args; - - const versions = versionsArg.split(','); - const functionNames = functionNamesArg.split(','); - - if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); - - const tx = new Transaction(); - - for (const i in versions) { - tx.moveCall({ - target: `${packageId}::gateway::allow_function`, - arguments: [ - tx.object(contractConfig.objects.Gateway), - tx.object(contractConfig.objects.OwnerCap), - tx.pure.u64(versions[i]), - tx.pure.string(functionNames[i]), - ], - }); - } - - return { - tx, - message: 'Allow Functions', - }; -} - -async function disallowFunctions(keypair, client, config, chain, contractConfig, args, options) { - const packageId = contractConfig.address; - - const [versionsArg, functionNamesArg] = args; - - const versions = versionsArg.split(','); - const functionNames = functionNamesArg.split(','); - - if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); - - const tx = new Transaction(); - - for (const i in versions) { - tx.moveCall({ - target: `${packageId}::gateway::disallow_function`, - arguments: [ - tx.object(contractConfig.objects.Gateway), - tx.object(contractConfig.objects.OwnerCap), - tx.pure.u64(versions[i]), - tx.pure.string(functionNames[i]), - ], - }); - } - - return { - tx, - message: 'Disallow Functions', - }; -} - async function checkVersionControl(version, options) { const config = loadConfig(options.env); @@ -508,65 +447,6 @@ async function testNewField(value, options) { console.log(`Set the value to ${value} and it was set to ${returnedValue}.`); } -async function pause(keypair, client, config, chain, contracts, args, options) { - const response = await client.getObject({ - id: contracts.objects.Gatewayv0, - options: { - showContent: true, - showBcs: true, - }, - }); - let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; - allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); - - const versionsArg = []; - const allowedFunctionsArg = []; - - for (const version in allowedFunctionsArray) { - const allowedFunctions = allowedFunctionsArray[version]; - - // Do not dissalow `allow_function` because that locks the gateway forever. - if (Number(version) === allowedFunctionsArray.length - 1) { - const index = allowedFunctions.indexOf('allow_function'); - - if (index > -1) { - // only splice array when item is found - allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only - } - } - - printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); - - versionsArg.push(new Array(allowedFunctions.length).fill(version).join()); - allowedFunctionsArg.push(allowedFunctions.join()); - } - - // Write the - writeJSON( - { - versions: versionsArg, - disallowedFunctions: allowedFunctionsArg, - }, - `${__dirname}/../axelar-chains-config/info/sui-gateway-allowed-functions-${options.env}.json`, - ); - - return disallowFunctions(keypair, client, config, chain, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); -} - -async function unpause(keypair, client, config, chain, contracts, args, options) { - const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-gateway-allowed-functions-${options.env}.json`); - - return allowFunctions( - keypair, - client, - config, - chain, - contracts, - [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], - options, - ); -} - async function mainProcessor(processor, args, options) { const config = loadConfig(options.env); @@ -639,20 +519,6 @@ if (require.main === module) { mainProcessor(callContract, [destinationChain, destinationAddress, payload], options); }); - program - .command('allow-functions ') - .description('Allow certain funcitons on the gateway') - .action((versions, functionNames, options) => { - mainProcessor(allowFunctions, [versions, functionNames], options); - }); - - program - .command('disallow-functions ') - .description('Allow certain funcitons on the gateway') - .action((versions, functionNames, options) => { - mainProcessor(disallowFunctions, [versions, functionNames], options); - }); - program .command('check-version-control ') .description('Check if version control works on a certain version') @@ -669,20 +535,6 @@ if (require.main === module) { testNewField(value, options); }); - program - .command('pause') - .description('Pause the gateway') - .action((options) => { - mainProcessor(pause, [], options); - }); - - program - .command('unpause') - .description('Unpause the gateway') - .action((options) => { - mainProcessor(unpause, [], options); - }); - addOptionsToCommands(program, addBaseOptions, { offline: true }); program.parse(); diff --git a/sui/its.js b/sui/its.js index d44bd2b54..4dc4f2a00 100644 --- a/sui/its.js +++ b/sui/its.js @@ -1,8 +1,7 @@ const { Command } = require('commander'); const { TxBuilder } = require('@axelar-network/axelar-cgp-sui'); -const { loadConfig, saveConfig, getChainConfig, printInfo, writeJSON } = require('../common/utils'); +const { loadConfig, saveConfig, getChainConfig } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, getWallet, printWalletInfo, broadcastFromTxBuilder, saveGeneratedTx } = require('./utils'); -const { readJSON } = require(`${__dirname}/../axelar-chains-config`); const SPECIAL_CHAINS_TAGS = { ALL_EVM: 'all-evm', // All EVM chains that have InterchainTokenService deployed @@ -66,110 +65,6 @@ async function removeTrustedChain(keypair, client, contracts, args, options) { await broadcastFromTxBuilder(txBuilder, keypair, 'Remove Trusted Address'); } -async function allowFunctions(keypair, client, config, contractConfig, args, options) { - const contracts = contractConfig.InterchainTokenService; - const packageId = contracts.address; - - const [versionsArg, functionNamesArg] = args; - - const versions = versionsArg.split(','); - const functionNames = functionNamesArg.split(','); - - if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); - - const builder = new TxBuilder(client); - - for (const i in versions) { - await builder.moveCall({ - target: `${packageId}::interchain_token_service::allow_function`, - arguments: [contracts.objects.InterchainTokenService, contracts.objects.OwnerCap, versions[i], functionNames[i]], - }); - } - - await broadcastFromTxBuilder(builder, keypair, 'Allow Functions'); -} - -async function disallowFunctions(keypair, client, config, contractConfig, args, options) { - const contracts = contractConfig.InterchainTokenService; - const packageId = contracts.address; - - const [versionsArg, functionNamesArg] = args; - - const versions = versionsArg.split(','); - const functionNames = functionNamesArg.split(','); - - if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); - - const builder = new TxBuilder(client); - - for (const i in versions) { - await builder.moveCall({ - target: `${packageId}::interchain_token_service::disallow_function`, - arguments: [contracts.objects.InterchainTokenService, contracts.objects.OwnerCap, versions[i], functionNames[i]], - }); - } - - await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions'); -} - -async function pause(keypair, client, config, contracts, args, options) { - const response = await client.getObject({ - id: contracts.InterchainTokenService.objects.InterchainTokenServicev0, - options: { - showContent: true, - showBcs: true, - }, - }); - let allowedFunctionsArray = response.data.content.fields.value.fields.version_control.fields.allowed_functions; - allowedFunctionsArray = allowedFunctionsArray.map((allowedFunctions) => allowedFunctions.fields.contents); - - const versionsArg = []; - const allowedFunctionsArg = []; - - for (const version in allowedFunctionsArray) { - const allowedFunctions = allowedFunctionsArray[version]; - - // Do not dissalow `allow_function` because that locks the gateway forever. - if (Number(version) === allowedFunctionsArray.length - 1) { - const index = allowedFunctions.indexOf('allow_function'); - - if (index > -1) { - // only splice array when item is found - allowedFunctions.splice(index, 1); // 2nd parameter means remove one item only - } - } - - printInfo(`Functions that will be disallowed for version ${version}`, allowedFunctions); - - versionsArg.push(new Array(allowedFunctions.length).fill(version).join()); - allowedFunctionsArg.push(allowedFunctions.join()); - } - - // Write the - writeJSON( - { - versions: versionsArg, - disallowedFunctions: allowedFunctionsArg, - }, - `${__dirname}/../axelar-chains-config/info/sui-its-allowed-functions-${options.env}.json`, - ); - - return await disallowFunctions(keypair, client, config, contracts, [versionsArg.join(), allowedFunctionsArg.join()], options); -} - -async function unpause(keypair, client, config, contracts, args, options) { - const dissalowedFunctions = readJSON(`${__dirname}/../axelar-chains-config/info/sui-its-allowed-functions-${options.env}.json`); - - return await allowFunctions( - keypair, - client, - config, - contracts, - [dissalowedFunctions.versions.join(), dissalowedFunctions.disallowedFunctions.join()], - options, - ); -} - async function processCommand(command, config, chain, args, options) { const [keypair, client] = getWallet(chain, options); @@ -209,35 +104,8 @@ if (require.main === module) { mainProcessor(removeTrustedChain, options, [trustedChain], processCommand); }); - const allowFunctionsProgram = new Command() - .name('allow-functions') - .description('Allow functions') - .command('allow-functions ') - .action((versions, functions, options) => { - mainProcessor(allowFunctions, options, [versions, functions], processCommand); - }); - - const pauseProgram = new Command() - .name('pause') - .description('Pause InterchainTokenService') - .command('pause') - .action((options) => { - mainProcessor(pause, options, [], processCommand); - }); - - const unpauseProgram = new Command() - .name('unpause') - .description('Unpause InterchainTokenService') - .command('unpause') - .action((options) => { - mainProcessor(unpause, options, [], processCommand); - }); - program.addCommand(setupTrustedChainsProgram); program.addCommand(removeTrustedChainsProgram); - program.addCommand(allowFunctionsProgram); - program.addCommand(pauseProgram); - program.addCommand(unpauseProgram); addOptionsToCommands(program, addBaseOptions, { offline: true }); From 8c5e846d63b698a9044db2e4a7226177736a7aeb Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 16:02:24 +0200 Subject: [PATCH 71/79] lint --- sui/utils/utils.js | 1 + 1 file changed, 1 insertion(+) diff --git a/sui/utils/utils.js b/sui/utils/utils.js index 45773fb16..9ea7ade48 100644 --- a/sui/utils/utils.js +++ b/sui/utils/utils.js @@ -380,6 +380,7 @@ module.exports = { getTransactionList, parseDiscoveryInfo, parseGatewayInfo, + checkTrustedAddresses, getStructs, saveGeneratedTx, isAllowed, From 5d69f40f32ee76b1548febdd04f5025f8a7b2fa2 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 16:14:44 +0200 Subject: [PATCH 72/79] update package-json --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index aeaa9db4e..561f1633c 100644 --- a/package.json +++ b/package.json @@ -25,9 +25,9 @@ "homepage": "https://github.com/axelarnetwork/axelar-contract-deployments#readme", "dependencies": { "@axelar-network/axelar-cgp-solidity": "6.4.0", - "@axelar-network/axelar-cgp-sui": "2.1.0", + "@axelar-network/axelar-cgp-sui": "0.0.0-snapshot.02915b7", "@axelar-network/axelar-gmp-sdk-solidity": "6.0.4", - "@axelar-network/interchain-token-service": "0.0.0-snapshot.869b412", + "@axelar-network/interchain-token-service": "2.1.0", "@cosmjs/cosmwasm-stargate": "^0.32.1", "@ledgerhq/hw-app-eth": "6.32.2", "@mysten/ledgerjs-hw-app-sui": "^0.4.1", From 9ef0f56d7a3c8418b6ca601adebb934a0c903f1c Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 16:20:56 +0200 Subject: [PATCH 73/79] fix sui tests --- .github/workflows/test-sui.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index b93ac0b77..0d62e8b3b 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -170,10 +170,10 @@ jobs: ###### Command: Gateway ###### - name: Gateway Pause - run: node sui/pause.js pause AxelarGateway + run: node sui/contract.js pause AxelarGateway - name: Gateway Unpause - run: node sui/pause.js unpause AxelarGateway + run: node sui/contract.js unpause AxelarGateway - name: Gateway Approve run: node sui/gateway.js approve --proof wallet ethereum 0x32034b47cb29d162d9d803cc405356f4ac0ec07fe847ace431385fe8acf3e6e5-2 0x4F4495243837681061C4743b74B3eEdf548D56A5 0x6ce0d81b412abca2770eddb1549c9fcff721889c3aab1203dc93866db22ecc4b 0x56570de287d73cd1cb6092bb8fdee6173974955fdef345ae579ee9f475ea7432 @@ -198,10 +198,10 @@ jobs: ###### Command: ITS Example ###### - name: ITS Pause - run: node sui/pause.js pause InterchainTokenService + run: node sui/contract.js pause InterchainTokenService - name: ITS Unpause - run: node sui/pause.js unpause InterchainTokenService + run: node sui/contract.js unpause InterchainTokenService - name: Prepare ITS Example Parameters run: | From dc1448cdbfdbf2f4fa64fac223b79ceb91c7a2b5 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 16:33:26 +0200 Subject: [PATCH 74/79] austoexecute pause/unpause in sui-tests --- .github/workflows/test-sui.yaml | 8 ++++---- sui/contract.js | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 0d62e8b3b..3f762e5c6 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -170,10 +170,10 @@ jobs: ###### Command: Gateway ###### - name: Gateway Pause - run: node sui/contract.js pause AxelarGateway + run: node sui/contract.js pause AxelarGateway -y - name: Gateway Unpause - run: node sui/contract.js unpause AxelarGateway + run: node sui/contract.js unpause AxelarGateway -y - name: Gateway Approve run: node sui/gateway.js approve --proof wallet ethereum 0x32034b47cb29d162d9d803cc405356f4ac0ec07fe847ace431385fe8acf3e6e5-2 0x4F4495243837681061C4743b74B3eEdf548D56A5 0x6ce0d81b412abca2770eddb1549c9fcff721889c3aab1203dc93866db22ecc4b 0x56570de287d73cd1cb6092bb8fdee6173974955fdef345ae579ee9f475ea7432 @@ -198,10 +198,10 @@ jobs: ###### Command: ITS Example ###### - name: ITS Pause - run: node sui/contract.js pause InterchainTokenService + run: node sui/contract.js pause InterchainTokenService -y - name: ITS Unpause - run: node sui/contract.js unpause InterchainTokenService + run: node sui/contract.js unpause InterchainTokenService -y - name: Prepare ITS Example Parameters run: | diff --git a/sui/contract.js b/sui/contract.js index 4bfc02027..dce66ad6c 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -66,7 +66,7 @@ function getVariablesForPackage(chain, packageName) { }; } -async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { +async function allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames, options) { if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); const builder = new TxBuilder(client); @@ -78,10 +78,10 @@ async function allowFunctions(keypair, client, packageId, moduleName, singletonI }); } - await broadcastFromTxBuilder(builder, keypair, 'Allow Functions'); + await broadcastFromTxBuilder(builder, keypair, 'Allow Functions', options); } -async function disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames) { +async function disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versions, functionNames, options) { if (versions.length !== functionNames.length) throw new Error('Versions and Function Names must have a matching length'); const builder = new TxBuilder(client); @@ -93,7 +93,7 @@ async function disallowFunctions(keypair, client, packageId, moduleName, singlet }); } - await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions'); + await broadcastFromTxBuilder(builder, keypair, 'Disallow Functions', options); } async function pause(keypair, client, chain, args, options) { @@ -152,7 +152,7 @@ async function pause(keypair, client, chain, args, options) { contract.disallowedFunctions.versions = contract.disallowedFunctions.versions.concat(versionsArg); contract.disallowedFunctions.functionNames = contract.disallowedFunctions.functionNames.concat(allowedFunctionsArg); - return await disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg); + return await disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg, options); } async function unpause(keypair, client, chain, args, options) { @@ -193,7 +193,7 @@ async function unpause(keypair, client, chain, args, options) { } } - return await allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg); + return await allowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg, options); } async function processCommand(command, chain, args, options) { From b23297408f11f9dfaa2c3a80037fd477e85ade65 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 16:39:25 +0200 Subject: [PATCH 75/79] prettier --- sui/contract.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sui/contract.js b/sui/contract.js index dce66ad6c..5881b3ec2 100644 --- a/sui/contract.js +++ b/sui/contract.js @@ -152,7 +152,17 @@ async function pause(keypair, client, chain, args, options) { contract.disallowedFunctions.versions = contract.disallowedFunctions.versions.concat(versionsArg); contract.disallowedFunctions.functionNames = contract.disallowedFunctions.functionNames.concat(allowedFunctionsArg); - return await disallowFunctions(keypair, client, packageId, moduleName, singletonId, ownerCapId, versionsArg, allowedFunctionsArg, options); + return await disallowFunctions( + keypair, + client, + packageId, + moduleName, + singletonId, + ownerCapId, + versionsArg, + allowedFunctionsArg, + options, + ); } async function unpause(keypair, client, chain, args, options) { From a8df272dfa8fd1e9cfe0b5db964a8bc1c70aadc2 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 18:00:15 +0200 Subject: [PATCH 76/79] fixed script --- .github/workflows/test-sui.yaml | 6 +++ sui/deploy-contract.js | 3 +- sui/its.js | 65 +++++++++++++++++++++++---------- 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 3f762e5c6..7e817a4fc 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -203,6 +203,12 @@ jobs: - name: ITS Unpause run: node sui/contract.js unpause InterchainTokenService -y + - name: ITS Flow Limit Set + run: node sui/its.js flow InterchainTokenService -y + + - name: ITS Flow Limit Remove + run: node sui/its.js unpause InterchainTokenService -y + - name: Prepare ITS Example Parameters run: | echo "sourceChain=Ethereum" >> $GITHUB_ENV diff --git a/sui/deploy-contract.js b/sui/deploy-contract.js index 33e90c6ee..f8d695f54 100644 --- a/sui/deploy-contract.js +++ b/sui/deploy-contract.js @@ -250,9 +250,10 @@ async function postDeployIts(published, keypair, client, config, chain, options) const itsHubAddress = config.axelar.contracts.InterchainTokenService.address; - const [ownerCapObjectId, creatorCapObjectId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ + const [ownerCapObjectId, creatorCapObjectId, operatorCapId, upgradeCapObjectId] = getObjectIdsByObjectTypes(published.publishTxn, [ `${published.packageId}::owner_cap::OwnerCap`, `${published.packageId}::creator_cap::CreatorCap`, + `${published.packageId}::operator_cap::OperatorCap`, `${suiPackageAddress}::package::UpgradeCap`, ]); diff --git a/sui/its.js b/sui/its.js index f577966aa..42985e0a7 100644 --- a/sui/its.js +++ b/sui/its.js @@ -1,7 +1,8 @@ const { Command } = require('commander'); -const { TxBuilder } = require('@axelar-network/axelar-cgp-sui'); +const { TxBuilder, STD_PACKAGE_ID } = require('@axelar-network/axelar-cgp-sui'); const { loadConfig, saveConfig, getChainConfig } = require('../common/utils'); const { addBaseOptions, addOptionsToCommands, getWallet, printWalletInfo, broadcastFromTxBuilder, saveGeneratedTx } = require('./utils'); +const { bcs } = require('@mysten/sui/bcs'); const SPECIAL_CHAINS_TAGS = { ALL_EVM: 'all-evm', // All EVM chains that have InterchainTokenService deployed @@ -17,33 +18,59 @@ function parseTrustedChains(config, trustedChains) { } async function setFlowLimits(keypair, client, config, contracts, args, options) { - let [tokenIds, coinTypes, flowLimits] = args; + let [tokenIds, flowLimits] = args; - const { ITS: itsConfig } = contracts; + const { InterchainTokenService: itsConfig } = contracts; - const { OperatorCap, ITS } = itsConfig.objects; + const { OperatorCap, InterchainTokenService } = itsConfig.objects; const txBuilder = new TxBuilder(client); tokenIds = tokenIds.split(','); - coinTypes = coinTypes.split(','); - flowLimits = flowLimits.split(',').map((flowLimit) => { - return Number(flowLimit); - }); + flowLimits = flowLimits.split(','); - if (tokenIds.length !== flowLimits.length || tokenIds.length !== coinTypes.length) - throw new Error(', and have to have the same length.'); + if (tokenIds.length !== flowLimits.length) + throw new Error(' and have to have the same length.'); for (const i in tokenIds) { - const tokenId = await txBuilder.moveCall({ + const coinTypeTxBuilder = new TxBuilder(client); + let tokenId = await coinTypeTxBuilder.moveCall({ target: `${itsConfig.address}::token_id::from_address`, arguments: [tokenIds[i]], }); + await coinTypeTxBuilder.moveCall({ + target: `${itsConfig.address}::interchain_token_service::registered_coin_type`, + arguments: [InterchainTokenService, tokenId] + }); + + const resp = await coinTypeTxBuilder.devInspect(keypair.toSuiAddress()); + const coinType = bcs.String.parse(new Uint8Array(resp.results[1].returnValues[0][0])); + + tokenId = await txBuilder.moveCall({ + target: `${itsConfig.address}::token_id::from_address`, + arguments: [tokenIds[i]], + }); + + let flowLimit; + if(flowLimits[i] == 'none') { + flowLimit = await txBuilder.moveCall({ + target: `${STD_PACKAGE_ID}::option::none`, + arguments: [], + typeArguments: ["u64"], + }); + } else { + flowLimit = await txBuilder.moveCall({ + target: `${STD_PACKAGE_ID}::option::some`, + arguments: [txBuilder.tx.pure.u64(Number(flowLimits[i]))], + typeArguments: ["u64"], + }); + } + await txBuilder.moveCall({ - target: `${itsConfig.address}::its::set_flow_limit_as_operator`, - arguments: [ITS, OperatorCap, tokenId, flowLimits[i]], - typeArguments: [coinTypes[i]], + target: `${itsConfig.address}::interchain_token_service::set_flow_limit`, + arguments: [InterchainTokenService, OperatorCap, tokenId, flowLimit], + typeArguments: [coinType], }); } @@ -53,7 +80,7 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) tx.setSender(sender); await saveGeneratedTx(tx, `Set flow limits for ${tokenIds} to ${flowLimits}`, client, options); } else { - await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address'); + await broadcastFromTxBuilder(txBuilder, keypair, 'Setup Trusted Address', options); } } @@ -145,10 +172,10 @@ if (require.main === module) { const setFlowLimitsProgram = new Command() .name('set-flow-limits') - .command('set-flow-limits ') - .description(`Set flow limits for multiple tokens. , and can both be comma separated lists`) - .action((tokenIds, coinTypes, flowLimits, options) => { - mainProcessor(setFlowLimits, options, [tokenIds, coinTypes, flowLimits], processCommand); + .command('set-flow-limits ') + .description(`Set flow limits for multiple tokens. and can both be comma separated lists`) + .action((tokenIds, flowLimits, options) => { + mainProcessor(setFlowLimits, options, [tokenIds, flowLimits], processCommand); }); program.addCommand(setFlowLimitsProgram); From 3983cb6f5583be1771a0b270054953a69f415e89 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 18:16:30 +0200 Subject: [PATCH 77/79] made lint happy and fixed tests --- .github/workflows/test-sui.yaml | 13 +++++++------ sui/its.js | 12 ++++++------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 7e817a4fc..7f529024d 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -203,12 +203,6 @@ jobs: - name: ITS Unpause run: node sui/contract.js unpause InterchainTokenService -y - - name: ITS Flow Limit Set - run: node sui/its.js flow InterchainTokenService -y - - - name: ITS Flow Limit Remove - run: node sui/its.js unpause InterchainTokenService -y - - name: Prepare ITS Example Parameters run: | echo "sourceChain=Ethereum" >> $GITHUB_ENV @@ -237,9 +231,16 @@ jobs: echo "transferPayloadHash=$(echo $transferInfo | jq -r .payloadHash)" >> $GITHUB_ENV echo "transferPayload=$(echo $transferInfo | jq -r .payload)" >> $GITHUB_ENV + echo "originTokenId=$(echo $transferInfo | jq -r .tokenId)" >> $GITHUB_ENV echo "deployPayload=$(echo $deploymentInfo | jq -r .payload)" >> $GITHUB_ENV echo "deployPayloadHash=$(echo $deploymentInfo | jq -r .payloadHash)" >> $GITHUB_ENV + - name: ITS Flow Limit Set + run: node sui/its.js et-flow-limits InterchainTokenService $originTokenId 0 -y + + - name: ITS Flow Limit Remove + run: node sui/its.js set-flow-limits InterchainTokenService $originTokenId none -y + - name: Setup Trusted Addresses run: | node sui/its.js add-trusted-chains $sourceChain diff --git a/sui/its.js b/sui/its.js index 42985e0a7..2bb5538c3 100644 --- a/sui/its.js +++ b/sui/its.js @@ -29,8 +29,7 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) tokenIds = tokenIds.split(','); flowLimits = flowLimits.split(','); - if (tokenIds.length !== flowLimits.length) - throw new Error(' and have to have the same length.'); + if (tokenIds.length !== flowLimits.length) throw new Error(' and have to have the same length.'); for (const i in tokenIds) { const coinTypeTxBuilder = new TxBuilder(client); @@ -41,7 +40,7 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) await coinTypeTxBuilder.moveCall({ target: `${itsConfig.address}::interchain_token_service::registered_coin_type`, - arguments: [InterchainTokenService, tokenId] + arguments: [InterchainTokenService, tokenId], }); const resp = await coinTypeTxBuilder.devInspect(keypair.toSuiAddress()); @@ -53,17 +52,18 @@ async function setFlowLimits(keypair, client, config, contracts, args, options) }); let flowLimit; - if(flowLimits[i] == 'none') { + + if (flowLimits[i] === 'none') { flowLimit = await txBuilder.moveCall({ target: `${STD_PACKAGE_ID}::option::none`, arguments: [], - typeArguments: ["u64"], + typeArguments: ['u64'], }); } else { flowLimit = await txBuilder.moveCall({ target: `${STD_PACKAGE_ID}::option::some`, arguments: [txBuilder.tx.pure.u64(Number(flowLimits[i]))], - typeArguments: ["u64"], + typeArguments: ['u64'], }); } From a42948005d6b86b163aa7028235a79baa7c1b232 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 19:47:39 +0200 Subject: [PATCH 78/79] fix small type --- .github/workflows/test-sui.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 7f529024d..04778a212 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -236,7 +236,7 @@ jobs: echo "deployPayloadHash=$(echo $deploymentInfo | jq -r .payloadHash)" >> $GITHUB_ENV - name: ITS Flow Limit Set - run: node sui/its.js et-flow-limits InterchainTokenService $originTokenId 0 -y + run: node sui/its.js set-flow-limits InterchainTokenService $originTokenId 0 -y - name: ITS Flow Limit Remove run: node sui/its.js set-flow-limits InterchainTokenService $originTokenId none -y From 25fa39b8957adc3fb744ee183010729baee84051 Mon Sep 17 00:00:00 2001 From: Foivos Date: Thu, 6 Feb 2025 20:33:24 +0200 Subject: [PATCH 79/79] fix tests --- .github/workflows/test-sui.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-sui.yaml b/.github/workflows/test-sui.yaml index 04778a212..4b86084c3 100644 --- a/.github/workflows/test-sui.yaml +++ b/.github/workflows/test-sui.yaml @@ -236,10 +236,10 @@ jobs: echo "deployPayloadHash=$(echo $deploymentInfo | jq -r .payloadHash)" >> $GITHUB_ENV - name: ITS Flow Limit Set - run: node sui/its.js set-flow-limits InterchainTokenService $originTokenId 0 -y + run: node sui/its.js set-flow-limits $originTokenId 0 -y - name: ITS Flow Limit Remove - run: node sui/its.js set-flow-limits InterchainTokenService $originTokenId none -y + run: node sui/its.js set-flow-limits $originTokenId none -y - name: Setup Trusted Addresses run: |