diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 187748814..0d673103b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,16 +1,9 @@ * @lidofinance/community-staking /ethereum-huge-tx/ @lidofinance/lido-analytics -/ethereum-steth/ @lidofinance/lido-eth-protocol -/storage-watcher/ @lidofinance/lido-eth-protocol -/l2-bridge-arbitrum/ @lidofinance/lido-eth-protocol /l2-bridge-ethereum/ @lidofinance/lido-eth-protocol -/l2-bridge-optimism/ @lidofinance/lido-eth-protocol -/l2-bridge-base/ @lidofinance/lido-eth-protocol /l2-bridge-zksync/ @lidofinance/lido-eth-protocol /l2-bridge-mantle/ @lidofinance/lido-eth-protocol /l2-bridge-linea/ @lidofinance/lido-eth-protocol -/l2-bridge-scroll/ @lidofinance/lido-eth-protocol -/ethereum-financial/ @lidofinance/lido-eth-protocol /arb-subgraph/ @lidofinance/lido-si /ethereum-governance/ @lidofinance/lido-dao-ops-team /mellow-vaults/ @lidofinance/lido-dao-ops-team diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index f7d902d1f..bff2a535c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -28,5 +28,8 @@ jobs: - name: Setup prettier run: npm install prettier@^3.2.5 + - name: Setup prettier import plugin + run: npm install prettier-plugin-organize-imports@^4.0.0 + - name: Check formatting with prettier run: npx prettier --check . diff --git a/.github/workflows/test-ethereum-financial.yml b/.github/workflows/test-ethereum-financial.yml deleted file mode 100644 index 750ceba1a..000000000 --- a/.github/workflows/test-ethereum-financial.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ ethereum-financial - -on: - workflow_dispatch: - pull_request: - paths: - - "ethereum-financial/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./ethereum-financial - secrets: inherit diff --git a/.github/workflows/test-ethereum-steth.yml b/.github/workflows/test-ethereum-steth.yml deleted file mode 100644 index d1cbcb37d..000000000 --- a/.github/workflows/test-ethereum-steth.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ ethereum-steth - -on: - workflow_dispatch: - pull_request: - paths: - - "ethereum-steth/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./ethereum-steth - secrets: inherit \ No newline at end of file diff --git a/.github/workflows/test-l2-bridge-arbitrum.yml b/.github/workflows/test-l2-bridge-arbitrum.yml deleted file mode 100644 index f61b9e6b4..000000000 --- a/.github/workflows/test-l2-bridge-arbitrum.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ l2-bridge-arbitrum - -on: - workflow_dispatch: - pull_request: - paths: - - "l2-bridge-arbitrum/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./l2-bridge-arbitrum - secrets: inherit diff --git a/.github/workflows/test-l2-bridge-base.yml b/.github/workflows/test-l2-bridge-base.yml deleted file mode 100644 index e420ac730..000000000 --- a/.github/workflows/test-l2-bridge-base.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ l2-bridge-base - -on: - workflow_dispatch: - pull_request: - paths: - - "l2-bridge-base/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./l2-bridge-base - secrets: inherit diff --git a/.github/workflows/test-l2-bridge-optimism.yml b/.github/workflows/test-l2-bridge-optimism.yml deleted file mode 100644 index e7938c591..000000000 --- a/.github/workflows/test-l2-bridge-optimism.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ l2-bridge-optimism - -on: - workflow_dispatch: - pull_request: - paths: - - "l2-bridge-optimism/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./l2-bridge-optimism - secrets: inherit diff --git a/.github/workflows/test-l2-bridge-scroll.yml b/.github/workflows/test-l2-bridge-scroll.yml deleted file mode 100644 index 14e2d3666..000000000 --- a/.github/workflows/test-l2-bridge-scroll.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ l2-bridge-scroll - -on: - workflow_dispatch: - pull_request: - paths: - - "l2-bridge-scroll/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./l2-bridge-scroll - secrets: inherit diff --git a/.github/workflows/test-storage-watcher.yml b/.github/workflows/test-storage-watcher.yml deleted file mode 100644 index 3b940ad09..000000000 --- a/.github/workflows/test-storage-watcher.yml +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Tests @ storage-watcher - -on: - workflow_dispatch: - pull_request: - paths: - - "storage-watcher/**" - -jobs: - tests: - uses: ./.github/workflows/_tests.yml - with: - path: ./storage-watcher - secrets: inherit diff --git a/bsc-adi-governance/README.md b/bsc-adi-governance/README.md index 141f92561..8816243ea 100644 --- a/bsc-adi-governance/README.md +++ b/bsc-adi-governance/README.md @@ -13,6 +13,13 @@ Alerts about events on the CrossChainExecutor **Alerts:** - 🚨🚨🚨 BSC a.DI: Guardians updated +- 🚨🚨🚨 BSC a.DI: Proxy admin changed +- 🚨🚨🚨 BSC a.DI: Proxy upgraded +- 🚨🚨🚨 BSC a.DI: Contract owner set to EOA 🚨🚨🚨 +- 🚨 BSC a.DI: Contract owner set to address not in whitelist +- 🚨 BSC a.DI: Allowed Bridges quorum updated +- 🚨 BSC a.DI: Allowed bridges set updated +- ⚠️ BSC a.DI: Message hasn’t achieved a quorum after 1 hour - ⚠️ BSC a.DI: Cross-chain executor delay updated - ⚠️ BSC a.DI: Cross-chain executor Grace Period updated - ⚠️ BSC a.DI: Cross-chain executor Min Delay updated diff --git a/ethereum-financial/jest.config.js b/bsc-adi-governance/jest.config.js similarity index 100% rename from ethereum-financial/jest.config.js rename to bsc-adi-governance/jest.config.js diff --git a/bsc-adi-governance/package.json b/bsc-adi-governance/package.json index 584dddd2f..fcd39198e 100644 --- a/bsc-adi-governance/package.json +++ b/bsc-adi-governance/package.json @@ -61,10 +61,10 @@ "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^5.0.1", "husky": "^8.0.3", - "jest": "^27.0.6", + "jest": "^29.7.0", "nodemon": "^2.0.8", "prettier": "^3.1.0", - "ts-jest": "^27.0.3", + "ts-jest": "^29.2.4", "typechain": "^8.3.2", "typescript": "^5.3.2" }, diff --git a/bsc-adi-governance/src/agent.ts b/bsc-adi-governance/src/agent.ts index 528bfe475..011c41f52 100644 --- a/bsc-adi-governance/src/agent.ts +++ b/bsc-adi-governance/src/agent.ts @@ -37,7 +37,12 @@ export function initialize(): Initialize { process.exit(1) } - const agents: string[] = [app.crossChainControllerSrv.getName(), app.crossChainExecutorWatcherSrv.getName()] + const agents: string[] = [ + app.crossChainControllerSrv.getName(), + app.crossChainExecutorWatcherSrv.getName(), + app.bscAclChangesSrv.getName(), + ] + metadata.agents = '[' + agents.toString() + ']' await app.findingsRW.write([ @@ -55,16 +60,11 @@ export function initialize(): Initialize { } } -let isHandleBlockRunning: boolean = false export const handleBlock = (): HandleBlock => { return async function (blockEvent: BlockEvent): Promise { console.log(`#BSC block: ${blockEvent.block.number}`) const startTime = new Date().getTime() - if (isHandleBlockRunning) { - return [] - } - isHandleBlockRunning = true const app = await App.getInstance() const findings: Finding[] = [] @@ -72,11 +72,15 @@ export const handleBlock = (): HandleBlock => { if (findingsAsync.length > 0) { findings.push(...findingsAsync) } + const [crossChainControllerFindings, bscAclChangesFindings] = await Promise.all([ + app.crossChainControllerSrv.handleBlock(blockEvent), + app.bscAclChangesSrv.handleBlock(blockEvent), + ]) + findings.push(...crossChainControllerFindings, ...bscAclChangesFindings) app.healthChecker.check(findings) console.log(elapsedTime('handleBlock', startTime) + '\n') - isHandleBlockRunning = false return findings } } diff --git a/bsc-adi-governance/src/app.ts b/bsc-adi-governance/src/app.ts index 447e99145..28d565544 100644 --- a/bsc-adi-governance/src/app.ts +++ b/bsc-adi-governance/src/app.ts @@ -3,6 +3,7 @@ import * as Winston from 'winston' import { BSCProvider } from './clients/bsc_provider' import { EventWatcherSrv } from './services/event-watcher/EventWatcher.srv' import { CrossChainControllerSrv } from './services/cross-chain-controller/CrossChainController.srv' +import { AclChangesSrv } from './services/acl-changes/AclChanges.srv' import { DataRW } from './utils/mutex' import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' import { CROSS_CHAIN_CONTROLLER_ADDRESS, CROSS_CHAIN_EXECUTOR_ADDRESS } from './utils/constants' @@ -13,6 +14,7 @@ export type Container = { bscClient: BSCProvider crossChainControllerSrv: CrossChainControllerSrv crossChainExecutorWatcherSrv: EventWatcherSrv + bscAclChangesSrv: AclChangesSrv findingsRW: DataRW healthChecker: HealthChecker } @@ -42,11 +44,13 @@ export class App { getCrossChainExecutorEvents(CROSS_CHAIN_EXECUTOR_ADDRESS), logger, ) + const bscAclChangesSrv = new AclChangesSrv(logger, bscClient) App.instance = { bscClient, crossChainControllerSrv, crossChainExecutorWatcherSrv, + bscAclChangesSrv, findingsRW: new DataRW([]), healthChecker: new HealthChecker(BorderTime, MaxNumberErrorsPerBorderTime), } diff --git a/bsc-adi-governance/src/clients/bsc_provider.ts b/bsc-adi-governance/src/clients/bsc_provider.ts index ccd3c2b19..5a239300f 100644 --- a/bsc-adi-governance/src/clients/bsc_provider.ts +++ b/bsc-adi-governance/src/clients/bsc_provider.ts @@ -5,12 +5,14 @@ import { retryAsync } from 'ts-retry' import { ICRossChainControllerClient } from '../services/cross-chain-controller/CrossChainController.srv' import { NetworkError } from '../utils/errors' import { BaseAdapter__factory, CrossChainController } from '../generated' +import { CROSS_CHAIN_CONTROLLER_ADDRESS } from '../utils/constants' +import { IAclChangesClient } from '../services/acl-changes/AclChanges.srv' const DELAY_IN_500MS = 500 const ATTEMPTS_5 = 5 const MAINNET_CHAIN_ID = 1 -export class BSCProvider implements ICRossChainControllerClient { +export class BSCProvider implements ICRossChainControllerClient, IAclChangesClient { private jsonRpcProvider: ethers.providers.JsonRpcProvider private crossChainControllerRunner: CrossChainController @@ -85,4 +87,86 @@ export class BSCProvider implements ICRossChainControllerClient { return E.left(new NetworkError(e, `Could not get bridge adapters list from CrossChainController contract`)) } } + + public async getEnvelopeStateByIds(envelopeIds: string[]): Promise>> { + try { + const out = new Map() + await Promise.all( + envelopeIds.map(async (envelopeId) => { + const status = await this.crossChainControllerRunner['getEnvelopeState(bytes32)'](envelopeId) + out.set(envelopeId, status) + }), + ) + return E.right(out) + } catch (e) { + return E.left(new NetworkError(e, `Could not get bridge adapters list from CrossChainController contract`)) + } + } + + public async getReceivedEnvelopeIds(fromBlock: number, toBlock: number): Promise> { + try { + const results = await retryAsync( + async () => { + const keccakEvent = ethers.utils.keccak256( + ethers.utils.toUtf8Bytes('TransactionReceived(bytes32,bytes32,uint256,(uint256,bytes),address,uint8)'), + ) + const address = CROSS_CHAIN_CONTROLLER_ADDRESS + return this.jsonRpcProvider.getLogs({ + fromBlock: `0x${fromBlock.toString(16)}`, + toBlock: `0x${toBlock.toString(16)}`, + address, + topics: [keccakEvent, null, '0x0000000000000000000000000000000000000000000000000000000000000001', null], + }) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + const iface = new ethers.utils.Interface([ + 'event TransactionReceived(bytes32 transactionId, bytes32 indexed envelopeId, uint256 indexed originChainId, (uint256,bytes), address indexed bridgeAdapter, uint8 confirmations)', + ]) + const out = results.map((result) => iface.parseLog(result)) + const res: string[] = out.map((out) => out.args.envelopeId) + return E.right(res) + } catch (e) { + return E.left(new NetworkError(e, `Could not call jsonRpcProvider.getStonksOrderParams`)) + } + } + public async getContractOwner( + address: string, + method: string, + currentBlock: number, + ): Promise> { + /* + getContractOwner calls the method written in the ownershipMethod field in contract description + and returns the owner of the contract address. + */ + try { + const members = await retryAsync( + async (): Promise => { + const abi = [`function ${method}() view returns (address)`] + const contract = new ethers.Contract(address, abi, this.jsonRpcProvider) + return contract.functions[method]({ blockTag: currentBlock }) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + return E.right(String(members)) + } catch (e) { + return E.left(new NetworkError(e, `Could not call ethers.Contract for address ${address}`)) + } + } + + public async isDeployed(address: string, blockNumber?: number): Promise> { + try { + const result = await retryAsync( + async (): Promise => { + const code = await this.jsonRpcProvider.getCode(address, blockNumber) + return code !== '0x' + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + + return E.right(result) + } catch (e) { + return E.left(new NetworkError(e, `Could not call jsonRpcProvider.getCode for address ${address}`)) + } + } } diff --git a/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.spec.ts b/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.spec.ts new file mode 100644 index 000000000..cb5e8e529 --- /dev/null +++ b/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.spec.ts @@ -0,0 +1,55 @@ +import * as Winston from 'winston' +import { BlockEvent, Finding, getEthersProvider } from 'forta-agent' + +import { AclChangesSrv } from './AclChanges.srv' +import { CrossChainController__factory } from '../../generated' +import { CROSS_CHAIN_CONTROLLER_ADDRESS } from '../../utils/constants' +import { BSCProvider } from '../../clients/bsc_provider' + +const TEST_TIMEOUT = 120_000 // ms + +describe('AclChanges srv functional tests', () => { + const ethersProvider = getEthersProvider() + + const crossChainControllerRunner = CrossChainController__factory.connect( + CROSS_CHAIN_CONTROLLER_ADDRESS, + ethersProvider, + ) + + const bscClient = new BSCProvider(ethersProvider, crossChainControllerRunner) + + const logger: Winston.Logger = Winston.createLogger({ + format: Winston.format.simple(), + transports: [new Winston.transports.Console()], + }) + + const service = new AclChangesSrv(logger, bscClient) + + let runBlock: (blockNumber: number, initBlock: number) => Promise + + beforeAll(() => { + jest.spyOn(console, 'log').mockImplementation(() => {}) + jest.spyOn(Date, 'now').mockImplementation(() => new Date('2024-01-01').getTime()) + + runBlock = async (blockNumber, initBlock) => { + if (initBlock > Number(blockNumber)) { + throw new Error('Wrong initial block or argument order') + } + const BlockEventHack = { blockNumber } as BlockEvent + return service.handleBlock(BlockEventHack) + } + }) + + afterAll(() => { + jest.resetAllMocks() + }) + + it( + 'should find owner not in whitelist', + async () => { + const findings = await runBlock(39776807, 39776806) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) +}) diff --git a/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.ts b/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.ts new file mode 100644 index 000000000..52859da78 --- /dev/null +++ b/bsc-adi-governance/src/services/acl-changes/AclChanges.srv.ts @@ -0,0 +1,139 @@ +import { BlockEvent, Finding, FindingSeverity, FindingType } from 'forta-agent' + +import { bscscanAddress } from '../../utils/string' + +import { + WHITELISTED_OWNERS, + OWNABLE_CONTRACTS, + NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL, + NEW_OWNER_IS_EOA_REPORT_INTERVAL, +} from '../../utils/constants' + +import * as E from 'fp-ts/Either' +import { elapsedTime } from '../../utils/time' +import { Logger } from 'winston' +import { networkAlert } from '../../utils/errors' + +export abstract class IAclChangesClient { + public abstract getContractOwner( + address: string, + method: string, + currentBlock: number, + ): Promise> + public abstract isDeployed(address: string, blockNumber: number): Promise> +} + +export class AclChangesSrv { + private readonly logger: Logger + private readonly name = 'AclChangesSrv' + private readonly bscClient: IAclChangesClient + private readonly findingsTimestamps: Map + + constructor(logger: Logger, bscClient: IAclChangesClient) { + this.logger = logger + this.bscClient = bscClient + this.findingsTimestamps = new Map() + } + + public getName(): string { + return this.name + } + + public async handleBlock(block: BlockEvent) { + const start = new Date().getTime() + + const findings = await this.handleOwnerChange(block) + + this.logger.info(elapsedTime(AclChangesSrv.name + '.' + this.handleBlock.name, start)) + return findings + } + + public async handleOwnerChange(block: BlockEvent): Promise { + const start = new Date().getTime() + const out: Finding[] = [] + + const now = Date.now() + + const promises = Array.from(OWNABLE_CONTRACTS.keys()).map(async (address: string) => { + const ownableContract = OWNABLE_CONTRACTS.get(address) + if (!ownableContract) { + return + } + + const curOwner = await this.bscClient.getContractOwner( + address, + ownableContract.ownershipMethod, + block.blockNumber, + ) + + if (E.isLeft(curOwner)) { + out.push( + networkAlert( + curOwner.left, + `Error in ${AclChangesSrv.name}.${this.handleOwnerChange.name} (uid:2e0d0deb)`, + `Could not call ethProvider.getContractOwner for address - ${address}`, + ), + ) + return + } + + const curOwnerAddress = curOwner.right.toLowerCase() + if (ownableContract?.ownerAddress && ownableContract?.ownerAddress === curOwnerAddress) { + return + } + + if (!ownableContract?.ownerAddress && WHITELISTED_OWNERS.includes(curOwnerAddress)) { + return + } + + const curOwnerIsContract = await this.bscClient.isDeployed(curOwner.right, block.blockNumber) + + if (E.isLeft(curOwnerIsContract)) { + out.push( + networkAlert( + curOwnerIsContract.left, + `Error in ${AclChangesSrv.name}.${this.handleOwnerChange.name} (uid:b700c6ad)`, + `Could not call ethProvider.isDeployed for curOwner - ${curOwner}`, + ), + ) + return + } + + const key = `${address}+${curOwner}` + // skip if reported recently + const lastReportTimestamp = this.findingsTimestamps.get(key) + const interval = curOwnerIsContract.right + ? NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL * 1000 // in ms + : NEW_OWNER_IS_EOA_REPORT_INTERVAL * 1000 // in ms + if (lastReportTimestamp && interval > now - lastReportTimestamp) { + return + } + + out.push( + Finding.fromObject({ + name: curOwnerIsContract.right + ? '🚨 BSC a.DI: Contract owner set to address not in whitelist' + : '🚨🚨🚨 BSC a.DI: Contract owner set to EOA 🚨🚨🚨', + description: `${ownableContract.name} contract (${bscscanAddress(address)}) owner is set to ${ + curOwnerIsContract.right ? 'contract' : 'EOA' + } address ${bscscanAddress(curOwner.right)}`, + alertId: 'BSC-ADI-VAULT-CONTRACT-OWNER', + type: FindingType.Suspicious, + severity: curOwnerIsContract.right ? FindingSeverity.High : FindingSeverity.Critical, + metadata: { + contract: address, + name: ownableContract.name, + owner: curOwner.right, + }, + }), + ) + + this.findingsTimestamps.set(key, now) + }) + + await Promise.all(promises) + + this.logger.info(elapsedTime(AclChangesSrv.name + '.' + this.handleOwnerChange.name, start)) + return out + } +} diff --git a/bsc-adi-governance/src/services/acl-changes/__snapshots__/AclChanges.srv.spec.ts.snap b/bsc-adi-governance/src/services/acl-changes/__snapshots__/AclChanges.srv.spec.ts.snap new file mode 100644 index 000000000..c96d42204 --- /dev/null +++ b/bsc-adi-governance/src/services/acl-changes/__snapshots__/AclChanges.srv.spec.ts.snap @@ -0,0 +1,24 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`AclChanges srv functional tests should find owner not in whitelist 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "BSC-ADI-VAULT-CONTRACT-OWNER", + "description": "BSC ADI upgradeable Proxy Admin contract ([0x40c4464fca8cacd550c33b39d674fc257966022f](https://bscscan.com/address/0x40c4464fca8cacd550c33b39d674fc257966022f)) owner is set to contract address [0x250227c30e3b26525f292f63756e5eB3C425427E](https://bscscan.com/address/0x250227c30e3b26525f292f63756e5eB3C425427E)", + "labels": [], + "metadata": { + "contract": "0x40c4464fca8cacd550c33b39d674fc257966022f", + "name": "BSC ADI upgradeable Proxy Admin", + "owner": "0x250227c30e3b26525f292f63756e5eB3C425427E", + }, + "name": "🚨 BSC a.DI: Contract owner set to address not in whitelist", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 2, + "uniqueKey": "", + }, +] +`; diff --git a/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.spec.ts b/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.spec.ts new file mode 100644 index 000000000..594e8d00f --- /dev/null +++ b/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.spec.ts @@ -0,0 +1,129 @@ +import { TransactionDto } from '../../utils/types' +import * as Winston from 'winston' +import { BlockEvent, ethers, Finding, getEthersProvider } from 'forta-agent' + +import { CrossChainControllerSrv } from './CrossChainController.srv' +import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' +import { BSCProvider } from '../../clients/bsc_provider' +import { CrossChainController__factory } from '../../generated' +import { CROSS_CHAIN_CONTROLLER_ADDRESS } from '../../utils/constants' +import { getFortaConfig } from 'forta-agent/dist/sdk/utils' + +const TEST_TIMEOUT = 120_000 // ms + +describe('CrossChainController Srv functional tests', () => { + const chainId = 56 + const ethProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) + + const ethersProvider = getEthersProvider() + + const crossChainControllerRunner = CrossChainController__factory.connect( + CROSS_CHAIN_CONTROLLER_ADDRESS, + ethersProvider, + ) + + const bscClient = new BSCProvider(ethersProvider, crossChainControllerRunner) + + const logger: Winston.Logger = Winston.createLogger({ + format: Winston.format.simple(), + transports: [new Winston.transports.Console()], + }) + + const service = new CrossChainControllerSrv(logger, bscClient, CROSS_CHAIN_CONTROLLER_ADDRESS) + + let runTransaction: (txHash: string, initBlock: number) => Promise + let runBlock: (blockNumber: number, initBlock: number) => Promise + + beforeAll(() => { + jest.spyOn(console, 'log').mockImplementation(() => {}) + jest.spyOn(Date, 'now').mockImplementation(() => new Date('2024-01-01').getTime()) + + runTransaction = async (txHash: string, initBlock: number) => { + const trx = await ethProvider.getTransaction(txHash) + const receipt = await trx.wait() + const transactionDto: TransactionDto = { + logs: receipt.logs, + to: trx.to ? trx.to : null, + block: { + timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), + number: trx.blockNumber ? trx.blockNumber : 1, + }, + } + await service.initialize(initBlock) + return service.handleTransaction(transactionDto as TransactionEvent) + } + + runBlock = async (blockNumber, initBlock) => { + if (initBlock > Number(blockNumber)) { + throw new Error('Wrong initial block or argument order') + } + const initErr = await service.initialize(initBlock) + if (initErr instanceof Error) { + throw initErr + } + const BlockEventHack = { blockNumber } as BlockEvent + return service.handleBlock(BlockEventHack) + } + }) + + afterAll(() => { + jest.resetAllMocks() + }) + + it( + 'should find ConfirmationsUpdated', + async () => { + const findings = await runTransaction( + '0x1042618d67813e40d9cae2d4e4f72924963c72455140ca921ab29eaff5aaed55', + 39776560, + ) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) + + it( + 'should find TransactionReceived', + async () => { + const findings = await runTransaction( + '0x81b925698152319f40e667c12d0da2370562f4f0d9f9c166ce7bcddbc5f0dcb3', + 39920557, + ) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) + + it( + 'should find 4 ReceiverBridgeAdaptersUpdated', + async () => { + const findings = await runTransaction( + '0x86a1f2ae752fec82b647b6dfecedcf702ba83161b92b2dd9228e3a3dde3f2462', + 39776551, + ) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) + + it( + 'should find GuardianUpdated and AdminChanged and Upgraded(proxy)', + async () => { + const findings = await runTransaction( + '0xda1572eb6360116ea0fbd9f898b1413823ba2ab4bb1cbb5e150cce42c68a687c', + 39775722, + ) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) + + it( + 'should find 2 receive event but message is delivered', + async () => { + const findings = await runBlock(39921800, 39921799) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) +}) diff --git a/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.ts b/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.ts index 8f6837533..3fbce7aad 100644 --- a/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.ts +++ b/bsc-adi-governance/src/services/cross-chain-controller/CrossChainController.srv.ts @@ -1,13 +1,23 @@ import { Logger } from 'winston' import { elapsedTime } from '../../utils/time' -import { TransactionEvent, Finding, FindingSeverity, FindingType } from 'forta-agent' +import { TransactionEvent, Finding, FindingSeverity, FindingType, BlockEvent } from 'forta-agent' import { either as E } from 'fp-ts' import { filterLogs } from '../../utils/filter_logs' import { handleEventsOfNotice } from '../../utils/handle_events_of_notice' import { getCrossChainControllerEvents } from '../../utils/events/cross_chain_controller_events' +import { + CROSS_CHAIN_CONTROLLER_ADDRESS, + ENVELOPE_STATE, + HOUR_IN_BLOCKS, + PERIODICAL_BLOCK_INTERVAL, +} from '../../utils/constants' +import { networkAlert } from '../../utils/errors' +import { bscscanAddress } from '../../utils/string' export abstract class ICRossChainControllerClient { public abstract getBridgeAdaptersNamesMap(): Promise>> + public abstract getReceivedEnvelopeIds(fromBlock: number, toBlock: number): Promise> + public abstract getEnvelopeStateByIds(envelopeIds: string[]): Promise>> } export class CrossChainControllerSrv { @@ -16,7 +26,7 @@ export class CrossChainControllerSrv { private readonly bscClient: ICRossChainControllerClient private readonly crossChainControllerAddress: string private readonly transactionReceivedEvent = - 'event TransactionReceived(bytes32 transactionId, bytes32 indexed envelopeId, uint256 indexed originChainId, Transaction transaction, address indexed bridgeAdapter, uint8 confirmations)' + 'event TransactionReceived(bytes32 transactionId, bytes32 indexed envelopeId, uint256 indexed originChainId, (uint256,bytes), address indexed bridgeAdapter, uint8 confirmations)' private adaptersNamesMap: Map constructor(logger: Logger, bscClient: ICRossChainControllerClient, crossChainControllerAddress: string) { @@ -44,6 +54,67 @@ export class CrossChainControllerSrv { return this.name } + public async handleBlock(block: BlockEvent): Promise { + const start = new Date().getTime() + const findings = await this.handleEnvelopeDelay(block) + + this.logger.info(elapsedTime(this.name + '.' + this.handleBlock.name, start)) + return findings + } + + private async handleEnvelopeDelay(block: BlockEvent): Promise { + const start = new Date().getTime() + const out: Finding[] = [] + + if (block.blockNumber % PERIODICAL_BLOCK_INTERVAL != 0) { + return out + } + + const fromBlock = block.blockNumber - HOUR_IN_BLOCKS - PERIODICAL_BLOCK_INTERVAL + const fromTo = block.blockNumber - HOUR_IN_BLOCKS + + const envelopeIds = await this.bscClient.getReceivedEnvelopeIds(fromBlock, fromTo) + if (E.isLeft(envelopeIds)) { + out.push( + networkAlert( + envelopeIds.left as unknown as Error, + `Error in ${this.name}.${this.handleEnvelopeDelay.name} (uid:da8927ff)`, + `Could not call ethProvider.getReceivedEnvelopeIds`, + ), + ) + return out + } + + const envelopeStates = await this.bscClient.getEnvelopeStateByIds(envelopeIds.right) + if (E.isLeft(envelopeStates)) { + out.push( + networkAlert( + envelopeStates.left as unknown as Error, + `Error in ${this.name}.${this.handleEnvelopeDelay.name} (uid:2ddcc824)`, + `Could not call ethProvider.getEnvelopeStateByIds`, + ), + ) + return out + } + + envelopeStates.right.forEach((state, id) => { + if (state === ENVELOPE_STATE.DELIVERED) { + return + } + out.push( + Finding.fromObject({ + name: '⚠️ BSC a.DI: Message hasn’t achieved a quorum after 1 hour passed', + description: `Message envelope id - '${id} at ${bscscanAddress(CROSS_CHAIN_CONTROLLER_ADDRESS)}'`, + alertId: 'BSC-ADI-MESSAGE-NO-QUORUM-HOUR', + severity: FindingSeverity.Medium, + type: FindingType.Info, + }), + ) + }) + + this.logger.info(elapsedTime(this.name + '.' + this.handleEnvelopeDelay.name, start)) + return out + } public async handleTransaction(txEvent: TransactionEvent) { const start = new Date().getTime() const findings: Finding[] = [] diff --git a/bsc-adi-governance/src/services/cross-chain-controller/__snapshots__/CrossChainController.srv.spec.ts.snap b/bsc-adi-governance/src/services/cross-chain-controller/__snapshots__/CrossChainController.srv.spec.ts.snap new file mode 100644 index 000000000..942c1d276 --- /dev/null +++ b/bsc-adi-governance/src/services/cross-chain-controller/__snapshots__/CrossChainController.srv.spec.ts.snap @@ -0,0 +1,169 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`CrossChainController Srv functional tests should find 2 receive event but message is delivered 1`] = `[]`; + +exports[`CrossChainController Srv functional tests should find 4 ReceiverBridgeAdaptersUpdated 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "BSC-ADI-BRIDGE-SET-UPDATED", + "description": "Allowed bridges set updated - added 0x15AD245133568c2498c7dA0cf2204A03b0e9b98A", + "labels": [], + "metadata": { + "args": "0x15AD245133568c2498c7dA0cf2204A03b0e9b98A,true,1", + }, + "name": "🚨 BSC a.DI: Allowed bridges set updated", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "BSC-ADI-BRIDGE-SET-UPDATED", + "description": "Allowed bridges set updated - added 0xc934433f4c433Cf80DE6fB65fd70C7a650D8a408", + "labels": [], + "metadata": { + "args": "0xc934433f4c433Cf80DE6fB65fd70C7a650D8a408,true,1", + }, + "name": "🚨 BSC a.DI: Allowed bridges set updated", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "BSC-ADI-BRIDGE-SET-UPDATED", + "description": "Allowed bridges set updated - added 0xCd867B440c726461e5fAbe8d3a050b2f8701C230", + "labels": [], + "metadata": { + "args": "0xCd867B440c726461e5fAbe8d3a050b2f8701C230,true,1", + }, + "name": "🚨 BSC a.DI: Allowed bridges set updated", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "BSC-ADI-BRIDGE-SET-UPDATED", + "description": "Allowed bridges set updated - added 0xBb1E43408BbF2C767Ff3Bd5bBC34E183CC1Ef119", + "labels": [], + "metadata": { + "args": "0xBb1E43408BbF2C767Ff3Bd5bBC34E183CC1Ef119,true,1", + }, + "name": "🚨 BSC a.DI: Allowed bridges set updated", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; + +exports[`CrossChainController Srv functional tests should find ConfirmationsUpdated 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "BSC-ADI-CONFIRMATIONS-UPDATED", + "description": "Allowed bridges quorum updated to 3", + "labels": [], + "metadata": { + "args": "3,1", + }, + "name": "🚨 BSC a.DI: Allowed Bridges quorum updated", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; + +exports[`CrossChainController Srv functional tests should find GuardianUpdated and AdminChanged and Upgraded(proxy) 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "PROXY-ADMIN-CHANGED", + "description": "Proxy admin for bnbCrossChainControllerAddress (0x40c4464fca8cacd550c33b39d674fc257966022f) was changed from 0x0000000000000000000000000000000000000000 to 0x29E6817db339795766244B96aEf5Dc534a98518d +(detected by event)", + "labels": [], + "metadata": { + "args": "0x0000000000000000000000000000000000000000,0x29E6817db339795766244B96aEf5Dc534a98518d", + }, + "name": "🚨🚨🚨 BSC a.DI: Proxy admin changed", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "PROXY-UPGRADED", + "description": "Proxy for bnbCrossChainControllerAddress (0x40c4464fca8cacd550c33b39d674fc257966022f) was updated to 0xB7Ba81dd07885ae7BFD18452B36D3404d7EDD8Ee +(detected by event)", + "labels": [], + "metadata": { + "args": "0xB7Ba81dd07885ae7BFD18452B36D3404d7EDD8Ee", + }, + "name": "🚨🚨🚨 BSC a.DI: Proxy upgraded", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "BSC-ADI-GUARDIAN-UPDATED", + "description": "Guardian was updated from 0x0000000000000000000000000000000000000000 to 0x0000000000000000000000000000000000000000", + "labels": [], + "metadata": { + "args": "0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000000", + }, + "name": "🚨🚨🚨 BSC a.DI: Guardians updated", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; + +exports[`CrossChainController Srv functional tests should find TransactionReceived 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "BSC-ADI-MESSAGE-RECEIVED", + "description": "CrossChainController received a message from 0xCd867B440c726461e5fAbe8d3a050b2f8701C230 (Hyperlane adapter)", + "labels": [], + "metadata": { + "args": "0x9a3408ef1a0ec12a5081af3a1ea3b669dd0b2caecf617ec81647c71a5ccced13,0x0c39ef7274a750de961d1ee0e2083ecccacef2c4c5bd3499317f3f2177e43470,1,0,0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000184d39300f2fa4419d04998e9c58cb5de586d879000000000000000000000000250227c30e3b26525f292f63756e5eb3c425427e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000003800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000000200000000000000000000000040c4464fca8cacd550c33b39d674fc257966022f00000000000000000000000029e6817db339795766244b96aef5dc534a98518d000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001a7472616e736665724f776e657273686970286164647265737329000000000000000000000000000000000000000000000000000000000000000000000000001a7472616e736665724f776e65727368697028616464726573732900000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000200000000000000000000000008e5175d17f74d1d512de59b2f5d5a5d8177a123d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000008e5175d17f74d1d512de59b2f5d5a5d8177a123d000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0xCd867B440c726461e5fAbe8d3a050b2f8701C230,1", + }, + "name": "ℹ️ BSC a.DI: Message received by the Hyperlane adapter", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2024-01-01T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; diff --git a/bsc-adi-governance/src/services/event-watcher/EventWatcher.srv.spec.ts b/bsc-adi-governance/src/services/event-watcher/EventWatcher.srv.spec.ts new file mode 100644 index 000000000..9ab1ac39d --- /dev/null +++ b/bsc-adi-governance/src/services/event-watcher/EventWatcher.srv.spec.ts @@ -0,0 +1,66 @@ +import * as Winston from 'winston' +import { ethers, Finding } from 'forta-agent' + +import { EventWatcherSrv } from './EventWatcher.srv' +import { getFortaConfig } from 'forta-agent/dist/sdk/utils' +import { getCrossChainExecutorEvents } from '../../utils/events/cross_chain_executor_events' +import { CROSS_CHAIN_EXECUTOR_ADDRESS } from '../../utils/constants' +import { TransactionDto } from '../../utils/types' +import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' + +const TEST_TIMEOUT = 120_000 // ms + +describe('EventWatcher srv functional tests', () => { + const chainId = 56 + const ethProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) + + const logger: Winston.Logger = Winston.createLogger({ + format: Winston.format.simple(), + transports: [new Winston.transports.Console()], + }) + + const service = new EventWatcherSrv( + 'CrossChainExecutorWatcher', + getCrossChainExecutorEvents(CROSS_CHAIN_EXECUTOR_ADDRESS), + logger, + ) + + let runTransaction: (txHash: string, initBlock?: number) => Promise + + beforeAll(() => { + jest.spyOn(console, 'log').mockImplementation(() => {}) + jest.spyOn(Date, 'now').mockImplementation(() => new Date('2024-01-01').getTime()) + + runTransaction = async (txHash: string) => { + const trx = await ethProvider.getTransaction(txHash) + const receipt = await trx.wait() + + const transactionDto: TransactionDto = { + logs: receipt.logs, + to: trx.to ? trx.to : null, + block: { + timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), + number: trx.blockNumber ? trx.blockNumber : 1, + }, + } + + return service.handleTransaction(transactionDto as TransactionEvent) + } + }) + + afterAll(() => { + jest.resetAllMocks() + }) + + it( + 'should find nothing', + async () => { + const findings = await runTransaction( + '0xda1572eb6360116ea0fbd9f898b1413823ba2ab4bb1cbb5e150cce42c68a687c', + 39775722, + ) + expect(findings).toMatchSnapshot() + }, + TEST_TIMEOUT, + ) +}) diff --git a/bsc-adi-governance/src/services/event-watcher/__snapshots__/EventWatcher.srv.spec.ts.snap b/bsc-adi-governance/src/services/event-watcher/__snapshots__/EventWatcher.srv.spec.ts.snap new file mode 100644 index 000000000..1902141b4 --- /dev/null +++ b/bsc-adi-governance/src/services/event-watcher/__snapshots__/EventWatcher.srv.spec.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`EventWatcher srv functional tests should find nothing 1`] = `[]`; diff --git a/bsc-adi-governance/src/utils/constants.ts b/bsc-adi-governance/src/utils/constants.ts index 4283dcfba..64458a51b 100644 --- a/bsc-adi-governance/src/utils/constants.ts +++ b/bsc-adi-governance/src/utils/constants.ts @@ -1,2 +1,34 @@ export const CROSS_CHAIN_EXECUTOR_ADDRESS = '0x8e5175d17f74d1d512de59b2f5d5a5d8177a123d' export const CROSS_CHAIN_CONTROLLER_ADDRESS = '0x40c4464fca8cacd550c33b39d674fc257966022f' +export const PERIODICAL_BLOCK_INTERVAL = 20 * 5 // 5 min in blocks +export const HOUR_IN_BLOCKS = 20 * 60 // 60 min in blocks + +export enum ENVELOPE_STATE { + NONE, + CONFIRMED, + DELIVERED, +} + +// ACL +export const NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL = 24 * 60 * 60 // 24h +export const NEW_OWNER_IS_EOA_REPORT_INTERVAL = 60 * 60 // 1h + +// Rewards contracts allowed owners +export const WHITELISTED_OWNERS = [CROSS_CHAIN_EXECUTOR_ADDRESS] + +export interface IOwnable { + name: string + ownershipMethod: string + ownerAddress?: string +} + +// List of contracts to monitor for owner +export const OWNABLE_CONTRACTS = new Map([ + [ + CROSS_CHAIN_CONTROLLER_ADDRESS, + { + name: 'BSC ADI upgradeable Proxy Admin', + ownershipMethod: 'owner', + }, + ], +]) diff --git a/bsc-adi-governance/src/utils/events/cross_chain_controller_events.ts b/bsc-adi-governance/src/utils/events/cross_chain_controller_events.ts index 038d384f2..2e236c47a 100644 --- a/bsc-adi-governance/src/utils/events/cross_chain_controller_events.ts +++ b/bsc-adi-governance/src/utils/events/cross_chain_controller_events.ts @@ -4,6 +4,39 @@ import { EventOfNotice } from '../types' export function getCrossChainControllerEvents(crossChainControllerAddress: string): EventOfNotice[] { return [ + { + address: crossChainControllerAddress, + event: 'event AdminChanged(address previousAdmin, address newAdmin)', + alertId: 'PROXY-ADMIN-CHANGED', + name: `🚨🚨🚨 BSC a.DI: Proxy admin changed`, + description: (args: Result) => + `Proxy admin for bnbCrossChainControllerAddress (${crossChainControllerAddress}) ` + + `was changed from ${args.previousAdmin} to ${args.newAdmin}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: crossChainControllerAddress, + event: 'event Upgraded(address indexed implementation)', + alertId: 'PROXY-UPGRADED', + name: `🚨🚨🚨 BSC a.DI: Proxy upgraded`, + description: (args: Result) => + `Proxy for bnbCrossChainControllerAddress (${crossChainControllerAddress}) ` + + `was updated to ${args.implementation}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: crossChainControllerAddress, + event: 'event GuardianUpdated(address oldGuardian, address newGuardian)', + alertId: 'BSC-ADI-GUARDIAN-UPDATED', + name: '🚨🚨🚨 BSC a.DI: Guardians updated', + description: (args: Result) => `Guardian was updated from ` + `${args.oldGuardian} to ${args.newGuardian}`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, { address: crossChainControllerAddress, event: 'event ConfirmationsUpdated(uint8 newConfirmations, uint256 indexed chainId)', @@ -13,5 +46,16 @@ export function getCrossChainControllerEvents(crossChainControllerAddress: strin severity: FindingSeverity.High, type: FindingType.Info, }, + { + address: crossChainControllerAddress, + event: + 'event ReceiverBridgeAdaptersUpdated(address indexed bridgeAdapter, bool indexed allowed, uint256 indexed chainId)', + alertId: 'BSC-ADI-BRIDGE-SET-UPDATED', + name: '🚨 BSC a.DI: Allowed bridges set updated', + description: (args: Result) => + `Allowed bridges set updated - ${args.allowed ? 'added' : 'removed'} ${args.bridgeAdapter}`, + severity: FindingSeverity.High, + type: FindingType.Info, + }, ] } diff --git a/bsc-adi-governance/src/utils/string.ts b/bsc-adi-governance/src/utils/string.ts new file mode 100644 index 000000000..032164375 --- /dev/null +++ b/bsc-adi-governance/src/utils/string.ts @@ -0,0 +1,3 @@ +export function bscscanAddress(address: string): string { + return `[${address}](https://bscscan.com/address/${address})` +} diff --git a/bsc-adi-governance/yarn.lock b/bsc-adi-governance/yarn.lock index 123d56bb8..d9e6e18dd 100644 --- a/bsc-adi-governance/yarn.lock +++ b/bsc-adi-governance/yarn.lock @@ -23,7 +23,33 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/compat-data@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" + integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== + +"@babel/core@^7.11.6", "@babel/core@^7.23.9": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" + integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/helper-compilation-targets" "^7.25.2" + "@babel/helper-module-transforms" "^7.25.2" + "@babel/helpers" "^7.25.0" + "@babel/parser" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.2" + "@babel/types" "^7.25.2" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.12.3": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== @@ -54,6 +80,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" + integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== + dependencies: + "@babel/types" "^7.25.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^2.5.1" + "@babel/helper-compilation-targets@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" @@ -65,6 +101,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" + integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw== + dependencies: + "@babel/compat-data" "^7.25.2" + "@babel/helper-validator-option" "^7.24.8" + browserslist "^4.23.1" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-environment-visitor@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" @@ -106,6 +153,16 @@ "@babel/helper-split-export-declaration" "^7.24.7" "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-module-transforms@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" + integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ== + dependencies: + "@babel/helper-module-imports" "^7.24.7" + "@babel/helper-simple-access" "^7.24.7" + "@babel/helper-validator-identifier" "^7.24.7" + "@babel/traverse" "^7.25.2" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" @@ -131,6 +188,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" @@ -141,6 +203,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== +"@babel/helper-validator-option@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" + integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== + "@babel/helpers@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" @@ -149,6 +216,14 @@ "@babel/template" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helpers@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" + integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw== + dependencies: + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.0" + "@babel/highlight@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" @@ -164,6 +239,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== +"@babel/parser@^7.23.9", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065" + integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw== + dependencies: + "@babel/types" "^7.25.2" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -199,6 +281,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.7.2": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" + integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.7" + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -264,7 +353,16 @@ "@babel/parser" "^7.24.7" "@babel/types" "^7.24.7" -"@babel/traverse@^7.24.7", "@babel/traverse@^7.7.2": +"@babel/template@^7.25.0": + version "7.25.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" + integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/parser" "^7.25.0" + "@babel/types" "^7.25.0" + +"@babel/traverse@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== @@ -280,6 +378,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.2": + version "7.25.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" + integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== + dependencies: + "@babel/code-frame" "^7.24.7" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/types" "^7.25.2" + debug "^4.3.1" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" @@ -289,6 +400,15 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.0", "@babel/types@^7.25.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" + integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -741,178 +861,201 @@ js-yaml "^3.13.1" resolve-from "^5.0.0" -"@istanbuljs/schema@^0.1.2": +"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" +"@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== + dependencies: + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.8.1" + ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - rimraf "^3.0.0" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== +"@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.5.1" + jest-mock "^29.7.0" -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" + jest-get-type "^29.6.3" + +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== + dependencies: + expect "^29.7.0" + jest-snapshot "^29.7.0" + +"@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== + dependencies: + "@jest/types" "^29.6.3" + "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== +"@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" + glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: + "@sinclair/typebox" "^0.27.8" + +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" - source-map "^0.6.0" -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== +"@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^27.5.1" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" + jest-haste-map "^29.7.0" + slash "^3.0.0" -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== +"@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.3" + "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" + write-file-atomic "^4.0.2" -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== +"@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" - "@types/yargs" "^16.0.0" + "@types/yargs" "^17.0.8" chalk "^4.0.0" "@jridgewell/gen-mapping@^0.3.5": @@ -939,7 +1082,7 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -1031,24 +1174,24 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" - integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: - "@sinonjs/commons" "^1.7.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@sinonjs/commons" "^3.0.0" "@tsconfig/node20@^20.1.2": version "20.1.4" @@ -1063,7 +1206,7 @@ lodash "^4.17.15" ts-essentials "^7.0.1" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.1.14": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -1089,14 +1232,14 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.20.6" resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" -"@types/graceful-fs@^4.1.2": +"@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== @@ -1154,7 +1297,7 @@ dependencies: "@types/node" "*" -"@types/prettier@^2.1.1", "@types/prettier@^2.1.5": +"@types/prettier@^2.1.1": version "2.7.3" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== @@ -1184,10 +1327,10 @@ resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== -"@types/yargs@^16.0.0": - version "16.0.9" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.9.tgz#ba506215e45f7707e6cbcaf386981155b7ab956e" - integrity sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA== +"@types/yargs@^17.0.8": + version "17.0.32" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" @@ -1330,35 +1473,12 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.9.0: +acorn@^8.9.0: version "8.12.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== @@ -1368,13 +1488,6 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1501,16 +1614,15 @@ axios@^1.6.2: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" + babel-preset-jest "^29.6.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -1526,14 +1638,14 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" + "@types/babel__core" "^7.1.14" "@types/babel__traverse" "^7.0.6" babel-preset-current-node-syntax@^1.0.0: @@ -1554,12 +1666,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: - babel-plugin-jest-hoist "^27.5.1" + babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -1629,11 +1741,6 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - browserify-aes@^1.0.4, browserify-aes@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" @@ -1699,6 +1806,16 @@ browserslist@^4.22.2: node-releases "^2.0.14" update-browserslist-db "^1.0.16" +browserslist@^4.23.1: + version "4.23.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" + integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== + dependencies: + caniuse-lite "^1.0.30001646" + electron-to-chromium "^1.5.4" + node-releases "^2.0.18" + update-browserslist-db "^1.1.0" + bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1759,6 +1876,11 @@ caniuse-lite@^1.0.30001629: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== +caniuse-lite@^1.0.30001646: + version "1.0.30001649" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992" + integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ== + chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1768,7 +1890,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1922,11 +2044,6 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -convert-source-map@^1.4.0, convert-source-map@^1.6.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" @@ -1968,6 +2085,19 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -1994,39 +2124,6 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2034,15 +2131,17 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -decimal.js@^10.2.1: - version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" + integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== + dependencies: + ms "2.1.2" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@^1.0.0: + version "1.5.3" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== deep-extend@~0.6.0: version "0.6.0" @@ -2082,6 +2181,11 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" @@ -2105,18 +2209,23 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: - webidl-conversions "^5.0.0" + jake "^10.8.5" electron-to-chromium@^1.4.796: version "1.4.806" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.806.tgz#2cb046631cbabceb26fc72be68d273fa183e36bc" integrity sha512-nkoEX2QIB8kwCOtvtgwhXWy2IHVcOLQZu9Qo36uaGB835mdX/h8uLRlosL6QIhLVUnAiicXRW00PwaPZC74Nrg== +electron-to-chromium@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz#cd477c830dd6fca41fbd5465c1ff6ce08ac22343" + integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== + elliptic@6.5.4: version "6.5.4" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" @@ -2143,10 +2252,10 @@ elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" @@ -2185,17 +2294,6 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escodegen@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" - integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionalDependencies: - source-map "~0.6.1" - eslint-config-prettier@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" @@ -2290,7 +2388,7 @@ espree@^9.6.0, espree@^9.6.1: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1: +esprima@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== @@ -2388,15 +2486,16 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== +expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -2419,7 +2518,7 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -2460,6 +2559,13 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +filelist@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== + dependencies: + minimatch "^5.0.1" + fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -2514,15 +2620,6 @@ follow-redirects@^1.15.6: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -2634,7 +2731,7 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -2731,35 +2828,11 @@ hmac-drbg@^1.0.1: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - human-signals@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" @@ -2770,13 +2843,6 @@ husky@^8.0.3: resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -2887,21 +2953,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -2917,7 +2973,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: +istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -2928,6 +2984,17 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765" + integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q== + dependencies: + "@babel/core" "^7.23.9" + "@babel/parser" "^7.23.9" + "@istanbuljs/schema" "^0.1.3" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" @@ -2954,85 +3021,93 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== +jake@^10.8.5: + version "10.9.2" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f" + integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA== dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" + async "^3.2.3" + chalk "^4.0.2" + filelist "^1.0.4" + minimatch "^3.1.2" -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + execa "^5.0.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + p-limit "^3.1.0" + pretty-format "^29.7.0" + pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" - throat "^6.0.1" -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== +jest-cli@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + yargs "^17.3.1" + +jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" + glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^27.5.1" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" @@ -3046,106 +3121,84 @@ jest-diff@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== +jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" + detect-newline "^3.0.0" -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" + chalk "^4.0.0" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" + +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" + jest-mock "^29.7.0" + jest-util "^29.7.0" jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== + +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" + "@jest/types" "^29.6.3" + "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" - walker "^1.0.7" + walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: +jest-matcher-utils@^27.0.0: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== @@ -3155,209 +3208,211 @@ jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== + dependencies: + chalk "^4.0.0" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" + +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^27.5.1" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== +jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" + jest-util "^29.7.0" jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== +jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: - "@jest/types" "^27.5.1" chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" - resolve.exports "^1.1.0" + resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== + dependencies: + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - emittery "^0.8.1" + emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" + "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - execa "^5.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: - "@babel/core" "^7.7.2" + "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.5.1" + expect "^29.7.0" graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" + pretty-format "^29.7.0" + semver "^7.5.3" -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== +jest-util@^29.0.0, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^27.5.1" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.5.1" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^27.5.1" + pretty-format "^29.7.0" -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.5.1" + emittery "^0.13.1" + jest-util "^29.7.0" string-length "^4.0.1" -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== +jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.0.6: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== +jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: - "@jest/core" "^27.5.1" + "@jest/core" "^29.7.0" + "@jest/types" "^29.6.3" import-local "^3.0.2" - jest-cli "^27.5.1" + jest-cli "^29.7.0" js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" @@ -3384,39 +3439,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -3447,7 +3469,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@2.x, json5@^2.2.3: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -3555,7 +3577,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@^4.17.15, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3691,6 +3713,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -3761,6 +3790,11 @@ node-releases@^2.0.14: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== +node-releases@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" + integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + nodemon@^2.0.8: version "2.0.22" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" @@ -3789,11 +3823,6 @@ npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" -nwsapi@^2.2.0: - version "2.2.10" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" - integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -3834,7 +3863,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -3897,11 +3926,6 @@ parse-json@^5.2.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - pascal-case@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" @@ -3999,6 +4023,15 @@ pretty-format@^27.0.0, pretty-format@^27.5.1: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== + dependencies: + "@jest/schemas" "^29.6.3" + ansi-styles "^5.0.0" + react-is "^18.0.0" + process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -4054,11 +4087,6 @@ proxy-from-env@^1.1.0: resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.33: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - pstree.remy@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" @@ -4076,21 +4104,21 @@ public-encrypt@^4.0.0: randombytes "^2.0.1" safe-buffer "^5.1.2" -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== +pure-rand@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== + python-shell@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -4116,6 +4144,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + readable-stream@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" @@ -4162,11 +4195,6 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" @@ -4184,10 +4212,10 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve.exports@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" - integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.1.6, resolve@^1.20.0: version "1.22.8" @@ -4208,7 +4236,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@^3.0.0, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -4245,18 +4273,6 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - scrypt-js@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -4271,11 +4287,6 @@ secp256k1@4.0.2: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -semver@7.x, semver@^7.3.2, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - semver@^5.7.1: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" @@ -4286,6 +4297,11 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== +semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: + version "7.6.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + semver@~7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" @@ -4327,7 +4343,7 @@ shelljs@^0.8.4: interpret "^1.0.0" rechoir "^0.6.2" -signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -4361,24 +4377,19 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -source-map-support@^0.5.6: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -4461,7 +4472,7 @@ supports-color@^5.3.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -4475,24 +4486,11 @@ supports-color@^8.0.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - synckit@^0.8.6: version "0.8.8" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" @@ -4511,14 +4509,6 @@ table-layout@^1.0.2: typical "^5.2.0" wordwrapjs "^4.0.0" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4538,11 +4528,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -throat@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" - integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -4565,23 +4550,6 @@ touch@^3.1.0: resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== -tough-cookie@^4.0.0: - version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" - integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - triple-beam@^1.3.0: version "1.4.1" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" @@ -4607,19 +4575,20 @@ ts-essentials@^7.0.1: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== -ts-jest@^27.0.3: - version "27.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" - integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== +ts-jest@^29.2.4: + version "29.2.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.4.tgz#38ccf487407d7a63054a72689f6f99b075e296e5" + integrity sha512-3d6tgDyhCI29HlpwIq87sNuI+3Q6GLTTCeYRHCs7vDz+/3GCMwEtV9jezLyl4ZtnBgx00I7hm8PCP8cTksMGrw== dependencies: bs-logger "0.x" + ejs "^3.1.10" fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" lodash.memoize "4.x" make-error "1.x" - semver "7.x" - yargs-parser "20.x" + semver "^7.5.3" + yargs-parser "^21.0.1" ts-retry@^4.2.4: version "4.2.5" @@ -4681,13 +4650,6 @@ typechain@^8.3.2: ts-command-line-args "^2.2.0" ts-essentials "^7.0.1" -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typescript@^5.3.2: version "5.4.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" @@ -4718,11 +4680,6 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - update-browserslist-db@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" @@ -4731,6 +4688,14 @@ update-browserslist-db@^1.0.16: escalade "^3.1.2" picocolors "^1.0.1" +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -4738,14 +4703,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -4761,67 +4718,22 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" + convert-source-map "^2.0.0" -walker@^1.0.7: +walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -4882,36 +4794,19 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== +write-file-atomic@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + signal-exit "^3.0.7" ws@7.4.6: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -4922,12 +4817,12 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yargs-parser@20.x, yargs-parser@^20.2.2: +yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^21.1.1: +yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== @@ -4945,7 +4840,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.1, yargs@^17.7.2: +yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== diff --git a/ethereum-financial/.dockerignore b/ethereum-financial/.dockerignore deleted file mode 100644 index 78972be8e..000000000 --- a/ethereum-financial/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -dist/ -forta.config.json diff --git a/ethereum-financial/.eslintrc.json b/ethereum-financial/.eslintrc.json deleted file mode 100644 index 1262ce136..000000000 --- a/ethereum-financial/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error", - "semi": "off" - } -} diff --git a/ethereum-financial/.gitignore b/ethereum-financial/.gitignore deleted file mode 100644 index 1edf63a5c..000000000 --- a/ethereum-financial/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -/coverage/ diff --git a/ethereum-financial/.nvmrc b/ethereum-financial/.nvmrc deleted file mode 100644 index 790e1105f..000000000 --- a/ethereum-financial/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v20.10.0 diff --git a/ethereum-financial/.prettierrc.json b/ethereum-financial/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/ethereum-financial/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/ethereum-financial/Dockerfile b/ethereum-financial/Dockerfile deleted file mode 100644 index 71bf3ef14..000000000 --- a/ethereum-financial/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.10.0-alpine3.18 AS base - -RUN apk add --no-cache python3=3.11.6-r0 g++=12.2.1_git20220924-r10 make=4.4.1-r1 sqlite=3.41.2-r3 - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build -# Build app -RUN yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" -ENV NODE_ENV=production -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:prod"] \ No newline at end of file diff --git a/ethereum-financial/README.md b/ethereum-financial/README.md deleted file mode 100644 index 7643e24bb..000000000 --- a/ethereum-financial/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# # Lido Financial Detection Bot for Forta - -## Supported chains - -- Ethereum mainnet - -## Alerts - -1. Aave operations - 1. HandleBlock - 1. 🚨🚨🚨 astETH balance - astETH totalSupply >= 1ETH - 2. 🚨🚨🚨 stableDebtStETH totalSupply is not 0 - 3. 🚨🚨🚨 variableDebtStETH totalSupply is not 0 -2. Pool balances - 1. HandleBlock - 1. 🚨 Super low stETH:ETH price on Curve - 2. 🚨 Super low stETH:ETH price on Chainlink - 3. 🚨 Curve Pool rapid imbalance change - 4. 🚨️ Significant Curve Pool size change - 5. ⚠️ Significant Curve Pool size change - 6. ⚠️ Curve Pool is imbalanced - 7. ⚠️ stETH:ETH price on Curve decreased - 8. ⚠️ stETH:ETH price on Chainlink decreased diff --git a/ethereum-financial/package.json b/ethereum-financial/package.json deleted file mode 100644 index 94f021a77..000000000 --- a/ethereum-financial/package.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "name": "lido-financial-forta-bot", - "version": "1.0.0", - "description": "Forta Bot for Lido protocol financial operations", - "repository": { - "type": "git", - "directory": "https://github.com/lidofinance/alerting-forta/tree/main/ethereum-financial" - }, - "license": "MIT", - "chainIds": [ - 1 - ], - "husky": { - "hooks": { - "pre-commit": "yarn run lint" - } - }, - "engines": { - "node": ">=20.0" - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "build": "tsc && yarn run copy-version", - "copy-version": "cp version.json dist", - "start": "yarn run start:dev", - "start:dev": "nodemon --watch src --watch forta.config.json -e js,ts,json --exec \"yarn run build && forta-agent run\"", - "start:prod": "forta-agent run --prod", - "tx": "yarn run build && forta-agent run --tx", - "block": "yarn run build && forta-agent run --block", - "range": "yarn run build && forta-agent run --range", - "alert": "yarn run build && forta-agent run --alert", - "sequence": "yarn run build && forta-agent run --sequence", - "file": "yarn run build && forta-agent run --file", - "publish": "yarn run update-version && forta-agent publish", - "info": "forta-agent info", - "logs": "forta-agent logs", - "push": "yarn run update-version && forta-agent push", - "disable": "forta-agent disable", - "enable": "forta-agent enable", - "keyfile": "forta-agent keyfile", - "stake": "forta-agent stake", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated ./src/abi/*", - "eslint:lint": "eslint ./src", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src README.md", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types" - }, - "dependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@types/lodash": "^4.14.202", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "ethers": "^5.5.1", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "knex": "^3.1.0", - "lodash": "^4.17.21", - "sqlite": "3", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@faker-js/faker": "^8.3.1", - "@jest/globals": "^29.7.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/jest": "^29.5.11", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.2.5", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.2", - "typechain": "^8.3.2", - "typescript": "^5.3.2" - }, - "packageManager": "yarn@1.22.21" -} diff --git a/ethereum-financial/src/abi/ChainlinkAggregator.json b/ethereum-financial/src/abi/ChainlinkAggregator.json deleted file mode 100644 index 719b78c6c..000000000 --- a/ethereum-financial/src/abi/ChainlinkAggregator.json +++ /dev/null @@ -1,227 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "address", "name": "_aggregator", "type": "address" }, - { "internalType": "address", "name": "_accessController", "type": "address" } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "int256", "name": "current", "type": "int256" }, - { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "updatedAt", "type": "uint256" } - ], - "name": "AnswerUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "uint256", "name": "roundId", "type": "uint256" }, - { "indexed": true, "internalType": "address", "name": "startedBy", "type": "address" }, - { "indexed": false, "internalType": "uint256", "name": "startedAt", "type": "uint256" } - ], - "name": "NewRound", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "to", "type": "address" } - ], - "name": "OwnershipTransferRequested", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "to", "type": "address" } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "accessController", - "outputs": [{ "internalType": "contract AccessControllerInterface", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "aggregator", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_aggregator", "type": "address" }], - "name": "confirmAggregator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "description", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_roundId", "type": "uint256" }], - "name": "getAnswer", - "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint80", "name": "_roundId", "type": "uint80" }], - "name": "getRoundData", - "outputs": [ - { "internalType": "uint80", "name": "roundId", "type": "uint80" }, - { "internalType": "int256", "name": "answer", "type": "int256" }, - { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, - { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, - { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_roundId", "type": "uint256" }], - "name": "getTimestamp", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestAnswer", - "outputs": [{ "internalType": "int256", "name": "", "type": "int256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRound", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRoundData", - "outputs": [ - { "internalType": "uint80", "name": "roundId", "type": "uint80" }, - { "internalType": "int256", "name": "answer", "type": "int256" }, - { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, - { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, - { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestTimestamp", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], - "name": "phaseAggregators", - "outputs": [{ "internalType": "contract AggregatorV2V3Interface", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "phaseId", - "outputs": [{ "internalType": "uint16", "name": "", "type": "uint16" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_aggregator", "type": "address" }], - "name": "proposeAggregator", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proposedAggregator", - "outputs": [{ "internalType": "contract AggregatorV2V3Interface", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint80", "name": "_roundId", "type": "uint80" }], - "name": "proposedGetRoundData", - "outputs": [ - { "internalType": "uint80", "name": "roundId", "type": "uint80" }, - { "internalType": "int256", "name": "answer", "type": "int256" }, - { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, - { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, - { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proposedLatestRoundData", - "outputs": [ - { "internalType": "uint80", "name": "roundId", "type": "uint80" }, - { "internalType": "int256", "name": "answer", "type": "int256" }, - { "internalType": "uint256", "name": "startedAt", "type": "uint256" }, - { "internalType": "uint256", "name": "updatedAt", "type": "uint256" }, - { "internalType": "uint80", "name": "answeredInRound", "type": "uint80" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_accessController", "type": "address" }], - "name": "setController", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_to", "type": "address" }], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - } -] diff --git a/ethereum-financial/src/abi/CurvePool.json b/ethereum-financial/src/abi/CurvePool.json deleted file mode 100644 index 957da809d..000000000 --- a/ethereum-financial/src/abi/CurvePool.json +++ /dev/null @@ -1,445 +0,0 @@ -[ - { - "name": "TokenExchange", - "inputs": [ - { "type": "address", "name": "buyer", "indexed": true }, - { "type": "int128", "name": "sold_id", "indexed": false }, - { "type": "uint256", "name": "tokens_sold", "indexed": false }, - { "type": "int128", "name": "bought_id", "indexed": false }, - { "type": "uint256", "name": "tokens_bought", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "TokenExchangeUnderlying", - "inputs": [ - { "type": "address", "name": "buyer", "indexed": true }, - { "type": "int128", "name": "sold_id", "indexed": false }, - { "type": "uint256", "name": "tokens_sold", "indexed": false }, - { "type": "int128", "name": "bought_id", "indexed": false }, - { "type": "uint256", "name": "tokens_bought", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "AddLiquidity", - "inputs": [ - { "type": "address", "name": "provider", "indexed": true }, - { "type": "uint256[2]", "name": "token_amounts", "indexed": false }, - { "type": "uint256[2]", "name": "fees", "indexed": false }, - { "type": "uint256", "name": "invariant", "indexed": false }, - { "type": "uint256", "name": "token_supply", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "RemoveLiquidity", - "inputs": [ - { "type": "address", "name": "provider", "indexed": true }, - { "type": "uint256[2]", "name": "token_amounts", "indexed": false }, - { "type": "uint256[2]", "name": "fees", "indexed": false }, - { "type": "uint256", "name": "token_supply", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "RemoveLiquidityOne", - "inputs": [ - { "type": "address", "name": "provider", "indexed": true }, - { "type": "uint256", "name": "token_amount", "indexed": false }, - { "type": "uint256", "name": "coin_amount", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "RemoveLiquidityImbalance", - "inputs": [ - { "type": "address", "name": "provider", "indexed": true }, - { "type": "uint256[2]", "name": "token_amounts", "indexed": false }, - { "type": "uint256[2]", "name": "fees", "indexed": false }, - { "type": "uint256", "name": "invariant", "indexed": false }, - { "type": "uint256", "name": "token_supply", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "CommitNewAdmin", - "inputs": [ - { "type": "uint256", "name": "deadline", "indexed": true }, - { "type": "address", "name": "admin", "indexed": true } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "NewAdmin", - "inputs": [{ "type": "address", "name": "admin", "indexed": true }], - "anonymous": false, - "type": "event" - }, - { - "name": "CommitNewFee", - "inputs": [ - { "type": "uint256", "name": "deadline", "indexed": true }, - { "type": "uint256", "name": "fee", "indexed": false }, - { "type": "uint256", "name": "admin_fee", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "NewFee", - "inputs": [ - { "type": "uint256", "name": "fee", "indexed": false }, - { "type": "uint256", "name": "admin_fee", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "RampA", - "inputs": [ - { "type": "uint256", "name": "old_A", "indexed": false }, - { "type": "uint256", "name": "new_A", "indexed": false }, - { "type": "uint256", "name": "initial_time", "indexed": false }, - { "type": "uint256", "name": "future_time", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "name": "StopRampA", - "inputs": [ - { "type": "uint256", "name": "A", "indexed": false }, - { "type": "uint256", "name": "t", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "outputs": [], - "inputs": [ - { "type": "address", "name": "_owner" }, - { "type": "address[2]", "name": "_coins" }, - { "type": "address", "name": "_pool_token" }, - { "type": "uint256", "name": "_A" }, - { "type": "uint256", "name": "_fee" }, - { "type": "uint256", "name": "_admin_fee" } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "name": "A", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "A_precise", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "balances", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [{ "type": "uint256", "name": "i" }], - "stateMutability": "view", - "type": "function" - }, - { - "name": "get_virtual_price", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "calc_token_amount", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "uint256[2]", "name": "amounts" }, - { "type": "bool", "name": "is_deposit" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "name": "add_liquidity", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "uint256[2]", "name": "amounts" }, - { "type": "uint256", "name": "min_mint_amount" } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "name": "get_dy", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "int128", "name": "i" }, - { "type": "int128", "name": "j" }, - { "type": "uint256", "name": "dx" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "name": "exchange", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "int128", "name": "i" }, - { "type": "int128", "name": "j" }, - { "type": "uint256", "name": "dx" }, - { "type": "uint256", "name": "min_dy" } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "name": "remove_liquidity", - "outputs": [{ "type": "uint256[2]", "name": "" }], - "inputs": [ - { "type": "uint256", "name": "_amount" }, - { "type": "uint256[2]", "name": "_min_amounts" } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "remove_liquidity_imbalance", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "uint256[2]", "name": "_amounts" }, - { "type": "uint256", "name": "_max_burn_amount" } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "calc_withdraw_one_coin", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "uint256", "name": "_token_amount" }, - { "type": "int128", "name": "i" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "name": "remove_liquidity_one_coin", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [ - { "type": "uint256", "name": "_token_amount" }, - { "type": "int128", "name": "i" }, - { "type": "uint256", "name": "_min_amount" } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "ramp_A", - "outputs": [], - "inputs": [ - { "type": "uint256", "name": "_future_A" }, - { "type": "uint256", "name": "_future_time" } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "stop_ramp_A", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "commit_new_fee", - "outputs": [], - "inputs": [ - { "type": "uint256", "name": "new_fee" }, - { "type": "uint256", "name": "new_admin_fee" } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "apply_new_fee", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "revert_new_parameters", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "commit_transfer_ownership", - "outputs": [], - "inputs": [{ "type": "address", "name": "_owner" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "apply_transfer_ownership", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "revert_transfer_ownership", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "withdraw_admin_fees", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "donate_admin_fees", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "kill_me", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "unkill_me", - "outputs": [], - "inputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "name": "coins", - "outputs": [{ "type": "address", "name": "" }], - "inputs": [{ "type": "uint256", "name": "arg0" }], - "stateMutability": "view", - "type": "function" - }, - { - "name": "admin_balances", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [{ "type": "uint256", "name": "arg0" }], - "stateMutability": "view", - "type": "function" - }, - { - "name": "fee", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "admin_fee", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "owner", - "outputs": [{ "type": "address", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "lp_token", - "outputs": [{ "type": "address", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "initial_A", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "future_A", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "initial_A_time", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "future_A_time", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "admin_actions_deadline", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "transfer_ownership_deadline", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "future_fee", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "future_admin_fee", - "outputs": [{ "type": "uint256", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - }, - { - "name": "future_owner", - "outputs": [{ "type": "address", "name": "" }], - "inputs": [], - "stateMutability": "view", - "type": "function" - } -] diff --git a/ethereum-financial/src/abi/LidoDAO.json b/ethereum-financial/src/abi/LidoDAO.json deleted file mode 100644 index dbe8f8708..000000000 --- a/ethereum-financial/src/abi/LidoDAO.json +++ /dev/null @@ -1,958 +0,0 @@ -[ - { - "constant": false, - "inputs": [], - "name": "resume", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "stop", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "hasInitialized", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "STAKING_CONTROL_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_depositContract", "type": "address" }, - { "name": "_oracle", "type": "address" }, - { "name": "_operators", "type": "address" }, - { "name": "_treasury", "type": "address" }, - { "name": "_insuranceFund", "type": "address" } - ], - "name": "initialize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getInsuranceFund", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_ethAmount", "type": "uint256" }], - "name": "getSharesByPooledEth", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isStakingPaused", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_sender", "type": "address" }, - { "name": "_recipient", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOperators", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_script", "type": "bytes" }], - "name": "getEVMScriptExecutor", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_maxStakeLimit", "type": "uint256" }, - { "name": "_stakeLimitIncreasePerBlock", "type": "uint256" } - ], - "name": "setStakingLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "RESUME_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ "name": "", "type": "uint8" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getRecoveryVault", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "DEPOSIT_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "DEPOSIT_SIZE", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalPooledEther", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PAUSE_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTreasury", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isStopped", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MANAGE_WITHDRAWAL_KEY", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getBufferedEther", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "receiveELRewards", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getELRewardsWithdrawalLimit", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "SIGNATURE_LENGTH", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getWithdrawalCredentials", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getCurrentStakeLimit", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_limitPoints", "type": "uint16" }], - "name": "setELRewardsWithdrawalLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_beaconValidators", "type": "uint256" }, - { "name": "_beaconBalance", "type": "uint256" } - ], - "name": "handleOracleReport", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getStakeLimitFullInfo", - "outputs": [ - { "name": "isStakingPaused", "type": "bool" }, - { "name": "isStakingLimitSet", "type": "bool" }, - { "name": "currentStakeLimit", "type": "uint256" }, - { "name": "maxStakeLimit", "type": "uint256" }, - { "name": "maxStakeLimitGrowthBlocks", "type": "uint256" }, - { "name": "prevStakeLimit", "type": "uint256" }, - { "name": "prevStakeBlockNumber", "type": "uint256" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "SET_EL_REWARDS_WITHDRAWAL_LIMIT_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getELRewardsVault", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_account", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "resumeStaking", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getFeeDistribution", - "outputs": [ - { "name": "treasuryFeeBasisPoints", "type": "uint16" }, - { "name": "insuranceFeeBasisPoints", "type": "uint16" }, - { "name": "operatorsFeeBasisPoints", "type": "uint16" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_sharesAmount", "type": "uint256" }], - "name": "getPooledEthByShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_executionLayerRewardsVault", "type": "address" }], - "name": "setELRewardsVault", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "token", "type": "address" }], - "name": "allowRecoverability", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MANAGE_PROTOCOL_CONTRACTS_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "appId", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOracle", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getInitializationBlock", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_treasuryFeeBasisPoints", "type": "uint16" }, - { "name": "_insuranceFeeBasisPoints", "type": "uint16" }, - { "name": "_operatorsFeeBasisPoints", "type": "uint16" } - ], - "name": "setFeeDistribution", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_feeBasisPoints", "type": "uint16" }], - "name": "setFee", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_recipient", "type": "address" }, - { "name": "_sharesAmount", "type": "uint256" } - ], - "name": "transferShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_maxDeposits", "type": "uint256" }], - "name": "depositBufferedEther", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "MANAGE_FEE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_token", "type": "address" }], - "name": "transferToVault", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "name": "_sender", "type": "address" }, - { "name": "_role", "type": "bytes32" }, - { "name": "_params", "type": "uint256[]" } - ], - "name": "canPerform", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_referral", "type": "address" }], - "name": "submit", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "WITHDRAWAL_CREDENTIALS_LENGTH", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_subtractedValue", "type": "uint256" } - ], - "name": "decreaseAllowance", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getEVMScriptRegistry", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PUBKEY_LENGTH", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "SET_EL_REWARDS_VAULT_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_recipient", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getDepositContract", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getBeaconStat", - "outputs": [ - { "name": "depositedValidators", "type": "uint256" }, - { "name": "beaconValidators", "type": "uint256" }, - { "name": "beaconBalance", "type": "uint256" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "removeStakingLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "BURN_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getFee", - "outputs": [{ "name": "feeBasisPoints", "type": "uint16" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "kernel", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "name": "_owner", "type": "address" }, - { "name": "_spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isPetrified", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_oracle", "type": "address" }, - { "name": "_treasury", "type": "address" }, - { "name": "_insuranceFund", "type": "address" } - ], - "name": "setProtocolContracts", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_withdrawalCredentials", "type": "bytes32" }], - "name": "setWithdrawalCredentials", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "STAKING_PAUSE_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "depositBufferedEther", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_account", "type": "address" }, - { "name": "_sharesAmount", "type": "uint256" } - ], - "name": "burnShares", - "outputs": [{ "name": "newTotalShares", "type": "uint256" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_account", "type": "address" }], - "name": "sharesOf", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pauseStaking", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalELRewardsCollected", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { "payable": true, "stateMutability": "payable", "type": "fallback" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "executor", "type": "address" }, - { "indexed": false, "name": "script", "type": "bytes" }, - { "indexed": false, "name": "input", "type": "bytes" }, - { "indexed": false, "name": "returnData", "type": "bytes" } - ], - "name": "ScriptResult", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "vault", "type": "address" }, - { "indexed": true, "name": "token", "type": "address" }, - { "indexed": false, "name": "amount", "type": "uint256" } - ], - "name": "RecoverToVault", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "from", "type": "address" }, - { "indexed": true, "name": "to", "type": "address" }, - { "indexed": false, "name": "sharesValue", "type": "uint256" } - ], - "name": "TransferShares", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "account", "type": "address" }, - { "indexed": false, "name": "preRebaseTokenAmount", "type": "uint256" }, - { "indexed": false, "name": "postRebaseTokenAmount", "type": "uint256" }, - { "indexed": false, "name": "sharesAmount", "type": "uint256" } - ], - "name": "SharesBurnt", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "Stopped", "type": "event" }, - { "anonymous": false, "inputs": [], "name": "Resumed", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "from", "type": "address" }, - { "indexed": true, "name": "to", "type": "address" }, - { "indexed": false, "name": "value", "type": "uint256" } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "owner", "type": "address" }, - { "indexed": true, "name": "spender", "type": "address" }, - { "indexed": false, "name": "value", "type": "uint256" } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "StakingPaused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "StakingResumed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "name": "maxStakeLimit", "type": "uint256" }, - { - "indexed": false, - "name": "stakeLimitIncreasePerBlock", - "type": "uint256" - } - ], - "name": "StakingLimitSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "StakingLimitRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "name": "oracle", "type": "address" }, - { "indexed": false, "name": "treasury", "type": "address" }, - { "indexed": false, "name": "insuranceFund", "type": "address" } - ], - "name": "ProtocolContactsSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "feeBasisPoints", "type": "uint16" }], - "name": "FeeSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "name": "treasuryFeeBasisPoints", "type": "uint16" }, - { "indexed": false, "name": "insuranceFeeBasisPoints", "type": "uint16" }, - { "indexed": false, "name": "operatorsFeeBasisPoints", "type": "uint16" } - ], - "name": "FeeDistributionSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "amount", "type": "uint256" }], - "name": "ELRewardsReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "limitPoints", "type": "uint256" }], - "name": "ELRewardsWithdrawalLimitSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "withdrawalCredentials", "type": "bytes32" }], - "name": "WithdrawalCredentialsSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "executionLayerRewardsVault", - "type": "address" - } - ], - "name": "ELRewardsVaultSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "sender", "type": "address" }, - { "indexed": false, "name": "amount", "type": "uint256" }, - { "indexed": false, "name": "referral", "type": "address" } - ], - "name": "Submitted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "amount", "type": "uint256" }], - "name": "Unbuffered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "sender", "type": "address" }, - { "indexed": false, "name": "tokenAmount", "type": "uint256" }, - { "indexed": false, "name": "sentFromBuffer", "type": "uint256" }, - { "indexed": true, "name": "pubkeyHash", "type": "bytes32" }, - { "indexed": false, "name": "etherAmount", "type": "uint256" } - ], - "name": "Withdrawal", - "type": "event" - } -] diff --git a/ethereum-financial/src/abi/astETH.json b/ethereum-financial/src/abi/astETH.json deleted file mode 100644 index bd938c10b..000000000 --- a/ethereum-financial/src/abi/astETH.json +++ /dev/null @@ -1,456 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "contract ILendingPool", - "name": "pool", - "type": "address" - }, - { - "internalType": "address", - "name": "underlyingAssetAddress", - "type": "address" - }, - { - "internalType": "address", - "name": "reserveTreasuryAddress", - "type": "address" - }, - { "internalType": "string", "name": "tokenName", "type": "string" }, - { "internalType": "string", "name": "tokenSymbol", "type": "string" }, - { - "internalType": "address", - "name": "incentivesController", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "BalanceTransfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "ATOKEN_REVISION", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "EIP712_REVISION", - "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "POOL", - "outputs": [{ "internalType": "contract ILendingPool", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESERVE_TREASURY_ADDRESS", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UINT_MAX_VALUE", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UNDERLYING_ASSET_ADDRESS", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "", "type": "address" }], - "name": "_nonces", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { - "internalType": "address", - "name": "receiverOfUnderlying", - "type": "address" - }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "index", "type": "uint256" } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "getScaledUserBalanceAndSupply", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "underlyingAssetDecimals", - "type": "uint8" - }, - { "internalType": "string", "name": "tokenName", "type": "string" }, - { "internalType": "string", "name": "tokenSymbol", "type": "string" } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "internalBalanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "internalTotalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "index", "type": "uint256" } - ], - "name": "mint", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "index", "type": "uint256" } - ], - "name": "mintToTreasury", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "uint256", "name": "deadline", "type": "uint256" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "scaledBalanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "scaledTotalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "sender", "type": "address" }, - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "transferOnLiquidation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "target", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transferUnderlyingTo", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/ethereum-financial/src/abi/stableDebtStETH.json b/ethereum-financial/src/abi/stableDebtStETH.json deleted file mode 100644 index 71777d34c..000000000 --- a/ethereum-financial/src/abi/stableDebtStETH.json +++ /dev/null @@ -1,431 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "address", "name": "pool", "type": "address" }, - { - "internalType": "address", - "name": "underlyingAsset", - "type": "address" - }, - { "internalType": "string", "name": "name", "type": "string" }, - { "internalType": "string", "name": "symbol", "type": "string" }, - { - "internalType": "address", - "name": "incentivesController", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "fromUser", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "toUser", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "BorrowAllowanceDelegated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "currentBalance", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "balanceIncrease", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "avgStableRate", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newTotalSupply", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "onBehalfOf", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "currentBalance", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "balanceIncrease", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newRate", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "avgStableRate", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newTotalSupply", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "DEBT_TOKEN_REVISION", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "POOL", - "outputs": [{ "internalType": "contract ILendingPool", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UNDERLYING_ASSET_ADDRESS", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "delegatee", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approveDelegation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "fromUser", "type": "address" }, - { "internalType": "address", "name": "toUser", "type": "address" } - ], - "name": "borrowAllowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getAverageStableRate", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getSupplyData", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint40", "name": "", "type": "uint40" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getTotalSupplyAndAvgRate", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getTotalSupplyLastUpdated", - "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "getUserLastUpdated", - "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "getUserStableRate", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint8", "name": "decimals", "type": "uint8" }, - { "internalType": "string", "name": "name", "type": "string" }, - { "internalType": "string", "name": "symbol", "type": "string" } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { "internalType": "address", "name": "onBehalfOf", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "rate", "type": "uint256" } - ], - "name": "mint", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "principalBalanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "sender", "type": "address" }, - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/ethereum-financial/src/abi/variableDebtStETH.json b/ethereum-financial/src/abi/variableDebtStETH.json deleted file mode 100644 index a65ef3e4f..000000000 --- a/ethereum-financial/src/abi/variableDebtStETH.json +++ /dev/null @@ -1,357 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "address", "name": "pool", "type": "address" }, - { - "internalType": "address", - "name": "underlyingAsset", - "type": "address" - }, - { "internalType": "string", "name": "name", "type": "string" }, - { "internalType": "string", "name": "symbol", "type": "string" }, - { - "internalType": "address", - "name": "incentivesController", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "fromUser", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "toUser", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "asset", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "BorrowAllowanceDelegated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "user", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "onBehalfOf", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "DEBT_TOKEN_REVISION", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "POOL", - "outputs": [{ "internalType": "contract ILendingPool", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "UNDERLYING_ASSET_ADDRESS", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "delegatee", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approveDelegation", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "fromUser", "type": "address" }, - { "internalType": "address", "name": "toUser", "type": "address" } - ], - "name": "borrowAllowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "index", "type": "uint256" } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "getScaledUserBalanceAndSupply", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint8", "name": "decimals", "type": "uint8" }, - { "internalType": "string", "name": "name", "type": "string" }, - { "internalType": "string", "name": "symbol", "type": "string" } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "user", "type": "address" }, - { "internalType": "address", "name": "onBehalfOf", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" }, - { "internalType": "uint256", "name": "rate", "type": "uint256" } - ], - "name": "mint", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], - "name": "scaledBalanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "scaledTotalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "sender", "type": "address" }, - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/ethereum-financial/src/agent.ts b/ethereum-financial/src/agent.ts deleted file mode 100644 index ebfdc9aa2..000000000 --- a/ethereum-financial/src/agent.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { BlockEvent, Finding, FindingSeverity, FindingType, HandleBlock, HealthCheck } from 'forta-agent' -import * as process from 'process' -import { InitializeResponse } from 'forta-agent/dist/sdk/initialize.response' -import { Initialize } from 'forta-agent/dist/sdk/handlers' -import * as E from 'fp-ts/Either' -import { App } from './app' -import { elapsedTime } from './utils/time' -import Version from './utils/version' -import { BlockDto } from './entity/events' - -export function initialize(): Initialize { - type Metadata = { [key: string]: string } - - const metadata: Metadata = { - 'version.commitHash': Version.commitHash, - 'version.commitMsg': Version.commitMsg, - } - - return async function (): Promise { - const startTime = new Date().getTime() - const app = await App.getInstance() - - const latestBlock = await app.ethClient.getLatestBlock() - if (E.isLeft(latestBlock)) { - app.logger.error(latestBlock.left.message) - - process.exit(1) - } - - const blockDto: BlockDto = { - number: latestBlock.right.number, - timestamp: latestBlock.right.timestamp, - parentHash: latestBlock.right.parentHash, - } - - const [poolBalanceSrvErr] = await Promise.all([app.PoolBalanceSrv.init(blockDto)]) - if (poolBalanceSrvErr !== null) { - app.logger.error(poolBalanceSrvErr) - - process.exit(1) - } - - app.PoolBalanceCache.getState().forEach((value, key) => { - metadata[key] = value - }) - - await app.findingsRW.write([ - Finding.fromObject({ - name: `Agent launched`, - description: `Version: ${Version.desc}`, - alertId: 'LIDO-AGENT-LAUNCHED', - severity: FindingSeverity.Info, - type: FindingType.Info, - metadata, - }), - ]) - - app.logger.info(elapsedTime('Agent.initialized', startTime) + '\n') - } -} - -export const handleBlock = (): HandleBlock => { - return async function (blockEvent: BlockEvent): Promise { - const app = await App.getInstance() - - app.logger.info(`#ETH block: ${blockEvent.block.number}`) - const startTime = new Date().getTime() - - const out: Finding[] = [] - const findingsAsync = await app.findingsRW.read() - if (findingsAsync.length > 0) { - out.push(...findingsAsync) - } - - const blockDto: BlockDto = { - number: blockEvent.block.number, - timestamp: blockEvent.block.timestamp, - parentHash: blockEvent.block.parentHash, - } - - const [aaveFindings, poolFindings] = await Promise.all([ - app.AaveSrv.handleBlock(blockDto), - app.PoolBalanceSrv.handleBlock(blockDto), - ]) - - out.push(...aaveFindings, ...poolFindings) - - app.healthChecker.check(out) - - app.PoolBalanceCache.getState().forEach((value, key) => { - app.logger.info(key + ' ' + value) - }) - - app.logger.info(elapsedTime('handleBlock', startTime) + '\n') - - return out - } -} - -export const healthCheck = (): HealthCheck => { - return async function (): Promise { - const app = await App.getInstance() - - if (!app.healthChecker.isHealth()) { - return ['There is too much network errors'] - } - - return [] - } -} - -export default { - initialize: initialize(), - handleBlock: handleBlock(), - healthCheck: healthCheck(), -} diff --git a/ethereum-financial/src/app.ts b/ethereum-financial/src/app.ts deleted file mode 100644 index 66d740394..000000000 --- a/ethereum-financial/src/app.ts +++ /dev/null @@ -1,117 +0,0 @@ -import { ethers, fetchJwt, Finding, getEthersProvider, verifyJwt } from 'forta-agent' -import { Address } from './utils/constants' -import { ETHProvider } from './clients/eth_provider' -import { DataRW } from './utils/mutex' -import * as Winston from 'winston' -import * as E from 'fp-ts/Either' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' -import { AaveSrv } from './services/aave/Aave.srv' -import { - AstETH__factory, - ChainlinkAggregator__factory, - CurvePool__factory, - LidoDAO__factory, - StableDebtStETH__factory, - VariableDebtStETH__factory, -} from './generated' -import { Logger } from 'winston' -import { PoolBalanceSrv } from './services/pools-balances/pool-balance.srv' -import { PoolBalanceCache } from './services/pools-balances/pool-balance.cache' - -export type Container = { - logger: Logger - ethClient: ETHProvider - AaveSrv: AaveSrv - PoolBalanceSrv: PoolBalanceSrv - PoolBalanceCache: PoolBalanceCache - healthChecker: HealthChecker - findingsRW: DataRW -} - -export class App { - private static instance: Container - - private constructor() {} - - public static async getJwt(): Promise> { - let token: string - try { - token = await fetchJwt({}) - } catch (e) { - return E.left(new Error(`Could not fetch jwt. Cause ${e}`)) - } - - if (process.env.NODE_ENV === 'production') { - try { - const isTokenOk = await verifyJwt(token) - if (!isTokenOk) { - return E.left(new Error(`Token verification failed`)) - } - } catch (e) { - return E.left(new Error(`Token verification failed`)) - } - } - - return E.right(token) - } - - public static async getInstance(rpcUrl?: string): Promise { - if (!App.instance) { - let ethersProvider = getEthersProvider() - if (rpcUrl !== undefined) { - ethersProvider = new ethers.providers.JsonRpcProvider(rpcUrl) - } - - const address: Address = Address - - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - const stethContract = LidoDAO__factory.connect(address.STETH_ADDRESS, ethersProvider) - const astETHContract = AstETH__factory.connect(address.AAVE_ASTETH_ADDRESS, ethersProvider) - const stableDebtStEthContract = StableDebtStETH__factory.connect( - address.AAVE_STABLE_DEBT_STETH_ADDRESS, - ethersProvider, - ) - const variableDebtStEthContract = VariableDebtStETH__factory.connect( - address.AAVE_VARIABLE_DEBT_STETH_ADDRESS, - ethersProvider, - ) - - const curveStableSwapContract = CurvePool__factory.connect(address.CURVE_POOL_ADDRESS, ethersProvider) - - const chainlinkAggregatorContract = ChainlinkAggregator__factory.connect( - address.CHAINLINK_STETH_PRICE_FEED, - ethersProvider, - ) - const ethClient = new ETHProvider( - logger, - ethersProvider, - stethContract, - astETHContract, - stableDebtStEthContract, - variableDebtStEthContract, - curveStableSwapContract, - chainlinkAggregatorContract, - ) - - const aaveSrv = new AaveSrv(logger, ethClient, address.AAVE_ASTETH_ADDRESS) - const poolBalanceCache = new PoolBalanceCache() - const poolBalanceSrv = new PoolBalanceSrv(logger, ethClient, poolBalanceCache) - - App.instance = { - logger: logger, - ethClient: ethClient, - AaveSrv: aaveSrv, - PoolBalanceSrv: poolBalanceSrv, - PoolBalanceCache: poolBalanceCache, - findingsRW: new DataRW([]), - healthChecker: new HealthChecker(BorderTime, MaxNumberErrorsPerBorderTime), - } - } - - return App.instance - } -} diff --git a/ethereum-financial/src/clients/eth_provider.spec.ts b/ethereum-financial/src/clients/eth_provider.spec.ts deleted file mode 100644 index 2637df0c2..000000000 --- a/ethereum-financial/src/clients/eth_provider.spec.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { App } from '../app' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' -import { Address } from '../utils/constants' -import { ethers } from 'forta-agent' - -const timeout: number = 120_000 - -describe('eth provider tests', () => { - let ethProvider: ethers.providers.JsonRpcProvider - - const mainnet = 1 - const drpcProvider = 'https://eth.drpc.org/' - - beforeAll(async () => { - ethProvider = new ethers.providers.JsonRpcProvider(drpcProvider, mainnet) - }) - test( - 'getTotalSupply should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19_526_474 - const block = await ethProvider.getBlock(blockNumber) - - const out = await app.ethClient.getTotalSupply(block.parentHash) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('2.85198055160763816094124e+23')) - }, - timeout, - ) - - test( - 'getStethBalance should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const block = await ethProvider.getBlock(blockNumber) - - const out = await app.ethClient.getStethBalance(Address.AAVE_ASTETH_ADDRESS, block.parentHash) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('2.85198055160763816093772e+23')) - }, - timeout, - ) - - test( - 'getStableDebtStEthTotalSupply should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getStableDebtStEthTotalSupply(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('0')) - }, - timeout, - ) - - test( - 'getVariableDebtStEthTotalSupply should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getStableDebtStEthTotalSupply(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('0')) - }, - timeout, - ) - - test( - 'getCurveEthBalance should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getCurveEthBalance(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('3.5831379069447453967632e+22')) - }, - timeout, - ) - - test( - 'getCurveStEthBalance should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getCurveStEthBalance(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('4.0690351147102483025236e+22')) - }, - timeout, - ) - - test( - 'getCurvePeg should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getCurveStEthToEthPrice(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('0.99885819795589628841')) - }, - timeout, - ) - - test( - 'getChainlinkPeg should return ok', - async () => { - const app = await App.getInstance(drpcProvider) - - const blockNumber = 19526474 - const out = await app.ethClient.getChainlinkStEthToEthPrice(blockNumber) - if (E.isLeft(out)) { - throw out.left.message - } - - expect(out.right).toEqual(new BigNumber('0.9994786072757912')) - }, - timeout, - ) -}) diff --git a/ethereum-financial/src/clients/eth_provider.ts b/ethereum-financial/src/clients/eth_provider.ts deleted file mode 100644 index 079853fab..000000000 --- a/ethereum-financial/src/clients/eth_provider.ts +++ /dev/null @@ -1,211 +0,0 @@ -import { ethers } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { BigNumber as EtherBigNumber } from '@ethersproject/bignumber/lib/bignumber' -import BigNumber from 'bignumber.js' -import { NetworkError } from '../utils/errors' -import { IAaveClient } from '../services/aave/Aave.srv' -import { AstETH, ChainlinkAggregator, CurvePool, LidoDAO, StableDebtStETH, VariableDebtStETH } from '../generated' -import { Logger } from 'winston' -import { ETH_DECIMALS } from '../utils/constants' -import { IPoolBalanceClient } from '../services/pools-balances/pool-balance.srv' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IAaveClient, IPoolBalanceClient { - private jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly logger: Logger - - private readonly stethContract: LidoDAO - private readonly astEthContract: AstETH - private readonly stableDebtStETHContract: StableDebtStETH - private readonly variableDebtStETHContract: VariableDebtStETH - private readonly curvePoolContract: CurvePool - private readonly chainlinkAggregatorContract: ChainlinkAggregator - - constructor( - logger: Logger, - jsonRpcProvider: ethers.providers.JsonRpcProvider, - stethContract: LidoDAO, - astEthContract: AstETH, - stableDebtStETHContract: StableDebtStETH, - variableDebtStETHContract: VariableDebtStETH, - curvePoolContract: CurvePool, - chainlinkAggregatorContract: ChainlinkAggregator, - ) { - this.logger = logger - this.jsonRpcProvider = jsonRpcProvider - this.stethContract = stethContract - this.astEthContract = astEthContract - this.stableDebtStETHContract = stableDebtStETHContract - this.variableDebtStETHContract = variableDebtStETHContract - this.curvePoolContract = curvePoolContract - this.chainlinkAggregatorContract = chainlinkAggregatorContract - } - - public async getLatestBlock(): Promise> { - try { - const latestBlockNumber = await this.jsonRpcProvider.getBlock('latest') - return E.right(latestBlockNumber) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } - - public async getTotalSupply(blockHash: string): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const block = await this.jsonRpcProvider.getBlock(blockHash) - const [totalSupply] = await this.astEthContract.functions.totalSupply({ - blockTag: block.number, - }) - - return totalSupply - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch aave totalSupply`)) - } - } - - public async getStethBalance(address: string, blockHash: string): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const block = await this.jsonRpcProvider.getBlock(blockHash) - const [balanceOf] = await this.stethContract.functions.balanceOf(address, { - blockTag: block.number, - }) - - return balanceOf - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch aSteth balance`)) - } - } - - public async getStableDebtStEthTotalSupply(blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [totalSupply] = await this.stableDebtStETHContract.functions.totalSupply({ - blockTag: blockNumber, - }) - - return totalSupply - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch stableDebtStETHContract.totalSupply`)) - } - } - - public async getVariableDebtStEthTotalSupply(blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [totalSupply] = await this.variableDebtStETHContract.functions.totalSupply({ - blockTag: blockNumber, - }) - - return totalSupply - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch variableDebtStETHContract.totalSupply`)) - } - } - - public async getCurveEthBalance(blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [ethBalance] = await this.curvePoolContract.functions.balances(0, { - blockTag: blockNumber, - }) - - return ethBalance - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch curvePool eth balance`)) - } - } - - public async getCurveStEthBalance(blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [stethBalance] = await this.curvePoolContract.functions.balances(1, { - blockTag: blockNumber, - }) - - return stethBalance - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(String(out))) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch curvePool steth balance`)) - } - } - - public async getCurveStEthToEthPrice(blockNumber: number): Promise> { - try { - const amountStEth = new BigNumber(1000).times(ETH_DECIMALS) - - const out = await retryAsync( - async (): Promise => { - const [amountEth] = await this.curvePoolContract.functions.get_dy(1, 0, amountStEth.toFixed(), { - blockTag: blockNumber, - }) - - return amountEth - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out.toString()).div(amountStEth)) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch curvePoolContract.get_dy`)) - } - } - - public async getChainlinkStEthToEthPrice(blockNumber: number): Promise> { - try { - const hexValue = await retryAsync( - async (): Promise => { - const [peg] = await this.chainlinkAggregatorContract.functions.latestAnswer({ - blockTag: blockNumber, - }) - - return peg.toHexString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(hexValue).dividedBy(ETH_DECIMALS)) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch chainlinkAggregatorContract.latestAnswer`)) - } - } -} diff --git a/ethereum-financial/src/entity/events.ts b/ethereum-financial/src/entity/events.ts deleted file mode 100644 index 142d80418..000000000 --- a/ethereum-financial/src/entity/events.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' - -export type EventOfNotice = { - name: string - address: string - event: string - alertId: string - description: CallableFunction - severity: FindingSeverity - type: FindingType -} - -export type BlockDto = { - number: number - timestamp: number - parentHash: string -} diff --git a/ethereum-financial/src/services/aave/Aave.srv.ts b/ethereum-financial/src/services/aave/Aave.srv.ts deleted file mode 100644 index 46c18432b..000000000 --- a/ethereum-financial/src/services/aave/Aave.srv.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { BlockDto } from '../../entity/events' -import { Logger } from 'winston' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { networkAlert } from '../../utils/errors' -import { elapsedTime } from '../../utils/time' - -export interface IAaveClient { - getStethBalance(address: string, blockHash: string): Promise> - - getTotalSupply(blockHash: string): Promise> - - getStableDebtStEthTotalSupply(blockNumber: number): Promise> - - getVariableDebtStEthTotalSupply(blockNumber: number): Promise> -} - -const GWEI_DECIMALS = new BigNumber(10).pow(9) -const ASTETH_ETH_1 = GWEI_DECIMALS.times(1) -const MINUTES_10 = 60 * 10 - -export class AaveSrv { - private name = `AaveSrv` - - private readonly logger: Logger - private readonly ethProvider: IAaveClient - - private readonly aaveAstethAddress: string - - // - // Cache - // - private lastReportedAstEthSupplyTimestamp: number = 0 - private lastReportedStableStEthSupplyTimestamp: number = 0 - private lastReportedVariableStEthSupplyTimestamp: number = 0 - - constructor(logger: Logger, ethProvider: IAaveClient, aaveAstethAddress: string) { - this.logger = logger - this.ethProvider = ethProvider - this.aaveAstethAddress = aaveAstethAddress - } - - public async handleBlock(blockEvent: BlockDto) { - const start = new Date().getTime() - const findings: Finding[] = [] - - const [astEthSupplyFindings, stableStEthSupplyFindings, variableStEthSupplyFindings] = await Promise.all([ - this.handleAstEthSupply(blockEvent), - this.handleStableStEthSupply(blockEvent), - this.handleVariableStEthSupply(blockEvent), - ]) - - findings.push(...astEthSupplyFindings, ...stableStEthSupplyFindings, ...variableStEthSupplyFindings) - this.logger.info(elapsedTime(AaveSrv.name + '.' + this.handleBlock.name, start)) - - return findings - } - - async handleAstEthSupply(blockEvent: BlockDto): Promise { - if (this.lastReportedAstEthSupplyTimestamp + MINUTES_10 < blockEvent.timestamp) { - const [astEthBalance, astEthTotalSupply] = await Promise.all([ - this.ethProvider.getStethBalance(this.aaveAstethAddress, blockEvent.parentHash), - this.ethProvider.getTotalSupply(blockEvent.parentHash), - ]) - - if (E.isLeft(astEthBalance)) { - return [ - networkAlert( - astEthBalance.left, - `Error in ${AaveSrv.name}.${this.handleAstEthSupply.name}:51`, - `Could not call ethProvider.getStEthBalance`, - ), - ] - } - - if (E.isLeft(astEthTotalSupply)) { - return [ - networkAlert( - astEthTotalSupply.left, - `Error in ${AaveSrv.name}.${this.handleAstEthSupply.name}:51`, - `Could not call ethProvider.getTotalSupply`, - ), - ] - } - - const difference = astEthBalance.right.minus(astEthTotalSupply.right).abs() - - if (difference.isGreaterThan(ASTETH_ETH_1)) { - this.lastReportedAstEthSupplyTimestamp = blockEvent.timestamp - - return [ - Finding.fromObject({ - name: '🚨🚨🚨 astETH balance - astETH totalSupply >= 1ETH', - description: - `stETH.balanceOf(${this.aaveAstethAddress})` + - `=${astEthBalance.right.div(GWEI_DECIMALS).toFixed(0)} ` + - `gwei differs from astETH.totalSupply = ${astEthTotalSupply.right.div(GWEI_DECIMALS).toFixed(0)} gwei by ` + - `${difference.div(GWEI_DECIMALS).toFixed(0)} gwei.\n` + - `NOTE: This difference occurred at block ` + - `${blockEvent.number - 1}`, - alertId: 'ASTETH-BALANCE-AND-SUPPLY-DIFFERENCE', - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - }), - ] - } - } - - return [] - } - - async handleStableStEthSupply(blockEvent: BlockDto): Promise { - if (this.lastReportedStableStEthSupplyTimestamp + MINUTES_10 < blockEvent.timestamp) { - const stableDebtStEthTotalSupply = await this.ethProvider.getStableDebtStEthTotalSupply(blockEvent.number) - if (E.isLeft(stableDebtStEthTotalSupply)) { - return [ - networkAlert( - stableDebtStEthTotalSupply.left, - `Error in ${AaveSrv.name}.${this.handleStableStEthSupply.name}:109`, - `Could not call ethProvider.getStableDebtStEthTotalSupply`, - ), - ] - } - - if (stableDebtStEthTotalSupply.right.isGreaterThan(0)) { - this.lastReportedStableStEthSupplyTimestamp = blockEvent.timestamp - return [ - Finding.fromObject({ - name: '🚨🚨🚨 stableDebtStETH totalSupply is not 0', - description: `stableDebtStETH totalSupply is ${stableDebtStEthTotalSupply.right.toFixed()}`, - alertId: 'STABLE-DEBT-STETH-SUPPLY', - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - }), - ] - } - } - - return [] - } - - async handleVariableStEthSupply(blockEvent: BlockDto): Promise { - if (this.lastReportedVariableStEthSupplyTimestamp + MINUTES_10 < blockEvent.timestamp) { - const variableDebtStEthTotalSupply = await this.ethProvider.getVariableDebtStEthTotalSupply(blockEvent.number) - if (E.isLeft(variableDebtStEthTotalSupply)) { - return [ - networkAlert( - variableDebtStEthTotalSupply.left, - `Error in ${AaveSrv.name}.${this.handleVariableStEthSupply.name}:146`, - `Could not call ethProvider.getStableDebtStEthTotalSupply`, - ), - ] - } - - if (variableDebtStEthTotalSupply.right.isGreaterThan(0)) { - this.lastReportedVariableStEthSupplyTimestamp = blockEvent.timestamp - return [ - Finding.fromObject({ - name: '🚨🚨🚨 variableDebtStETH totalSupply is not 0', - description: `variableDebtStETH totalSupply is ${variableDebtStEthTotalSupply.right.toFixed()}`, - alertId: 'VARIABLE-DEBT-STETH-SUPPLY', - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - }), - ] - } - } - - return [] - } -} diff --git a/ethereum-financial/src/services/aave/aave.functional.spec.ts b/ethereum-financial/src/services/aave/aave.functional.spec.ts deleted file mode 100644 index ad760a520..000000000 --- a/ethereum-financial/src/services/aave/aave.functional.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { App } from '../../app' -import { BlockDto } from '../../entity/events' -import { ethers } from 'forta-agent' - -const TEST_TIMEOUT = 180_000 - -describe('aave functional tests', () => { - let ethProvider: ethers.providers.JsonRpcProvider - - const mainnet = 1 - const drpcProvider = 'https://eth.drpc.org/' - - beforeAll(async () => { - ethProvider = new ethers.providers.JsonRpcProvider(drpcProvider, mainnet) - }) - - test( - 'should NOT alert 🚨🚨🚨 astETH balance - astETH totalSupply >= 1ETH', - async () => { - const app = await App.getInstance(drpcProvider) - const blockNumber = 19_589_514 - - const block = await ethProvider.getBlock(blockNumber) - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - } - - const findings = await app.AaveSrv.handleAstEthSupply(blockDto) - expect(findings.length).toEqual(0) - }, - TEST_TIMEOUT, - ) -}) diff --git a/ethereum-financial/src/services/health-checker/health-checker.srv.spec.ts b/ethereum-financial/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 261a13176..000000000 --- a/ethereum-financial/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { networkAlert } from '../../utils/errors' -import { HealthChecker } from './health-checker.srv' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc')] - const borderTime = 1_000 - const timeForNextCheck = 250 - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/ethereum-financial/src/services/health-checker/health-checker.srv.ts b/ethereum-financial/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 9804bc5d9..000000000 --- a/ethereum-financial/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Finding } from 'forta-agent' -import { NetworkErrorFinding } from '../../utils/errors' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - - constructor(borderTime: number, maxCountErrors: number) { - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): void { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.alertId === NetworkErrorFinding) { - errCount += 1 - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/ethereum-financial/src/services/pools-balances/pool-balance.cache.ts b/ethereum-financial/src/services/pools-balances/pool-balance.cache.ts deleted file mode 100644 index cc3e0eaf0..000000000 --- a/ethereum-financial/src/services/pools-balances/pool-balance.cache.ts +++ /dev/null @@ -1,199 +0,0 @@ -import BigNumber from 'bignumber.js' -import { ETH_DECIMALS } from '../../utils/constants' - -export type PoolBalanceState = { - curveEthBalance: number - curveStEthBalance: number - curvePoolSize: number - - lastReportedCurveImbalance: number - lastReportedCurveImbalanceTimestamp: number - - lastReportedCurveStEthToEthPrice: number - lastReportedCurvePriceChangeLevel: number - lastReportedCurveStEthToEthPriceTimestamp: number - - lastReportedChainlinkStEthToEthPrice: number - lastReportedChainlinkPriceChangeLevel: number - lastReportedChainlinkStEthToEthPriceTimestamp: number -} - -export class PoolBalanceCache { - private _curveEthBalance: BigNumber - private _curveStEthBalance: BigNumber - private _curvePoolSize: BigNumber - - private _lastReportedCurveImbalance: number - private _lastReportedCurveImbalanceTimestamp: number - - private _lastReportedCurveStEthToEthPrice: number - private _lastReportedCurvePriceChangeLevel: number - private _lastReportedCurveStEthToEthPriceTimestamp: number - - private _lastReportedChainlinkStEthToEthPrice: number - private _lastReportedChainlinkPriceChangeLevel: number - private _lastReportedChainlinkStEthToEthPriceTimestamp: number - - constructor() { - this._curveEthBalance = new BigNumber(0) - this._curveStEthBalance = new BigNumber(0) - this._curvePoolSize = new BigNumber(0) - this._lastReportedCurveImbalance = 0 - this._lastReportedCurveImbalanceTimestamp = 0 - this._lastReportedCurveStEthToEthPrice = 0 - this._lastReportedChainlinkPriceChangeLevel = 0 - this._lastReportedChainlinkStEthToEthPriceTimestamp = 0 - this._lastReportedCurvePriceChangeLevel = 0 - this._lastReportedCurveStEthToEthPriceTimestamp = 0 - this._lastReportedChainlinkStEthToEthPrice = 0 - } - - get curveEthBalance(): BigNumber { - return this._curveEthBalance - } - - set curveEthBalance(value: BigNumber) { - this._curveEthBalance = value - } - - get curveStEthBalance(): BigNumber { - return this._curveStEthBalance - } - - set curveStEthBalance(value: BigNumber) { - this._curveStEthBalance = value - } - - get curvePoolSize(): BigNumber { - return this._curvePoolSize - } - - set curvePoolSize(value: BigNumber) { - this._curvePoolSize = value - } - - get lastReportedCurveImbalance(): number { - return this._lastReportedCurveImbalance - } - - set lastReportedCurveImbalance(value: number) { - this._lastReportedCurveImbalance = value - } - - get lastReportedCurveImbalanceTimestamp(): number { - return this._lastReportedCurveImbalanceTimestamp - } - - set lastReportedCurveImbalanceTimestamp(value: number) { - this._lastReportedCurveImbalanceTimestamp = value - } - - get lastReportedCurveStEthToEthPrice(): number { - return this._lastReportedCurveStEthToEthPrice - } - - set lastReportedCurveStEthToEthPrice(value: number) { - this._lastReportedCurveStEthToEthPrice = value - } - - get lastReportedChainlinkPriceChangeLevel(): number { - return this._lastReportedChainlinkPriceChangeLevel - } - - set lastReportedChainlinkPriceChangeLevel(value: number) { - this._lastReportedChainlinkPriceChangeLevel = value - } - - get lastReportedChainlinkStEthToEthPriceTimestamp(): number { - return this._lastReportedChainlinkStEthToEthPriceTimestamp - } - - set lastReportedChainlinkStEthToEthPriceTimestamp(value: number) { - this._lastReportedChainlinkStEthToEthPriceTimestamp = value - } - - get lastReportedCurvePriceChangeLevel(): number { - return this._lastReportedCurvePriceChangeLevel - } - - set lastReportedCurvePriceChangeLevel(value: number) { - this._lastReportedCurvePriceChangeLevel = value - } - - get lastReportedCurveStEthToEthPriceTimestamp(): number { - return this._lastReportedCurveStEthToEthPriceTimestamp - } - - set lastReportedCurveStEthToEthPriceTimestamp(value: number) { - this._lastReportedCurveStEthToEthPriceTimestamp = value - } - - get lastReportedChainlinkStEthToEthPrice(): number { - return this._lastReportedChainlinkStEthToEthPrice - } - - set lastReportedChainlinkStEthToEthPrice(value: number) { - this._lastReportedChainlinkStEthToEthPrice = value - } - - public getState(): Map { - const state: PoolBalanceState = { - curveEthBalance: this.curveEthBalance.div(ETH_DECIMALS).toNumber(), - curveStEthBalance: this.curveStEthBalance.div(ETH_DECIMALS).toNumber(), - curvePoolSize: this.curvePoolSize.div(ETH_DECIMALS).toNumber(), - - lastReportedCurveImbalance: this.lastReportedCurveImbalance, - lastReportedCurveImbalanceTimestamp: this.lastReportedCurveImbalanceTimestamp, - - lastReportedCurveStEthToEthPrice: this.lastReportedCurveStEthToEthPrice, - lastReportedCurvePriceChangeLevel: this.lastReportedCurvePriceChangeLevel, - lastReportedCurveStEthToEthPriceTimestamp: this.lastReportedCurveStEthToEthPriceTimestamp, - - lastReportedChainlinkStEthToEthPrice: this.lastReportedChainlinkStEthToEthPrice, - lastReportedChainlinkPriceChangeLevel: this.lastReportedChainlinkPriceChangeLevel, - lastReportedChainlinkStEthToEthPriceTimestamp: this.lastReportedChainlinkStEthToEthPriceTimestamp, - } - - const out = new Map() - - const dateTimeFormat = new Intl.DateTimeFormat('RU', { - year: '2-digit', - month: '2-digit', - day: '2-digit', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - timeZoneName: 'short', - formatMatcher: 'basic', - hour12: false, - timeZone: 'UTC', - }) - - out.set('curve EthBalance:', state.curveEthBalance.toString()) - out.set('curve StEthBalance:', state.curveStEthBalance.toString()) - out.set('curve PoolSize:', state.curvePoolSize.toString()) - out.set( - 'curve Imbalance:', - state.lastReportedCurveImbalance.toString() + - ' ' + - dateTimeFormat.format(new Date(this.lastReportedCurveImbalanceTimestamp * 1000)), - ) - out.set('curve StEth:Eth', state.lastReportedCurveStEthToEthPrice.toString()) - out.set( - 'curve StEth:Eth price change:', - state.lastReportedCurvePriceChangeLevel.toString() + - '. ' + - dateTimeFormat.format(new Date(this.lastReportedCurveStEthToEthPriceTimestamp * 1000)), - ) - - out.set('chainlink StEth:Eth', state.lastReportedChainlinkStEthToEthPrice.toString()) - out.set( - 'chainlink StEth:Eth price change:', - state.lastReportedChainlinkPriceChangeLevel.toString() + - '. ' + - dateTimeFormat.format(new Date(this.lastReportedChainlinkStEthToEthPriceTimestamp * 1000)), - ) - - return out - } -} diff --git a/ethereum-financial/src/services/pools-balances/pool-balance.functional.spec.ts b/ethereum-financial/src/services/pools-balances/pool-balance.functional.spec.ts deleted file mode 100644 index 040a16735..000000000 --- a/ethereum-financial/src/services/pools-balances/pool-balance.functional.spec.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { App } from '../../app' -import { BlockDto } from '../../entity/events' -import { ethers, Finding, FindingSeverity, FindingType, getEthersProvider } from 'forta-agent' - -const TEST_TIMEOUT = 180_000 - -describe('agent-pools-balances functional tests', () => { - let ethProvider: ethers.providers.JsonRpcProvider - - const mainnet = 1 - const drpcProvider = 'https://eth.drpc.org/' - - beforeAll(async () => { - ethProvider = new ethers.providers.JsonRpcProvider(drpcProvider, mainnet) - }) - - test( - 'should process block with imbalanced Curve pool', - async () => { - const app = await App.getInstance(drpcProvider) - const blockNumber = 16804419 - - const block = await ethProvider.getBlock(blockNumber) - const initBlock = await ethProvider.getBlock(blockNumber - 10) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - } - - const initBlockDto: BlockDto = { - number: initBlock.number, - timestamp: initBlock.timestamp, - parentHash: initBlock.parentHash, - } - - await app.PoolBalanceSrv.init(initBlockDto) - const result = await app.PoolBalanceSrv.handleBlock(blockDto) - - const expected = Finding.fromObject({ - alertId: 'CURVE-POOL-IMBALANCE', - description: `Current pool state:\n` + `ETH - 432969.66 (44.87%)\n` + `stETH - 531933.72 (55.13%)`, - name: '⚠️ Curve Pool is imbalanced', - severity: FindingSeverity.Medium, - type: FindingType.Suspicious, - }) - - expect(result.length).toEqual(1) - expect(result[0].alertId).toEqual(expected.alertId) - expect(result[0].description).toEqual(expected.description) - expect(result[0].name).toEqual(expected.name) - expect(result[0].severity).toEqual(expected.severity) - expect(result[0].type).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) - - it( - 'should process block with significant Curve pool change', - async () => { - const app = await App.getInstance(drpcProvider) - const startBlock = 16_870_589 - const endBlock = 16_870_590 - - const initBlock = await ethProvider.getBlock(startBlock) - - const initBlockDto: BlockDto = { - number: initBlock.number, - timestamp: initBlock.timestamp, - parentHash: initBlock.parentHash, - } - - await app.PoolBalanceSrv.init(initBlockDto) - - const result: Finding[] = [] - for (let b = startBlock; b <= endBlock; b++) { - const block = await ethProvider.getBlock(b) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - } - - const f = await app.PoolBalanceSrv.handleBlock(blockDto) - - result.push(...f) - } - - const expected = Finding.fromObject({ - alertId: 'CURVE-POOL-SIZE-CHANGE', - description: `Curve Pool size has decreased by 13.24% since the last block`, - name: '🚨 Significant Curve Pool size change', - severity: FindingSeverity.High, - type: FindingType.Info, - }) - - expect(result.length).toEqual(1) - expect(result[0].alertId).toEqual(expected.alertId) - expect(result[0].description).toEqual(expected.description) - expect(result[0].name).toEqual(expected.name) - expect(result[0].severity).toEqual(expected.severity) - expect(result[0].type).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) - - it( - 'Total unstaked stETH increased', - async () => { - const app = await App.getInstance(drpcProvider) - const startBlock = 16_038_250 - const endBlock = 16_038_263 - - const initBlock = await ethProvider.getBlock(startBlock) - - const initBlockDto: BlockDto = { - number: initBlock.number, - timestamp: initBlock.timestamp, - parentHash: initBlock.parentHash, - } - - await app.PoolBalanceSrv.init(initBlockDto) - - const result: Finding[] = [] - for (let b = startBlock; b <= endBlock; b++) { - const block = await ethProvider.getBlock(b) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - } - - const f = await app.PoolBalanceSrv.handleBlock(blockDto) - result.push(...f) - } - - const expected: Finding[] = [ - Finding.fromObject({ - alertId: 'CURVE-POOL-IMBALANCE-RAPID-CHANGE', - description: - 'Prev reported pool sate:\n' + - 'ETH - 227230.48 (33.86%)\n' + - 'stETH - 443785.27 (66.14%)\n' + - 'Current pool state:\n' + - 'ETH - 151562.64 (25.84%)\n' + - 'stETH - 435021.57 (74.16%)', - name: '🚨 Curve Pool rapid imbalance change', - severity: FindingSeverity.High, - type: FindingType.Suspicious, - }), - Finding.fromObject({ - alertId: 'CURVE-POOL-SIZE-CHANGE', - description: 'Curve Pool size has increased by 14.39% since the last block', - name: '🚨 Significant Curve Pool size change', - severity: FindingSeverity.High, - type: FindingType.Info, - }), - ] - - expect(result.length).toEqual(2) - for (let i = 0; i <= 1; i++) { - expect(result[i].alertId).toEqual(expected[i].alertId) - expect(result[i].description).toEqual(expected[i].description) - expect(result[i].name).toEqual(expected[i].name) - expect(result[i].severity).toEqual(expected[i].severity) - expect(result[i].type).toEqual(expected[i].type) - } - }, - TEST_TIMEOUT, - ) -}) diff --git a/ethereum-financial/src/services/pools-balances/pool-balance.srv.ts b/ethereum-financial/src/services/pools-balances/pool-balance.srv.ts deleted file mode 100644 index f50aa36ea..000000000 --- a/ethereum-financial/src/services/pools-balances/pool-balance.srv.ts +++ /dev/null @@ -1,405 +0,0 @@ -import { Logger } from 'winston' -import { BlockDto } from '../../entity/events' -import { elapsedTime } from '../../utils/time' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { networkAlert, NetworkError } from '../../utils/errors' -import { PoolBalanceCache } from './pool-balance.cache' -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { ETH_DECIMALS } from '../../utils/constants' - -// MIN_5 Math.ceil((5 * 60) / 12) = 25 -// 5 minutes in eth blocks -const MIN_5 = 25 -const PERCENT_10 = 10 -const PERCENT_5 = 5 - -const PRICE_CHANGE_STEP = 0.005 -const PRICE_CHANGE_0_995 = 0.995 -const PRICE_CHANGE_0_98 = 0.98 - -const WEEK_1 = 60 * 60 * 24 * 7 // 1 week -const MINUTES_10 = 60 * 10 - -const CHAINLINK_STETH_ETH_PAGE = 'https://data.chain.link/ethereum/mainnet/crypto-eth/steth-eth' - -export interface IPoolBalanceClient { - getCurveEthBalance(blockNumber: number): Promise> - - getCurveStEthBalance(blockNumber: number): Promise> - - getCurveStEthToEthPrice(blockNumber: number): Promise> - - getChainlinkStEthToEthPrice(blockNumber: number): Promise> -} - -export class PoolBalanceSrv { - private readonly logger: Logger - private readonly ethClient: IPoolBalanceClient - private readonly cache: PoolBalanceCache - - constructor(logger: Logger, ethClient: IPoolBalanceClient, cache: PoolBalanceCache) { - this.logger = logger - this.ethClient = ethClient - this.cache = cache - } - - async init(blockDto: BlockDto): Promise { - const start = new Date().getTime() - - const [ethBalance, stEthBalance, ethBalancePrev, stEthBalancePrev, curveStEthToEthPrice, chainlinkStEthToEthPrice] = - await Promise.all([ - this.ethClient.getCurveEthBalance(blockDto.number), - this.ethClient.getCurveStEthBalance(blockDto.number), - - this.ethClient.getCurveEthBalance(blockDto.number - MIN_5), - this.ethClient.getCurveStEthBalance(blockDto.number - MIN_5), - - this.ethClient.getCurveStEthToEthPrice(blockDto.number), - this.ethClient.getChainlinkStEthToEthPrice(blockDto.number), - ]) - - if (E.isLeft(ethBalance)) { - return ethBalance.left - } - - if (E.isLeft(stEthBalance)) { - return stEthBalance.left - } - - if (E.isLeft(ethBalancePrev)) { - return ethBalancePrev.left - } - - if (E.isLeft(stEthBalancePrev)) { - return stEthBalancePrev.left - } - - if (E.isLeft(curveStEthToEthPrice)) { - return curveStEthToEthPrice.left - } - - if (E.isLeft(chainlinkStEthToEthPrice)) { - return chainlinkStEthToEthPrice.left - } - - this.cache.curveEthBalance = ethBalance.right - this.cache.curveStEthBalance = stEthBalance.right - this.cache.curvePoolSize = this.cache.curveEthBalance.plus(this.cache.curveStEthBalance) - - this.cache.lastReportedCurveImbalance = this.calcImbalance(ethBalancePrev.right, stEthBalancePrev.right) - - if (Math.abs(this.cache.lastReportedCurveImbalance) > PERCENT_10) { - this.cache.lastReportedCurveImbalanceTimestamp = blockDto.timestamp - } - - this.cache.lastReportedCurveStEthToEthPrice = curveStEthToEthPrice.right.toNumber() - this.cache.lastReportedCurvePriceChangeLevel = - Math.ceil(curveStEthToEthPrice.right.toNumber() / PRICE_CHANGE_STEP) / 100 - this.cache.lastReportedCurveStEthToEthPriceTimestamp = blockDto.timestamp - - this.cache.lastReportedChainlinkStEthToEthPrice = chainlinkStEthToEthPrice.right.toNumber() - this.cache.lastReportedChainlinkPriceChangeLevel = - Math.ceil(chainlinkStEthToEthPrice.right.toNumber() / PRICE_CHANGE_STEP) / 100 - this.cache.lastReportedChainlinkStEthToEthPriceTimestamp = blockDto.timestamp - - this.logger.info(elapsedTime(PoolBalanceSrv.name + '.' + this.init.name, start)) - - return null - } - - async handleBlock(blockEvent: BlockDto): Promise { - const start = new Date().getTime() - const findings: Finding[] = [] - - const [curvePoolImbalanceFindings, curvePegFindings, chainlinkPegFindings] = await Promise.all([ - this.handleCurvePool(blockEvent), - this.handleCurvePriceChange(blockEvent), - this.handleChainlinkPriceChange(blockEvent), - ]) - - findings.push(...curvePoolImbalanceFindings, ...curvePegFindings, ...chainlinkPegFindings) - - this.logger.info(elapsedTime(PoolBalanceSrv.name + '.' + this.handleBlock.name, start)) - return findings - } - - private async handleCurvePool(blockEvent: BlockDto): Promise { - const out: Finding[] = [] - const [ethBalance, stEthBalance] = await Promise.all([ - this.ethClient.getCurveEthBalance(blockEvent.number), - this.ethClient.getCurveStEthBalance(blockEvent.number), - ]) - - if (E.isLeft(ethBalance)) { - return [ - networkAlert( - ethBalance.left, - `Error in ${PoolBalanceSrv.name}.${this.handleCurvePool.name}:112`, - `Could not call ethProvider.getCurveEthBalance`, - ), - ] - } - - if (E.isLeft(stEthBalance)) { - return [ - networkAlert( - stEthBalance.left, - `Error in ${PoolBalanceSrv.name}.${this.handleCurvePool.name}:112`, - `Could not call ethProvider.getCurveStEthBalance`, - ), - ] - } - - const curveImbalance = this.calcImbalance(ethBalance.right, stEthBalance.right) - - if (this.cache.lastReportedCurveImbalanceTimestamp + WEEK_1 < blockEvent.timestamp) { - if (curveImbalance < -PERCENT_10 || curveImbalance > PERCENT_10) { - out.push( - Finding.fromObject({ - name: '⚠️ Curve Pool is imbalanced', - description: `Current pool state:\n` + this.curvePoolToString(ethBalance.right, stEthBalance.right), - alertId: 'CURVE-POOL-IMBALANCE', - severity: FindingSeverity.Medium, - type: FindingType.Suspicious, - }), - ) - - this.cache.lastReportedCurveImbalanceTimestamp = blockEvent.timestamp - this.cache.lastReportedCurveImbalance = curveImbalance - } - } - - if (this.curvePoolImbalanceRapidlyChanges(curveImbalance)) { - out.push( - Finding.fromObject({ - name: '🚨 Curve Pool rapid imbalance change', - description: - `Prev reported pool sate:\n` + - this.curvePoolToString(this.cache.curveEthBalance, this.cache.curveStEthBalance) + - '\n' + - `Current pool state:\n` + - this.curvePoolToString(ethBalance.right, stEthBalance.right), - alertId: 'CURVE-POOL-IMBALANCE-RAPID-CHANGE', - severity: FindingSeverity.High, - type: FindingType.Suspicious, - }), - ) - this.cache.lastReportedCurveImbalanceTimestamp = blockEvent.timestamp - this.cache.lastReportedCurveImbalance = curveImbalance - } - - const poolSize = ethBalance.right.plus(stEthBalance.right) - const poolSizeChange = this.calcPoolSizeChange(poolSize, this.cache.curvePoolSize) - - if (Math.abs(poolSizeChange) > PERCENT_5) { - let severity = FindingSeverity.Info - let name = '⚠️ Significant Curve Pool size change' - if (poolSizeChange < -PERCENT_10 || poolSizeChange > PERCENT_10) { - severity = FindingSeverity.High - name = '🚨 Significant Curve Pool size change' - } - - out.push( - Finding.fromObject({ - name: name, - description: `Curve Pool size has ${ - poolSizeChange > 0 - ? 'increased by ' + poolSizeChange.toFixed(2).toString() - : 'decreased by ' + -poolSizeChange.toFixed(2).toString() - }% since the last block`, - alertId: 'CURVE-POOL-SIZE-CHANGE', - severity: severity, - type: FindingType.Info, - metadata: { - sizeBefore: this.cache.curvePoolSize.dividedBy(ETH_DECIMALS).toFixed(), - sizeAfter: poolSize.dividedBy(ETH_DECIMALS).toFixed(), - }, - }), - ) - } - - this.cache.curvePoolSize = poolSize - this.cache.curveEthBalance = ethBalance.right - this.cache.curveStEthBalance = stEthBalance.right - - return out - } - - async handleCurvePriceChange(blockDto: BlockDto): Promise { - const out: Finding[] = [] - const curveStEthToEthPrice = await this.ethClient.getCurveStEthToEthPrice(blockDto.number) - if (E.isLeft(curveStEthToEthPrice)) { - return [ - networkAlert( - curveStEthToEthPrice.left, - `Error in ${PoolBalanceSrv.name}.${this.handleCurvePriceChange.name}:224`, - `Could not call ethProvider.getCurveEthBalance`, - ), - ] - } - - // Division by 100 is required to normalize pegLevel to PEG_STEP - const priceChangeLevel = Math.ceil(curveStEthToEthPrice.right.toNumber() / PRICE_CHANGE_STEP) / 100 - // info on price decrease - if ( - priceChangeLevel < this.cache.lastReportedCurveStEthToEthPrice && - curveStEthToEthPrice.right.toNumber() < PRICE_CHANGE_0_995 - ) { - out.push( - Finding.fromObject({ - name: '⚠️ stETH:ETH price on Curve decreased', - description: `stETH:ETH price on Curve decreased to ${curveStEthToEthPrice.right.toFixed(4)}`, - alertId: 'STETH-CURVE-PRICE-DECREASE', - severity: FindingSeverity.Medium, - type: FindingType.Info, - metadata: { - peg: curveStEthToEthPrice.right.toFixed(4), - }, - }), - ) - this.cache.lastReportedCurveStEthToEthPrice = curveStEthToEthPrice.right.toNumber() - this.cache.lastReportedCurvePriceChangeLevel = priceChangeLevel - this.cache.lastReportedCurveStEthToEthPriceTimestamp = blockDto.timestamp - } - - if (this.cache.lastReportedCurveStEthToEthPriceTimestamp + MINUTES_10 < blockDto.timestamp) { - if (curveStEthToEthPrice.right.toNumber() <= PRICE_CHANGE_0_98) { - out.push( - Finding.fromObject({ - name: '🚨Super low stETH:ETH price on Curve', - description: `Current stETH:ETH price on Curve - ${curveStEthToEthPrice.right.toFixed(4)}`, - alertId: 'LOW-STETH-PRICE', - severity: FindingSeverity.High, - type: FindingType.Degraded, - metadata: { - peg: curveStEthToEthPrice.right.toFixed(4), - }, - }), - ) - this.cache.lastReportedCurveStEthToEthPrice = curveStEthToEthPrice.right.toNumber() - this.cache.lastReportedCurvePriceChangeLevel = priceChangeLevel - this.cache.lastReportedCurveStEthToEthPriceTimestamp = blockDto.timestamp - } - } - - if (this.cache.lastReportedCurvePriceChangeLevel + PRICE_CHANGE_STEP * 2 < priceChangeLevel) { - this.cache.lastReportedCurveStEthToEthPrice = curveStEthToEthPrice.right.toNumber() - this.cache.lastReportedCurvePriceChangeLevel = priceChangeLevel - this.cache.lastReportedCurveStEthToEthPriceTimestamp = blockDto.timestamp - } - - return out - } - - async handleChainlinkPriceChange(blockDto: BlockDto): Promise { - const out: Finding[] = [] - - const chainlinkStEthToEthPrice = await this.ethClient.getChainlinkStEthToEthPrice(blockDto.number) - if (E.isLeft(chainlinkStEthToEthPrice)) { - return [ - networkAlert( - chainlinkStEthToEthPrice.left, - `Error in ${PoolBalanceSrv.name}.${this.handleChainlinkPriceChange.name}:296`, - `Could not call ethProvider.getChainlinkPeg`, - ), - ] - } - - // Division by 100 is required to normalize pegLevel to PEG_STEP - const priceChangeLevel = Math.ceil(chainlinkStEthToEthPrice.right.toNumber() / PRICE_CHANGE_STEP) / 100 - // info on price decrease - if ( - priceChangeLevel < this.cache.lastReportedChainlinkPriceChangeLevel && - chainlinkStEthToEthPrice.right.toNumber() < PRICE_CHANGE_0_995 - ) { - out.push( - Finding.fromObject({ - name: '⚠️ stETH:ETH price on Chainlink decreased', - description: `stETH:ETH price on Chainlink decreased to ${chainlinkStEthToEthPrice.right.toFixed(4)}, [source](${CHAINLINK_STETH_ETH_PAGE})`, - alertId: 'STETH-CHAINLINK-PRICE-DECREASE', - severity: FindingSeverity.Medium, - type: FindingType.Info, - metadata: { - peg: chainlinkStEthToEthPrice.right.toFixed(4), - }, - }), - ) - - this.cache.lastReportedChainlinkStEthToEthPrice = chainlinkStEthToEthPrice.right.toNumber() - this.cache.lastReportedChainlinkPriceChangeLevel = priceChangeLevel - this.cache.lastReportedChainlinkStEthToEthPriceTimestamp = blockDto.timestamp - } - - if (this.cache.lastReportedChainlinkStEthToEthPriceTimestamp + MINUTES_10 < blockDto.timestamp) { - if (chainlinkStEthToEthPrice.right.toNumber() <= PRICE_CHANGE_0_98) { - out.push( - Finding.fromObject({ - name: '🚨Super low stETH:ETH price on Chainlink', - description: `Current stETH:ETH price on Chainlink - ${chainlinkStEthToEthPrice.right.toFixed(4)}, [source](${CHAINLINK_STETH_ETH_PAGE})`, - alertId: 'LOW-STETH-CHAINLINK-PEG', - severity: FindingSeverity.High, - type: FindingType.Degraded, - metadata: { - peg: chainlinkStEthToEthPrice.right.toFixed(4), - }, - }), - ) - - this.cache.lastReportedChainlinkStEthToEthPrice = chainlinkStEthToEthPrice.right.toNumber() - this.cache.lastReportedChainlinkPriceChangeLevel = priceChangeLevel - this.cache.lastReportedChainlinkStEthToEthPriceTimestamp = blockDto.timestamp - } - } - if (this.cache.lastReportedChainlinkPriceChangeLevel + PRICE_CHANGE_STEP * 2 < priceChangeLevel) { - this.cache.lastReportedChainlinkStEthToEthPrice = chainlinkStEthToEthPrice.right.toNumber() - this.cache.lastReportedChainlinkPriceChangeLevel = priceChangeLevel - this.cache.lastReportedChainlinkStEthToEthPriceTimestamp = blockDto.timestamp - } - - return out - } - - private calcImbalance(balance1: BigNumber, balance2: BigNumber): number { - const totalSize = balance1.plus(balance2) - const percent1 = balance1.div(totalSize).times(100) - const percent2 = balance2.div(totalSize).times(100) - - return percent1.minus(percent2).toNumber() - } - - private curvePoolToString(v1: BigNumber, v2: BigNumber): string { - const eth = v1.dividedBy(ETH_DECIMALS) - const stEth = v2.dividedBy(ETH_DECIMALS) - const totalSize = v1.plus(v2).dividedBy(ETH_DECIMALS) - - return ( - `ETH - ${eth.toFixed(2)} ` + - `(${eth.div(totalSize).times(100).toFixed(2)}%)\n` + - `stETH - ${stEth.toFixed(2)} ` + - `(${stEth.div(totalSize).times(100).toFixed(2)}%)` - ) - } - - private curvePoolImbalanceRapidlyChanges(curveImbalance: number): boolean { - if ( - this.cache.lastReportedCurveImbalance > 0 && - curveImbalance > this.cache.lastReportedCurveImbalance + PERCENT_10 - ) { - return true - } - - if ( - this.cache.lastReportedCurveImbalance < 0 && - curveImbalance < this.cache.lastReportedCurveImbalance - PERCENT_10 - ) { - return true - } - - return false - } - - private calcPoolSizeChange(balancePrev: BigNumber, balanceCur: BigNumber): number { - return (balanceCur.div(balancePrev).toNumber() - 1) * 100 - } -} diff --git a/ethereum-financial/src/utils/constants.ts b/ethereum-financial/src/utils/constants.ts deleted file mode 100644 index 93d1174cb..000000000 --- a/ethereum-financial/src/utils/constants.ts +++ /dev/null @@ -1,32 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ERC20 = { - decimals: number - name: string -} -export type Address = { - STETH_ADDRESS: string - AAVE_ASTETH_ADDRESS: string - AAVE_STABLE_DEBT_STETH_ADDRESS: string - AAVE_VARIABLE_DEBT_STETH_ADDRESS: string - CURVE_POOL_ADDRESS: string - CHAINLINK_STETH_PRICE_FEED: string -} -export const ETH_DECIMALS = new BigNumber(10).pow(18) - -const STETH_ADDRESS: string = '0xae7ab96520de3a18e5e111b5eaab095312d7fe84' -const AAVE_ASTETH_ADDRESS: string = '0x1982b2f5814301d4e9a8b0201555376e62f82428' -const AAVE_STABLE_DEBT_STETH_ADDRESS: string = '0x66457616dd8489df5d0afd8678f4a260088aaf55' -const AAVE_VARIABLE_DEBT_STETH_ADDRESS: string = '0xa9deac9f00dc4310c35603fcd9d34d1a750f81db' - -const CURVE_POOL_ADDRESS: string = '0xdc24316b9ae028f1497c275eb9192a3ea0f67022' -const CHAINLINK_STETH_PRICE_FEED: string = '0x86392dC19c0b719886221c78AB11eb8Cf5c52812' - -export const Address: Address = { - STETH_ADDRESS: STETH_ADDRESS, - AAVE_ASTETH_ADDRESS: AAVE_ASTETH_ADDRESS, - AAVE_STABLE_DEBT_STETH_ADDRESS: AAVE_STABLE_DEBT_STETH_ADDRESS, - AAVE_VARIABLE_DEBT_STETH_ADDRESS: AAVE_VARIABLE_DEBT_STETH_ADDRESS, - CURVE_POOL_ADDRESS: CURVE_POOL_ADDRESS, - CHAINLINK_STETH_PRICE_FEED: CHAINLINK_STETH_PRICE_FEED, -} diff --git a/ethereum-financial/src/utils/errors.ts b/ethereum-financial/src/utils/errors.ts deleted file mode 100644 index 0882f5979..000000000 --- a/ethereum-financial/src/utils/errors.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' - -export const NetworkErrorFinding = 'NETWORK-ERROR' - -export function networkAlert(err: Error, name: string, desc: string): Finding { - return Finding.fromObject({ - name: name, - description: desc, - alertId: NetworkErrorFinding, - severity: FindingSeverity.Unknown, - type: FindingType.Degraded, - metadata: { - stack: `${err.stack}`, - message: `${err.message}`, - name: `${err.name}`, - }, - }) -} - -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - this.cause = e.cause - } else { - this.message = `${e}` - } - } -} diff --git a/ethereum-financial/src/utils/mutex.ts b/ethereum-financial/src/utils/mutex.ts deleted file mode 100644 index 377f148fe..000000000 --- a/ethereum-financial/src/utils/mutex.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Mutex, MutexInterface, withTimeout } from 'async-mutex' - -export class DataRW { - private mutex: MutexInterface - private value: T[] - - constructor(initialValue: T[]) { - this.mutex = withTimeout(new Mutex(), 100) - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: T[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/ethereum-financial/src/utils/string.ts b/ethereum-financial/src/utils/string.ts deleted file mode 100644 index 6ab6e3f07..000000000 --- a/ethereum-financial/src/utils/string.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { ETH_DECIMALS } from './constants' -import BigNumber from 'bignumber.js' -export function toEthString(wei: BigNumber): string { - return wei.dividedBy(ETH_DECIMALS).toFixed(3) + ' ETH' -} diff --git a/ethereum-financial/src/utils/time.ts b/ethereum-financial/src/utils/time.ts deleted file mode 100644 index acd3cb72f..000000000 --- a/ethereum-financial/src/utils/time.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} diff --git a/ethereum-financial/src/utils/version.ts b/ethereum-financial/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/ethereum-financial/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/ethereum-financial/tsconfig.json b/ethereum-financial/tsconfig.json deleted file mode 100644 index 9f1e16f51..000000000 --- a/ethereum-financial/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist" - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/ethereum-financial/yarn.lock b/ethereum-financial/yarn.lock deleted file mode 100644 index 860752bf8..000000000 --- a/ethereum-financial/yarn.lock +++ /dev/null @@ -1,5090 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.9.tgz#b028820718000f267870822fec434820e9b1e4d1" - integrity sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.9" - "@babel/parser" "^7.23.9" - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6", "@babel/generator@^7.7.2": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.9.tgz#c3e20bbe7f7a7e10cb9b178384b4affdf5995c7d" - integrity sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ== - dependencies: - "@babel/template" "^7.23.9" - "@babel/traverse" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" - integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.23.9", "@babel/template@^7.3.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.23.9.tgz#f881d0487cba2828d3259dcb9ef5005a9731011a" - integrity sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - -"@babel/traverse@^7.23.9": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.23.9", "@babel/types@^7.3.3": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" - integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.56.0": - version "8.56.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" - integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@faker-js/faker@^8.3.1": - version "8.4.0" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.0.tgz#dc09924ee5fa6438eaaa49d0a8820c64d2f8518f" - integrity sha512-htW87352wzUCdX1jyUQocUcmAaFqcR/w082EC8iP/gtkF0K+aKcBp0hR5Arb7dzR8tQ1TrhE9DNa5EbJELm84w== - -"@grpc/grpc-js@^1.3.6": - version "1.9.14" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.14.tgz#236378822876cbf7903f9d61a0330410e8dcc5a1" - integrity sha512-nOpuzZ2G3IuMFN+UPPpKrC6NsLmWsTqSsm66IRfnBt1D4pwTqE27lmbpcPM+l2Ua4gE7PfjRHI6uedAy7hoXUw== - dependencies: - "@grpc/proto-loader" "^0.7.8" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.8": - version "0.7.10" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.10.tgz#6bf26742b1b54d0a473067743da5d3189d06d720" - integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.4" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz#d9fae00a2d5cb40f92cfe64b47ad749fbc38f917" - integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.22" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz#72a621e5de59f5f1ef792d0793a82ee20f645e4c" - integrity sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node20@^20.1.2": - version "20.1.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.2.tgz#b93128c411d38e9507035255195bc8a6718541e3" - integrity sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.11": - version "29.5.11" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" - integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.14.202" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "20.11.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.7.tgz#cb49aedd758c978c30806d0c38b520ed2a3df6e0" - integrity sha512-GPmeN1C3XAyV5uybAf4cMLWT9fDWcmQhZVtMFu7OR32WjrqGG+Wnk2V1d0bmtUyE/Zy1QJ9BxyiTih9z8Oks8A== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.19.1.tgz#bb0676af940bc23bf299ca58dbdc6589c2548c2e" - integrity sha512-roQScUGFruWod9CEyoV5KlCYrubC/fvG8/1zXuT0WTcxX87GnMMmnksMwSg99lo1xiKrBzw2icsJPMAw1OtKxg== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/type-utils" "6.19.1" - "@typescript-eslint/utils" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.19.1.tgz#68a87bb21afaf0b1689e9cdce0e6e75bc91ada78" - integrity sha512-WEfX22ziAh6pRE9jnbkkLGp/4RhTpffr2ZK5bJ18M8mIfA8A+k97U9ZyaXCEJRlmMHh7R9MJZWXp/r73DzINVQ== - dependencies: - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz#2f527ee30703a6169a52b31d42a1103d80acd51b" - integrity sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w== - dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" - -"@typescript-eslint/type-utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz#6a130e3afe605a4898e043fa9f72e96309b54935" - integrity sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg== - dependencies: - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/utils" "6.19.1" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.19.1.tgz#2d4c9d492a63ede15e7ba7d129bdf7714b77f771" - integrity sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz#796d88d88882f12e85bb33d6d82d39e1aea54ed1" - integrity sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA== - dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.19.1.tgz#df93497f9cfddde2bcc2a591da80536e68acd151" - integrity sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.19.1": - version "6.19.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz#2164073ed4fc34a5ff3b5e25bb5a442100454c4c" - integrity sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ== - dependencies: - "@typescript-eslint/types" "6.19.1" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -async-mutex@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" - integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.6.7" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.7.tgz#7b48c2e27c96f9c68a2f8f31e2ab19f59b06b0a7" - integrity sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA== - dependencies: - follow-redirects "^1.15.4" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" - integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.4" - inherits "^2.0.4" - parse-asn1 "^5.1.6" - readable-stream "^3.6.2" - safe-buffer "^5.2.1" - -browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001565: - version "1.0.30001580" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001580.tgz#e3c76bc6fe020d9007647044278954ff8cd17d1e" - integrity sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@4.3.4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - -deep-extend@^0.6.0, deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.601: - version "1.4.647" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.647.tgz#3c8d4815e5ed2fbdd37f4ab7333cd9f8fc56d53a" - integrity sha512-Z/fTNGwc45WrYQhPaEcz5tAJuZZ8G7S/DBnhS6Kgp4BxnS40Z/HqlJ0hHg3Z79IGVzuVartIlTcjw/cQbPLgOw== - -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.6.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.3.tgz#8acb8b1e45597fe1f4d4cf25163d90119efc12be" - integrity sha512-+YsJFVH6R+tOiO3gCJon5oqn4KWc+mDq2leudk8mrp8RFubLOo9CVyi3cib4L7XMpxExmkmBZQTPDYVBzgpgOA== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.56.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.56.0.tgz#4957ce8da409dc0809f99ab07a1b94832ab74b15" - integrity sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.56.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethers@^5.5.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.16.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.16.0.tgz#83b9a9375692db77a822df081edb6a9cf6839320" - integrity sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.4: - version "1.15.5" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.5.tgz#54d4d6d062c0fa7d9d17feb008461550e3ba8020" - integrity sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -fp-ts@^2.16.1: - version "2.16.2" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.2.tgz#7faa90f6fc2e8cf84c711d2c4e606afe2be9e342" - integrity sha512-CkqAjnIKFqvo3sCyoBTqgJvF+bHrSik584S9nhTjtBESLx26cbtVMR/T9a6ApChOcSDAaM3JydDmWDUn4EEXng== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -getopts@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" - integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore-walk@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -knex@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/knex/-/knex-3.1.0.tgz#b6ddd5b5ad26a6315234a5b09ec38dc4a370bd8c" - integrity sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw== - dependencies: - colorette "2.0.19" - commander "^10.0.0" - debug "4.3.4" - escalade "^3.1.1" - esm "^3.2.25" - get-package-type "^0.1.0" - getopts "2.3.0" - interpret "^2.2.0" - lodash "^4.17.21" - pg-connection-string "2.6.2" - rechoir "^0.8.0" - resolve-from "^5.0.0" - tarn "^3.0.2" - tildify "2.0.0" - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -nan@^2.12.1: - version "2.18.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" - integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -needle@^2.2.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-gyp-build@^4.2.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-pre-gyp@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.3.tgz#244a62d1c690eece3f6165c6cdb0db03ebd80b76" - integrity sha512-7jH/NXbFPxVaMwmBCC2B9F/V6X1VkEdNgx3iu9jji8WxWcvhMWkmhNWhI5077zknOnZnBzba9hZP6bCPJLSReQ== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-bundled@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pg-connection-string@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" - integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.4: - version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -readable-stream@^2.0.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^5.3.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sql-template-strings@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/sql-template-strings/-/sql-template-strings-2.2.2.tgz#3f11508a25addfce217a3042a9d300c3193b96ff" - integrity sha512-UXhXR2869FQaD+GMly8jAMCRZ94nU5KcrFetZfWEMd+LVVG6y0ExgHAhatEcKZ/wk8YcKPdi+hiD2wm75lq3/Q== - -sqlite3@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.2.0.tgz#49026d665e9fc4f922e56fb9711ba5b4c85c4901" - integrity sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.11.0" - -sqlite@3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/sqlite/-/sqlite-3.0.6.tgz#82d15bb45a1ca2a7ac8f7a1079f19dc9abe2ee75" - integrity sha512-5SW7HcN+s3TyqpsxOujXhQDCRSCgsxdiU0peT/Y9CT5T0rAsGLwtpXcMyQ7OzOPQ4YUZ5XiGlrwuuQbszr2xtw== - dependencies: - sqlite3 "^4.0.0" - optionalDependencies: - sql-template-strings "^2.2.2" - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -tarn@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" - integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tildify@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" - integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.2: - version "29.1.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" - integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-retry@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.4.tgz#151e813adec2e7edffa5493c2f07b47e71fd336e" - integrity sha512-r9hIgfdCyU5yBe090s3E1VdPWGifBHx6uzu5hjRn6fbK0jpV8t4TGzNBghnxZXbm2ZNsm909E5WbwPGWAHdQOQ== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.2: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -winston-transport@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.6.0.tgz#f1c1a665ad1b366df72199e27892721832a19e1b" - integrity sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.11.0.tgz#2d50b0a695a2758bb1c95279f0a88e858163ed91" - integrity sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.5.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/ethereum-governance/src/abi/BaseAdapter.json b/ethereum-governance/src/abi/BaseAdapter.json new file mode 100644 index 000000000..901167cf7 --- /dev/null +++ b/ethereum-governance/src/abi/BaseAdapter.json @@ -0,0 +1,163 @@ +[ + { + "type": "function", + "name": "BASE_GAS_LIMIT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "CROSS_CHAIN_CONTROLLER", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBaseCrossChainController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "adapterName", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "forwardMessage", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + }, + { + "name": "executionGasLimit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "destinationChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "message", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getTrustedRemoteByChainId", + "inputs": [ + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "infraToNativeChainId", + "inputs": [ + { + "name": "infraChainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nativeToInfraChainId", + "inputs": [ + { + "name": "nativeChainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setupPayments", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "SetTrustedRemote", + "inputs": [ + { + "name": "originChainId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "originForwarder", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] diff --git a/ethereum-governance/src/abi/CrossChainController.json b/ethereum-governance/src/abi/CrossChainController.json new file mode 100644 index 000000000..ffcbf2813 --- /dev/null +++ b/ethereum-governance/src/abi/CrossChainController.json @@ -0,0 +1,1884 @@ +{ + "abi": [ + { "type": "receive", "stateMutability": "payable" }, + { + "type": "function", + "name": "allowReceiverBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdaptersInput", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "approveSenders", + "inputs": [{ "name": "senders", "type": "address[]", "internalType": "address[]" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deliverEnvelope", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "disableBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.BridgeAdapterToDisable[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "disallowReceiverBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "emergencyEtherTransfer", + "inputs": [ + { "name": "to", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "emergencyTokenTransfer", + "inputs": [ + { "name": "erc20Token", "type": "address", "internalType": "address" }, + { "name": "to", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "enableBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "components": [ + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "forwardMessage", + "inputs": [ + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [ + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "bytes32", "internalType": "bytes32" } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getConfigurationByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.ReceiverConfiguration", + "components": [ + { "name": "requiredConfirmation", "type": "uint8", "internalType": "uint8" }, + { "name": "validityTimestamp", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentEnvelopeNonce", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentTransactionNonce", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getEnvelopeState", + "inputs": [{ "name": "envelopeId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "uint8", "internalType": "enum ICrossChainReceiver.EnvelopeState" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getEnvelopeState", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "uint8", "internalType": "enum ICrossChainReceiver.EnvelopeState" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getForwarderBridgeAdaptersByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ChainIdBridgeConfig[]", + "components": [ + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getReceiverBridgeAdaptersByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [{ "name": "", "type": "address[]", "internalType": "address[]" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getSupportedChains", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTransactionState", + "inputs": [ + { + "name": "transaction", + "type": "tuple", + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "components": [ + { "name": "confirmations", "type": "uint8", "internalType": "uint8" }, + { "name": "firstBridgedAt", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTransactionState", + "inputs": [{ "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "components": [ + { "name": "confirmations", "type": "uint8", "internalType": "uint8" }, + { "name": "firstBridgedAt", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "guardian", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { "name": "owner", "type": "address", "internalType": "address" }, + { "name": "guardian", "type": "address", "internalType": "address" }, + { + "name": "initialRequiredConfirmations", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "requiredConfirmations", "type": "uint8", "internalType": "uint8" } + ] + }, + { + "name": "receiverBridgeAdaptersToAllow", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + }, + { + "name": "forwarderBridgeAdaptersToEnable", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "components": [ + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" } + ] + }, + { "name": "sendersToApprove", "type": "address[]", "internalType": "address[]" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isEnvelopeRegistered", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isEnvelopeRegistered", + "inputs": [{ "name": "envelopeId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isReceiverBridgeAdapterAllowed", + "inputs": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainId", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSenderApproved", + "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionForwarded", + "inputs": [{ "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionForwarded", + "inputs": [ + { + "name": "transaction", + "type": "tuple", + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionReceivedByAdapter", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }, + { "name": "bridgeAdapter", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "receiveCrossChainMessage", + "inputs": [ + { "name": "encodedTransaction", "type": "bytes", "internalType": "bytes" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeSenders", + "inputs": [{ "name": "senders", "type": "address[]", "internalType": "address[]" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "retryEnvelope", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "retryTransaction", + "inputs": [ + { "name": "encodedTransaction", "type": "bytes", "internalType": "bytes" }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" }, + { "name": "bridgeAdaptersToRetry", "type": "address[]", "internalType": "address[]" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateConfirmations", + "inputs": [ + { + "name": "newConfirmations", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "requiredConfirmations", "type": "uint8", "internalType": "uint8" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateGuardian", + "inputs": [{ "name": "newGuardian", "type": "address", "internalType": "address" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateMessagesValidityTimestamp", + "inputs": [ + { + "name": "newValidityTimestamp", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ValidityTimestampInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "validityTimestamp", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "whoCanRescue", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "event", + "name": "BridgeAdapterUpdated", + "inputs": [ + { "name": "destinationChainId", "type": "uint256", "indexed": true, "internalType": "uint256" }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "allowed", "type": "bool", "indexed": true, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ConfirmationsUpdated", + "inputs": [ + { "name": "newConfirmations", "type": "uint8", "indexed": false, "internalType": "uint8" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ERC20Rescued", + "inputs": [ + { "name": "caller", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "token", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EnvelopeDeliveryAttempted", + "inputs": [ + { "name": "envelopeId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { + "name": "envelope", + "type": "tuple", + "indexed": false, + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "isDelivered", "type": "bool", "indexed": false, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EnvelopeRegistered", + "inputs": [ + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { + "name": "envelope", + "type": "tuple", + "indexed": false, + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "GuardianUpdated", + "inputs": [ + { "name": "oldGuardian", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "newGuardian", "type": "address", "indexed": false, "internalType": "address" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], + "anonymous": false + }, + { + "type": "event", + "name": "NativeTokensRescued", + "inputs": [ + { "name": "caller", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NewInvalidation", + "inputs": [ + { "name": "invalidTimestamp", "type": "uint256", "indexed": false, "internalType": "uint256" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ReceiverBridgeAdaptersUpdated", + "inputs": [ + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "allowed", "type": "bool", "indexed": true, "internalType": "bool" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SenderUpdated", + "inputs": [ + { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "isApproved", "type": "bool", "indexed": true, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TransactionForwardingAttempted", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { "name": "encodedTransaction", "type": "bytes", "indexed": false, "internalType": "bytes" }, + { "name": "destinationChainId", "type": "uint256", "indexed": false, "internalType": "uint256" }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "adapterSuccessful", "type": "bool", "indexed": true, "internalType": "bool" }, + { "name": "returnData", "type": "bytes", "indexed": false, "internalType": "bytes" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TransactionReceived", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { "name": "originChainId", "type": "uint256", "indexed": true, "internalType": "uint256" }, + { + "name": "transaction", + "type": "tuple", + "indexed": false, + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "confirmations", "type": "uint8", "indexed": false, "internalType": "uint8" } + ], + "anonymous": false + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [{ "name": "token", "type": "address", "internalType": "address" }] + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b50604080516000808252602082019092529062000051565b6040805180820190915260008082526020820152815260200190600190039081620000295790505b50604080516000808252602082019092529062000092565b604080518082019091526000815260606020820152815260200190600190039081620000695790505b506040805160008082526020820190925290620000d8565b6040805160608101825260008082526020808301829052928201528252600019909201910181620000aa5790505b50604080516000815260208101909152620000f333620001c1565b620000fe3362000211565b604080516000808252602082019092526200015d9184919062000145565b6040805180820190915260008152606060208201528152602001906001900390816200011c5790505b50604080516000815260208101909152849062000272565b505060408051600080825260208201909252620001ae91839190620001a6565b6040805180820190915260008152606060208201528152602001906001900390816200017d5790505b5084620002a8565b50620001bb9050620002d2565b620011f6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad909910160405180910390a15050565b6200027d8462000395565b620002888362000637565b6200029582600162000927565b620002a281600062000927565b50505050565b620002b583600162000a67565b620002c282600062000a67565b620002cd8162000d07565b505050565b607154610100900460ff1615620003405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084015b60405180910390fd5b60715460ff908116101562000393576071805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60005b815181101562000633576000828281518110620003b957620003b962001109565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015620003f4575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b815250906200042f5760405162461bcd60e51b815260040162000337919062001145565b506040808201516000908152600760205290812090805b82548110156200052257600083828154811062000467576200046762001109565b60009182526020909120865160029092020160018101549092506001600160a01b039182169116036200050c57602085015181546001600160a01b03908116911614620005015760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692916000805160206200531f833981519152910160405180910390a45b600192505062000522565b5080620005198162001190565b91505062000446565b50806200061a5782516040805160048152602481018252602080820180516001600160e01b039081166352d1043d60e01b1790915283518085019094526002845261199960f11b918401919091526200057e93929062000e2116565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290916000805160206200531f833981519152910160405180910390a45b50505080806200062a9062001190565b91505062000398565b5050565b60005b8151811015620006335760005b8282815181106200065c576200065c62001109565b6020026020010151602001515181101562000911576000600760008585815181106200068c576200068c62001109565b6020026020010151602001518481518110620006ac57620006ac62001109565b60200260200101518152602001908152602001600020905060005b8154811015620008f957848481518110620006e657620006e662001109565b6020026020010151600001516001600160a01b031682828154811062000710576200071062001109565b60009182526020909120600160029092020101546001600160a01b031603620008e45760008282815481106200074a576200074a62001109565b600091825260209091206002909102015483546001600160a01b03909116915083906200077a90600190620011ac565b815481106200078d576200078d62001109565b9060005260206000209060020201838381548110620007b057620007b062001109565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b031991821617825560019384015493909101805493909216921691909117905582548390806200080a576200080a620011c2565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811062000855576200085562001109565b6020026020010151600001516001600160a01b03168787815181106200087f576200087f62001109565b60200260200101516020015186815181106200089f576200089f62001109565b60200260200101516000805160206200531f83398151915284604051620008d591906001600160a01b0391909116815260200190565b60405180910390a450620008f9565b80620008f08162001190565b915050620006c7565b50508080620009089062001190565b91505062000647565b50806200091e8162001190565b9150506200063a565b60005b8251811015620002cd5760006001600160a01b031683828151811062000954576200095462001109565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b81525090620009a35760405162461bcd60e51b815260040162000337919062001145565b508160046000858481518110620009be57620009be62001109565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081151583828151811062000a155762000a1562001109565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38062000a5e8162001190565b9150506200092a565b60005b8251811015620002cd57600083828151811062000a8b5762000a8b62001109565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b8152509062000aec5760405162461bcd60e51b815260040162000337919062001145565b5060005b81602001515181101562000cef576000841562000b945762000b3d8360200151838151811062000b245762000b2462001109565b6020026020010151603d62000ea060201b90919060201c565b5062000b8c8360000151603a60008660200151868151811062000b645762000b6462001109565b6020026020010151815260200190815260200160002060010162000eb760201b90919060201c565b905062000c73565b62000be28360000151603a60008660200151868151811062000bba5762000bba62001109565b6020026020010151815260200190815260200160002060010162000ece60201b90919060201c565b905080801562000c35575062000c33603a60008560200151858151811062000c0e5762000c0e62001109565b6020026020010151815260200190815260200160002060010162000ee560201b60201c565b155b1562000c735762000c718360200151838151811062000c585762000c5862001109565b6020026020010151603d62000ef060201b90919060201c565b505b801562000cd9578260200151828151811062000c935762000c9362001109565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508062000ce68162001190565b91505062000af0565b5050808062000cfe9062001190565b91505062000a6a565b60005b81518110156200063357600082828151811062000d2b5762000d2b62001109565b602002602001015190506000816020015160ff1611801562000d71575080516000908152603a6020526040902062000d669060010162000ee5565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b8152509062000dad5760405162461bcd60e51b815260040162000337919062001145565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a2508062000e188162001190565b91505062000d0a565b6060600080856001600160a01b03168560405162000e409190620011d8565b600060405180830381855af49150503d806000811462000e7d576040519150601f19603f3d011682016040523d82523d6000602084013e62000e82565b606091505b50909250905062000e968683838762000efe565b9695505050505050565b600062000eae838362000f86565b90505b92915050565b600062000eae836001600160a01b03841662000f86565b600062000eae836001600160a01b03841662000fd8565b600062000eb1825490565b600062000eae838362000fd8565b6060831562000f7257825160000362000f6a576001600160a01b0385163b62000f6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000337565b508162000f7e565b62000f7e8383620010dc565b949350505050565b600081815260018301602052604081205462000fcf5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000eb1565b50600062000eb1565b60008181526001830160205260408120548015620010d157600062000fff600183620011ac565b85549091506000906200101590600190620011ac565b90508181146200108157600086600001828154811062001039576200103962001109565b90600052602060002001549050808760000184815481106200105f576200105f62001109565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620010955762001095620011c2565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000eb1565b600091505062000eb1565b815115620010ed5781518083602001fd5b8060405162461bcd60e51b815260040162000337919062001145565b634e487b7160e01b600052603260045260246000fd5b60005b838110156200113c57818101518382015260200162001122565b50506000910152565b6020815260008251806020840152620011668160408501602087016200111f565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b600060018201620011a557620011a56200117a565b5060010190565b8181038181111562000eb15762000eb16200117a565b634e487b7160e01b600052603160045260246000fd5b60008251620011ec8184602087016200111f565b9190910192915050565b61411980620012066000396000f3fe6080604052600436106102345760003560e01c80639b6c7efa1161012e578063db58eaec116100ab578063efe4b0ae1161006f578063efe4b0ae146107ce578063f2fde38b146107e3578063f62b984314610803578063fc52539514610823578063fe46a4131461084357600080fd5b8063db58eaec1461071e578063e01658d91461074e578063e3a95a5a1461076e578063ed68595a1461078e578063eed88b8d146107ae57600080fd5b8063a4757b0f116100f2578063a4757b0f14610526578063aa3f85c814610634578063c37255f214610671578063c4bffe2b14610691578063c71cca16146106b357600080fd5b80639b6c7efa146105845780639d0cb9d4146105b4578063a25d3892146105d4578063a2711ff4146105f4578063a3d5b2551461061457600080fd5b80635b9d97c6116101bc57806376e5379a1161018057806376e5379a146104bc57806383fec72c146105065780638da5cb5b1461052657806390f7af5414610544578063917cbb9b1461056457600080fd5b80635b9d97c6146103d5578063654a812b146104025780636e74ebe814610421578063715018a6146104875780637670d1d81461049c57600080fd5b80633805e84e116102035780633805e84e146102e55780633eb59f601461032e578063436bd1031461034e578063452a93201461036e57806355c4fed4146103a057600080fd5b80630a234b15146102405780630fb9ca41146102625780631947051e1461029857806334f7870c146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b36600461327f565b610863565b005b34801561026e57600080fd5b5061028261027d36600461332b565b610877565b60405161028f91906133a1565b60405180910390f35b3480156102a457600080fd5b506102606102b3366004613451565b61089d565b3480156102c457600080fd5b506102d86102d3366004613485565b6109e1565b60405161028f919061349e565b3480156102f157600080fd5b5061031e6103003660046134fa565b6001600160a01b031660009081526004602052604090205460ff1690565b604051901515815260200161028f565b34801561033a57600080fd5b50610260610349366004613586565b610a6c565b34801561035a57600080fd5b5061031e610369366004613451565b610e2d565b34801561037a57600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161028f565b3480156103ac57600080fd5b506103c06103bb3660046135f2565b610e3b565b6040805192835260208301919091520161028f565b3480156103e157600080fd5b506103f56103f0366004613485565b611092565b60405161028f9190613654565b34801561040e57600080fd5b506003545b60405190815260200161028f565b34801561042d57600080fd5b5061028261043c366004613485565b6040805180820190915260008082526020820152506000908152603a602090815260409182902082518084019093525460ff8116835261010090046001600160781b03169082015290565b34801561049357600080fd5b506102606110af565b3480156104a857600080fd5b506102606104b73660046136a1565b6110c3565b3480156104c857600080fd5b5061031e6104d73660046136d5565b6000828152603b602090815260408083206001600160a01b038516845260010190915290205460ff1692915050565b34801561051257600080fd5b506102606105213660046138c2565b6110d6565b34801561053257600080fd5b506000546001600160a01b0316610388565b34801561055057600080fd5b5061026061055f3660046136a1565b6111ac565b34801561057057600080fd5b5061026061057f36600461398e565b6111bf565b34801561059057600080fd5b5061031e61059f366004613485565b60009081526006602052604090205460ff1690565b3480156105c057600080fd5b506102606105cf3660046139d6565b6111d0565b3480156105e057600080fd5b506104136105ef366004613a0a565b6111e3565b34801561060057600080fd5b5061026061060f366004613a4e565b611397565b34801561062057600080fd5b5061026061062f366004613b0f565b6113a8565b34801561064057600080fd5b5061066461064f366004613485565b6000908152603c602052604090205460ff1690565b60405161028f9190613b66565b34801561067d57600080fd5b5061031e61068c36600461332b565b61146e565b34801561069d57600080fd5b506106a661147c565b60405161028f9190613b8e565b3480156106bf57600080fd5b506102826106ce366004613485565b6040805180820190915260008082526020820152506040805180820182526000838152603b60208181529382205460ff811684529490915282526101009092046001600160781b03169082015290565b34801561072a57600080fd5b5061031e610739366004613485565b60009081526005602052604090205460ff1690565b34801561075a57600080fd5b50610664610769366004613451565b611488565b34801561077a57600080fd5b506102606107893660046139d6565b611496565b34801561079a57600080fd5b506102606107a9366004613bc6565b6114a9565b3480156107ba57600080fd5b506102606107c9366004613bfb565b611879565b3480156107da57600080fd5b50600254610413565b3480156107ef57600080fd5b506102606107fe3660046134fa565b6119c0565b34801561080f57600080fd5b5061031e61081e366004613bfb565b611a36565b34801561082f57600080fd5b5061026061083e3660046134fa565b611a58565b34801561084f57600080fd5b5061026061085e366004613c27565b611a69565b61086b611a7a565b61087481611ad4565b50565b60408051808201909152600080825260208201526108976106ce83611d78565b92915050565b60006108a882611d8f565b905060016000828152603c602052604090205460ff1660028111156108cf576108cf613b50565b1460405180604001604052806002815260200161191960f11b815250906109125760405162461bcd60e51b81526004016109099190613cab565b60405180910390fd5b506000818152603c6020908152604091829020805460ff191660021790558382015190840151606085015160a08601519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361096f93929190600401613cbe565b600060405180830381600087803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050507fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab818360016040516109d593929190613d43565b60405180910390a15050565b606060076000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a61576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610a16565b505050509050919050565b610a74611d9b565b8251602084012060009060008181526006602052604090205490915060ff1660405180604001604052806002815260200161313960f01b81525090610acc5760405162461bcd60e51b81526004016109099190613cab565b506000610ad885611e0a565b90506000610ae582611e33565b905060006007600083608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b6b576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610b20565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610baf5760405162461bcd60e51b81526004016109099190613cab565b50600085516001600160401b03811115610bcb57610bcb6130da565b604051908082528060200260200182016040528015610c1057816020015b6040805180820190915260008082526020820152815260200190600190039081610be95790505b50905060005b8651811015610dc8576000610c2c826001613d84565b90505b8751811015610ccc57878181518110610c4a57610c4a613d97565b60200260200101516001600160a01b0316888381518110610c6d57610c6d613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161323160f01b81525090610cb95760405162461bcd60e51b81526004016109099190613cab565b5080610cc481613dad565b915050610c2f565b506000805b8451811015610d7b57848181518110610cec57610cec613d97565b6020026020010151602001516001600160a01b0316898481518110610d1357610d13613d97565b60200260200101516001600160a01b031603610d6957848181518110610d3b57610d3b613d97565b6020026020010151848481518110610d5557610d55613d97565b602002602001018190525060019150610d7b565b80610d7381613dad565b915050610cd1565b50604080518082019091526002815261062760f31b602082015281610db35760405162461bcd60e51b81526004016109099190613cab565b50508080610dc090613dad565b915050610c16565b506000610de5610dd786611e48565b878b87608001518c87611e5b565b90508060405180604001604052806002815260200161032360f41b81525090610e215760405162461bcd60e51b81526004016109099190613cab565b50505050505050505050565b600061089761073983611d8f565b33600090815260046020526040812054819060ff16604051806040016040528060018152602001601960f91b81525090610e885760405162461bcd60e51b81526004016109099190613cab565b50600086815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610f00576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610eb5565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610f445760405162461bcd60e51b81526004016109099190613cab565b506002805460009182610f5683613dad565b91905055905060006040518060c00160405280838152602001336001600160a01b03168152602001896001600160a01b031681526020014681526020018a81526020018781525090506000610faa82612005565b6020808201805160009081526005909252604091829020805460ff19166001179055519051919250907f18d245f6501b267c6fc4ab6bb6f037c83d28a9ab089e79ab063162d414d2d9c990611000908590613dc6565b60405180910390a2600061103e60405180604001604052806003600081548092919061102b90613dad565b9091555081528451602090910152612066565b6020808201805160009081526006835260409020805460ff1916600117905590840151905182516080870151939450611078938d8a611e5b565b50602091820151910151909a909950975050505050505050565b6000818152603a60205260409020606090610897906001016120a1565b6110b7611a7a565b6110c160006120ae565b565b6110cb611a7a565b6108748160006120fe565b607154610100900460ff16158080156110f65750607154600160ff909116105b806111105750303b158015611110575060715460ff166001145b61112c5760405162461bcd60e51b815260040161090990613dd9565b6071805460ff19166001179055801561114f576071805461ff0019166101001790555b61115d87878787878761222e565b80156111a3576071805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6111b4611a7a565b6108748160016120fe565b6111c7611a7a565b6108748161235f565b6111d8611a7a565b61087481600161262b565b60006111ed611d9b565b60006111f884612005565b9050611217816020015160009081526005602052604090205460ff1690565b604051806040016040528060018152602001603360f81b8152509061124f5760405162461bcd60e51b81526004016109099190613cab565b5060006007600086608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112d4576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101611289565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b815250906113185760405162461bcd60e51b81526004016109099190613cab565b50600061134f60405180604001604052806003600081548092919061133c90613dad565b9091555081528551602090910152612066565b6020808201805160009081526006835260409020805460ff19166001179055908501519051825160808a0151939450611389938987611e5b565b506020015195945050505050565b61139f611a7a565b61087481612896565b6000546001600160a01b031633146113f95760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b61140d6001600160a01b03841683836129bf565b816001600160a01b0316836001600160a01b0316336001600160a01b03167fc7af665d489507e14ae25ac7ab0030fc7f570869610bdd32117ea56b60ae5c618460405161145c91815260200190565b60405180910390a4505050565b905090565b600061089761059f83611d78565b6060611469603d6120a1565b600061089761064f83611d8f565b61149e611a7a565b61087481600061262b565b806114b43382611a36565b604051806040016040528060018152602001603560f81b815250906114ec5760405162461bcd60e51b81526004016109099190613cab565b5060006114f884611e0a565b9050600061150582611e33565b905083816060015114801561151d5750468160800151145b60405180604001604052806002815260200161333360f01b815250906115565760405162461bcd60e51b81526004016109099190613cab565b50600061156283611e48565b865160208801209091506000906000818152603b602090815260408083208a8452603a83529281902081518083019092525460ff811682526001600160781b03610100918290048116938301939093528354949550929390929004168015806115fd575033600090815260018401602052604090205460ff161580156115fd575081602001516001600160781b0316816001600160781b0316115b15610e2157806001600160781b0316600003611632578254610100600160801b031916610100426001600160781b0316021783555b8254600090849082906116479060ff16613e27565b825460ff8083166101009490940a93840293021916919091179091553360008181526001878101602052604091829020805460ff1916909117905551919250908b9088907f5353716bf921d1d85f5567a99a718cc63ff1182dca5f9163d9e9b8f1fc3ac387906116bc908a908e908890613e65565b60405180910390a46000868152603c602052604081205460ff1660028111156116e7576116e7613b50565b146116f9575050505050505050505050565b825160ff16158015906117165750826000015160ff168160ff1610155b1561186b576000868152603c6020908152604091829020805460ff19166002179055888201519089015160608a015160a08b01519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361177793929190600401613cbe565b600060405180830381600087803b15801561179157600080fd5b505af19250505080156117a2575060015b61182e573d8080156117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b506000878152603c6020526040808220805460ff19166001179055517fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab91611820918a918c91613d43565b60405180910390a15061186b565b7fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab8688600160405161186293929190613d43565b60405180910390a15b50505050505050505b505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b604080516000808252602082019092526001600160a01b0384169083906040516118f49190613e91565b60006040518083038185875af1925050503d8060008114611931576040519150601f19603f3d011682016040523d82523d6000602084013e611936565b606091505b505090508061197b5760405162461bcd60e51b815260206004820152601160248201527011551217d514905394d1915497d1905253607a1b6044820152606401610909565b6040518281526001600160a01b0384169033907fb7c602059992183c7b767c08204223afc99f1895fd175adf9ece23ce9f5bb8b79060200160405180910390a3505050565b6119c8611a7a565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b610874816120ae565b6000818152603a60205260408120611a519060010184612a11565b9392505050565b611a60611d9b565b61087481612a33565b611a71611a7a565b61087481612a8d565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610909565b60005b8151811015611d74576000828281518110611af457611af4613d97565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015611b2e575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b81525090611b665760405162461bcd60e51b81526004016109099190613cab565b506040808201516000908152600760205290812090805b8254811015611c60576000838281548110611b9a57611b9a613d97565b60009182526020909120865160029092020160018101549092506001600160a01b03918216911603611c4d57602085015181546001600160a01b03908116911614611c435760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b6001925050611c60565b5080611c5881613dad565b915050611b7d565b5080611d5e5782516040805160048152602481018252602080820180516001600160e01b03166352d1043d60e01b17905282518084019093526002835261199960f11b90830152611cb19291612b9a565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b5050508080611d6c90613dad565b915050611ad7565b5050565b600080611d8483612066565b602001519392505050565b600080611d8483612005565b6000546001600160a01b0316331480611dbe57506001546001600160a01b031633145b6110c15760405162461bcd60e51b815260206004820152601960248201527f4f4e4c595f42595f4f574e45525f4f525f475541524449414e000000000000006044820152606401610909565b604080518082019091526000815260606020820152818060200190518101906108979190613ef2565b611e3b613092565b6108978260200151612c12565b6020808201518051910120600090610897565b600080805b8351811015611ff957600080858381518110611e7e57611e7e613d97565b6020026020010151602001516001600160a01b03166336da7a0660e01b878581518110611ead57611ead613d97565b602002602001015160000151898b8d604051602401611ecf9493929190613f59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f0d9190613e91565b600060405180830381855af49150503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b50915091508115611f5d57600193505b811515868481518110611f7257611f72613d97565b6020026020010151602001516001600160a01b03168c7f935aa87d643578e6395c90fdbd5d50ffee5f2c1f6ce2cd01274740412bb679f48d8d8d8c8a81518110611fbe57611fbe613d97565b60200260200101516000015188604051611fdc959493929190613f86565b60405180910390a450508080611ff190613dad565b915050611e60565b50979650505050505050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613dc6565b60408051808303601f190181529190528082528051602090910120602082015292915050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613fd3565b60606000611a5183612c2e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82518110156118745760006001600160a01b031683828151811061212757612127613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b815250906121735760405162461bcd60e51b81526004016109099190613cab565b50816004600085848151811061218b5761218b613d97565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158382815181106121df576121df613d97565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38061222681613dad565b915050612101565b607154610100900460ff161580801561224e5750607154600160ff909116105b806122685750303b158015612268575060715460ff166001145b6122845760405162461bcd60e51b815260040161090990613dd9565b6071805460ff1916600117905580156122a7576071805461ff0019166101001790555b6122b0876120ae565b6122b986612a33565b60408051600080825260208201909252612304918691906122fd565b6040805180820190915260008152606060208201528152602001906001900390816122d55790505b5087612c8a565b6040805160008082526020820190925261115d91859190612348565b6040805180820190915260008152606060208201528152602001906001900390816123205790505b506040805160008152602081019091528590612ca9565b60005b8151811015611d745760005b82828151811061238057612380613d97565b60200260200101516020015151811015612618576000600760008585815181106123ac576123ac613d97565b60200260200101516020015184815181106123c9576123c9613d97565b60200260200101518152602001908152602001600020905060005b8154811015612603578484815181106123ff576123ff613d97565b6020026020010151600001516001600160a01b031682828154811061242657612426613d97565b60009182526020909120600160029092020101546001600160a01b0316036125f157600082828154811061245c5761245c613d97565b600091825260209091206002909102015483546001600160a01b039091169150839061248a90600190613fe6565b8154811061249a5761249a613d97565b90600052602060002090600202018383815481106124ba576124ba613d97565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b0319918216178255600193840154939091018054939092169216919091179055825483908061251157612511613ff9565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811061255957612559613d97565b6020026020010151600001516001600160a01b031687878151811061258057612580613d97565b602002602001015160200151868151811061259d5761259d613d97565b60200260200101517f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d846040516125e391906001600160a01b0391909116815260200190565b60405180910390a450612603565b806125fb81613dad565b9150506123e4565b5050808061261090613dad565b91505061236e565b508061262381613dad565b915050612362565b60005b825181101561187457600083828151811061264b5761264b613d97565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b815250906126a95760405162461bcd60e51b81526004016109099190613cab565b5060005b8160200151518110156128815760008415612744576126f3836020015183815181106126db576126db613d97565b6020026020010151603d612cd790919063ffffffff16565b5061273d8360000151603a60008660200151868151811061271657612716613d97565b60200260200101518152602001908152602001600020600101612ce390919063ffffffff16565b905061280c565b61278d8360000151603a60008660200151868151811061276657612766613d97565b60200260200101518152602001908152602001600020600101612cf890919063ffffffff16565b90508080156127d457506127d2603a6000856020015185815181106127b4576127b4613d97565b60200260200101518152602001908152602001600020600101612d0d565b155b1561280c5761280a836020015183815181106127f2576127f2613d97565b6020026020010151603d612d1790919063ffffffff16565b505b801561286e578260200151828151811061282857612828613d97565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508061287981613dad565b9150506126ad565b5050808061288e90613dad565b91505061262e565b60005b8151811015611d745760008282815181106128b6576128b6613d97565b60209081029190910181015180516000908152603a83526040902054918101519092506001600160781b036101009092048216911611801561290557504281602001516001600160781b031611155b604051806040016040528060018152602001601b60f91b8152509061293d5760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a84526040908190208054610100600160801b0319166101006001600160781b03948516021790558451925190519116815290917f79b1ca301c237cd649b2d35eb6f0873650079b8bb613a17279bbf80332754ddd910160405180910390a250806129b781613dad565b915050612899565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611874908490612d23565b6001600160a01b03811660009081526001830160205260408120541515611a51565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad90991016109d5565b60005b8151811015611d74576000828281518110612aad57612aad613d97565b602002602001015190506000816020015160ff16118015612af0575080516000908152603a60205260409020612ae590600101612d0d565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b81525090612b295760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a25080612b9281613dad565b915050612a90565b6060600080856001600160a01b031685604051612bb79190613e91565b600060405180830381855af49150503d8060008114612bf2576040519150601f19603f3d011682016040523d82523d6000602084013e612bf7565b606091505b5091509150612c0886838387612d86565b9695505050505050565b612c1a613092565b81806020019051810190610897919061400f565b606081600001805480602002602001604051908101604052809291908181526020018280548015612c7e57602002820191906000526020600020905b815481526020019060010190808311612c6a575b50505050509050919050565b612c9583600161262b565b612ca082600061262b565b61187481612a8d565b612cb284611ad4565b612cbb8361235f565b612cc68260016120fe565b612cd18160006120fe565b50505050565b6000611a518383612e07565b6000611a51836001600160a01b038416612e07565b6000611a51836001600160a01b038416612e56565b6000610897825490565b6000611a518383612e56565b6000612d386001600160a01b03841683612f49565b90508051600014158015612d5d575080806020019051810190612d5b91906140c1565b155b1561187457604051635274afe760e01b81526001600160a01b0384166004820152602401610909565b60608315612df5578251600003612dee576001600160a01b0385163b612dee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610909565b5081612dff565b612dff8383612f8d565b949350505050565b6000818152600183016020526040812054612e4e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610897565b506000610897565b60008181526001830160205260408120548015612f3f576000612e7a600183613fe6565b8554909150600090612e8e90600190613fe6565b9050818114612ef3576000866000018281548110612eae57612eae613d97565b9060005260206000200154905080876000018481548110612ed157612ed1613d97565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f0457612f04613ff9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610897565b6000915050610897565b6060611a51838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612fb7565b815115612f9d5781518083602001fd5b8060405162461bcd60e51b81526004016109099190613cab565b6060824710156130185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610909565b600080866001600160a01b031685876040516130349190613e91565b60006040518083038185875af1925050503d8060008114613071576040519150601f19603f3d011682016040523d82523d6000602084013e613076565b606091505b509150915061308787838387612d86565b979650505050505050565b6040518060c001604052806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613112576131126130da565b60405290565b604080519081016001600160401b0381118282101715613112576131126130da565b60405160c081016001600160401b0381118282101715613112576131126130da565b604051601f8201601f191681016001600160401b0381118282101715613184576131846130da565b604052919050565b60006001600160401b038211156131a5576131a56130da565b5060051b60200190565b6001600160a01b038116811461087457600080fd5b80356131cf816131af565b919050565b600082601f8301126131e557600080fd5b813560206131fa6131f58361318c565b61315c565b8281526060928302850182019282820191908785111561321957600080fd5b8387015b858110156132725781818a0312156132355760008081fd5b61323d6130f0565b8135613248816131af565b815281860135613257816131af565b8187015260408281013590820152845292840192810161321d565b5090979650505050505050565b60006020828403121561329157600080fd5b81356001600160401b038111156132a757600080fd5b612dff848285016131d4565b60006001600160401b038211156132cc576132cc6130da565b50601f01601f191660200190565b600082601f8301126132eb57600080fd5b81356132f96131f5826132b3565b81815284602083860101111561330e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561333d57600080fd5b81356001600160401b038082111561335457600080fd5b908301906040828603121561336857600080fd5b613370613118565b8235815260208301358281111561338657600080fd5b613392878286016132da565b60208301525095945050505050565b815160ff1681526020808301516001600160781b03169082015260408101610897565b600060c082840312156133d657600080fd5b6133de61313a565b90508135815260208201356133f2816131af565b60208201526040820135613405816131af565b80604083015250606082013560608201526080820135608082015260a08201356001600160401b0381111561343957600080fd5b613445848285016132da565b60a08301525092915050565b60006020828403121561346357600080fd5b81356001600160401b0381111561347957600080fd5b612dff848285016133c4565b60006020828403121561349757600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156134ed57815180516001600160a01b03908116865290870151168685015292840192908501906001016134bb565b5091979650505050505050565b60006020828403121561350c57600080fd5b8135611a51816131af565b600082601f83011261352857600080fd5b813560206135386131f58361318c565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b8481101561357b57803561356e816131af565b835291830191830161355b565b509695505050505050565b60008060006060848603121561359b57600080fd5b83356001600160401b03808211156135b257600080fd5b6135be878388016132da565b94506020860135935060408601359150808211156135db57600080fd5b506135e886828701613517565b9150509250925092565b6000806000806080858703121561360857600080fd5b84359350602085013561361a816131af565b92506040850135915060608501356001600160401b0381111561363c57600080fd5b613648878288016132da565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156136955783516001600160a01b031683529284019291840191600101613670565b50909695505050505050565b6000602082840312156136b357600080fd5b81356001600160401b038111156136c957600080fd5b612dff84828501613517565b600080604083850312156136e857600080fd5b8235915060208301356136fa816131af565b809150509250929050565b600082601f83011261371657600080fd5b813560206137266131f58361318c565b82815260069290921b8401810191818101908684111561374557600080fd5b8286015b8481101561357b57604081890312156137625760008081fd5b61376a613118565b813581528482013560ff811681146137825760008081fd5b81860152835291830191604001613749565b60006137a26131f58461318c565b8381529050602080820190600585811b8501878111156137c157600080fd5b855b818110156138965780356001600160401b03808211156137e35760008081fd5b908801906040828c0312156137f85760008081fd5b613800613118565b823561380b816131af565b8152828701358281111561381f5760008081fd5b8084019350508b601f84011261383757600091508182fd5b823591506138476131f58361318c565b82815291861b8301870191878101908d8411156138645760008081fd5b938801935b8385101561388257843582529388019390880190613869565b8289015250875250509383019383016137c3565b50505050509392505050565b600082601f8301126138b357600080fd5b611a5183833560208501613794565b60008060008060008060c087890312156138db57600080fd5b6138e4876131c4565b95506138f2602088016131c4565b945060408701356001600160401b038082111561390e57600080fd5b61391a8a838b01613705565b9550606089013591508082111561393057600080fd5b61393c8a838b016138a2565b9450608089013591508082111561395257600080fd5b61395e8a838b016131d4565b935060a089013591508082111561397457600080fd5b5061398189828a01613517565b9150509295509295509295565b6000602082840312156139a057600080fd5b81356001600160401b038111156139b657600080fd5b8201601f810184136139c757600080fd5b612dff84823560208401613794565b6000602082840312156139e857600080fd5b81356001600160401b038111156139fe57600080fd5b612dff848285016138a2565b60008060408385031215613a1d57600080fd5b82356001600160401b03811115613a3357600080fd5b613a3f858286016133c4565b95602094909401359450505050565b60006020808385031215613a6157600080fd5b82356001600160401b03811115613a7757600080fd5b8301601f81018513613a8857600080fd5b8035613a966131f58261318c565b81815260069190911b82018301908381019087831115613ab557600080fd5b928401925b828410156130875760408489031215613ad35760008081fd5b613adb613118565b84358152858501356001600160781b0381168114613af95760008081fd5b8187015282526040939093019290840190613aba565b600080600060608486031215613b2457600080fd5b8335613b2f816131af565b92506020840135613b3f816131af565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613b8857634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b8181101561369557835183529284019291840191600101613baa565b60008060408385031215613bd957600080fd5b82356001600160401b03811115613bef57600080fd5b613a3f858286016132da565b60008060408385031215613c0e57600080fd5b8235613c19816131af565b946020939093013593505050565b600060208284031215613c3957600080fd5b81356001600160401b03811115613c4f57600080fd5b612dff84828501613705565b60005b83811015613c76578181015183820152602001613c5e565b50506000910152565b60008151808452613c97816020860160208601613c5b565b601f01601f19169290920160200192915050565b602081526000611a516020830184613c7f565b60018060a01b0384168152826020820152606060408201526000613ce56060830184613c7f565b95945050505050565b805182526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a0850152612dff60c0850182613c7f565b838152606060208201526000613d5c6060830185613cee565b90508215156040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089757610897613d6e565b634e487b7160e01b600052603260045260246000fd5b600060018201613dbf57613dbf613d6e565b5060010190565b602081526000611a516020830184613cee565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060ff821660ff8103613e3d57613e3d613d6e565b60010192915050565b805182526000602082015160406020850152612dff6040850182613c7f565b838152606060208201526000613e7e6060830185613e46565b905060ff83166040830152949350505050565b60008251613ea3818460208701613c5b565b9190910192915050565b600082601f830112613ebe57600080fd5b8151613ecc6131f5826132b3565b818152846020838601011115613ee157600080fd5b612dff826020830160208701613c5b565b600060208284031215613f0457600080fd5b81516001600160401b0380821115613f1b57600080fd5b9083019060408286031215613f2f57600080fd5b613f37613118565b82518152602083015182811115613f4d57600080fd5b61339287828601613ead565b60018060a01b0385168152836020820152826040820152608060608201526000612c086080830184613c7f565b85815260a060208201526000613f9f60a0830187613c7f565b604083018690526001600160a01b03851660608401528281036080840152613fc78185613c7f565b98975050505050505050565b602081526000611a516020830184613e46565b8181038181111561089757610897613d6e565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561402157600080fd5b81516001600160401b038082111561403857600080fd5b9083019060c0828603121561404c57600080fd5b61405461313a565b825181526020830151614066816131af565b60208201526040830151614079816131af565b80604083015250606083015160608201526080830151608082015260a0830151828111156140a657600080fd5b6140b287828601613ead565b60a08301525095945050505050565b6000602082840312156140d357600080fd5b81518015158114611a5157600080fdfea26469706673582212203a0fbfd27f57c353abc9a31d82a049872a39cd8f74784ad37f693ebab944aad064736f6c634300081300332152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d", + "sourceMap": "393:667:178:-:0;;;;;;;;;;;;-1:-1:-1;1092:26:177;;;1116:1;1092:26;;;;;;;;;;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;1092:26:177;;;;;;;;;;;;;;;-1:-1:-1;1120:41:177;;;1159:1;1120:41;;;;;;;;;;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;1120:41:177;;;;;;;;;;;;;;;-1:-1:-1;1187:42:177;;;1227:1;1187:42;;;;;;;;;;;;;393:667:178;;;;;;;;-1:-1:-1;393:667:178;;;;;;;;;;;;;;1187:42:177;;-1:-1:-1;;1187:42:177;;;;;;;;;;;-1:-1:-1;1231:16:177;;;1245:1;1231:16;;;;;;;;1031:32:71;831:10:70;1031:18:71;:32::i;:::-;289:29:64;831:10:70;289:15:64;:29::i;:::-;3022:31:180;;;3051:1;3022:31;;;;;;;;;2959:148;;2992:22;;3022:31;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;3022:31:180;;;;;;;;;;;;;;;-1:-1:-1;3085:16:180;;;3099:1;3085:16;;;;;;;;3061;;2959:25;:148::i;:::-;-1:-1:-1;;2472:41:181;;;2511:1;2472:41;;;;;;;;;2411:144;;2443:21;;2472:41;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;2472:41:181;;;;;;;;;;;;;;;-1:-1:-1;2521:28:181;2411:24;:144::i;:::-;-1:-1:-1;3167:22:80;;-1:-1:-1;3167:20:80;:22::i;:::-;393:667:178;;2428:173:71;2497:16;2516:6;;-1:-1:-1;;;;;2528:17:71;;;-1:-1:-1;;;;;;2528:17:71;;;;;;2556:40;;2516:6;;;;;;;2556:40;;2497:16;2556:40;2491:110;2428:173;:::o;814:178:64:-;897:9;;;-1:-1:-1;;;;;912:23:64;;;-1:-1:-1;;;;;;912:23:64;;;;;;;946:41;;;897:9;;;;358:34:290;;;423:2;408:18;;401:43;;;;946:41:64;;293:18:290;946:41:64;;;;;;;869:123;814:178;:::o;16169:426:180:-;16418:38;16440:15;16418:21;:38::i;:::-;16462:40;16485:16;16462:22;:40::i;:::-;16508:37;16523:15;16540:4;16508:14;:37::i;:::-;16551:39;16566:16;16584:5;16551:14;:39::i;:::-;16169:426;;;;:::o;12592:525:181:-;12956:52;12986:15;13003:4;12956:29;:52::i;:::-;13014:54;13044:16;13062:5;13014:29;:54::i;:::-;13074:38;13095:16;13074:20;:38::i;:::-;12592:525;;;:::o;5608:253:80:-;5672:13;;;;;;;5671:14;5663:66;;;;-1:-1:-1;;;5663:66:80;;657:2:290;5663:66:80;;;639:21:290;696:2;676:18;;;669:30;735:34;715:18;;;708:62;-1:-1:-1;;;786:18:290;;;779:37;833:19;;5663:66:80;;;;;;;;;5739:12;;5754:15;5739:12;;;:30;5735:122;;;5779:12;:30;;-1:-1:-1;;5779:30:80;5794:15;5779:30;;;;;;5822:28;;1005:36:290;;;5822:28:80;;993:2:290;978:18;5822:28:80;;;;;;;5735:122;5608:253::o;11856:2445:180:-;11974:9;11969:2328;11993:14;:21;11989:1;:25;11969:2328;;;12029:65;12097:14;12112:1;12097:17;;;;;;;;:::i;:::-;;;;;;;12029:85;;12201:1;-1:-1:-1;;;;;12140:63:180;:24;:49;;;-1:-1:-1;;;;;12140:63:180;;;:141;;;;-1:-1:-1;12217:50:180;;-1:-1:-1;;;;;12217:64:180;;;12140:141;12291:51;;;;;;;;;;;;;-1:-1:-1;;;12291:51:180;;;12123:227;;;;;-1:-1:-1;;;12123:227:180;;;;;;;;:::i;:::-;-1:-1:-1;12443:43:180;;;;;12358:50;12411:83;;;:22;:83;;;;;;12358:50;12579:905;12603:27;;12599:31;;12579:905;;;12647:47;12697:20;12718:1;12697:23;;;;;;;;:::i;:::-;;;;;;;;;12805:50;;12697:23;;;;;12746:45;;;;12697:23;;-1:-1:-1;;;;;;12746:109:180;;;:45;;:109;12731:745;;12955:49;;;;12895:44;;-1:-1:-1;;;;;12895:44:180;;;:109;;;12878:541;;13078:64;;;;;13031:111;;-1:-1:-1;;;;;;13031:111:180;-1:-1:-1;;;;;13031:111:180;;;;;;;;13257:50;;13198:43;;;;;13162:244;;1986:51:290;;;-1:-1:-1;;13162:244:180;;;;;13198:43;-1:-1:-1;;;;;;;;;;;13162:244:180;1959:18:290;13162:244:180;;;;;;;12878:541;13444:4;13430:18;;13460:5;;;12731:745;-1:-1:-1;12632:3:180;;;;:::i;:::-;;;;12579:905;;;;13497:11;13492:799;;13593:50;;13655:59;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13655:59:180;;;-1:-1:-1;;;13655:59:180;;;;13726:35;;;;;;;;;;;-1:-1:-1;;;13726:35:180;;;;;;;13553:218;;13593:50;13726:35;13553:28;:218;:::i;:::-;-1:-1:-1;13819:213:180;;;;;;;;13879:49;;;;;;-1:-1:-1;;;;;13819:213:180;;;;;13969:50;;13819:213;;;;;;;;13782:260;;;;;;;;-1:-1:-1;13782:260:180;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13782:260:180;;;;;;;;;;;;;;;;;;;;;;;;;;14145:50;;14090:43;;;;14207:49;;14058:224;;2004:32:290;;;1986:51;;13782:260:180;;14058:224;;;14090:43;;-1:-1:-1;;;;;;;;;;;14058:224:180;1959:18:290;14058:224:180;;;;;;;13492:799;12021:2276;;;12016:3;;;;;:::i;:::-;;;;11969:2328;;;;11856:2445;:::o;14445:1131::-;14562:9;14557:1015;14581:23;:30;14577:1;:34;14557:1015;;;14631:9;14626:940;14650:23;14674:1;14650:26;;;;;;;;:::i;:::-;;;;;;;:35;;;:42;14646:1;:46;14626:940;;;14709:50;14762:22;:82;14796:23;14820:1;14796:26;;;;;;;;:::i;:::-;;;;;;;:35;;;14832:1;14796:38;;;;;;;;:::i;:::-;;;;;;;14762:82;;;;;;;;;;;14709:135;;14860:9;14855:703;14879:27;;14875:31;;14855:703;;;15007:23;15031:1;15007:26;;;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;14942:105:180;:20;14963:1;14942:23;;;;;;;;:::i;:::-;;;;;;;;;:49;:23;;;;;:49;;-1:-1:-1;;;;;14942:49:180;:105;14925:623;;15074:32;15109:20;15130:1;15109:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:48;15219:27;;-1:-1:-1;;;;;15109:48:180;;;;-1:-1:-1;15198:20:180;;15219:31;;15109:48;;15219:31;:::i;:::-;15198:53;;;;;;;;:::i;:::-;;;;;;;;;;;15172:20;15193:1;15172:23;;;;;;;;:::i;:::-;;;;;;;;;:79;;:23;;;;;:79;;-1:-1:-1;;;;;15172:79:180;;;-1:-1:-1;;;;;;15172:79:180;;;;;;-1:-1:-1;15172:79:180;;;;;;;;;;;;;;;;;;;;;;15265:26;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;15265:26:180;;;;;;;;;-1:-1:-1;;;;;;15265:26:180;;;;;;;;;;;;;;;;;;;15401;;:23;;15425:1;;15401:26;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;15311:205:180;15347:23;15371:1;15347:26;;;;;;;;:::i;:::-;;;;;;;:35;;;15383:1;15347:38;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;;;;;;15457:24:180;15311:205;;;;;-1:-1:-1;;;;;2004:32:290;;;;1986:51;;1974:2;1959:18;;1840:203;15311:205:180;;;;;;;;15530:5;;;14925:623;14908:3;;;;:::i;:::-;;;;14855:703;;;;14699:867;14694:3;;;;;:::i;:::-;;;;14626:940;;;-1:-1:-1;14613:3:180;;;;:::i;:::-;;;;14557:1015;;15789:295;15874:9;15869:211;15893:7;:14;15889:1;:18;15869:211;;;15952:1;-1:-1:-1;;;;;15930:24:180;:7;15938:1;15930:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15930:24:180;;;15956:21;;;;;;;;;;;;;-1:-1:-1;;;15956:21:180;;;15922:56;;;;;-1:-1:-1;;;15922:56:180;;;;;;;;:::i;:::-;;16017:8;15986:16;:28;16003:7;16011:1;16003:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15986:28:180;-1:-1:-1;;;;;15986:28:180;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16064:8;16038:35;;16052:7;16060:1;16052:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;16038:35:180;;;;;;;;;;;15909:3;;;;:::i;:::-;;;;15869:211;;11294:1213:181;11444:9;11439:1064;11463:19;:26;11459:1;:30;11439:1064;;;11504:45;11552:19;11572:1;11552:22;;;;;;;;:::i;:::-;;;;;;;11504:70;;11621:1;-1:-1:-1;;;;;11590:33:181;:5;:19;;;-1:-1:-1;;;;;11590:33:181;;;11625:29;;;;;;;;;;;;;-1:-1:-1;;;11625:29:181;;;11582:73;;;;;-1:-1:-1;;;11582:73:181;;;;;;;;:::i;:::-;;11669:9;11664:833;11684:5;:14;;;:21;11680:1;:25;11664:833;;;11722:20;11756:9;11752:599;;;11779:39;11800:5;:14;;;11815:1;11800:17;;;;;;;;:::i;:::-;;;;;;;11779:16;:20;;;;:39;;;;:::i;:::-;;11848:112;11929:5;:19;;;11848:22;:41;11871:5;:14;;;11886:1;11871:17;;;;;;;;:::i;:::-;;;;;;;11848:41;;;;;;;;;;;:63;;:67;;;;:112;;;;:::i;:::-;11830:130;;11752:599;;;12007:115;12091:5;:19;;;12007:22;:41;12030:5;:14;;;12045:1;12030:17;;;;;;;;:::i;:::-;;;;;;;12007:41;;;;;;;;;;;:63;;:70;;;;:115;;;;:::i;:::-;11989:133;;12151:15;:108;;;;;12182:72;:22;:41;12205:5;:14;;;12220:1;12205:17;;;;;;;;:::i;:::-;;;;;;;12182:41;;;;;;;;;;;:63;;:70;;;:72;;:::i;:::-;:77;12151:108;12134:207;;;12286:42;12310:5;:14;;;12325:1;12310:17;;;;;;;;:::i;:::-;;;;;;;12286:16;:23;;;;:42;;;;:::i;:::-;;12134:207;12364:15;12360:129;;;12460:5;:14;;;12475:1;12460:17;;;;;;;;:::i;:::-;;;;;;;12449:9;12398:80;;12428:5;:19;;;-1:-1:-1;;;;;12398:80:181;;;;;;;;;;;12360:129;-1:-1:-1;11707:3:181;;;;:::i;:::-;;;;11664:833;;;;11496:1007;11491:3;;;;;:::i;:::-;;;;11439:1064;;10402:714;10497:9;10492:620;10512:16;:23;10508:1;:27;10492:620;;;10550:38;10591:16;10608:1;10591:19;;;;;;;;:::i;:::-;;;;;;;10550:60;;10673:1;10635:13;:35;;;:39;;;:178;;;;-1:-1:-1;10760:21:181;;10737:45;;;;:22;:45;;;;;:76;;:67;;:74;:76::i;:::-;10688:13;:35;;;:125;;;;10635:178;10823:37;;;;;;;;;;;;;-1:-1:-1;;;10823:37:181;;;10618:250;;;;;-1:-1:-1;;;10618:250:181;;;;;;;;:::i;:::-;-1:-1:-1;10977:35:181;;;;;;10899:21;;10876:45;;;;:22;:45;;;;;;;:136;;-1:-1:-1;;10876:136:181;;;;;;;;11083:21;;11046:35;;11025:80;;1023:17:290;;1005:36;;11083:21:181;;11025:80;;978:18:290;11025:80:181;;;;;;;-1:-1:-1;10537:3:181;;;;:::i;:::-;;;;10492:620;;6603:301:69;6730:12;6751;6765:23;6792:6;-1:-1:-1;;;;;6792:19:69;6812:4;6792:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:67:69;;-1:-1:-1;6750:67:69;-1:-1:-1;6830:69:69;6857:6;6750:67;;6886:12;6830:26;:69::i;:::-;6823:76;6603:301;-1:-1:-1;;;;;;6603:301:69:o;10793:129:63:-;10860:4;10883:32;10888:3;10908:5;10883:4;:32::i;:::-;10876:39;;10793:129;;;;;:::o;8305:150::-;8375:4;8398:50;8403:3;-1:-1:-1;;;;;8423:23:63;;8398:4;:50::i;8623:156::-;8696:4;8719:53;8727:3;-1:-1:-1;;;;;8747:23:63;;8719:7;:53::i;9106:115::-;9169:7;9195:19;9203:3;4545:18;;4463:107;11090:135;11160:4;11183:35;11191:3;11211:5;11183:7;:35::i;7178:548:69:-;7340:12;7364:7;7360:362;;;7385:10;:17;7406:1;7385:22;7381:256;;-1:-1:-1;;;;;1513:19:69;;;7568:60;;;;-1:-1:-1;;;7568:60:69;;3079:2:290;7568:60:69;;;3061:21:290;3118:2;3098:18;;;3091:30;3157:31;3137:18;;;3130:59;3206:18;;7568:60:69;2877:353:290;7568:60:69;-1:-1:-1;7651:10:69;7644:17;;7360:362;7682:33;7690:10;7702:12;7682:7;:33::i;:::-;7178:548;;;;;;:::o;2214:404:63:-;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:63;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:63;2589:12;;2786:1388;2852:4;2989:19;;;:12;;;:19;;;;;;3023:15;;3019:1149;;3392:21;3416:14;3429:1;3416:10;:14;:::i;:::-;3464:18;;3392:38;;-1:-1:-1;3444:17:63;;3464:22;;3485:1;;3464:22;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3805:23;;;:12;;;:23;;;;;:36;;;3501:398;3977:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;;;8192:476:69;8343:17;;:21;8339:325;;8545:10;8539:17;8593:15;8580:10;8576:2;8572:19;8565:44;8339:325;8644:12;8637:20;;-1:-1:-1;;;8637:20:69;;;;;;;;:::i;1052:127:290:-;1113:10;1108:3;1104:20;1101:1;1094:31;1144:4;1141:1;1134:15;1168:4;1165:1;1158:15;1184:250;1269:1;1279:113;1293:6;1290:1;1287:13;1279:113;;;1369:11;;;1363:18;1350:11;;;1343:39;1315:2;1308:10;1279:113;;;-1:-1:-1;;1426:1:290;1408:16;;1401:27;1184:250::o;1439:396::-;1588:2;1577:9;1570:21;1551:4;1620:6;1614:13;1663:6;1658:2;1647:9;1643:18;1636:34;1679:79;1751:6;1746:2;1735:9;1731:18;1726:2;1718:6;1714:15;1679:79;:::i;:::-;1819:2;1798:15;-1:-1:-1;;1794:29:290;1779:45;;;;1826:2;1775:54;;1439:396;-1:-1:-1;;1439:396:290:o;2048:127::-;2109:10;2104:3;2100:20;2097:1;2090:31;2140:4;2137:1;2130:15;2164:4;2161:1;2154:15;2180:135;2219:3;2240:17;;;2237:43;;2260:18;;:::i;:::-;-1:-1:-1;2307:1:290;2296:13;;2180:135::o;2320:128::-;2387:9;;;2408:11;;;2405:37;;;2422:18;;:::i;2453:127::-;2514:10;2509:3;2505:20;2502:1;2495:31;2545:4;2542:1;2535:15;2569:4;2566:1;2559:15;2585:287;2714:3;2752:6;2746:13;2768:66;2827:6;2822:3;2815:4;2807:6;2803:17;2768:66;:::i;:::-;2850:16;;;;;2585:287;-1:-1:-1;;2585:287:290:o;2877:353::-;393:667:178;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106102345760003560e01c80639b6c7efa1161012e578063db58eaec116100ab578063efe4b0ae1161006f578063efe4b0ae146107ce578063f2fde38b146107e3578063f62b984314610803578063fc52539514610823578063fe46a4131461084357600080fd5b8063db58eaec1461071e578063e01658d91461074e578063e3a95a5a1461076e578063ed68595a1461078e578063eed88b8d146107ae57600080fd5b8063a4757b0f116100f2578063a4757b0f14610526578063aa3f85c814610634578063c37255f214610671578063c4bffe2b14610691578063c71cca16146106b357600080fd5b80639b6c7efa146105845780639d0cb9d4146105b4578063a25d3892146105d4578063a2711ff4146105f4578063a3d5b2551461061457600080fd5b80635b9d97c6116101bc57806376e5379a1161018057806376e5379a146104bc57806383fec72c146105065780638da5cb5b1461052657806390f7af5414610544578063917cbb9b1461056457600080fd5b80635b9d97c6146103d5578063654a812b146104025780636e74ebe814610421578063715018a6146104875780637670d1d81461049c57600080fd5b80633805e84e116102035780633805e84e146102e55780633eb59f601461032e578063436bd1031461034e578063452a93201461036e57806355c4fed4146103a057600080fd5b80630a234b15146102405780630fb9ca41146102625780631947051e1461029857806334f7870c146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b36600461327f565b610863565b005b34801561026e57600080fd5b5061028261027d36600461332b565b610877565b60405161028f91906133a1565b60405180910390f35b3480156102a457600080fd5b506102606102b3366004613451565b61089d565b3480156102c457600080fd5b506102d86102d3366004613485565b6109e1565b60405161028f919061349e565b3480156102f157600080fd5b5061031e6103003660046134fa565b6001600160a01b031660009081526004602052604090205460ff1690565b604051901515815260200161028f565b34801561033a57600080fd5b50610260610349366004613586565b610a6c565b34801561035a57600080fd5b5061031e610369366004613451565b610e2d565b34801561037a57600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161028f565b3480156103ac57600080fd5b506103c06103bb3660046135f2565b610e3b565b6040805192835260208301919091520161028f565b3480156103e157600080fd5b506103f56103f0366004613485565b611092565b60405161028f9190613654565b34801561040e57600080fd5b506003545b60405190815260200161028f565b34801561042d57600080fd5b5061028261043c366004613485565b6040805180820190915260008082526020820152506000908152603a602090815260409182902082518084019093525460ff8116835261010090046001600160781b03169082015290565b34801561049357600080fd5b506102606110af565b3480156104a857600080fd5b506102606104b73660046136a1565b6110c3565b3480156104c857600080fd5b5061031e6104d73660046136d5565b6000828152603b602090815260408083206001600160a01b038516845260010190915290205460ff1692915050565b34801561051257600080fd5b506102606105213660046138c2565b6110d6565b34801561053257600080fd5b506000546001600160a01b0316610388565b34801561055057600080fd5b5061026061055f3660046136a1565b6111ac565b34801561057057600080fd5b5061026061057f36600461398e565b6111bf565b34801561059057600080fd5b5061031e61059f366004613485565b60009081526006602052604090205460ff1690565b3480156105c057600080fd5b506102606105cf3660046139d6565b6111d0565b3480156105e057600080fd5b506104136105ef366004613a0a565b6111e3565b34801561060057600080fd5b5061026061060f366004613a4e565b611397565b34801561062057600080fd5b5061026061062f366004613b0f565b6113a8565b34801561064057600080fd5b5061066461064f366004613485565b6000908152603c602052604090205460ff1690565b60405161028f9190613b66565b34801561067d57600080fd5b5061031e61068c36600461332b565b61146e565b34801561069d57600080fd5b506106a661147c565b60405161028f9190613b8e565b3480156106bf57600080fd5b506102826106ce366004613485565b6040805180820190915260008082526020820152506040805180820182526000838152603b60208181529382205460ff811684529490915282526101009092046001600160781b03169082015290565b34801561072a57600080fd5b5061031e610739366004613485565b60009081526005602052604090205460ff1690565b34801561075a57600080fd5b50610664610769366004613451565b611488565b34801561077a57600080fd5b506102606107893660046139d6565b611496565b34801561079a57600080fd5b506102606107a9366004613bc6565b6114a9565b3480156107ba57600080fd5b506102606107c9366004613bfb565b611879565b3480156107da57600080fd5b50600254610413565b3480156107ef57600080fd5b506102606107fe3660046134fa565b6119c0565b34801561080f57600080fd5b5061031e61081e366004613bfb565b611a36565b34801561082f57600080fd5b5061026061083e3660046134fa565b611a58565b34801561084f57600080fd5b5061026061085e366004613c27565b611a69565b61086b611a7a565b61087481611ad4565b50565b60408051808201909152600080825260208201526108976106ce83611d78565b92915050565b60006108a882611d8f565b905060016000828152603c602052604090205460ff1660028111156108cf576108cf613b50565b1460405180604001604052806002815260200161191960f11b815250906109125760405162461bcd60e51b81526004016109099190613cab565b60405180910390fd5b506000818152603c6020908152604091829020805460ff191660021790558382015190840151606085015160a08601519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361096f93929190600401613cbe565b600060405180830381600087803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050507fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab818360016040516109d593929190613d43565b60405180910390a15050565b606060076000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a61576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610a16565b505050509050919050565b610a74611d9b565b8251602084012060009060008181526006602052604090205490915060ff1660405180604001604052806002815260200161313960f01b81525090610acc5760405162461bcd60e51b81526004016109099190613cab565b506000610ad885611e0a565b90506000610ae582611e33565b905060006007600083608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b6b576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610b20565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610baf5760405162461bcd60e51b81526004016109099190613cab565b50600085516001600160401b03811115610bcb57610bcb6130da565b604051908082528060200260200182016040528015610c1057816020015b6040805180820190915260008082526020820152815260200190600190039081610be95790505b50905060005b8651811015610dc8576000610c2c826001613d84565b90505b8751811015610ccc57878181518110610c4a57610c4a613d97565b60200260200101516001600160a01b0316888381518110610c6d57610c6d613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161323160f01b81525090610cb95760405162461bcd60e51b81526004016109099190613cab565b5080610cc481613dad565b915050610c2f565b506000805b8451811015610d7b57848181518110610cec57610cec613d97565b6020026020010151602001516001600160a01b0316898481518110610d1357610d13613d97565b60200260200101516001600160a01b031603610d6957848181518110610d3b57610d3b613d97565b6020026020010151848481518110610d5557610d55613d97565b602002602001018190525060019150610d7b565b80610d7381613dad565b915050610cd1565b50604080518082019091526002815261062760f31b602082015281610db35760405162461bcd60e51b81526004016109099190613cab565b50508080610dc090613dad565b915050610c16565b506000610de5610dd786611e48565b878b87608001518c87611e5b565b90508060405180604001604052806002815260200161032360f41b81525090610e215760405162461bcd60e51b81526004016109099190613cab565b50505050505050505050565b600061089761073983611d8f565b33600090815260046020526040812054819060ff16604051806040016040528060018152602001601960f91b81525090610e885760405162461bcd60e51b81526004016109099190613cab565b50600086815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610f00576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610eb5565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610f445760405162461bcd60e51b81526004016109099190613cab565b506002805460009182610f5683613dad565b91905055905060006040518060c00160405280838152602001336001600160a01b03168152602001896001600160a01b031681526020014681526020018a81526020018781525090506000610faa82612005565b6020808201805160009081526005909252604091829020805460ff19166001179055519051919250907f18d245f6501b267c6fc4ab6bb6f037c83d28a9ab089e79ab063162d414d2d9c990611000908590613dc6565b60405180910390a2600061103e60405180604001604052806003600081548092919061102b90613dad565b9091555081528451602090910152612066565b6020808201805160009081526006835260409020805460ff1916600117905590840151905182516080870151939450611078938d8a611e5b565b50602091820151910151909a909950975050505050505050565b6000818152603a60205260409020606090610897906001016120a1565b6110b7611a7a565b6110c160006120ae565b565b6110cb611a7a565b6108748160006120fe565b607154610100900460ff16158080156110f65750607154600160ff909116105b806111105750303b158015611110575060715460ff166001145b61112c5760405162461bcd60e51b815260040161090990613dd9565b6071805460ff19166001179055801561114f576071805461ff0019166101001790555b61115d87878787878761222e565b80156111a3576071805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6111b4611a7a565b6108748160016120fe565b6111c7611a7a565b6108748161235f565b6111d8611a7a565b61087481600161262b565b60006111ed611d9b565b60006111f884612005565b9050611217816020015160009081526005602052604090205460ff1690565b604051806040016040528060018152602001603360f81b8152509061124f5760405162461bcd60e51b81526004016109099190613cab565b5060006007600086608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112d4576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101611289565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b815250906113185760405162461bcd60e51b81526004016109099190613cab565b50600061134f60405180604001604052806003600081548092919061133c90613dad565b9091555081528551602090910152612066565b6020808201805160009081526006835260409020805460ff19166001179055908501519051825160808a0151939450611389938987611e5b565b506020015195945050505050565b61139f611a7a565b61087481612896565b6000546001600160a01b031633146113f95760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b61140d6001600160a01b03841683836129bf565b816001600160a01b0316836001600160a01b0316336001600160a01b03167fc7af665d489507e14ae25ac7ab0030fc7f570869610bdd32117ea56b60ae5c618460405161145c91815260200190565b60405180910390a4505050565b905090565b600061089761059f83611d78565b6060611469603d6120a1565b600061089761064f83611d8f565b61149e611a7a565b61087481600061262b565b806114b43382611a36565b604051806040016040528060018152602001603560f81b815250906114ec5760405162461bcd60e51b81526004016109099190613cab565b5060006114f884611e0a565b9050600061150582611e33565b905083816060015114801561151d5750468160800151145b60405180604001604052806002815260200161333360f01b815250906115565760405162461bcd60e51b81526004016109099190613cab565b50600061156283611e48565b865160208801209091506000906000818152603b602090815260408083208a8452603a83529281902081518083019092525460ff811682526001600160781b03610100918290048116938301939093528354949550929390929004168015806115fd575033600090815260018401602052604090205460ff161580156115fd575081602001516001600160781b0316816001600160781b0316115b15610e2157806001600160781b0316600003611632578254610100600160801b031916610100426001600160781b0316021783555b8254600090849082906116479060ff16613e27565b825460ff8083166101009490940a93840293021916919091179091553360008181526001878101602052604091829020805460ff1916909117905551919250908b9088907f5353716bf921d1d85f5567a99a718cc63ff1182dca5f9163d9e9b8f1fc3ac387906116bc908a908e908890613e65565b60405180910390a46000868152603c602052604081205460ff1660028111156116e7576116e7613b50565b146116f9575050505050505050505050565b825160ff16158015906117165750826000015160ff168160ff1610155b1561186b576000868152603c6020908152604091829020805460ff19166002179055888201519089015160608a015160a08b01519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361177793929190600401613cbe565b600060405180830381600087803b15801561179157600080fd5b505af19250505080156117a2575060015b61182e573d8080156117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b506000878152603c6020526040808220805460ff19166001179055517fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab91611820918a918c91613d43565b60405180910390a15061186b565b7fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab8688600160405161186293929190613d43565b60405180910390a15b50505050505050505b505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b604080516000808252602082019092526001600160a01b0384169083906040516118f49190613e91565b60006040518083038185875af1925050503d8060008114611931576040519150601f19603f3d011682016040523d82523d6000602084013e611936565b606091505b505090508061197b5760405162461bcd60e51b815260206004820152601160248201527011551217d514905394d1915497d1905253607a1b6044820152606401610909565b6040518281526001600160a01b0384169033907fb7c602059992183c7b767c08204223afc99f1895fd175adf9ece23ce9f5bb8b79060200160405180910390a3505050565b6119c8611a7a565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b610874816120ae565b6000818152603a60205260408120611a519060010184612a11565b9392505050565b611a60611d9b565b61087481612a33565b611a71611a7a565b61087481612a8d565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610909565b60005b8151811015611d74576000828281518110611af457611af4613d97565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015611b2e575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b81525090611b665760405162461bcd60e51b81526004016109099190613cab565b506040808201516000908152600760205290812090805b8254811015611c60576000838281548110611b9a57611b9a613d97565b60009182526020909120865160029092020160018101549092506001600160a01b03918216911603611c4d57602085015181546001600160a01b03908116911614611c435760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b6001925050611c60565b5080611c5881613dad565b915050611b7d565b5080611d5e5782516040805160048152602481018252602080820180516001600160e01b03166352d1043d60e01b17905282518084019093526002835261199960f11b90830152611cb19291612b9a565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b5050508080611d6c90613dad565b915050611ad7565b5050565b600080611d8483612066565b602001519392505050565b600080611d8483612005565b6000546001600160a01b0316331480611dbe57506001546001600160a01b031633145b6110c15760405162461bcd60e51b815260206004820152601960248201527f4f4e4c595f42595f4f574e45525f4f525f475541524449414e000000000000006044820152606401610909565b604080518082019091526000815260606020820152818060200190518101906108979190613ef2565b611e3b613092565b6108978260200151612c12565b6020808201518051910120600090610897565b600080805b8351811015611ff957600080858381518110611e7e57611e7e613d97565b6020026020010151602001516001600160a01b03166336da7a0660e01b878581518110611ead57611ead613d97565b602002602001015160000151898b8d604051602401611ecf9493929190613f59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f0d9190613e91565b600060405180830381855af49150503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b50915091508115611f5d57600193505b811515868481518110611f7257611f72613d97565b6020026020010151602001516001600160a01b03168c7f935aa87d643578e6395c90fdbd5d50ffee5f2c1f6ce2cd01274740412bb679f48d8d8d8c8a81518110611fbe57611fbe613d97565b60200260200101516000015188604051611fdc959493929190613f86565b60405180910390a450508080611ff190613dad565b915050611e60565b50979650505050505050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613dc6565b60408051808303601f190181529190528082528051602090910120602082015292915050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613fd3565b60606000611a5183612c2e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82518110156118745760006001600160a01b031683828151811061212757612127613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b815250906121735760405162461bcd60e51b81526004016109099190613cab565b50816004600085848151811061218b5761218b613d97565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158382815181106121df576121df613d97565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38061222681613dad565b915050612101565b607154610100900460ff161580801561224e5750607154600160ff909116105b806122685750303b158015612268575060715460ff166001145b6122845760405162461bcd60e51b815260040161090990613dd9565b6071805460ff1916600117905580156122a7576071805461ff0019166101001790555b6122b0876120ae565b6122b986612a33565b60408051600080825260208201909252612304918691906122fd565b6040805180820190915260008152606060208201528152602001906001900390816122d55790505b5087612c8a565b6040805160008082526020820190925261115d91859190612348565b6040805180820190915260008152606060208201528152602001906001900390816123205790505b506040805160008152602081019091528590612ca9565b60005b8151811015611d745760005b82828151811061238057612380613d97565b60200260200101516020015151811015612618576000600760008585815181106123ac576123ac613d97565b60200260200101516020015184815181106123c9576123c9613d97565b60200260200101518152602001908152602001600020905060005b8154811015612603578484815181106123ff576123ff613d97565b6020026020010151600001516001600160a01b031682828154811061242657612426613d97565b60009182526020909120600160029092020101546001600160a01b0316036125f157600082828154811061245c5761245c613d97565b600091825260209091206002909102015483546001600160a01b039091169150839061248a90600190613fe6565b8154811061249a5761249a613d97565b90600052602060002090600202018383815481106124ba576124ba613d97565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b0319918216178255600193840154939091018054939092169216919091179055825483908061251157612511613ff9565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811061255957612559613d97565b6020026020010151600001516001600160a01b031687878151811061258057612580613d97565b602002602001015160200151868151811061259d5761259d613d97565b60200260200101517f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d846040516125e391906001600160a01b0391909116815260200190565b60405180910390a450612603565b806125fb81613dad565b9150506123e4565b5050808061261090613dad565b91505061236e565b508061262381613dad565b915050612362565b60005b825181101561187457600083828151811061264b5761264b613d97565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b815250906126a95760405162461bcd60e51b81526004016109099190613cab565b5060005b8160200151518110156128815760008415612744576126f3836020015183815181106126db576126db613d97565b6020026020010151603d612cd790919063ffffffff16565b5061273d8360000151603a60008660200151868151811061271657612716613d97565b60200260200101518152602001908152602001600020600101612ce390919063ffffffff16565b905061280c565b61278d8360000151603a60008660200151868151811061276657612766613d97565b60200260200101518152602001908152602001600020600101612cf890919063ffffffff16565b90508080156127d457506127d2603a6000856020015185815181106127b4576127b4613d97565b60200260200101518152602001908152602001600020600101612d0d565b155b1561280c5761280a836020015183815181106127f2576127f2613d97565b6020026020010151603d612d1790919063ffffffff16565b505b801561286e578260200151828151811061282857612828613d97565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508061287981613dad565b9150506126ad565b5050808061288e90613dad565b91505061262e565b60005b8151811015611d745760008282815181106128b6576128b6613d97565b60209081029190910181015180516000908152603a83526040902054918101519092506001600160781b036101009092048216911611801561290557504281602001516001600160781b031611155b604051806040016040528060018152602001601b60f91b8152509061293d5760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a84526040908190208054610100600160801b0319166101006001600160781b03948516021790558451925190519116815290917f79b1ca301c237cd649b2d35eb6f0873650079b8bb613a17279bbf80332754ddd910160405180910390a250806129b781613dad565b915050612899565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611874908490612d23565b6001600160a01b03811660009081526001830160205260408120541515611a51565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad90991016109d5565b60005b8151811015611d74576000828281518110612aad57612aad613d97565b602002602001015190506000816020015160ff16118015612af0575080516000908152603a60205260409020612ae590600101612d0d565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b81525090612b295760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a25080612b9281613dad565b915050612a90565b6060600080856001600160a01b031685604051612bb79190613e91565b600060405180830381855af49150503d8060008114612bf2576040519150601f19603f3d011682016040523d82523d6000602084013e612bf7565b606091505b5091509150612c0886838387612d86565b9695505050505050565b612c1a613092565b81806020019051810190610897919061400f565b606081600001805480602002602001604051908101604052809291908181526020018280548015612c7e57602002820191906000526020600020905b815481526020019060010190808311612c6a575b50505050509050919050565b612c9583600161262b565b612ca082600061262b565b61187481612a8d565b612cb284611ad4565b612cbb8361235f565b612cc68260016120fe565b612cd18160006120fe565b50505050565b6000611a518383612e07565b6000611a51836001600160a01b038416612e07565b6000611a51836001600160a01b038416612e56565b6000610897825490565b6000611a518383612e56565b6000612d386001600160a01b03841683612f49565b90508051600014158015612d5d575080806020019051810190612d5b91906140c1565b155b1561187457604051635274afe760e01b81526001600160a01b0384166004820152602401610909565b60608315612df5578251600003612dee576001600160a01b0385163b612dee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610909565b5081612dff565b612dff8383612f8d565b949350505050565b6000818152600183016020526040812054612e4e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610897565b506000610897565b60008181526001830160205260408120548015612f3f576000612e7a600183613fe6565b8554909150600090612e8e90600190613fe6565b9050818114612ef3576000866000018281548110612eae57612eae613d97565b9060005260206000200154905080876000018481548110612ed157612ed1613d97565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f0457612f04613ff9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610897565b6000915050610897565b6060611a51838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612fb7565b815115612f9d5781518083602001fd5b8060405162461bcd60e51b81526004016109099190613cab565b6060824710156130185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610909565b600080866001600160a01b031685876040516130349190613e91565b60006040518083038185875af1925050503d8060008114613071576040519150601f19603f3d011682016040523d82523d6000602084013e613076565b606091505b509150915061308787838387612d86565b979650505050505050565b6040518060c001604052806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613112576131126130da565b60405290565b604080519081016001600160401b0381118282101715613112576131126130da565b60405160c081016001600160401b0381118282101715613112576131126130da565b604051601f8201601f191681016001600160401b0381118282101715613184576131846130da565b604052919050565b60006001600160401b038211156131a5576131a56130da565b5060051b60200190565b6001600160a01b038116811461087457600080fd5b80356131cf816131af565b919050565b600082601f8301126131e557600080fd5b813560206131fa6131f58361318c565b61315c565b8281526060928302850182019282820191908785111561321957600080fd5b8387015b858110156132725781818a0312156132355760008081fd5b61323d6130f0565b8135613248816131af565b815281860135613257816131af565b8187015260408281013590820152845292840192810161321d565b5090979650505050505050565b60006020828403121561329157600080fd5b81356001600160401b038111156132a757600080fd5b612dff848285016131d4565b60006001600160401b038211156132cc576132cc6130da565b50601f01601f191660200190565b600082601f8301126132eb57600080fd5b81356132f96131f5826132b3565b81815284602083860101111561330e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561333d57600080fd5b81356001600160401b038082111561335457600080fd5b908301906040828603121561336857600080fd5b613370613118565b8235815260208301358281111561338657600080fd5b613392878286016132da565b60208301525095945050505050565b815160ff1681526020808301516001600160781b03169082015260408101610897565b600060c082840312156133d657600080fd5b6133de61313a565b90508135815260208201356133f2816131af565b60208201526040820135613405816131af565b80604083015250606082013560608201526080820135608082015260a08201356001600160401b0381111561343957600080fd5b613445848285016132da565b60a08301525092915050565b60006020828403121561346357600080fd5b81356001600160401b0381111561347957600080fd5b612dff848285016133c4565b60006020828403121561349757600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156134ed57815180516001600160a01b03908116865290870151168685015292840192908501906001016134bb565b5091979650505050505050565b60006020828403121561350c57600080fd5b8135611a51816131af565b600082601f83011261352857600080fd5b813560206135386131f58361318c565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b8481101561357b57803561356e816131af565b835291830191830161355b565b509695505050505050565b60008060006060848603121561359b57600080fd5b83356001600160401b03808211156135b257600080fd5b6135be878388016132da565b94506020860135935060408601359150808211156135db57600080fd5b506135e886828701613517565b9150509250925092565b6000806000806080858703121561360857600080fd5b84359350602085013561361a816131af565b92506040850135915060608501356001600160401b0381111561363c57600080fd5b613648878288016132da565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156136955783516001600160a01b031683529284019291840191600101613670565b50909695505050505050565b6000602082840312156136b357600080fd5b81356001600160401b038111156136c957600080fd5b612dff84828501613517565b600080604083850312156136e857600080fd5b8235915060208301356136fa816131af565b809150509250929050565b600082601f83011261371657600080fd5b813560206137266131f58361318c565b82815260069290921b8401810191818101908684111561374557600080fd5b8286015b8481101561357b57604081890312156137625760008081fd5b61376a613118565b813581528482013560ff811681146137825760008081fd5b81860152835291830191604001613749565b60006137a26131f58461318c565b8381529050602080820190600585811b8501878111156137c157600080fd5b855b818110156138965780356001600160401b03808211156137e35760008081fd5b908801906040828c0312156137f85760008081fd5b613800613118565b823561380b816131af565b8152828701358281111561381f5760008081fd5b8084019350508b601f84011261383757600091508182fd5b823591506138476131f58361318c565b82815291861b8301870191878101908d8411156138645760008081fd5b938801935b8385101561388257843582529388019390880190613869565b8289015250875250509383019383016137c3565b50505050509392505050565b600082601f8301126138b357600080fd5b611a5183833560208501613794565b60008060008060008060c087890312156138db57600080fd5b6138e4876131c4565b95506138f2602088016131c4565b945060408701356001600160401b038082111561390e57600080fd5b61391a8a838b01613705565b9550606089013591508082111561393057600080fd5b61393c8a838b016138a2565b9450608089013591508082111561395257600080fd5b61395e8a838b016131d4565b935060a089013591508082111561397457600080fd5b5061398189828a01613517565b9150509295509295509295565b6000602082840312156139a057600080fd5b81356001600160401b038111156139b657600080fd5b8201601f810184136139c757600080fd5b612dff84823560208401613794565b6000602082840312156139e857600080fd5b81356001600160401b038111156139fe57600080fd5b612dff848285016138a2565b60008060408385031215613a1d57600080fd5b82356001600160401b03811115613a3357600080fd5b613a3f858286016133c4565b95602094909401359450505050565b60006020808385031215613a6157600080fd5b82356001600160401b03811115613a7757600080fd5b8301601f81018513613a8857600080fd5b8035613a966131f58261318c565b81815260069190911b82018301908381019087831115613ab557600080fd5b928401925b828410156130875760408489031215613ad35760008081fd5b613adb613118565b84358152858501356001600160781b0381168114613af95760008081fd5b8187015282526040939093019290840190613aba565b600080600060608486031215613b2457600080fd5b8335613b2f816131af565b92506020840135613b3f816131af565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613b8857634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b8181101561369557835183529284019291840191600101613baa565b60008060408385031215613bd957600080fd5b82356001600160401b03811115613bef57600080fd5b613a3f858286016132da565b60008060408385031215613c0e57600080fd5b8235613c19816131af565b946020939093013593505050565b600060208284031215613c3957600080fd5b81356001600160401b03811115613c4f57600080fd5b612dff84828501613705565b60005b83811015613c76578181015183820152602001613c5e565b50506000910152565b60008151808452613c97816020860160208601613c5b565b601f01601f19169290920160200192915050565b602081526000611a516020830184613c7f565b60018060a01b0384168152826020820152606060408201526000613ce56060830184613c7f565b95945050505050565b805182526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a0850152612dff60c0850182613c7f565b838152606060208201526000613d5c6060830185613cee565b90508215156040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089757610897613d6e565b634e487b7160e01b600052603260045260246000fd5b600060018201613dbf57613dbf613d6e565b5060010190565b602081526000611a516020830184613cee565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060ff821660ff8103613e3d57613e3d613d6e565b60010192915050565b805182526000602082015160406020850152612dff6040850182613c7f565b838152606060208201526000613e7e6060830185613e46565b905060ff83166040830152949350505050565b60008251613ea3818460208701613c5b565b9190910192915050565b600082601f830112613ebe57600080fd5b8151613ecc6131f5826132b3565b818152846020838601011115613ee157600080fd5b612dff826020830160208701613c5b565b600060208284031215613f0457600080fd5b81516001600160401b0380821115613f1b57600080fd5b9083019060408286031215613f2f57600080fd5b613f37613118565b82518152602083015182811115613f4d57600080fd5b61339287828601613ead565b60018060a01b0385168152836020820152826040820152608060608201526000612c086080830184613c7f565b85815260a060208201526000613f9f60a0830187613c7f565b604083018690526001600160a01b03851660608401528281036080840152613fc78185613c7f565b98975050505050505050565b602081526000611a516020830184613e46565b8181038181111561089757610897613d6e565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561402157600080fd5b81516001600160401b038082111561403857600080fd5b9083019060c0828603121561404c57600080fd5b61405461313a565b825181526020830151614066816131af565b60208201526040830151614079816131af565b80604083015250606083015160608201526080830151608082015260a0830151828111156140a657600080fd5b6140b287828601613ead565b60a08301525095945050505050565b6000602082840312156140d357600080fd5b81518015158114611a5157600080fdfea26469706673582212203a0fbfd27f57c353abc9a31d82a049872a39cd8f74784ad37f693ebab944aad064736f6c63430008130033", + "sourceMap": "393:667:178:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9520:164:180;;;;;;;;;;-1:-1:-1;9520:164:180;;;;;:::i;:::-;;:::i;:::-;;3832:190:181;;;;;;;;;;-1:-1:-1;3832:190:181;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8698:518;;;;;;;;;;-1:-1:-1;8698:518:181;;;;;:::i;:::-;;:::i;9003:170:180:-;;;;;;;;;;-1:-1:-1;9003:170:180;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3459:111::-;;;;;;;;;;-1:-1:-1;3459:111:180;;;;;:::i;:::-;-1:-1:-1;;;;;3541:24:180;3522:4;3541:24;;;:16;:24;;;;;;;;;3459:111;;;;7959:14:290;;7952:22;7934:41;;7922:2;7907:18;3459:111:180;7794:187:290;6903:2057:180;;;;;;;;;;-1:-1:-1;6903:2057:180;;;;;:::i;:::-;;:::i;3613:139::-;;;;;;;;;;-1:-1:-1;3613:139:180;;;;;:::i;:::-;;:::i;465:86:64:-;;;;;;;;;;-1:-1:-1;537:9:64;;-1:-1:-1;;;;;537:9:64;465:86;;;-1:-1:-1;;;;;9565:32:290;;;9547:51;;9535:2;9520:18;465:86:64;9401:203:290;4340:1442:180;;;;;;;;;;-1:-1:-1;4340:1442:180;;;;;:::i;:::-;;:::i;:::-;;;;10380:25:290;;;10436:2;10421:18;;10414:34;;;;10353:18;4340:1442:180;10206:248:290;2602:186:181;;;;;;;;;;-1:-1:-1;2602:186:181;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3304:112:180:-;;;;;;;;;;-1:-1:-1;3387:24:180;;3304:112;;;11268:25:290;;;11256:2;11241:18;3304:112:180;11122:177:290;2986:174:181;;;;;;;;;;-1:-1:-1;2986:174:181;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;3110:31:181;;;;:22;:31;;;;;;;;;3103:52;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3103:52:181;;;;;;2986:174;1862:95:71;;;;;;;;;;;;;:::i;9368:109:180:-;;;;;;;;;;-1:-1:-1;9368:109:180;;;;;:::i;:::-;;:::i;4417:210:181:-;;;;;;;;;;-1:-1:-1;4417:210:181;;;;;:::i;:::-;4538:4;4557:33;;;:18;:33;;;;;;;;-1:-1:-1;;;;;4557:65:181;;;;:50;;:65;;;;;;;;4417:210;;;;;518:540:178;;;;;;;;;;-1:-1:-1;518:540:178;;;;;:::i;:::-;;:::i;1268:79:71:-;;;;;;;;;;-1:-1:-1;1314:7:71;1336:6;-1:-1:-1;;;;;1336:6:71;1268:79;;9216:109:180;;;;;;;;;;-1:-1:-1;9216:109:180;;;;;:::i;:::-;;:::i;9727:155::-;;;;;;;;;;-1:-1:-1;9727:155:180;;;;;:::i;:::-;;:::i;4160:137::-;;;;;;;;;;-1:-1:-1;4160:137:180;;;;;:::i;:::-;4236:4;4255:37;;;:22;:37;;;;;;;;;4160:137;5082:194:181;;;;;;;;;;-1:-1:-1;5082:194:181;;;;;:::i;:::-;;:::i;5825:1035:180:-;;;;;;;;;;-1:-1:-1;5825:1035:180;;;;;:::i;:::-;;:::i;4853:187:181:-;;;;;;;;;;-1:-1:-1;4853:187:181;;;;;:::i;:::-;;:::i;659:238:87:-;;;;;;;;;;-1:-1:-1;659:238:87;;;;;:::i;:::-;;:::i;4248:127:181:-;;;;;;;;;;-1:-1:-1;4248:127:181;;;;;:::i;:::-;4315:13;4343:27;;;:15;:27;;;;;;;;;4248:127;;;;;;;;:::i;3965:152:180:-;;;;;;;;;;-1:-1:-1;3965:152:180;;;;;:::i;:::-;;:::i;2830:114:181:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3458:332::-;;;;;;;;;;-1:-1:-1;3458:332:181;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;3598:187:181;;;;;;;;-1:-1:-1;3655:33:181;;;:18;:33;;;;;;;:47;;;;3598:187;;3728:33;;;;;;3655:47;3728:48;;;-1:-1:-1;;;;;3728:48:181;3598:187;;;;;3458:332;3795:127:180;;;;;;;;;;-1:-1:-1;3795:127:180;;;;;:::i;:::-;3866:4;3885:32;;;:20;:32;;;;;;;;;3795:127;4064:142:181;;;;;;;;;;-1:-1:-1;4064:142:181;;;;;:::i;:::-;;:::i;5318:188::-;;;;;;;;;;-1:-1:-1;5318:188:181;;;;;:::i;:::-;;:::i;5548:3108::-;;;;;;;;;;-1:-1:-1;5548:3108:181;;;;;:::i;:::-;;:::i;930:252:87:-;;;;;;;;;;-1:-1:-1;930:252:87;;;;;:::i;:::-;;:::i;3155:106:180:-;;;;;;;;;;-1:-1:-1;3235:21:180;;3155:106;;2096:188:71;;;;;;;;;;-1:-1:-1;2096:188:71;;;;;:::i;:::-;;:::i;3202:214:181:-;;;;;;;;;;-1:-1:-1;3202:214:181;;;;;:::i;:::-;;:::i;587:122:64:-;;;;;;;;;;-1:-1:-1;587:122:64;;;;;:::i;:::-;;:::i;4669:142:181:-;;;;;;;;;;-1:-1:-1;4669:142:181;;;;;:::i;:::-;;:::i;9520:164:180:-;1175:13:71;:11;:13::i;:::-;9642:37:180::1;9664:14;9642:21;:37::i;:::-;9520:164:::0;:::o;3832:190:181:-;-1:-1:-1;;;;;;;;;;;;;;;;;3977:40:181;3997:19;:11;:17;:19::i;3977:40::-;3970:47;3832:190;-1:-1:-1;;3832:190:181:o;8698:518::-;8764:18;8785:16;:8;:14;:16::i;:::-;8764:37;-1:-1:-1;8853:23:181;8822:27;;;;:15;:27;;;;;;;;:54;;;;;;;;:::i;:::-;;8884:42;;;;;;;;;;;;;-1:-1:-1;;;8884:42:181;;;8807:125;;;;;-1:-1:-1;;;8807:125:181;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;8939:27:181;;;;:15;:27;;;;;;;;;:53;;-1:-1:-1;;8939:53:181;8969:23;8939:53;;;9018:20;;;;9072:15;;;;9095:22;;;;9125:16;;;;8998:149;;-1:-1:-1;;;8998:149:181;;-1:-1:-1;;;;;8998:66:181;;;;;;:149;;9072:15;9095:22;9125:16;8998:149;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9158:53;9184:10;9196:8;9206:4;9158:53;;;;;;;;:::i;:::-;;;;;;;;8758:458;8698:518;:::o;9003:170:180:-;9094:28;9137:22;:31;9160:7;9137:31;;;;;;;;;;;9130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9130:38:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9003:170;;;:::o;6903:2057::-;426:23:64;:21;:23::i;:::-;4891:22:246;;;;;;7071:21:180::1;::::0;4236:4;4255:37;;;:22;:37;;;;;;7071:66;;-1:-1:-1;4255:37:180;;7284:43:::1;;;;;;;;;;;;;-1:-1:-1::0;;;7284:43:180::1;;::::0;7237:91:::1;;;;;-1:-1:-1::0;;;7237:91:180::1;;;;;;;;:::i;:::-;;7335:30;7368:43;7392:18;7368:23;:43::i;:::-;7335:76;;7417:24;7444:25;:11;:23;:25::i;:::-;7417:52;;7476:53;7532:22;:63;7562:8;:27;;;7532:63;;;;;;;;;;;7476:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;7476:119:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;7643:1;7609:24;:31;:35;7646:45;;;;;;;;;;;;;-1:-1:-1::0;;;7646:45:180::1;;::::0;7601:91:::1;;;;;-1:-1:-1::0;;;7601:91:180::1;;;;;;;;:::i;:::-;;7699:56;7791:21;:28;-1:-1:-1::0;;;;;7758:67:180::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;7758:67:180::1;;;;;;;;;;;;;;;;7699:126;;7837:9;7832:829;7856:21;:28;7852:1;:32;7832:829;;;7970:9;7982:5;:1:::0;7986::::1;7982:5;:::i;:::-;7970:17;;7965:214;7993:21;:28;7989:1;:32;7965:214;;;8085:21;8107:1;8085:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8057:52:180::1;:21;8079:1;8057:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8057:52:180::1;;;8121:39;;;;;;;;;;;;;-1:-1:-1::0;;;8121:39:180::1;;::::0;8038:132:::1;;;;;-1:-1:-1::0;;;8038:132:180::1;;;;;;;;:::i;:::-;-1:-1:-1::0;8023:3:180;::::1;::::0;::::1;:::i;:::-;;;;7965:214;;;;8243:24;8288:9:::0;8283:305:::1;8307:24;:31;8303:1;:35;8283:305;;;8387:24;8412:1;8387:27;;;;;;;;:::i;:::-;;;;;;;:53;;;-1:-1:-1::0;;;;;8359:81:180::1;:21;8381:1;8359:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8359:81:180::1;::::0;8355:225:::1;;8487:24;8512:1;8487:27;;;;;;;;:::i;:::-;;;;;;;8454;8482:1;8454:30;;;;;;;;:::i;:::-;;;;;;:60;;;;8548:4;8526:26;;8564:5;;8355:225;8340:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8283:305;;;-1:-1:-1::0;8624:29:180::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;8624:29:180::1;::::0;::::1;::::0;8603:19;8595:59:::1;;;;-1:-1:-1::0;;;8595:59:180::1;;;;;;;;:::i;:::-;;7891:770;7886:3;;;;;:::i;:::-;;;;7832:829;;;;8667:25;8695:192;8721:27;:11;:25;:27::i;:::-;8756:13;8777:18;8803:8;:27;;;8838:8;8854:27;8695:18;:192::i;:::-;8667:220;;8901:20;8923:31;;;;;;;;;;;;;-1:-1:-1::0;;;8923:31:180::1;;::::0;8893:62:::1;;;;;-1:-1:-1::0;;;8893:62:180::1;;;;;;;;:::i;:::-;;7065:1895;;;;;;6903:2057:::0;;;:::o;3613:139::-;3690:4;3709:38;3730:16;:8;:14;:16::i;4340:1442::-;2588:10;4511:7;3541:24;;;:16;:24;;;;;;4511:7;;3541:24;;2601:36;;;;;;;;;;;;;-1:-1:-1;;;2601:36:180;;;2563:75;;;;;-1:-1:-1;;;2563:75:180;;;;;;;;:::i;:::-;-1:-1:-1;4535:43:180::1;4581:42:::0;;;:22:::1;:42;::::0;;;;;;;4535:88;;;;;;::::1;::::0;;;;;;;;;;;;4581:42;;4535:88;:43;;:88;::::1;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;4535:88:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;4661:1;4637:14;:21;:25;4664:45;;;;;;;;;;;;;-1:-1:-1::0;;;4664:45:180::1;;::::0;4629:81:::1;;;;;-1:-1:-1::0;;;4629:81:180::1;;;;;;;;:::i;:::-;-1:-1:-1::0;4741:21:180::1;:23:::0;;4717:21:::1;::::0;;4741:23:::1;::::0;::::1;:::i;:::-;;;;;4717:47;;4771:24;4798:208;;;;;;;;4822:13;4798:208;;;;4851:10;-1:-1:-1::0;;;;;4798:208:180::1;;;;;4882:11;-1:-1:-1::0;;;;;4798:208:180::1;;;;;4916:13;4798:208;;;;4957:18;4798:208;;;;4992:7;4798:208;;::::0;4771:235:::1;;5012:38;5053:17;:8;:15;:17::i;:::-;5223:18;::::0;;::::1;::::0;;5202:40:::1;::::0;;;:20:::1;:40:::0;;;;;;;;:47;;-1:-1:-1;;5202:47:180::1;5245:4;5202:47;::::0;;5279:18;5260:48;;5012:58;;-1:-1:-1;5279:18:180;5260:48:::1;::::0;::::1;::::0;5299:8;;5260:48:::1;:::i;:::-;;;;;;;;5315:44;5362:110;5370:87;;;;;;;;5390:24;;:26;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5370:87:180;;5435:20;;5370:87:::1;::::0;;::::1;::::0;5362:108:::1;:110::i;:::-;5502:21;::::0;;::::1;::::0;;5479:45:::1;::::0;;;:22:::1;:45:::0;;;;;:52;;-1:-1:-1;;5479:52:180::1;5527:4;5479:52;::::0;;5564:18;;::::1;::::0;5590:21;;5619:23;;5650:27:::1;::::0;::::1;::::0;5315:157;;-1:-1:-1;5538:183:180::1;::::0;5685:8;5701:14;5538:18:::1;:183::i;:::-;-1:-1:-1::0;5735:18:180::1;::::0;;::::1;::::0;5755:21;::::1;::::0;5735:18;;5755:21;;-1:-1:-1;4340:1442:180;-1:-1:-1;;;;;;;;4340:1442:180:o;2602:186:181:-;2721:31;;;;:22;:31;;;;;2690:16;;2721:62;;:53;;:60;:62::i;1862:95:71:-;1175:13;:11;:13::i;:::-;1922:30:::1;1949:1;1922:18;:30::i;:::-;1862:95::o:0;9368:109:180:-;1175:13:71;:11;:13::i;:::-;9442:30:180::1;9457:7;9466:5;9442:14;:30::i;518:540:178:-:0;3489:13:80;;;;;;;3488:14;;3524:34;;;;-1:-1:-1;3542:12:80;;3557:1;3542:12;;;;:16;3524:34;3523:105;;;-1:-1:-1;3600:4:80;1513:19:69;:23;;;3572:55:80;;-1:-1:-1;3610:12:80;;;;;:17;3572:55;3508:182;;;;-1:-1:-1;;;3508:182:80;;;;;;;:::i;:::-;3696:12;:16;;-1:-1:-1;;3696:16:80;3711:1;3696:16;;;3718:55;;;;3746:13;:20;;-1:-1:-1;;3746:20:80;;;;;3718:55;867:186:178::1;890:5;903:8;919:28;955:29;992:31;1031:16;867:15;:186::i;:::-;3789:14:80::0;3785:83;;;3813:13;:21;;-1:-1:-1;;3813:21:80;;;3847:14;;-1:-1:-1;26883:36:290;;3847:14:80;;26871:2:290;26856:18;3847:14:80;;;;;;;3785:83;3460:412;518:540:178;;;;;;:::o;9216:109:180:-;1175:13:71;:11;:13::i;:::-;9291:29:180::1;9306:7;9315:4;9291:14;:29::i;9727:155::-:0;1175:13:71;:11;:13::i;:::-;9839:38:180::1;9862:14;9839:22;:38::i;5082:194:181:-:0;1175:13:71;:11;:13::i;:::-;5215:56:181::1;5245:19;5266:4;5215:29;:56::i;5825:1035:180:-:0;5942:7;426:23:64;:21;:23::i;:::-;5957:38:180::1;5998:17;:8;:15;:17::i;:::-;5957:58;;6120:40;6141:15;:18;;;3866:4:::0;3885:32;;;:20;:32;;;;;;;;;3795:127;6120:40:::1;6162:41;;;;;;;;;;;;;-1:-1:-1::0;;;6162:41:180::1;;::::0;6112:92:::1;;;;;-1:-1:-1::0;;;6112:92:180::1;;;;;;;;:::i;:::-;;6211:43;6257:22;:63;6287:8;:27;;;6257:63;;;;;;;;;;;6211:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;6211:109:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;6358:1;6334:14;:21;:25;6361:45;;;;;;;;;;;;;-1:-1:-1::0;;;6361:45:180::1;;::::0;6326:81:::1;;;;;-1:-1:-1::0;;;6326:81:180::1;;;;;;;;:::i;:::-;;6414:44;6461:110;6469:87;;;;;;;;6489:24;;:26;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;6469:87:180;;6534:20;;6469:87:::1;::::0;;::::1;::::0;6461:108:::1;:110::i;:::-;6601:21;::::0;;::::1;::::0;;6578:45:::1;::::0;;;:22:::1;:45:::0;;;;;:52;;-1:-1:-1;;6578:52:180::1;6626:4;6578:52;::::0;;6663:18;;::::1;::::0;6689:21;;6718:23;;6749:27:::1;::::0;::::1;::::0;6414:157;;-1:-1:-1;6637:183:180::1;::::0;6784:8;6800:14;6637:18:::1;:183::i;:::-;-1:-1:-1::0;6834:21:180::1;;::::0;;5825:1035;-1:-1:-1;;;;;5825:1035:180:o;4853:187:181:-;1175:13:71;:11;:13::i;:::-;4981:54:181::1;5014:20;4981:32;:54::i;659:238:87:-:0;2286:7:177;1336:6:71;-1:-1:-1;;;;;1336:6:71;561:10:87;:28;553:61;;;;-1:-1:-1;;;553:61:87;;27132:2:290;553:61:87;;;27114:21:290;27171:2;27151:18;;;27144:30;-1:-1:-1;;;27190:18:290;;;27183:50;27250:18;;553:61:87;26930:344:290;553:61:87;789:43:::1;-1:-1:-1::0;;;;;789:31:87;::::1;821:2:::0;825:6;789:31:::1;:43::i;:::-;881:2;-1:-1:-1::0;;;;;844:48:87::1;869:10;-1:-1:-1::0;;;;;844:48:87::1;857:10;-1:-1:-1::0;;;;;844:48:87::1;;885:6;844:48;;;;11268:25:290::0;;11256:2;11241:18;;11122:177;844:48:87::1;;;;;;;;659:238:::0;;;:::o;2308:7:177:-;2301:14;;2209:111;:::o;3965:152:180:-;4050:4;4069:43;4092:19;:11;:17;:19::i;2830:114:181:-;2883:16;2914:25;:16;:23;:25::i;4064:142::-;4139:13;4167:34;4184:16;:8;:14;:16::i;5318:188::-;1175:13:71;:11;:13::i;:::-;5449:52:181::1;5479:14;5495:5;5449:29;:52::i;5548:3108::-:0;5679:13;1892:51;1923:10;1935:7;1892:30;:51::i;:::-;1945:33;;;;;;;;;;;;;-1:-1:-1;;;1945:33:181;;;1884:95;;;;;-1:-1:-1;;;1884:95:181;;;;;;;;:::i;:::-;;5700:30:::1;5733:43;5757:18;5733:23;:43::i;:::-;5700:76;;5782:24;5809:25;:11;:23;:25::i;:::-;5782:52;;5881:13;5855:8;:22;;;:39;:87;;;;;5929:13;5898:8;:27;;;:44;5855:87;5950:24;;;;;;;;;;;;;-1:-1:-1::0;;;5950:24:181::1;;::::0;5840:140:::1;;;;;-1:-1:-1::0;;;5840:140:181::1;;;;;;;;:::i;:::-;;5986:18;6007:27;:11;:25;:27::i;:::-;4891:22:246::0;;;;;;5986:48:181;;-1:-1:-1;6041:21:181::1;::::0;6114:44:::1;6161:33:::0;;;:18:::1;:33;::::0;;;;;;;6245:37;;;:22:::1;:37:::0;;;;;;6200:103;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6200:103:181::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;6789:34;;6041:66;;-1:-1:-1;6161:33:181;;6200:103;;6789:34;::::1;;6840:30:::0;;;:162:::1;;-1:-1:-1::0;6919:10:181::1;6882:48;::::0;;;:36:::1;::::0;::::1;:48;::::0;;;;;::::1;;6881:49;:120:::0;::::1;;;;6970:13;:31;;;-1:-1:-1::0;;;;;6942:59:181::1;:25;-1:-1:-1::0;;;;;6942:59:181::1;;6881:120;6829:1823;;;7021:25;-1:-1:-1::0;;;;;7021:30:181::1;7050:1;7021:30:::0;7017:116:::1;;7063:61:::0;;-1:-1:-1;;;;;;7063:61:181::1;;7108:15;-1:-1:-1::0;;;;;7063:61:181::1;;;::::0;;7017:116:::1;7166:35:::0;;7141:22:::1;::::0;7168:19;;7141:22;;7166:35:::1;::::0;::::1;;;:::i;:::-;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;;;::::0;;;::::1;::::0;;;7246:10:::1;-1:-1:-1::0;7209:48:181;;;-1:-1:-1;7209:36:181;;::::1;:48;::::0;;;;;;:55;;-1:-1:-1;;7209:55:181::1;::::0;;::::1;::::0;;7278:160;7166:35;;-1:-1:-1;7246:10:181;7350:13;;7330:10;;7278:160:::1;::::0;::::1;::::0;7307:13;;7373:11;;7166:35;;7278:160:::1;:::i;:::-;;;;;;;;7695:18;7664:27:::0;;;:15:::1;:27;::::0;;;;;::::1;;:49;::::0;::::1;;;;;;:::i;:::-;;7660:80;;7725:7;;;;;;;;5548:3108:::0;;;:::o;7660:80::-:1;8006:34:::0;;:38:::1;;::::0;;;;:104:::1;;;8076:13;:34;;;8056:54;;:16;:54;;;;8006:104;7993:653;;;8129:27;::::0;;;:15:::1;:27;::::0;;;;;;;;:53;;-1:-1:-1;;8129:53:181::1;8159:23;8129:53;::::0;;8226:20;;::::1;::::0;8286:15;;::::1;::::0;8315:22:::1;::::0;::::1;::::0;8351:16:::1;::::0;::::1;::::0;8206:173;;-1:-1:-1;;;8206:173:181;;-1:-1:-1;;;;;8206:66:181;;::::1;::::0;::::1;::::0;:173:::1;::::0;8286:15;8315:22;8351:16;8206:173:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;8192:446;;;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;8503:27:181::1;::::0;;;:15:::1;:27;::::0;;;;;:53;;-1:-1:-1;;8503:53:181::1;8533:23;8503:53;::::0;;8573:54;::::1;::::0;::::1;::::0;8503:27;;8611:8;;8573:54:::1;:::i;:::-;;;;;;;;8470:168;8192:446;;;8405:53;8431:10;8443:8;8453:4;8405:53;;;;;;;;:::i;:::-;;;;;;;;8192:446;7009:1643;5694:2962;;;;;;;1985:1;5548:3108:::0;;;:::o;930:252:87:-;2286:7:177;1336:6:71;-1:-1:-1;;;;;1336:6:71;561:10:87;:28;553:61;;;;-1:-1:-1;;;553:61:87;;27132:2:290;553:61:87;;;27114:21:290;27171:2;27151:18;;;27144:30;-1:-1:-1;;;27190:18:290;;;27183:50;27250:18;;553:61:87;26930:344:290;553:61:87;1066:12:::1;::::0;;1025::::1;1066::::0;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;1043:7:87;::::1;::::0;1058:6;;1043:36:::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:55;;;1093:7;1085:37;;;::::0;-1:-1:-1;;;1085:37:87;;28639:2:290;1085:37:87::1;::::0;::::1;28621:21:290::0;28678:2;28658:18;;;28651:30;-1:-1:-1;;;28697:18:290;;;28690:47;28754:18;;1085:37:87::1;28437:341:290::0;1085:37:87::1;1134:43;::::0;11268:25:290;;;-1:-1:-1;;;;;1134:43:87;::::1;::::0;1154:10:::1;::::0;1134:43:::1;::::0;11256:2:290;11241:18;1134:43:87::1;;;;;;;1018:164;930:252:::0;;:::o;2096:188:71:-;1175:13;:11;:13::i;:::-;-1:-1:-1;;;;;2180:22:71;::::1;2172:73;;;::::0;-1:-1:-1;;;2172:73:71;;28985:2:290;2172:73:71::1;::::0;::::1;28967:21:290::0;29024:2;29004:18;;;28997:30;29063:34;29043:18;;;29036:62;-1:-1:-1;;;29114:18:290;;;29107:36;29160:19;;2172:73:71::1;28783:402:290::0;2172:73:71::1;2251:28;2270:8;2251:18;:28::i;3202:214:181:-:0;3315:4;3334:31;;;:22;:31;;;;;:77;;:53;;3397:13;3334:62;:77::i;:::-;3327:84;3202:214;-1:-1:-1;;;3202:214:181:o;587:122:64:-;426:23;:21;:23::i;:::-;676:28:::1;692:11;676:15;:28::i;4669:142:181:-:0;1175:13:71;:11;:13::i;:::-;4768:38:181::1;4789:16;4768:20;:38::i;1412:124:71:-:0;1314:7;1336:6;-1:-1:-1;;;;;1336:6:71;831:10:70;1471:23:71;1463:68;;;;-1:-1:-1;;;1463:68:71;;29392:2:290;1463:68:71;;;29374:21:290;;;29411:18;;;29404:30;29470:34;29450:18;;;29443:62;29522:18;;1463:68:71;29190:356:290;11856:2445:180;11974:9;11969:2328;11993:14;:21;11989:1;:25;11969:2328;;;12029:65;12097:14;12112:1;12097:17;;;;;;;;:::i;:::-;;;;;;;12029:85;;12201:1;-1:-1:-1;;;;;12140:63:180;:24;:49;;;-1:-1:-1;;;;;12140:63:180;;;:141;;;;-1:-1:-1;12217:50:180;;-1:-1:-1;;;;;12217:64:180;;;12140:141;12291:51;;;;;;;;;;;;;-1:-1:-1;;;12291:51:180;;;12123:227;;;;;-1:-1:-1;;;12123:227:180;;;;;;;;:::i;:::-;-1:-1:-1;12443:43:180;;;;;12358:50;12411:83;;;:22;:83;;;;;;12358:50;12579:905;12603:27;;12599:31;;12579:905;;;12647:47;12697:20;12718:1;12697:23;;;;;;;;:::i;:::-;;;;;;;;;12805:50;;12697:23;;;;;12746:45;;;;12697:23;;-1:-1:-1;;;;;;12746:109:180;;;:45;;:109;12731:745;;12955:49;;;;12895:44;;-1:-1:-1;;;;;12895:44:180;;;:109;;;12878:541;;13078:64;;;;;13031:111;;-1:-1:-1;;;;;;13031:111:180;-1:-1:-1;;;;;13031:111:180;;;;;;;;13257:50;;13198:43;;;;;13162:244;;9547:51:290;;;-1:-1:-1;;13162:244:180;;;;;13198:43;13162:244;;9520:18:290;13162:244:180;;;;;;;12878:541;13444:4;13430:18;;13460:5;;;12731:745;-1:-1:-1;12632:3:180;;;;:::i;:::-;;;;12579:905;;;;13497:11;13492:799;;13593:50;;13655:59;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13655:59:180;-1:-1:-1;;;13655:59:180;;;13726:35;;;;;;;;;;;-1:-1:-1;;;13726:35:180;;;;13553:218;;13593:50;13553:28;:218::i;:::-;-1:-1:-1;13819:213:180;;;;;;;;13879:49;;;;;;-1:-1:-1;;;;;13819:213:180;;;;;13969:50;;13819:213;;;;;;;;13782:260;;;;;;;;-1:-1:-1;13782:260:180;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13782:260:180;;;;;;;;;;;;;;;;;;;;;;;;;;14145:50;;14090:43;;;;14207:49;;14058:224;;9565:32:290;;;9547:51;;13782:260:180;;14058:224;;;14090:43;;14058:224;;9520:18:290;14058:224:180;;;;;;;13492:799;12021:2276;;;12016:3;;;;;:::i;:::-;;;;11969:2328;;;;11856:2445;:::o;4464:190:246:-;4534:7;4549:44;4596:19;4603:11;4596:6;:19::i;:::-;4628:21;;;;4464:190;-1:-1:-1;;;4464:190:246:o;2227:172::-;2291:7;2306:38;2347:16;2354:8;2347:6;:16::i;1106:149:64:-;1314:7:71;1336:6;-1:-1:-1;;;;;1336:6:71;831:10:70;1167:23:64;;:53;;-1:-1:-1;537:9:64;;-1:-1:-1;;;;;537:9:64;831:10:70;1194:26:64;1167:53;1159:91;;;;-1:-1:-1;;;1159:91:64;;29753:2:290;1159:91:64;;;29735:21:290;29792:2;29772:18;;;29765:30;29831:27;29811:18;;;29804:55;29876:18;;1159:91:64;29551:349:290;4129:141:246;-1:-1:-1;;;;;;;;;;;;;;;;;4238:11:246;4227:38;;;;;;;;;;;;:::i;5188:160::-;5264:15;;:::i;:::-;5294:49;5315:11;:27;;;5294:20;:49::i;5583:153::-;5703:27;;;;;4891:22;;;;;5661:7;;5683:48;4805:113;10510:1214:180;10751:4;;;10804:878;10828:14;:21;10824:1;:25;10804:878;;;10865:12;10879:23;10906:14;10921:1;10906:17;;;;;;;;:::i;:::-;;;;;;;:52;;;-1:-1:-1;;;;;10906:74:180;11028:36;;;11078:14;11093:1;11078:17;;;;;;;;:::i;:::-;;;;;;;:42;;;11134:8;11156:18;11188;10992:226;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10992:226:180;;;;;;;;;;;;;;-1:-1:-1;;;;;10992:226:180;-1:-1:-1;;;;;;10992:226:180;;;;;;;;;;10906:322;;;;10992:226;10906:322;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10864:364;;;;11241:7;11237:147;;;11285:4;11260:29;;11237:147;11640:7;11396:279;;11535:14;11550:1;11535:17;;;;;;;;:::i;:::-;;;;;;;:43;;;-1:-1:-1;;;;;11396:279:180;11459:10;11396:279;11436:13;11479:18;11507;11588:14;11603:1;11588:17;;;;;;;;:::i;:::-;;;;;;;:42;;;11657:10;11396:279;;;;;;;;;;:::i;:::-;;;;;;;;10856:826;;10851:3;;;;;:::i;:::-;;;;10804:878;;;-1:-1:-1;11696:22:180;10510:1214;-1:-1:-1;;;;;;;10510:1214:180:o;1419:269:246:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1592:8:246;1581:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1581:20:246;;;;;;1558:43;;;4891:22;;;;;;;1607:18;;;:48;:15;1419:269;-1:-1:-1;;1419:269:246:o;3603:307::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3802:11:246;3791:23;;;;;;;;:::i;10259:300:63:-;10322:16;10350:22;10375:19;10383:3;10375:7;:19::i;2428:173:71:-;2497:16;2516:6;;-1:-1:-1;;;;;2528:17:71;;;-1:-1:-1;;;;;;2528:17:71;;;;;;2556:40;;2516:6;;;;;;;2556:40;;2497:16;2556:40;2491:110;2428:173;:::o;15789:295:180:-;15874:9;15869:211;15893:7;:14;15889:1;:18;15869:211;;;15952:1;-1:-1:-1;;;;;15930:24:180;:7;15938:1;15930:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15930:24:180;;;15956:21;;;;;;;;;;;;;-1:-1:-1;;;15956:21:180;;;15922:56;;;;;-1:-1:-1;;;15922:56:180;;;;;;;;:::i;:::-;;16017:8;15986:16;:28;16003:7;16011:1;16003:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15986:28:180;-1:-1:-1;;;;;15986:28:180;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16064:8;16038:35;;16052:7;16060:1;16052:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;16038:35:180;;;;;;;;;;;15909:3;;;;:::i;:::-;;;;15869:211;;1314:862:177;3489:13:80;;;;;;;3488:14;;3524:34;;;;-1:-1:-1;3542:12:80;;3557:1;3542:12;;;;:16;3524:34;3523:105;;;-1:-1:-1;3600:4:80;1513:19:69;:23;;;3572:55:80;;-1:-1:-1;3610:12:80;;;;;:17;3572:55;3508:182;;;;-1:-1:-1;;;3508:182:80;;;;;;;:::i;:::-;3696:12;:16;;-1:-1:-1;;3696:16:80;3711:1;3696:16;;;3718:55;;;;3746:13;:20;;-1:-1:-1;;3746:20:80;;;;;3718:55;1668:25:177::1;1687:5;1668:18;:25::i;:::-;1699;1715:8;1699:15;:25::i;:::-;1800:41;::::0;;1839:1:::1;1800:41:::0;;;::::1;::::0;::::1;::::0;;;1731:192:::1;::::0;1763:29;;1800:41;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;1800:41:177::1;;;;;;;;;;;;;;;;1889:28;1731:24;:192::i;:::-;2002:31;::::0;;2031:1:::1;2002:31:::0;;;::::1;::::0;::::1;::::0;;;1930:241:::1;::::0;1963:31;;2002;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;2002:31:177::1;;;;;;;;;;;;;;;-1:-1:-1::0;2105:16:177::1;::::0;;2119:1:::1;2105:16:::0;;::::1;::::0;::::1;::::0;;;2081;;1930:25:::1;:241::i;14445:1131:180:-:0;14562:9;14557:1015;14581:23;:30;14577:1;:34;14557:1015;;;14631:9;14626:940;14650:23;14674:1;14650:26;;;;;;;;:::i;:::-;;;;;;;:35;;;:42;14646:1;:46;14626:940;;;14709:50;14762:22;:82;14796:23;14820:1;14796:26;;;;;;;;:::i;:::-;;;;;;;:35;;;14832:1;14796:38;;;;;;;;:::i;:::-;;;;;;;14762:82;;;;;;;;;;;14709:135;;14860:9;14855:703;14879:27;;14875:31;;14855:703;;;15007:23;15031:1;15007:26;;;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;14942:105:180;:20;14963:1;14942:23;;;;;;;;:::i;:::-;;;;;;;;;:49;:23;;;;;:49;;-1:-1:-1;;;;;14942:49:180;:105;14925:623;;15074:32;15109:20;15130:1;15109:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:48;15219:27;;-1:-1:-1;;;;;15109:48:180;;;;-1:-1:-1;15198:20:180;;15219:31;;15109:48;;15219:31;:::i;:::-;15198:53;;;;;;;;:::i;:::-;;;;;;;;;;;15172:20;15193:1;15172:23;;;;;;;;:::i;:::-;;;;;;;;;:79;;:23;;;;;:79;;-1:-1:-1;;;;;15172:79:180;;;-1:-1:-1;;;;;;15172:79:180;;;;;;-1:-1:-1;15172:79:180;;;;;;;;;;;;;;;;;;;;;;15265:26;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;15265:26:180;;;;;;;;;-1:-1:-1;;;;;;15265:26:180;;;;;;;;;;;;;;;;;;;15401;;:23;;15425:1;;15401:26;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;15311:205:180;15347:23;15371:1;15347:26;;;;;;;;:::i;:::-;;;;;;;:35;;;15383:1;15347:38;;;;;;;;:::i;:::-;;;;;;;15311:205;15457:24;15311:205;;;;;-1:-1:-1;;;;;9565:32:290;;;;9547:51;;9535:2;9520:18;;9401:203;15311:205:180;;;;;;;;15530:5;;;14925:623;14908:3;;;;:::i;:::-;;;;14855:703;;;;14699:867;14694:3;;;;;:::i;:::-;;;;14626:940;;;-1:-1:-1;14613:3:180;;;;:::i;:::-;;;;14557:1015;;11294:1213:181;11444:9;11439:1064;11463:19;:26;11459:1;:30;11439:1064;;;11504:45;11552:19;11572:1;11552:22;;;;;;;;:::i;:::-;;;;;;;11504:70;;11621:1;-1:-1:-1;;;;;11590:33:181;:5;:19;;;-1:-1:-1;;;;;11590:33:181;;;11625:29;;;;;;;;;;;;;-1:-1:-1;;;11625:29:181;;;11582:73;;;;;-1:-1:-1;;;11582:73:181;;;;;;;;:::i;:::-;;11669:9;11664:833;11684:5;:14;;;:21;11680:1;:25;11664:833;;;11722:20;11756:9;11752:599;;;11779:39;11800:5;:14;;;11815:1;11800:17;;;;;;;;:::i;:::-;;;;;;;11779:16;:20;;:39;;;;:::i;:::-;;11848:112;11929:5;:19;;;11848:22;:41;11871:5;:14;;;11886:1;11871:17;;;;;;;;:::i;:::-;;;;;;;11848:41;;;;;;;;;;;:63;;:67;;:112;;;;:::i;:::-;11830:130;;11752:599;;;12007:115;12091:5;:19;;;12007:22;:41;12030:5;:14;;;12045:1;12030:17;;;;;;;;:::i;:::-;;;;;;;12007:41;;;;;;;;;;;:63;;:70;;:115;;;;:::i;:::-;11989:133;;12151:15;:108;;;;;12182:72;:22;:41;12205:5;:14;;;12220:1;12205:17;;;;;;;;:::i;:::-;;;;;;;12182:41;;;;;;;;;;;:63;;:70;:72::i;:::-;:77;12151:108;12134:207;;;12286:42;12310:5;:14;;;12325:1;12310:17;;;;;;;;:::i;:::-;;;;;;;12286:16;:23;;:42;;;;:::i;:::-;;12134:207;12364:15;12360:129;;;12460:5;:14;;;12475:1;12460:17;;;;;;;;:::i;:::-;;;;;;;12449:9;12398:80;;12428:5;:19;;;-1:-1:-1;;;;;12398:80:181;;;;;;;;;;;12360:129;-1:-1:-1;11707:3:181;;;;:::i;:::-;;;;11664:833;;;;11496:1007;11491:3;;;;;:::i;:::-;;;;11439:1064;;9482:689;9612:9;9607:560;9627:26;:33;9623:1;:37;9607:560;;;9675:35;9713:26;9740:1;9713:29;;;;;;;;:::i;:::-;;;;;;;;;;;;9826:13;;9803:37;;;;:22;:37;;;;;:69;9767:23;;;;9713:29;;-1:-1:-1;;;;;;9803:69:181;;;;;;9767:105;;;:161;;;;;9913:15;9886:5;:23;;;-1:-1:-1;;;;;9886:42:181;;;9767:161;9938:33;;;;;;;;;;;;;-1:-1:-1;;;9938:33:181;;;9750:229;;;;;-1:-1:-1;;;9750:229:181;;;;;;;;:::i;:::-;-1:-1:-1;10059:32:181;;;;;;10010:13;;9987:37;;;;:22;:37;;;;;;;:104;;-1:-1:-1;;;;;;9987:104:181;;-1:-1:-1;;;;;9987:104:181;;;;;;;10146:13;;10121:23;;10105:55;;32824:45:290;;32806:64;;10146:13:181;;10105:55;;32779:18:290;10105:55:181;;;;;;;-1:-1:-1;9662:3:181;;;;:::i;:::-;;;;9607:560;;1405:154:73;1510:43;;;-1:-1:-1;;;;;33073:32:290;;1510:43:73;;;33055:51:290;33122:18;;;;33115:34;;;1510:43:73;;;;;;;;;;33028:18:290;;;;1510:43:73;;;;;;;;-1:-1:-1;;;;;1510:43:73;-1:-1:-1;;;1510:43:73;;;1483:71;;1503:5;;1483:19;:71::i;8860:165:63:-;-1:-1:-1;;;;;8993:23:63;;8940:4;4351:19;;;:12;;;:19;;;;;;:24;;8963:55;4255:127;814:178:64;897:9;;;-1:-1:-1;;;;;912:23:64;;;-1:-1:-1;;;;;;912:23:64;;;;;;;946:41;;;897:9;;;;33372:34:290;;;33437:2;33422:18;;33415:43;;;;946:41:64;;33307:18:290;946:41:64;33160:304:290;10402:714:181;10497:9;10492:620;10512:16;:23;10508:1;:27;10492:620;;;10550:38;10591:16;10608:1;10591:19;;;;;;;;:::i;:::-;;;;;;;10550:60;;10673:1;10635:13;:35;;;:39;;;:178;;;;-1:-1:-1;10760:21:181;;10737:45;;;;:22;:45;;;;;:76;;:67;;:74;:76::i;:::-;10688:13;:35;;;:125;;;;10635:178;10823:37;;;;;;;;;;;;;-1:-1:-1;;;10823:37:181;;;10618:250;;;;;-1:-1:-1;;;10618:250:181;;;;;;;;:::i;:::-;-1:-1:-1;10977:35:181;;;;;;10899:21;;10876:45;;;;:22;:45;;;;;;;:136;;-1:-1:-1;;10876:136:181;;;;;;;;11083:21;;11046:35;;11025:80;;26901:17:290;;26883:36;;11083:21:181;;11025:80;;26856:18:290;11025:80:181;;;;;;;-1:-1:-1;10537:3:181;;;;:::i;:::-;;;;10492:620;;6603:301:69;6730:12;6751;6765:23;6792:6;-1:-1:-1;;;;;6792:19:69;6812:4;6792:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6750:67;;;;6830:69;6857:6;6865:7;6874:10;6886:12;6830:26;:69::i;:::-;6823:76;6603:301;-1:-1:-1;;;;;;6603:301:69:o;1893:129:246:-;1955:15;;:::i;:::-;1996:8;1985:32;;;;;;;;;;;;:::i;5570:109:63:-;5626:16;5661:3;:11;;5654:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5570:109;;;:::o;12592:525:181:-;12956:52;12986:15;13003:4;12956:29;:52::i;:::-;13014:54;13044:16;13062:5;13014:29;:54::i;:::-;13074:38;13095:16;13074:20;:38::i;16169:426:180:-;16418:38;16440:15;16418:21;:38::i;:::-;16462:40;16485:16;16462:22;:40::i;:::-;16508:37;16523:15;16540:4;16508:14;:37::i;:::-;16551:39;16566:16;16584:5;16551:14;:39::i;:::-;16169:426;;;;:::o;10793:129:63:-;10860:4;10883:32;10888:3;10908:5;10883:4;:32::i;8305:150::-;8375:4;8398:50;8403:3;-1:-1:-1;;;;;8423:23:63;;8398:4;:50::i;8623:156::-;8696:4;8719:53;8727:3;-1:-1:-1;;;;;8747:23:63;;8719:7;:53::i;9106:115::-;9169:7;9195:19;9203:3;4545:18;;4463:107;11090:135;11160:4;11183:35;11191:3;11211:5;11183:7;:35::i;4628:597:73:-;5031:23;5057:33;-1:-1:-1;;;;;5057:27:73;;5085:4;5057:27;:33::i;:::-;5031:59;;5100:10;:17;5121:1;5100:22;;:57;;;;;5138:10;5127:30;;;;;;;;;;;;:::i;:::-;5126:31;5100:57;5096:125;;;5174:40;;-1:-1:-1;;;5174:40:73;;-1:-1:-1;;;;;9565:32:290;;5174:40:73;;;9547:51:290;9520:18;;5174:40:73;9401:203:290;7178:548:69;7340:12;7364:7;7360:362;;;7385:10;:17;7406:1;7385:22;7381:256;;-1:-1:-1;;;;;1513:19:69;;;7568:60;;;;-1:-1:-1;;;7568:60:69;;35170:2:290;7568:60:69;;;35152:21:290;35209:2;35189:18;;;35182:30;35248:31;35228:18;;;35221:59;35297:18;;7568:60:69;34968:353:290;7568:60:69;-1:-1:-1;7651:10:69;7644:17;;7360:362;7682:33;7690:10;7702:12;7682:7;:33::i;:::-;7178:548;;;;;;:::o;2214:404:63:-;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:63;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:63;2589:12;;2786:1388;2852:4;2989:19;;;:12;;;:19;;;;;;3023:15;;3019:1149;;3392:21;3416:14;3429:1;3416:10;:14;:::i;:::-;3464:18;;3392:38;;-1:-1:-1;3444:17:63;;3464:22;;3485:1;;3464:22;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3805:23;;;:12;;;:23;;;;;:36;;;3501:398;3977:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;;;3426:179:69;3501:12;3528:72;3550:6;3558:4;3564:1;3528:72;;;;;;;;;;;;;;;;;:21;:72::i;8192:476::-;8343:17;;:21;8339:325;;8545:10;8539:17;8593:15;8580:10;8576:2;8572:19;8565:44;8339:325;8644:12;8637:20;;-1:-1:-1;;;8637:20:69;;;;;;;;:::i;4822:414::-;4969:12;5022:5;4997:21;:30;;4989:81;;;;-1:-1:-1;;;4989:81:69;;35528:2:290;4989:81:69;;;35510:21:290;35567:2;35547:18;;;35540:30;35606:34;35586:18;;;35579:62;-1:-1:-1;;;35657:18:290;;;35650:36;35703:19;;4989:81:69;35326:402:290;4989:81:69;5077:12;5091:23;5118:6;-1:-1:-1;;;;;5118:11:69;5137:5;5144:4;5118:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5076:73;;;;5162:69;5189:6;5197:7;5206:10;5218:12;5162:26;:69::i;:::-;5155:76;4822:414;-1:-1:-1;;;;;;;4822:414:69:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:290:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;-1:-1:-1;;;;;280:34:290;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:257::-;476:4;470:11;;;508:17;;-1:-1:-1;;;;;540:34:290;;576:22;;;537:62;534:88;;;602:18;;:::i;666:253::-;738:2;732:9;780:4;768:17;;-1:-1:-1;;;;;800:34:290;;836:22;;;797:62;794:88;;;862:18;;:::i;924:275::-;995:2;989:9;1060:2;1041:13;;-1:-1:-1;;1037:27:290;1025:40;;-1:-1:-1;;;;;1080:34:290;;1116:22;;;1077:62;1074:88;;;1142:18;;:::i;:::-;1178:2;1171:22;924:275;;-1:-1:-1;924:275:290:o;1204:216::-;1297:4;-1:-1:-1;;;;;1322:6:290;1319:30;1316:56;;;1352:18;;:::i;:::-;-1:-1:-1;1397:1:290;1393:14;1409:4;1389:25;;1204:216::o;1425:131::-;-1:-1:-1;;;;;1500:31:290;;1490:42;;1480:70;;1546:1;1543;1536:12;1561:134;1629:20;;1658:31;1629:20;1658:31;:::i;:::-;1561:134;;;:::o;1700:1271::-;1787:5;1840:3;1833:4;1825:6;1821:17;1817:27;1807:55;;1858:1;1855;1848:12;1807:55;1894:6;1881:20;1920:4;1944:93;1960:76;2033:2;1960:76;:::i;:::-;1944:93;:::i;:::-;2071:15;;;2133:4;2176:11;;;2164:24;;2160:33;;;2102:12;;;;2059:3;2205:15;;;2202:35;;;2233:1;2230;2223:12;2202:35;2269:2;2261:6;2257:15;2281:661;2297:6;2292:3;2289:15;2281:661;;;2373:2;2367:3;2362;2358:13;2354:22;2351:112;;;2417:1;2446:2;2442;2435:14;2351:112;2489:22;;:::i;:::-;2552:3;2539:17;2569:33;2594:7;2569:33;:::i;:::-;2615:22;;2678:12;;;2665:26;2704:33;2665:26;2704:33;:::i;:::-;2757:14;;;2750:31;2804:2;2855:12;;;2842:26;2826:14;;;2819:50;2882:18;;2920:12;;;;2314;;2281:661;;;-1:-1:-1;2960:5:290;;1700:1271;-1:-1:-1;;;;;;;1700:1271:290:o;2976:433::-;3112:6;3165:2;3153:9;3144:7;3140:23;3136:32;3133:52;;;3181:1;3178;3171:12;3133:52;3221:9;3208:23;-1:-1:-1;;;;;3246:6:290;3243:30;3240:50;;;3286:1;3283;3276:12;3240:50;3309:94;3395:7;3386:6;3375:9;3371:22;3309:94;:::i;3414:186::-;3462:4;-1:-1:-1;;;;;3487:6:290;3484:30;3481:56;;;3517:18;;:::i;:::-;-1:-1:-1;3583:2:290;3562:15;-1:-1:-1;;3558:29:290;3589:4;3554:40;;3414:186::o;3605:462::-;3647:5;3700:3;3693:4;3685:6;3681:17;3677:27;3667:55;;3718:1;3715;3708:12;3667:55;3754:6;3741:20;3785:48;3801:31;3829:2;3801:31;:::i;3785:48::-;3858:2;3849:7;3842:19;3904:3;3897:4;3892:2;3884:6;3880:15;3876:26;3873:35;3870:55;;;3921:1;3918;3911:12;3870:55;3986:2;3979:4;3971:6;3967:17;3960:4;3951:7;3947:18;3934:55;4034:1;4009:16;;;4027:4;4005:27;3998:38;;;;4013:7;3605:462;-1:-1:-1;;;3605:462:290:o;4072:671::-;4161:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4270:9;4257:23;-1:-1:-1;;;;;4340:2:290;4332:6;4329:14;4326:34;;;4356:1;4353;4346:12;4326:34;4379:22;;;;4435:4;4417:16;;;4413:27;4410:47;;;4453:1;4450;4443:12;4410:47;4479:22;;:::i;:::-;4537:2;4524:16;4517:5;4510:31;4587:2;4583;4579:11;4566:25;4616:2;4606:8;4603:16;4600:36;;;4632:1;4629;4622:12;4600:36;4668:44;4704:7;4693:8;4689:2;4685:17;4668:44;:::i;:::-;4663:2;4652:14;;4645:68;-1:-1:-1;4656:5:290;4072:671;-1:-1:-1;;;;;4072:671:290:o;4975:320::-;4849:12;;4863:4;4845:23;4833:36;;4922:4;4911:16;;;4905:23;-1:-1:-1;;;;;4901:62:290;4885:14;;;4878:86;5209:2;5194:18;;5221:68;4748:222;5300:820;5355:5;5403:4;5391:9;5386:3;5382:19;5378:30;5375:50;;;5421:1;5418;5411:12;5375:50;5443:22;;:::i;:::-;5434:31;;5501:9;5488:23;5481:5;5474:38;5564:2;5553:9;5549:18;5536:32;5577:33;5602:7;5577:33;:::i;:::-;5637:2;5626:14;;5619:31;5702:2;5687:18;;5674:32;5715:33;5674:32;5715:33;:::i;:::-;5780:7;5775:2;5768:5;5764:14;5757:31;;5848:2;5837:9;5833:18;5820:32;5815:2;5808:5;5804:14;5797:56;5914:3;5903:9;5899:19;5886:33;5880:3;5873:5;5869:15;5862:58;5971:3;5960:9;5956:19;5943:33;-1:-1:-1;;;;;5991:6:290;5988:30;5985:50;;;6031:1;6028;6021:12;5985:50;6068:45;6109:3;6100:6;6089:9;6085:22;6068:45;:::i;:::-;6062:3;6055:5;6051:15;6044:70;;5300:820;;;;:::o;6125:348::-;6211:6;6264:2;6252:9;6243:7;6239:23;6235:32;6232:52;;;6280:1;6277;6270:12;6232:52;6320:9;6307:23;-1:-1:-1;;;;;6345:6:290;6342:30;6339:50;;;6385:1;6382;6375:12;6339:50;6408:59;6459:7;6450:6;6439:9;6435:22;6408:59;:::i;6478:180::-;6537:6;6590:2;6578:9;6569:7;6565:23;6561:32;6558:52;;;6606:1;6603;6596:12;6558:52;-1:-1:-1;6629:23:290;;6478:180;-1:-1:-1;6478:180:290:o;6663:874::-;6910:2;6962:21;;;7032:13;;6935:18;;;7054:22;;;6881:4;;6910:2;7095;;7113:18;;;;7154:15;;;6881:4;7197:314;7211:6;7208:1;7205:13;7197:314;;;7270:13;;7354:9;;-1:-1:-1;;;;;7350:18:290;;;7338:31;;7413:11;;;7407:18;7403:27;7389:12;;;7382:49;7451:12;;;;7486:15;;;;7323:1;7226:9;7197:314;;;-1:-1:-1;7528:3:290;;6663:874;-1:-1:-1;;;;;;;6663:874:290:o;7542:247::-;7601:6;7654:2;7642:9;7633:7;7629:23;7625:32;7622:52;;;7670:1;7667;7660:12;7622:52;7709:9;7696:23;7728:31;7753:5;7728:31;:::i;7986:770::-;8040:5;8093:3;8086:4;8078:6;8074:17;8070:27;8060:55;;8111:1;8108;8101:12;8060:55;8147:6;8134:20;8173:4;8197:93;8213:76;8286:2;8213:76;:::i;8197:93::-;8324:15;;;8410:1;8406:10;;;;8394:23;;8390:32;;;8355:12;;;;8434:15;;;8431:35;;;8462:1;8459;8452:12;8431:35;8498:2;8490:6;8486:15;8510:217;8526:6;8521:3;8518:15;8510:217;;;8606:3;8593:17;8623:31;8648:5;8623:31;:::i;:::-;8667:18;;8705:12;;;;8543;;8510:217;;;-1:-1:-1;8745:5:290;7986:770;-1:-1:-1;;;;;;7986:770:290:o;8761:635::-;8872:6;8880;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8997:9;8984:23;-1:-1:-1;;;;;9067:2:290;9059:6;9056:14;9053:34;;;9083:1;9080;9073:12;9053:34;9106:49;9147:7;9138:6;9127:9;9123:22;9106:49;:::i;:::-;9096:59;;9202:2;9191:9;9187:18;9174:32;9164:42;;9259:2;9248:9;9244:18;9231:32;9215:48;;9288:2;9278:8;9275:16;9272:36;;;9304:1;9301;9294:12;9272:36;;9327:63;9382:7;9371:8;9360:9;9356:24;9327:63;:::i;:::-;9317:73;;;8761:635;;;;;:::o;9609:592::-;9704:6;9712;9720;9728;9781:3;9769:9;9760:7;9756:23;9752:33;9749:53;;;9798:1;9795;9788:12;9749:53;9834:9;9821:23;9811:33;;9894:2;9883:9;9879:18;9866:32;9907:31;9932:5;9907:31;:::i;:::-;9957:5;-1:-1:-1;10009:2:290;9994:18;;9981:32;;-1:-1:-1;10064:2:290;10049:18;;10036:32;-1:-1:-1;;;;;10080:30:290;;10077:50;;;10123:1;10120;10113:12;10077:50;10146:49;10187:7;10178:6;10167:9;10163:22;10146:49;:::i;:::-;10136:59;;;9609:592;;;;;;;:::o;10459:658::-;10630:2;10682:21;;;10752:13;;10655:18;;;10774:22;;;10601:4;;10630:2;10853:15;;;;10827:2;10812:18;;;10601:4;10896:195;10910:6;10907:1;10904:13;10896:195;;;10975:13;;-1:-1:-1;;;;;10971:39:290;10959:52;;11066:15;;;;11031:12;;;;11007:1;10925:9;10896:195;;;-1:-1:-1;11108:3:290;;10459:658;-1:-1:-1;;;;;;10459:658:290:o;11609:348::-;11693:6;11746:2;11734:9;11725:7;11721:23;11717:32;11714:52;;;11762:1;11759;11752:12;11714:52;11802:9;11789:23;-1:-1:-1;;;;;11827:6:290;11824:30;11821:50;;;11867:1;11864;11857:12;11821:50;11890:61;11943:7;11934:6;11923:9;11919:22;11890:61;:::i;11962:315::-;12030:6;12038;12091:2;12079:9;12070:7;12066:23;12062:32;12059:52;;;12107:1;12104;12097:12;12059:52;12143:9;12130:23;12120:33;;12203:2;12192:9;12188:18;12175:32;12216:31;12241:5;12216:31;:::i;:::-;12266:5;12256:15;;;11962:315;;;;;:::o;12282:1162::-;12353:5;12406:3;12399:4;12391:6;12387:17;12383:27;12373:55;;12424:1;12421;12414:12;12373:55;12460:6;12447:20;12486:4;12510:93;12526:76;12599:2;12526:76;:::i;12510:93::-;12637:15;;;12723:1;12719:10;;;;12707:23;;12703:32;;;12668:12;;;;12747:15;;;12744:35;;;12775:1;12772;12765:12;12744:35;12811:2;12803:6;12799:15;12823:592;12839:6;12834:3;12831:15;12823:592;;;12917:4;12911:3;12906;12902:13;12898:24;12895:114;;;12963:1;12992:2;12988;12981:14;12895:114;13035:22;;:::i;:::-;13097:3;13084:17;13077:5;13070:32;13152:2;13147:3;13143:12;13130:26;13204:4;13195:7;13191:18;13182:7;13179:31;13169:129;;13252:1;13281:2;13277;13270:14;13169:129;13318:14;;;13311:31;13355:18;;13393:12;;;;12865:4;12856:14;12823:592;;13449:2242;13560:5;13589:97;13605:80;13678:6;13605:80;:::i;13589:97::-;13720:21;;;13580:106;-1:-1:-1;13760:4:290;13780:14;;;;13813:1;13849:15;;;13837:28;;13877:15;;;13874:35;;;13905:1;13902;13895:12;13874:35;13929:6;13944:1741;13960:6;13955:3;13952:15;13944:1741;;;14046:3;14033:17;-1:-1:-1;;;;;14123:2:290;14110:11;14107:19;14104:109;;;14167:1;14196:2;14192;14185:14;14104:109;14236:24;;;;14294:4;14280:12;;;14276:23;14273:113;;;14340:1;14369:2;14365;14358:14;14273:113;14412:22;;:::i;:::-;14475:2;14462:16;14491:33;14516:7;14491:33;:::i;:::-;14537:22;;14601:11;;;14588:25;14629:16;;;14626:106;;;14686:1;14715:2;14711;14704:14;14626:106;14763:8;14759:2;14755:17;14745:27;;;14814:3;14807:4;14803:2;14799:13;14795:23;14785:121;;14860:1;14850:11;;14889:2;14885;14878:14;14785:121;14943:2;14930:16;14919:27;;14972:94;14988:77;15061:3;14988:77;:::i;14972:94::-;15110:18;;;15205:12;;;15197:21;;15193:30;;;15150:14;;;;15239:17;;;15236:110;;;15298:1;15328:3;15323;15316:16;15236:110;15372:11;;;;15396:174;15414:8;15407:5;15404:19;15396:174;;;15496:19;;15482:34;;15435:14;;;;15542;;;;15396:174;;;15590:14;;;15583:29;-1:-1:-1;15625:18:290;;-1:-1:-1;;15663:12:290;;;;13977;;13944:1741;;;13948:3;;;;;13449:2242;;;;;:::o;15696:308::-;15782:5;15835:3;15828:4;15820:6;15816:17;15812:27;15802:55;;15853:1;15850;15843:12;15802:55;15875:123;15994:3;15985:6;15972:20;15965:4;15957:6;15953:17;15875:123;:::i;16009:1419::-;16352:6;16360;16368;16376;16384;16392;16445:3;16433:9;16424:7;16420:23;16416:33;16413:53;;;16462:1;16459;16452:12;16413:53;16485:29;16504:9;16485:29;:::i;:::-;16475:39;;16533:38;16567:2;16556:9;16552:18;16533:38;:::i;:::-;16523:48;;16622:2;16611:9;16607:18;16594:32;-1:-1:-1;;;;;16686:2:290;16678:6;16675:14;16672:34;;;16702:1;16699;16692:12;16672:34;16725:78;16795:7;16786:6;16775:9;16771:22;16725:78;:::i;:::-;16715:88;;16856:2;16845:9;16841:18;16828:32;16812:48;;16885:2;16875:8;16872:16;16869:36;;;16901:1;16898;16891:12;16869:36;16924:95;17011:7;17000:8;16989:9;16985:24;16924:95;:::i;:::-;16914:105;;17072:3;17061:9;17057:19;17044:33;17028:49;;17102:2;17092:8;17089:16;17086:36;;;17118:1;17115;17108:12;17086:36;17141:96;17229:7;17218:8;17207:9;17203:24;17141:96;:::i;:::-;17131:106;;17290:3;17279:9;17275:19;17262:33;17246:49;;17320:2;17310:8;17307:16;17304:36;;;17336:1;17333;17326:12;17304:36;;17359:63;17414:7;17403:8;17392:9;17388:24;17359:63;:::i;:::-;17349:73;;;16009:1419;;;;;;;;:::o;17433:550::-;17558:6;17611:2;17599:9;17590:7;17586:23;17582:32;17579:52;;;17627:1;17624;17617:12;17579:52;17667:9;17654:23;-1:-1:-1;;;;;17692:6:290;17689:30;17686:50;;;17732:1;17729;17722:12;17686:50;17755:22;;17808:4;17800:13;;17796:27;-1:-1:-1;17786:55:290;;17837:1;17834;17827:12;17786:55;17860:117;17969:7;17964:2;17951:16;17946:2;17942;17938:11;17860:117;:::i;18173:431::-;18308:6;18361:2;18349:9;18340:7;18336:23;18332:32;18329:52;;;18377:1;18374;18367:12;18329:52;18417:9;18404:23;-1:-1:-1;;;;;18442:6:290;18439:30;18436:50;;;18482:1;18479;18472:12;18436:50;18505:93;18590:7;18581:6;18570:9;18566:22;18505:93;:::i;18609:416::-;18704:6;18712;18765:2;18753:9;18744:7;18740:23;18736:32;18733:52;;;18781:1;18778;18771:12;18733:52;18821:9;18808:23;-1:-1:-1;;;;;18846:6:290;18843:30;18840:50;;;18886:1;18883;18876:12;18840:50;18909:59;18960:7;18951:6;18940:9;18936:22;18909:59;:::i;:::-;18899:69;19015:2;19000:18;;;;18987:32;;-1:-1:-1;;;;18609:416:290:o;19212:1447::-;19337:6;19368:2;19411;19399:9;19390:7;19386:23;19382:32;19379:52;;;19427:1;19424;19417:12;19379:52;19467:9;19454:23;-1:-1:-1;;;;;19492:6:290;19489:30;19486:50;;;19532:1;19529;19522:12;19486:50;19555:22;;19608:4;19600:13;;19596:27;-1:-1:-1;19586:55:290;;19637:1;19634;19627:12;19586:55;19673:2;19660:16;19696:93;19712:76;19785:2;19712:76;:::i;19696:93::-;19823:15;;;19905:1;19901:10;;;;19893:19;;19889:28;;;19854:12;;;;19929:19;;;19926:39;;;19961:1;19958;19951:12;19926:39;19985:11;;;;20005:624;20021:6;20016:3;20013:15;20005:624;;;20103:4;20097:3;20088:7;20084:17;20080:28;20077:118;;;20149:1;20178:2;20174;20167:14;20077:118;20221:22;;:::i;:::-;20283:3;20270:17;20263:5;20256:32;20338:2;20333:3;20329:12;20316:26;-1:-1:-1;;;;;20381:7:290;20377:46;20368:7;20365:59;20355:157;;20466:1;20495:2;20491;20484:14;20355:157;20532:14;;;20525:31;20569:18;;20047:4;20038:14;;;;;20607:12;;;;20005:624;;20664:456;20741:6;20749;20757;20810:2;20798:9;20789:7;20785:23;20781:32;20778:52;;;20826:1;20823;20816:12;20778:52;20865:9;20852:23;20884:31;20909:5;20884:31;:::i;:::-;20934:5;-1:-1:-1;20991:2:290;20976:18;;20963:32;21004:33;20963:32;21004:33;:::i;:::-;20664:456;;21056:7;;-1:-1:-1;;;21110:2:290;21095:18;;;;21082:32;;20664:456::o;21125:127::-;21186:10;21181:3;21177:20;21174:1;21167:31;21217:4;21214:1;21207:15;21241:4;21238:1;21231:15;21257:347;21408:2;21393:18;;21441:1;21430:13;;21420:144;;21486:10;21481:3;21477:20;21474:1;21467:31;21521:4;21518:1;21511:15;21549:4;21546:1;21539:15;21420:144;21573:25;;;21257:347;:::o;21609:632::-;21780:2;21832:21;;;21902:13;;21805:18;;;21924:22;;;21751:4;;21780:2;22003:15;;;;21977:2;21962:18;;;21751:4;22046:169;22060:6;22057:1;22054:13;22046:169;;;22121:13;;22109:26;;22190:15;;;;22155:12;;;;22082:1;22075:9;22046:169;;22246:388;22323:6;22331;22384:2;22372:9;22363:7;22359:23;22355:32;22352:52;;;22400:1;22397;22390:12;22352:52;22440:9;22427:23;-1:-1:-1;;;;;22465:6:290;22462:30;22459:50;;;22505:1;22502;22495:12;22459:50;22528:49;22569:7;22560:6;22549:9;22545:22;22528:49;:::i;22639:315::-;22707:6;22715;22768:2;22756:9;22747:7;22743:23;22739:32;22736:52;;;22784:1;22781;22774:12;22736:52;22823:9;22810:23;22842:31;22867:5;22842:31;:::i;:::-;22892:5;22944:2;22929:18;;;;22916:32;;-1:-1:-1;;;22639:315:290:o;22959:401::-;23079:6;23132:2;23120:9;23111:7;23107:23;23103:32;23100:52;;;23148:1;23145;23138:12;23100:52;23188:9;23175:23;-1:-1:-1;;;;;23213:6:290;23210:30;23207:50;;;23253:1;23250;23243:12;23207:50;23276:78;23346:7;23337:6;23326:9;23322:22;23276:78;:::i;23365:250::-;23450:1;23460:113;23474:6;23471:1;23468:13;23460:113;;;23550:11;;;23544:18;23531:11;;;23524:39;23496:2;23489:10;23460:113;;;-1:-1:-1;;23607:1:290;23589:16;;23582:27;23365:250::o;23620:271::-;23662:3;23700:5;23694:12;23727:6;23722:3;23715:19;23743:76;23812:6;23805:4;23800:3;23796:14;23789:4;23782:5;23778:16;23743:76;:::i;:::-;23873:2;23852:15;-1:-1:-1;;23848:29:290;23839:39;;;;23880:4;23835:50;;23620:271;-1:-1:-1;;23620:271:290:o;23896:220::-;24045:2;24034:9;24027:21;24008:4;24065:45;24106:2;24095:9;24091:18;24083:6;24065:45;:::i;24121:386::-;24353:1;24349;24344:3;24340:11;24336:19;24328:6;24324:32;24313:9;24306:51;24393:6;24388:2;24377:9;24373:18;24366:34;24436:2;24431;24420:9;24416:18;24409:30;24287:4;24456:45;24497:2;24486:9;24482:18;24474:6;24456:45;:::i;:::-;24448:53;24121:386;-1:-1:-1;;;;;24121:386:290:o;24512:577::-;24599:5;24593:12;24588:3;24581:25;24563:3;24652:4;24645:5;24641:16;24635:23;24694:1;24690;24685:3;24681:11;24677:19;24746:2;24732:12;24728:21;24721:4;24716:3;24712:14;24705:45;24811:2;24803:4;24796:5;24792:16;24786:23;24782:32;24775:4;24770:3;24766:14;24759:56;;;24864:4;24857:5;24853:16;24847:23;24840:4;24835:3;24831:14;24824:47;24920:4;24913:5;24909:16;24903:23;24896:4;24891:3;24887:14;24880:47;24975:4;24968:5;24964:16;24958:23;25013:4;25006;25001:3;24997:14;24990:28;25034:49;25077:4;25072:3;25068:14;25052;25034:49;:::i;25094:415::-;25327:6;25316:9;25309:25;25370:2;25365;25354:9;25350:18;25343:30;25290:4;25390:54;25440:2;25429:9;25425:18;25417:6;25390:54;:::i;:::-;25382:62;;25494:6;25487:14;25480:22;25475:2;25464:9;25460:18;25453:50;25094:415;;;;;;:::o;25514:127::-;25575:10;25570:3;25566:20;25563:1;25556:31;25606:4;25603:1;25596:15;25630:4;25627:1;25620:15;25646:125;25711:9;;;25732:10;;;25729:36;;;25745:18;;:::i;25776:127::-;25837:10;25832:3;25828:20;25825:1;25818:31;25868:4;25865:1;25858:15;25892:4;25889:1;25882:15;25908:135;25947:3;25968:17;;;25965:43;;25988:18;;:::i;:::-;-1:-1:-1;26035:1:290;26024:13;;25908:135::o;26048:263::-;26231:2;26220:9;26213:21;26194:4;26251:54;26301:2;26290:9;26286:18;26278:6;26251:54;:::i;26316:410::-;26518:2;26500:21;;;26557:2;26537:18;;;26530:30;26596:34;26591:2;26576:18;;26569:62;-1:-1:-1;;;26662:2:290;26647:18;;26640:44;26716:3;26701:19;;26316:410::o;27279:175::-;27316:3;27360:4;27353:5;27349:16;27389:4;27380:7;27377:17;27374:43;;27397:18;;:::i;:::-;27446:1;27433:15;;27279:175;-1:-1:-1;;27279:175:290:o;27459:255::-;27549:5;27543:12;27538:3;27531:25;27513:3;27602:4;27595:5;27591:16;27585:23;27640:4;27633;27628:3;27624:14;27617:28;27661:47;27702:4;27697:3;27693:14;27679:12;27661:47;:::i;27719:421::-;27960:6;27949:9;27942:25;28003:2;27998;27987:9;27983:18;27976:30;27923:4;28023:57;28076:2;28065:9;28061:18;28053:6;28023:57;:::i;:::-;28015:65;;28128:4;28120:6;28116:17;28111:2;28100:9;28096:18;28089:45;27719:421;;;;;;:::o;28145:287::-;28274:3;28312:6;28306:13;28328:66;28387:6;28382:3;28375:4;28367:6;28363:17;28328:66;:::i;:::-;28410:16;;;;;28145:287;-1:-1:-1;;28145:287:290:o;29905:441::-;29958:5;30011:3;30004:4;29996:6;29992:17;29988:27;29978:55;;30029:1;30026;30019:12;29978:55;30058:6;30052:13;30089:48;30105:31;30133:2;30105:31;:::i;30089:48::-;30162:2;30153:7;30146:19;30208:3;30201:4;30196:2;30188:6;30184:15;30180:26;30177:35;30174:55;;;30225:1;30222;30215:12;30174:55;30238:77;30312:2;30305:4;30296:7;30292:18;30285:4;30277:6;30273:17;30238:77;:::i;30351:672::-;30451:6;30504:2;30492:9;30483:7;30479:23;30475:32;30472:52;;;30520:1;30517;30510:12;30472:52;30553:9;30547:16;-1:-1:-1;;;;;30623:2:290;30615:6;30612:14;30609:34;;;30639:1;30636;30629:12;30609:34;30662:22;;;;30718:4;30700:16;;;30696:27;30693:47;;;30736:1;30733;30726:12;30693:47;30762:22;;:::i;:::-;30813:2;30807:9;30800:5;30793:24;30856:2;30852;30848:11;30842:18;30885:2;30875:8;30872:16;30869:36;;;30901:1;30898;30891:12;30869:36;30937:55;30984:7;30973:8;30969:2;30965:17;30937:55;:::i;31028:459::-;31288:1;31284;31279:3;31275:11;31271:19;31263:6;31259:32;31248:9;31241:51;31328:6;31323:2;31312:9;31308:18;31301:34;31371:6;31366:2;31355:9;31351:18;31344:34;31414:3;31409:2;31398:9;31394:18;31387:31;31222:4;31435:46;31476:3;31465:9;31461:19;31453:6;31435:46;:::i;31492:621::-;31769:6;31758:9;31751:25;31812:3;31807:2;31796:9;31792:18;31785:31;31732:4;31839:46;31880:3;31869:9;31865:19;31857:6;31839:46;:::i;:::-;31916:2;31901:18;;31894:34;;;-1:-1:-1;;;;;31964:32:290;;31959:2;31944:18;;31937:60;32034:22;;;32028:3;32013:19;;32006:51;32074:33;32038:6;32092;32074:33;:::i;:::-;32066:41;31492:621;-1:-1:-1;;;;;;;;31492:621:290:o;32118:272::-;32307:2;32296:9;32289:21;32270:4;32327:57;32380:2;32369:9;32365:18;32357:6;32327:57;:::i;32395:128::-;32462:9;;;32483:11;;;32480:37;;;32497:18;;:::i;32528:127::-;32589:10;32584:3;32580:20;32577:1;32570:31;32620:4;32617:1;32610:15;32644:4;32641:1;32634:15;33658:1023;33755:6;33808:2;33796:9;33787:7;33783:23;33779:32;33776:52;;;33824:1;33821;33814:12;33776:52;33857:9;33851:16;-1:-1:-1;;;;;33927:2:290;33919:6;33916:14;33913:34;;;33943:1;33940;33933:12;33913:34;33966:22;;;;34022:4;34004:16;;;34000:27;33997:47;;;34040:1;34037;34030:12;33997:47;34066:22;;:::i;:::-;34117:2;34111:9;34104:5;34097:24;34159:2;34155;34151:11;34145:18;34172:33;34197:7;34172:33;:::i;:::-;34232:2;34221:14;;34214:31;34283:2;34275:11;;34269:18;34296:33;34269:18;34296:33;:::i;:::-;34361:7;34356:2;34349:5;34345:14;34338:31;;34415:2;34411;34407:11;34401:18;34396:2;34389:5;34385:14;34378:42;34467:3;34463:2;34459:12;34453:19;34447:3;34440:5;34436:15;34429:44;34512:3;34508:2;34504:12;34498:19;34542:2;34532:8;34529:16;34526:36;;;34558:1;34555;34548:12;34526:36;34595:55;34642:7;34631:8;34627:2;34623:17;34595:55;:::i;:::-;34589:3;34578:15;;34571:80;-1:-1:-1;34582:5:290;33658:1023;-1:-1:-1;;;;;33658:1023:290:o;34686:277::-;34753:6;34806:2;34794:9;34785:7;34781:23;34777:32;34774:52;;;34822:1;34819;34812:12;34774:52;34854:9;34848:16;34907:5;34900:13;34893:21;34886:5;34883:32;34873:60;;34929:1;34926;34919:12", + "linkReferences": {} + }, + "methodIdentifiers": { + "allowReceiverBridgeAdapters((address,uint256[])[])": "9d0cb9d4", + "approveSenders(address[])": "90f7af54", + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": "1947051e", + "disableBridgeAdapters((address,uint256[])[])": "917cbb9b", + "disallowReceiverBridgeAdapters((address,uint256[])[])": "e3a95a5a", + "emergencyEtherTransfer(address,uint256)": "eed88b8d", + "emergencyTokenTransfer(address,address,uint256)": "a3d5b255", + "enableBridgeAdapters((address,address,uint256)[])": "0a234b15", + "forwardMessage(uint256,address,uint256,bytes)": "55c4fed4", + "getConfigurationByChain(uint256)": "6e74ebe8", + "getCurrentEnvelopeNonce()": "efe4b0ae", + "getCurrentTransactionNonce()": "654a812b", + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": "e01658d9", + "getEnvelopeState(bytes32)": "aa3f85c8", + "getForwarderBridgeAdaptersByChain(uint256)": "34f7870c", + "getReceiverBridgeAdaptersByChain(uint256)": "5b9d97c6", + "getSupportedChains()": "c4bffe2b", + "getTransactionState((uint256,bytes))": "0fb9ca41", + "getTransactionState(bytes32)": "c71cca16", + "guardian()": "452a9320", + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": "83fec72c", + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": "436bd103", + "isEnvelopeRegistered(bytes32)": "db58eaec", + "isReceiverBridgeAdapterAllowed(address,uint256)": "f62b9843", + "isSenderApproved(address)": "3805e84e", + "isTransactionForwarded((uint256,bytes))": "c37255f2", + "isTransactionForwarded(bytes32)": "9b6c7efa", + "isTransactionReceivedByAdapter(bytes32,address)": "76e5379a", + "owner()": "8da5cb5b", + "receiveCrossChainMessage(bytes,uint256)": "ed68595a", + "removeSenders(address[])": "7670d1d8", + "renounceOwnership()": "715018a6", + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": "a25d3892", + "retryTransaction(bytes,uint256,address[])": "3eb59f60", + "transferOwnership(address)": "f2fde38b", + "updateConfirmations((uint256,uint8)[])": "fe46a413", + "updateGuardian(address)": "fc525395", + "updateMessagesValidityTimestamp((uint256,uint120)[])": "a2711ff4", + "whoCanRescue()": "a4757b0f" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"BridgeAdapterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newConfirmations\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"ConfirmationsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ERC20Rescued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDelivered\",\"type\":\"bool\"}],\"name\":\"EnvelopeDeliveryAttempted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"EnvelopeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGuardian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"GuardianUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensRescued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"invalidTimestamp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"NewInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"ReceiverBridgeAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isApproved\",\"type\":\"bool\"}],\"name\":\"SenderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"adapterSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"TransactionForwardingAttempted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"}],\"name\":\"TransactionReceived\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdaptersInput\",\"type\":\"tuple[]\"}],\"name\":\"allowReceiverBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"senders\",\"type\":\"address[]\"}],\"name\":\"approveSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"deliverEnvelope\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainForwarder.BridgeAdapterToDisable[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"disableBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"disallowReceiverBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyEtherTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"internalType\":\"struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"enableBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"forwardMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getConfigurationByChain\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"requiredConfirmation\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"validityTimestamp\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverConfiguration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEnvelopeNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTransactionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"}],\"name\":\"getEnvelopeState\",\"outputs\":[{\"internalType\":\"enum ICrossChainReceiver.EnvelopeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"getEnvelopeState\",\"outputs\":[{\"internalType\":\"enum ICrossChainReceiver.EnvelopeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getForwarderBridgeAdaptersByChain\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"}],\"internalType\":\"struct ICrossChainForwarder.ChainIdBridgeConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getReceiverBridgeAdaptersByChain\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChains\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"}],\"name\":\"getTransactionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"firstBridgedAt\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.TransactionStateWithoutAdapters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"}],\"name\":\"getTransactionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"firstBridgedAt\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.TransactionStateWithoutAdapters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"guardian\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"requiredConfirmations\",\"type\":\"uint8\"}],\"internalType\":\"struct ICrossChainReceiver.ConfirmationInput[]\",\"name\":\"initialRequiredConfirmations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"receiverBridgeAdaptersToAllow\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"internalType\":\"struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]\",\"name\":\"forwarderBridgeAdaptersToEnable\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"sendersToApprove\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"isEnvelopeRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"}],\"name\":\"isEnvelopeRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isReceiverBridgeAdapterAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isSenderApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"}],\"name\":\"isTransactionForwarded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"}],\"name\":\"isTransactionForwarded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"}],\"name\":\"isTransactionReceivedByAdapter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"senders\",\"type\":\"address[]\"}],\"name\":\"removeSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"retryEnvelope\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"bridgeAdaptersToRetry\",\"type\":\"address[]\"}],\"name\":\"retryTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"requiredConfirmations\",\"type\":\"uint8\"}],\"internalType\":\"struct ICrossChainReceiver.ConfirmationInput[]\",\"name\":\"newConfirmations\",\"type\":\"tuple[]\"}],\"name\":\"updateConfirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"updateGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint120\",\"name\":\"validityTimestamp\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.ValidityTimestampInput[]\",\"name\":\"newValidityTimestamp\",\"type\":\"tuple[]\"}],\"name\":\"updateMessagesValidityTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whoCanRescue\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"BGD Labs\",\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"BridgeAdapterUpdated(uint256,address,address,bool)\":{\"params\":{\"allowed\":\"boolean indicating if the bridge adapter is allowed or disallowed\",\"bridgeAdapter\":\"address of the bridge adapter added (deployed on current network)\",\"destinationBridgeAdapter\":\"address of the connected bridge adapter on destination chain\",\"destinationChainId\":\"id of the destination chain in our notation\"}},\"ConfirmationsUpdated(uint8,uint256)\":{\"params\":{\"chainId\":\"id of the chain updated\",\"newConfirmations\":\"number of new confirmations needed for a message to be valid\"}},\"ERC20Rescued(address,address,address,uint256)\":{\"params\":{\"amount\":\"quantity of tokens rescued\",\"caller\":\"address that triggers the rescue\",\"to\":\"address that will receive the rescued tokens\",\"token\":\"address of the rescued token\"}},\"EnvelopeDeliveryAttempted(bytes32,(uint256,address,address,uint256,uint256,bytes),bool)\":{\"params\":{\"envelope\":\"the Envelope type data\",\"envelopeId\":\"id of the envelope\",\"isDelivered\":\"flag indicating if the message has been delivered successfully\"}},\"EnvelopeRegistered(bytes32,(uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\",\"envelopeId\":\"internal id of the envelope\"}},\"GuardianUpdated(address,address)\":{\"details\":\"Event emitted when guardian gets updated\",\"params\":{\"newGuardian\":\"address of the new guardian\",\"oldGuardian\":\"address of previous guardian\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"NativeTokensRescued(address,address,uint256)\":{\"params\":{\"amount\":\"quantity of tokens rescued\",\"caller\":\"address that triggers the rescue\",\"to\":\"address that will receive the rescued tokens\"}},\"NewInvalidation(uint256,uint256)\":{\"params\":{\"chainId\":\"id of the chain updated\",\"invalidTimestamp\":\"timestamp to invalidate previous messages\"}},\"ReceiverBridgeAdaptersUpdated(address,bool,uint256)\":{\"params\":{\"allowed\":\"boolean indicating if the bridge adapter has been allowed or disallowed\",\"bridgeAdapter\":\"address of the updated bridge adapter\",\"chainId\":\"id of the chain updated\"}},\"SenderUpdated(address,bool)\":{\"params\":{\"isApproved\":\"boolean that indicates if the sender has been approved or removed\",\"sender\":\"address of the updated sender\"}},\"TransactionForwardingAttempted(bytes32,bytes32,bytes,uint256,address,address,bool,bytes)\":{\"params\":{\"adapterSuccessful\":\"adapter was able to forward the message\",\"bridgeAdapter\":\"address of the bridge adapter that failed (deployed on current network)\",\"destinationBridgeAdapter\":\"address of the connected bridge adapter on destination chain\",\"destinationChainId\":\"id of the destination chain in our notation\",\"encodedTransaction\":\"object intended to be bridged\",\"envelopeId\":\"internal id of the envelope\",\"returnData\":\"bytes with error information\",\"transactionId\":\"id of the forwarded transaction\"}},\"TransactionReceived(bytes32,bytes32,uint256,(uint256,bytes),address,uint8)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter who received the message (deployed on current network)\",\"confirmations\":\"number of current confirmations for this message\",\"envelopeId\":\"id of the envelope\",\"originChainId\":\"id of the chain where the envelope originated\",\"transaction\":\"the Transaction type data\",\"transactionId\":\"id of the transaction\"}}},\"kind\":\"dev\",\"methods\":{\"allowReceiverBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdaptersInput\":\"array of objects with the new bridge adapters and supported chains\"}},\"approveSenders(address[])\":{\"params\":{\"senders\":\"list of addresses to approve\"}},\"deliverEnvelope((uint256,address,address,uint256,uint256,bytes))\":{\"details\":\"to deliver an envelope, it needs to have been previously confirmed and not delivered\",\"params\":{\"envelope\":\"the Envelope typed data\"}},\"disableBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdapters\":\"array of bridge adapter addresses to disable\"}},\"disallowReceiverBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdaptersInput\":\"array of objects with the bridge adapters and supported chains to disallow\"}},\"emergencyEtherTransfer(address,uint256)\":{\"params\":{\"amount\":\"of eth to rescue\",\"to\":\"address to send the eth\"}},\"emergencyTokenTransfer(address,address,uint256)\":{\"params\":{\"amount\":\"of tokens to rescue\",\"erc20Token\":\"address of the token to rescue\",\"to\":\"address to send the tokens\"}},\"enableBridgeAdapters((address,address,uint256)[])\":{\"params\":{\"bridgeAdapters\":\"array of new bridge adapter configurations\"}},\"forwardMessage(uint256,address,uint256,bytes)\":{\"params\":{\"destination\":\"address where the message is intended for\",\"destinationChainId\":\"id of the destination chain where the message needs to be bridged\",\"gasLimit\":\"gas cost on receiving side of the message\",\"message\":\"bytes that need to be bridged\"},\"returns\":{\"_0\":\"internal id of the envelope and transaction\"}},\"getConfigurationByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain to get the configuration from\"},\"returns\":{\"_0\":\"the specified chain configuration object\"}},\"getCurrentEnvelopeNonce()\":{\"returns\":{\"_0\":\"the current valid envelope nonce\"}},\"getCurrentTransactionNonce()\":{\"returns\":{\"_0\":\"the current valid transaction nonce\"}},\"getEnvelopeState((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\"},\"returns\":{\"_0\":\"the envelope current state, containing if it has been confirmed and delivered\"}},\"getEnvelopeState(bytes32)\":{\"params\":{\"envelopeId\":\"id of the envelope\"},\"returns\":{\"_0\":\"the envelope current state, containing if it has been confirmed and delivered\"}},\"getForwarderBridgeAdaptersByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain we want to get the adapters from\"},\"returns\":{\"_0\":\"an array of chain configurations where the bridge adapter can communicate\"}},\"getReceiverBridgeAdaptersByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain to get the allowed bridge adapter list\"},\"returns\":{\"_0\":\"the list of allowed bridge adapters\"}},\"getSupportedChains()\":{\"returns\":{\"_0\":\"list of supported chains\"}},\"getTransactionState((uint256,bytes))\":{\"params\":{\"transaction\":\"Transaction type data\"},\"returns\":{\"_0\":\"number of confirmations of internal message identified by internalId and the updated timestamp\"}},\"getTransactionState(bytes32)\":{\"params\":{\"transactionId\":\"the id of transaction\"},\"returns\":{\"_0\":\"number of confirmations of internal message identified by the transactionId and the updated timestamp\"}},\"guardian()\":{\"details\":\"get guardian address;\"},\"initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])\":{\"params\":{\"forwarderBridgeAdaptersToEnable\":\"array specifying for every bridgeAdapter, the destinations it can have\",\"guardian\":\"address of the guardian of the cross chain controller\",\"initialRequiredConfirmations\":\"number of confirmations the messages need to be accepted as valid\",\"owner\":\"address of the owner of the cross chain controller\",\"receiverBridgeAdaptersToAllow\":\"array of addresses of the bridge adapters that can receive messages\",\"sendersToApprove\":\"array of addresses to allow as forwarders\"}},\"isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\"},\"returns\":{\"_0\":\"boolean indicating if the envelope has been registered\"}},\"isEnvelopeRegistered(bytes32)\":{\"params\":{\"envelopeId\":\"the hashed id of the envelope\"},\"returns\":{\"_0\":\"boolean indicating if the envelope has been registered\"}},\"isReceiverBridgeAdapterAllowed(address,uint256)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter to check\",\"chainId\":\"id of the chain to check\"},\"returns\":{\"_0\":\"boolean indicating if bridge adapter is allowed\"}},\"isSenderApproved(address)\":{\"params\":{\"sender\":\"address that we want to check if approved\"},\"returns\":{\"_0\":\"boolean indicating if the address has been approved as sender\"}},\"isTransactionForwarded((uint256,bytes))\":{\"params\":{\"transaction\":\"the Transaction type data\"},\"returns\":{\"_0\":\"flag indicating if a transaction has been forwarded\"}},\"isTransactionForwarded(bytes32)\":{\"params\":{\"transactionId\":\"hashed id of the transaction\"},\"returns\":{\"_0\":\"flag indicating if a transaction has been forwarded\"}},\"isTransactionReceivedByAdapter(bytes32,address)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter to check if it has bridged the message\",\"transactionId\":\"id of the transaction as stored internally\"},\"returns\":{\"_0\":\"boolean indicating if the message has been received\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"receiveCrossChainMessage(bytes,uint256)\":{\"params\":{\"encodedTransaction\":\"bytes containing the bridged information\",\"originChainId\":\"id of the chain where the transaction originated\"}},\"removeSenders(address[])\":{\"params\":{\"senders\":\"list of addresses to remove\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)\":{\"details\":\"This method will send an existing Envelope using a new Transaction.This method should be used when the intention is to send the Envelope as if it was a new message. This way on the Receiver side it will start from 0 to count for the required confirmations. (usual use case would be for when an envelope has been invalidated on Receiver side, and needs to be retried as a new message)\",\"params\":{\"envelope\":\"the Envelope type data\",\"gasLimit\":\"gas cost on receiving side of the message\"},\"returns\":{\"_0\":\"the transaction id that has the retried envelope\"}},\"retryTransaction(bytes,uint256,address[])\":{\"details\":\"This method will send an existing Transaction with its Envelope to the specified adapters.Should be used when some of the bridges on the initial forwarding did not work (out of gas), and we want the Transaction with Envelope to still account for the required confirmations on the Receiver side\",\"params\":{\"bridgeAdaptersToRetry\":\"list of bridge adapters to be used for the transaction forwarding retry\",\"encodedTransaction\":\"the encoded Transaction data\",\"gasLimit\":\"limit of gas to spend on forwarding per bridge\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateConfirmations((uint256,uint8)[])\":{\"params\":{\"newConfirmations\":\"array of objects with the chainId and the new number of needed confirmations\"}},\"updateGuardian(address)\":{\"details\":\"method to update the guardian\",\"params\":{\"newGuardian\":\"the new guardian address\"}},\"updateMessagesValidityTimestamp((uint256,uint120)[])\":{\"params\":{\"newValidityTimestamp\":\"array of objects containing the chain and timestamp where all the previous unconfirmed messages must be invalidated.\"}},\"whoCanRescue()\":{\"returns\":{\"_0\":\"the allowed address\"}}},\"title\":\"CrossChainController\",\"version\":1},\"userdoc\":{\"events\":{\"BridgeAdapterUpdated(uint256,address,address,bool)\":{\"notice\":\"emitted when a bridge adapter has been added to the allowed list\"},\"ConfirmationsUpdated(uint8,uint256)\":{\"notice\":\"emitted when number of confirmations needed to validate a message changes\"},\"ERC20Rescued(address,address,address,uint256)\":{\"notice\":\"emitted when erc20 tokens get rescued\"},\"EnvelopeDeliveryAttempted(bytes32,(uint256,address,address,uint256,uint256,bytes),bool)\":{\"notice\":\"emitted when an envelope has been delivery attempted\"},\"EnvelopeRegistered(bytes32,(uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"emitted when a transaction is successfully forwarded through a bridge adapter\"},\"NativeTokensRescued(address,address,uint256)\":{\"notice\":\"emitted when native tokens get rescued\"},\"NewInvalidation(uint256,uint256)\":{\"notice\":\"emitted when a new timestamp for invalidations gets set\"},\"ReceiverBridgeAdaptersUpdated(address,bool,uint256)\":{\"notice\":\"emitted when a bridge adapter gets updated (allowed or disallowed)\"},\"SenderUpdated(address,bool)\":{\"notice\":\"emitted when a sender has been updated\"},\"TransactionForwardingAttempted(bytes32,bytes32,bytes,uint256,address,address,bool,bytes)\":{\"notice\":\"emitted when a transaction forwarding is attempted through a bridge adapter\"},\"TransactionReceived(bytes32,bytes32,uint256,(uint256,bytes),address,uint8)\":{\"notice\":\"emitted when a transaction has been received successfully\"}},\"kind\":\"user\",\"methods\":{\"allowReceiverBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to add bridge adapters to the allowed list\"},\"approveSenders(address[])\":{\"notice\":\"method to approve new sender addresses\"},\"deliverEnvelope((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to deliver an envelope to its destination\"},\"disableBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to disable bridge adapters\"},\"disallowReceiverBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to remove bridge adapters from the allowed list\"},\"emergencyEtherTransfer(address,uint256)\":{\"notice\":\"method called to rescue ether sent erroneously to the contract. Only callable by owner\"},\"emergencyTokenTransfer(address,address,uint256)\":{\"notice\":\"method called to rescue tokens sent erroneously to the contract. Only callable by owner\"},\"enableBridgeAdapters((address,address,uint256)[])\":{\"notice\":\"method to enable bridge adapters\"},\"forwardMessage(uint256,address,uint256,bytes)\":{\"notice\":\"method called to initiate message forwarding to other networks.\"},\"getConfigurationByChain(uint256)\":{\"notice\":\"method to get the current configuration of a chain\"},\"getCurrentEnvelopeNonce()\":{\"notice\":\"method to get the current valid envelope nonce\"},\"getCurrentTransactionNonce()\":{\"notice\":\"method to get the current valid transaction nonce\"},\"getEnvelopeState((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to get the internal state of an envelope\"},\"getEnvelopeState(bytes32)\":{\"notice\":\"method to get the internal state of an envelope\"},\"getForwarderBridgeAdaptersByChain(uint256)\":{\"notice\":\"method to get all the forwarder bridge adapters of a chain\"},\"getReceiverBridgeAdaptersByChain(uint256)\":{\"notice\":\"method to get the current allowed receiver bridge adapters for a chain\"},\"getSupportedChains()\":{\"notice\":\"method to get the current supported chains (at least one allowed bridge adapter)\"},\"getTransactionState((uint256,bytes))\":{\"notice\":\"method to get the internal transaction information\"},\"getTransactionState(bytes32)\":{\"notice\":\"method to get the current state of a transaction\"},\"initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])\":{\"notice\":\"method called to initialize the proxy\"},\"isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to check if a envelope has been previously forwarded.\"},\"isEnvelopeRegistered(bytes32)\":{\"notice\":\"method to check if a envelope has been previously forwarded.\"},\"isReceiverBridgeAdapterAllowed(address,uint256)\":{\"notice\":\"method to get if a bridge adapter is allowed\"},\"isSenderApproved(address)\":{\"notice\":\"method to get if a sender is approved\"},\"isTransactionForwarded((uint256,bytes))\":{\"notice\":\"method to get if a transaction has been forwarded\"},\"isTransactionForwarded(bytes32)\":{\"notice\":\"method to get if a transaction has been forwarded\"},\"isTransactionReceivedByAdapter(bytes32,address)\":{\"notice\":\"method to get if transaction has been received by bridge adapter\"},\"receiveCrossChainMessage(bytes,uint256)\":{\"notice\":\"method that receives a bridged transaction and tries to deliver the contents to destination if possible\"},\"removeSenders(address[])\":{\"notice\":\"method to remove sender addresses\"},\"retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)\":{\"notice\":\"method called to re forward a previously sent envelope.\"},\"retryTransaction(bytes,uint256,address[])\":{\"notice\":\"method to retry forwarding an already forwarded transaction\"},\"updateConfirmations((uint256,uint8)[])\":{\"notice\":\"method to update the number of confirmations necessary for the messages to be accepted as valid\"},\"updateMessagesValidityTimestamp((uint256,uint120)[])\":{\"notice\":\"method to set a new timestamp from where the messages will be valid.\"},\"whoCanRescue()\":{\"notice\":\"method that defines the address that is allowed to rescue tokens\"}},\"notice\":\"CrossChainController contract adopted for usage on the chain where Governance deployed (mainnet in our case)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/CrossChainController.sol\":\"CrossChainController\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/\",\":@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":aave-address-book/=lib/aave-address-book/src/\",\":aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/\",\":aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":fx-portal/=lib/fx-portal/contracts/\",\":hyperlane-monorepo/=lib/hyperlane-monorepo/solidity/contracts/\",\":nitro-contracts/=lib/nitro-contracts/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-utils/=lib/solidity-utils/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol\":{\"keccak256\":\"0x097e97cbceb38880d74db6311ffbaf158aa9e0735ec51367c60853d6eb811ff1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f83b6aa842af14fe0a8bc1ec8f844d69bf490873d72cb324462ae5f59a9267b\",\"dweb:/ipfs/QmRYv2HhJdULNQt9aTCsKWQdEVmDyjLfj3qJS3xUd4FyPF\"]},\"lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol\":{\"keccak256\":\"0x2fd8f1a5a9da521eda9d424c0764e9ceac7c3d1afa90ac9124249c5a3c7d9d1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac28fae9d3a5cf111c6abc70f8a410a89f852d0dd5835bd29f6e0d0e837bc5\",\"dweb:/ipfs/QmcU48h5Lxc74jLfVrdzFkjWdLRStiz1w5GmBBx58kJo6s\"]},\"lib/solidity-utils/src/contracts/oz-common/Address.sol\":{\"keccak256\":\"0xe641fb89c32466792ed9877ec915c699acfe5c04c655cf9e67738093a40c962c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://597b0804825a4c6acbec4e466f30138a527da64a8dd3cc7ae69a68d046e8852e\",\"dweb:/ipfs/QmVvhwnnWvMkaYNcfyeihW1ajwDiGhVV6KcTNoPD9HCVym\"]},\"lib/solidity-utils/src/contracts/oz-common/Context.sol\":{\"keccak256\":\"0x6912c0cdc79f627eaa1511695fa0c14389681720812e5548645774d784bc24df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f2ae1b63c4be0f695d721e28361b34fe22a2e7e05723ca466b3ad2dde73db6f\",\"dweb:/ipfs/Qman92tY6xcqnXZa59TJiJKtf4Hhe5hhJrdERiStBV8EiK\"]},\"lib/solidity-utils/src/contracts/oz-common/Ownable.sol\":{\"keccak256\":\"0x5566fcff7455a22cde32daecec5c44c893dddee1472063f2dcd301e844eabd00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://306860d4e8ecf8cf5928dd757f0e8f8530f05791a0a133acfc9be91d8e75f24a\",\"dweb:/ipfs/QmeuzENUkcz5GFTsXJUsMj1NpjbHg8hNJPDBtWzLAnEjkm\"]},\"lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol\":{\"keccak256\":\"0x42c6ca0e62e6a0d93137f11377ef4888c19d3c503169692f36f32076887059b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ac0120428aad94493baa9454143b7d0e0d1f063278abcad3ea24a1cadc84371\",\"dweb:/ipfs/QmepMxuDv7SthD9c2EyD4wzPNkchHrRmDKcUEMg8ueV6Fr\"]},\"lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20.sol\":{\"keccak256\":\"0x510a088112e38933c8eff10816a3f74a0ea2365dc0914384b9097cdb62d8db69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3f702a4bfbec4bb8604174d80de82d5960b8997cd5b832c6f9a1850593e4bd4\",\"dweb:/ipfs/QmfXs5ejLkLQKYAg2RSm2woaAhZya6oVPeDs7T5yrAWBhT\"]},\"lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20Permit.sol\":{\"keccak256\":\"0xf455056affbe27997d7cdfbb7ee3b8e7cdef3c2f6b71d97cc204cb1621440193\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ce1d2a17f6d32246ec54ebf5e1fcfd72d48d606bb4c192a4e1051d08de2b20c\",\"dweb:/ipfs/QmZSPGWfJAzBudcsLQaMXwhQvg3X2Jya5NvxkSGy7ViCFa\"]},\"lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol\":{\"keccak256\":\"0x13984ac6962308e94d92148e47eb4cd31c113b2a4798246714f2235ab9d9d7a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77edd0450d7c6bd07544bc4597845f2e7840ab19504d5286928f93a431e0e831\",\"dweb:/ipfs/Qmddubpa2kF6UEsuiWtCuLjEDjk6EPz1AzqqyabwqJ1jaS\"]},\"lib/solidity-utils/src/contracts/utils/Rescuable.sol\":{\"keccak256\":\"0xf7b7704dda57414708709251229583c917874f89a439e998b3347ee9340a95f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59a79763e07df9fd1ead7eb7b474e5b42927065db1e63dfb012a715887667a27\",\"dweb:/ipfs/QmbZ7v236pDXPZVm4GnsgLp5sQM2ii83r2q41G1ywpThba\"]},\"lib/solidity-utils/src/contracts/utils/interfaces/IRescuable.sol\":{\"keccak256\":\"0xb7339cccbe91b2b0d9bd9adf4be58605ee75032eead9e3213304c6ae5ba108c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09db6f6a18144eb4a47353163408cebd32499b2611972cc8ddffc257654780b1\",\"dweb:/ipfs/Qmb6A7wFipu6seiUG3n2LoeWo91Nrj9xsapJKqEXExe7MX\"]},\"src/contracts/BaseCrossChainController.sol\":{\"keccak256\":\"0x800641fd2b769118df88683020ffc0907a13ebc2a2817ef565c064152d0f35d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2e86be71893e841b44f985f18af77071b7119587bfe09bb8aaf71d2f9a7edcac\",\"dweb:/ipfs/QmTFgyzGdzRXe4ZNQn2tN51NcACgSdWAF2VAF7pExmEkU7\"]},\"src/contracts/CrossChainController.sol\":{\"keccak256\":\"0x3cf72ab0d7673cb4261965ab31a2b8ba9567bcce68e6f83283da94d36da8da76\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e2b8a78275e8200fcd2e434ad11d178ba816faabfc53eda845724aa002940d1c\",\"dweb:/ipfs/QmZ5FaZLnA92he1U95KFvEWdYKSu6SAEYnxQXJN1zMknsJ\"]},\"src/contracts/CrossChainForwarder.sol\":{\"keccak256\":\"0xbef311a4d79ee901ccae60b8ed8f88dd1559f799895458a48a92e6a6d114a6c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3e237a8732716c69aaec8fd56d286ebe58a819c250b23ae7a693b1acd1350760\",\"dweb:/ipfs/QmPtPfhUNQoXwYaHhDX15JNcHesn1zERix6sfSVyEyjGGn\"]},\"src/contracts/CrossChainReceiver.sol\":{\"keccak256\":\"0x9a3613b6a4e0c2bdf82c917c7d6f108320cd62ef33e3fef49c3ef87ae405c6b8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94bb65cfcdd811affe0947f90148b0c20fc78211444ca14b07c6dec4ded8f58c\",\"dweb:/ipfs/QmVyn5oe8CYWS5dzUsk2BbXUoZ9ppx3w44vq9zp1bEKJ5C\"]},\"src/contracts/adapters/IBaseAdapter.sol\":{\"keccak256\":\"0x97ef80b6aeebf7ced38ac3816fd57e5eabd58ae251d47f17b63d2981b1f92e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a009f5ed843cfa18508b9f36eeaa521f233563553c9d16e80eaba90f81369b\",\"dweb:/ipfs/QmaABhvQyMjF43qshQAH5hWrNqkWfYhYqHSYBmAgq6icug\"]},\"src/contracts/interfaces/IBaseCrossChainController.sol\":{\"keccak256\":\"0x5d226f4f433e4b73650f8f1a749eac15f44c537d2561b44fb8b979221d2fa22b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ec37bc28bd5bb67940021014f169a90912b8c281f4220949ea9e6e940116c9\",\"dweb:/ipfs/QmXH9QBmoApfSYR82ZRVpu2JGekdE4116puXrJgkfLEdYe\"]},\"src/contracts/interfaces/IBaseReceiverPortal.sol\":{\"keccak256\":\"0x636561bf24807679c5a877b7394308545dc028fe76932d15257098be5991959f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e5f47d74b026fc94aaeec2fd74adc081dca753881b8a84265a34a7462d31b7b\",\"dweb:/ipfs/QmVWnGLdJshoWJJwMZKNZS76auTNBTZgswvLUduUxCoja2\"]},\"src/contracts/interfaces/ICrossChainController.sol\":{\"keccak256\":\"0x3e7285b5e32f47a8c352d3583d8bd892f5e89dfd63f48a532f972fbdf238e954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42a2ded743fd9f5d614a0d85a5065b05e90b4c517b6935f2a1076f7bbf23a7f\",\"dweb:/ipfs/QmRhceFdsSYSjrpkMkWXxvGbxRduyLER5sBVBN8uiwHkwg\"]},\"src/contracts/interfaces/ICrossChainForwarder.sol\":{\"keccak256\":\"0x7c67c32148d66de52ca28ae18c115b10753772aacd6dd020280590f137cc2056\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4077ddc3e091ee38556a7c0797de9b1608f32765d9f62a07efea6505bbebfa7c\",\"dweb:/ipfs/Qmbns917YEfng8nqn8wu3KnKBy562K7uWK3kxfzRsPdY27\"]},\"src/contracts/interfaces/ICrossChainReceiver.sol\":{\"keccak256\":\"0xf55d606adfb99cf829845731241d6eff48ef3a36153290fb6daf7af2250e3ec5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1331b21d98f083181beb5f1f9b817757760a4ef3d79665e118fb4036ca7c056a\",\"dweb:/ipfs/QmUXUZeess24rcSjXxo1geCu9BxG4X7ivEHGKhSy6bPbmW\"]},\"src/contracts/libs/EncodingUtils.sol\":{\"keccak256\":\"0xe778561273ede6b3db73f2fb7b2b443cf0a733a209967af59db107406b68964a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7361dd55dee3cf7bd053d7cd289e148c9451e98c8126672e6287f4e769ab8fba\",\"dweb:/ipfs/QmeH1cwptCar31XamSH2QHSeG4BrS86KNdAbnvk6VGFvLB\"]},\"src/contracts/libs/Errors.sol\":{\"keccak256\":\"0x4a4502debe85d126eb37f8268d2d816636ae21c08b0dae7f26cb11d2bae0f80d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab72c20ea1e07f3bf567cddd96a0749b9a0afb0beefdc9a6f589657f4f97bc39\",\"dweb:/ipfs/QmXXu7CRbhhHqpjdvoBanTsf7wjD6N457ho3vE2dprSy2S\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.19+commit.7dd6d404" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [{ "internalType": "address", "name": "token", "type": "address" }], + "type": "error", + "name": "SafeERC20FailedOperation" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256", "indexed": true }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address", "indexed": false }, + { "internalType": "bool", "name": "allowed", "type": "bool", "indexed": true } + ], + "type": "event", + "name": "BridgeAdapterUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "uint8", "name": "newConfirmations", "type": "uint8", "indexed": false }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "ConfirmationsUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address", "indexed": true }, + { "internalType": "address", "name": "token", "type": "address", "indexed": true }, + { "internalType": "address", "name": "to", "type": "address", "indexed": true }, + { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } + ], + "type": "event", + "name": "ERC20Rescued", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": false }, + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "indexed": false + }, + { "internalType": "bool", "name": "isDelivered", "type": "bool", "indexed": false } + ], + "type": "event", + "name": "EnvelopeDeliveryAttempted", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "indexed": false + } + ], + "type": "event", + "name": "EnvelopeRegistered", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "oldGuardian", "type": "address", "indexed": false }, + { "internalType": "address", "name": "newGuardian", "type": "address", "indexed": false } + ], + "type": "event", + "name": "GuardianUpdated", + "anonymous": false + }, + { + "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address", "indexed": true }, + { "internalType": "address", "name": "to", "type": "address", "indexed": true }, + { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } + ], + "type": "event", + "name": "NativeTokensRescued", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "uint256", "name": "invalidTimestamp", "type": "uint256", "indexed": false }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "NewInvalidation", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, + { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "bool", "name": "allowed", "type": "bool", "indexed": true }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "ReceiverBridgeAdaptersUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, + { "internalType": "bool", "name": "isApproved", "type": "bool", "indexed": true } + ], + "type": "event", + "name": "SenderUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32", "indexed": false }, + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes", "indexed": false }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256", "indexed": false }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address", "indexed": false }, + { "internalType": "bool", "name": "adapterSuccessful", "type": "bool", "indexed": true }, + { "internalType": "bytes", "name": "returnData", "type": "bytes", "indexed": false } + ], + "type": "event", + "name": "TransactionForwardingAttempted", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32", "indexed": false }, + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256", "indexed": true }, + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ], + "indexed": false + }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "uint8", "name": "confirmations", "type": "uint8", "indexed": false } + ], + "type": "event", + "name": "TransactionReceived", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "bridgeAdaptersInput", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "allowReceiverBridgeAdapters" + }, + { + "inputs": [{ "internalType": "address[]", "name": "senders", "type": "address[]" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "approveSenders" + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deliverEnvelope" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainForwarder.BridgeAdapterToDisable[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "disableBridgeAdapters" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "disallowReceiverBridgeAdapters" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emergencyEtherTransfer" + }, + { + "inputs": [ + { "internalType": "address", "name": "erc20Token", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emergencyTokenTransfer" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "enableBridgeAdapters" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "forwardMessage", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" }, + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getConfigurationByChain", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverConfiguration", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "requiredConfirmation", "type": "uint8" }, + { "internalType": "uint120", "name": "validityTimestamp", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getCurrentEnvelopeNonce", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getCurrentTransactionNonce", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "envelopeId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "getEnvelopeState", + "outputs": [{ "internalType": "enum ICrossChainReceiver.EnvelopeState", "name": "", "type": "uint8" }] + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "getEnvelopeState", + "outputs": [{ "internalType": "enum ICrossChainReceiver.EnvelopeState", "name": "", "type": "uint8" }] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getForwarderBridgeAdaptersByChain", + "outputs": [ + { + "internalType": "struct ICrossChainForwarder.ChainIdBridgeConfig[]", + "name": "", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" } + ] + } + ] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getReceiverBridgeAdaptersByChain", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getSupportedChains", + "outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }] + }, + { + "inputs": [ + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "getTransactionState", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "confirmations", "type": "uint8" }, + { "internalType": "uint120", "name": "firstBridgedAt", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "getTransactionState", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "confirmations", "type": "uint8" }, + { "internalType": "uint120", "name": "firstBridgedAt", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "guardian", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "guardian", "type": "address" }, + { + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "name": "initialRequiredConfirmations", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint8", "name": "requiredConfirmations", "type": "uint8" } + ] + }, + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "receiverBridgeAdaptersToAllow", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + }, + { + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "name": "forwarderBridgeAdaptersToEnable", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" } + ] + }, + { "internalType": "address[]", "name": "sendersToApprove", "type": "address[]" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize" + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "isEnvelopeRegistered", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "envelopeId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "isEnvelopeRegistered", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "chainId", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function", + "name": "isReceiverBridgeAdapterAllowed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], + "stateMutability": "view", + "type": "function", + "name": "isSenderApproved", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "isTransactionForwarded", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "isTransactionForwarded", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isTransactionReceivedByAdapter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "receiveCrossChainMessage" + }, + { + "inputs": [{ "internalType": "address[]", "name": "senders", "type": "address[]" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeSenders" + }, + { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "retryEnvelope", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes" }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" }, + { "internalType": "address[]", "name": "bridgeAdaptersToRetry", "type": "address[]" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "retryTransaction" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "name": "newConfirmations", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint8", "name": "requiredConfirmations", "type": "uint8" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateConfirmations" + }, + { + "inputs": [{ "internalType": "address", "name": "newGuardian", "type": "address" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateGuardian" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ValidityTimestampInput[]", + "name": "newValidityTimestamp", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint120", "name": "validityTimestamp", "type": "uint120" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateMessagesValidityTimestamp" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "whoCanRescue", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { "inputs": [], "stateMutability": "payable", "type": "receive" } + ], + "devdoc": { + "kind": "dev", + "methods": { + "allowReceiverBridgeAdapters((address,uint256[])[])": { + "params": { "bridgeAdaptersInput": "array of objects with the new bridge adapters and supported chains" } + }, + "approveSenders(address[])": { "params": { "senders": "list of addresses to approve" } }, + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": { + "details": "to deliver an envelope, it needs to have been previously confirmed and not delivered", + "params": { "envelope": "the Envelope typed data" } + }, + "disableBridgeAdapters((address,uint256[])[])": { + "params": { "bridgeAdapters": "array of bridge adapter addresses to disable" } + }, + "disallowReceiverBridgeAdapters((address,uint256[])[])": { + "params": { + "bridgeAdaptersInput": "array of objects with the bridge adapters and supported chains to disallow" + } + }, + "emergencyEtherTransfer(address,uint256)": { + "params": { "amount": "of eth to rescue", "to": "address to send the eth" } + }, + "emergencyTokenTransfer(address,address,uint256)": { + "params": { + "amount": "of tokens to rescue", + "erc20Token": "address of the token to rescue", + "to": "address to send the tokens" + } + }, + "enableBridgeAdapters((address,address,uint256)[])": { + "params": { "bridgeAdapters": "array of new bridge adapter configurations" } + }, + "forwardMessage(uint256,address,uint256,bytes)": { + "params": { + "destination": "address where the message is intended for", + "destinationChainId": "id of the destination chain where the message needs to be bridged", + "gasLimit": "gas cost on receiving side of the message", + "message": "bytes that need to be bridged" + }, + "returns": { "_0": "internal id of the envelope and transaction" } + }, + "getConfigurationByChain(uint256)": { + "params": { "chainId": "id of the chain to get the configuration from" }, + "returns": { "_0": "the specified chain configuration object" } + }, + "getCurrentEnvelopeNonce()": { "returns": { "_0": "the current valid envelope nonce" } }, + "getCurrentTransactionNonce()": { "returns": { "_0": "the current valid transaction nonce" } }, + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": { + "params": { "envelope": "the Envelope type data" }, + "returns": { "_0": "the envelope current state, containing if it has been confirmed and delivered" } + }, + "getEnvelopeState(bytes32)": { + "params": { "envelopeId": "id of the envelope" }, + "returns": { "_0": "the envelope current state, containing if it has been confirmed and delivered" } + }, + "getForwarderBridgeAdaptersByChain(uint256)": { + "params": { "chainId": "id of the chain we want to get the adapters from" }, + "returns": { "_0": "an array of chain configurations where the bridge adapter can communicate" } + }, + "getReceiverBridgeAdaptersByChain(uint256)": { + "params": { "chainId": "id of the chain to get the allowed bridge adapter list" }, + "returns": { "_0": "the list of allowed bridge adapters" } + }, + "getSupportedChains()": { "returns": { "_0": "list of supported chains" } }, + "getTransactionState((uint256,bytes))": { + "params": { "transaction": "Transaction type data" }, + "returns": { + "_0": "number of confirmations of internal message identified by internalId and the updated timestamp" + } + }, + "getTransactionState(bytes32)": { + "params": { "transactionId": "the id of transaction" }, + "returns": { + "_0": "number of confirmations of internal message identified by the transactionId and the updated timestamp" + } + }, + "guardian()": { "details": "get guardian address;" }, + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": { + "params": { + "forwarderBridgeAdaptersToEnable": "array specifying for every bridgeAdapter, the destinations it can have", + "guardian": "address of the guardian of the cross chain controller", + "initialRequiredConfirmations": "number of confirmations the messages need to be accepted as valid", + "owner": "address of the owner of the cross chain controller", + "receiverBridgeAdaptersToAllow": "array of addresses of the bridge adapters that can receive messages", + "sendersToApprove": "array of addresses to allow as forwarders" + } + }, + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": { + "params": { "envelope": "the Envelope type data" }, + "returns": { "_0": "boolean indicating if the envelope has been registered" } + }, + "isEnvelopeRegistered(bytes32)": { + "params": { "envelopeId": "the hashed id of the envelope" }, + "returns": { "_0": "boolean indicating if the envelope has been registered" } + }, + "isReceiverBridgeAdapterAllowed(address,uint256)": { + "params": { + "bridgeAdapter": "address of the bridge adapter to check", + "chainId": "id of the chain to check" + }, + "returns": { "_0": "boolean indicating if bridge adapter is allowed" } + }, + "isSenderApproved(address)": { + "params": { "sender": "address that we want to check if approved" }, + "returns": { "_0": "boolean indicating if the address has been approved as sender" } + }, + "isTransactionForwarded((uint256,bytes))": { + "params": { "transaction": "the Transaction type data" }, + "returns": { "_0": "flag indicating if a transaction has been forwarded" } + }, + "isTransactionForwarded(bytes32)": { + "params": { "transactionId": "hashed id of the transaction" }, + "returns": { "_0": "flag indicating if a transaction has been forwarded" } + }, + "isTransactionReceivedByAdapter(bytes32,address)": { + "params": { + "bridgeAdapter": "address of the bridge adapter to check if it has bridged the message", + "transactionId": "id of the transaction as stored internally" + }, + "returns": { "_0": "boolean indicating if the message has been received" } + }, + "owner()": { "details": "Returns the address of the current owner." }, + "receiveCrossChainMessage(bytes,uint256)": { + "params": { + "encodedTransaction": "bytes containing the bridged information", + "originChainId": "id of the chain where the transaction originated" + } + }, + "removeSenders(address[])": { "params": { "senders": "list of addresses to remove" } }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": { + "details": "This method will send an existing Envelope using a new Transaction.This method should be used when the intention is to send the Envelope as if it was a new message. This way on the Receiver side it will start from 0 to count for the required confirmations. (usual use case would be for when an envelope has been invalidated on Receiver side, and needs to be retried as a new message)", + "params": { "envelope": "the Envelope type data", "gasLimit": "gas cost on receiving side of the message" }, + "returns": { "_0": "the transaction id that has the retried envelope" } + }, + "retryTransaction(bytes,uint256,address[])": { + "details": "This method will send an existing Transaction with its Envelope to the specified adapters.Should be used when some of the bridges on the initial forwarding did not work (out of gas), and we want the Transaction with Envelope to still account for the required confirmations on the Receiver side", + "params": { + "bridgeAdaptersToRetry": "list of bridge adapters to be used for the transaction forwarding retry", + "encodedTransaction": "the encoded Transaction data", + "gasLimit": "limit of gas to spend on forwarding per bridge" + } + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "updateConfirmations((uint256,uint8)[])": { + "params": { + "newConfirmations": "array of objects with the chainId and the new number of needed confirmations" + } + }, + "updateGuardian(address)": { + "details": "method to update the guardian", + "params": { "newGuardian": "the new guardian address" } + }, + "updateMessagesValidityTimestamp((uint256,uint120)[])": { + "params": { + "newValidityTimestamp": "array of objects containing the chain and timestamp where all the previous unconfirmed messages must be invalidated." + } + }, + "whoCanRescue()": { "returns": { "_0": "the allowed address" } } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "allowReceiverBridgeAdapters((address,uint256[])[])": { + "notice": "method to add bridge adapters to the allowed list" + }, + "approveSenders(address[])": { "notice": "method to approve new sender addresses" }, + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to deliver an envelope to its destination" + }, + "disableBridgeAdapters((address,uint256[])[])": { "notice": "method to disable bridge adapters" }, + "disallowReceiverBridgeAdapters((address,uint256[])[])": { + "notice": "method to remove bridge adapters from the allowed list" + }, + "emergencyEtherTransfer(address,uint256)": { + "notice": "method called to rescue ether sent erroneously to the contract. Only callable by owner" + }, + "emergencyTokenTransfer(address,address,uint256)": { + "notice": "method called to rescue tokens sent erroneously to the contract. Only callable by owner" + }, + "enableBridgeAdapters((address,address,uint256)[])": { "notice": "method to enable bridge adapters" }, + "forwardMessage(uint256,address,uint256,bytes)": { + "notice": "method called to initiate message forwarding to other networks." + }, + "getConfigurationByChain(uint256)": { "notice": "method to get the current configuration of a chain" }, + "getCurrentEnvelopeNonce()": { "notice": "method to get the current valid envelope nonce" }, + "getCurrentTransactionNonce()": { "notice": "method to get the current valid transaction nonce" }, + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to get the internal state of an envelope" + }, + "getEnvelopeState(bytes32)": { "notice": "method to get the internal state of an envelope" }, + "getForwarderBridgeAdaptersByChain(uint256)": { + "notice": "method to get all the forwarder bridge adapters of a chain" + }, + "getReceiverBridgeAdaptersByChain(uint256)": { + "notice": "method to get the current allowed receiver bridge adapters for a chain" + }, + "getSupportedChains()": { + "notice": "method to get the current supported chains (at least one allowed bridge adapter)" + }, + "getTransactionState((uint256,bytes))": { "notice": "method to get the internal transaction information" }, + "getTransactionState(bytes32)": { "notice": "method to get the current state of a transaction" }, + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": { + "notice": "method called to initialize the proxy" + }, + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to check if a envelope has been previously forwarded." + }, + "isEnvelopeRegistered(bytes32)": { "notice": "method to check if a envelope has been previously forwarded." }, + "isReceiverBridgeAdapterAllowed(address,uint256)": { + "notice": "method to get if a bridge adapter is allowed" + }, + "isSenderApproved(address)": { "notice": "method to get if a sender is approved" }, + "isTransactionForwarded((uint256,bytes))": { "notice": "method to get if a transaction has been forwarded" }, + "isTransactionForwarded(bytes32)": { "notice": "method to get if a transaction has been forwarded" }, + "isTransactionReceivedByAdapter(bytes32,address)": { + "notice": "method to get if transaction has been received by bridge adapter" + }, + "receiveCrossChainMessage(bytes,uint256)": { + "notice": "method that receives a bridged transaction and tries to deliver the contents to destination if possible" + }, + "removeSenders(address[])": { "notice": "method to remove sender addresses" }, + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": { + "notice": "method called to re forward a previously sent envelope." + }, + "retryTransaction(bytes,uint256,address[])": { + "notice": "method to retry forwarding an already forwarded transaction" + }, + "updateConfirmations((uint256,uint8)[])": { + "notice": "method to update the number of confirmations necessary for the messages to be accepted as valid" + }, + "updateMessagesValidityTimestamp((uint256,uint120)[])": { + "notice": "method to set a new timestamp from where the messages will be valid." + }, + "whoCanRescue()": { "notice": "method that defines the address that is allowed to rescue tokens" } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/", + "@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/", + "@openzeppelin/=lib/openzeppelin-contracts/", + "aave-address-book/=lib/aave-address-book/src/", + "aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/", + "aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "fx-portal/=lib/fx-portal/contracts/", + "hyperlane-monorepo/=lib/hyperlane-monorepo/solidity/contracts/", + "nitro-contracts/=lib/nitro-contracts/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-utils/=lib/solidity-utils/src/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { "src/contracts/CrossChainController.sol": "CrossChainController" }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { + "keccak256": "0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514", + "urls": [ + "bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df", + "dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol": { + "keccak256": "0x097e97cbceb38880d74db6311ffbaf158aa9e0735ec51367c60853d6eb811ff1", + "urls": [ + "bzz-raw://6f83b6aa842af14fe0a8bc1ec8f844d69bf490873d72cb324462ae5f59a9267b", + "dweb:/ipfs/QmRYv2HhJdULNQt9aTCsKWQdEVmDyjLfj3qJS3xUd4FyPF" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol": { + "keccak256": "0x2fd8f1a5a9da521eda9d424c0764e9ceac7c3d1afa90ac9124249c5a3c7d9d1a", + "urls": [ + "bzz-raw://75ac28fae9d3a5cf111c6abc70f8a410a89f852d0dd5835bd29f6e0d0e837bc5", + "dweb:/ipfs/QmcU48h5Lxc74jLfVrdzFkjWdLRStiz1w5GmBBx58kJo6s" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Address.sol": { + "keccak256": "0xe641fb89c32466792ed9877ec915c699acfe5c04c655cf9e67738093a40c962c", + "urls": [ + "bzz-raw://597b0804825a4c6acbec4e466f30138a527da64a8dd3cc7ae69a68d046e8852e", + "dweb:/ipfs/QmVvhwnnWvMkaYNcfyeihW1ajwDiGhVV6KcTNoPD9HCVym" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Context.sol": { + "keccak256": "0x6912c0cdc79f627eaa1511695fa0c14389681720812e5548645774d784bc24df", + "urls": [ + "bzz-raw://3f2ae1b63c4be0f695d721e28361b34fe22a2e7e05723ca466b3ad2dde73db6f", + "dweb:/ipfs/Qman92tY6xcqnXZa59TJiJKtf4Hhe5hhJrdERiStBV8EiK" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Ownable.sol": { + "keccak256": "0x5566fcff7455a22cde32daecec5c44c893dddee1472063f2dcd301e844eabd00", + "urls": [ + "bzz-raw://306860d4e8ecf8cf5928dd757f0e8f8530f05791a0a133acfc9be91d8e75f24a", + "dweb:/ipfs/QmeuzENUkcz5GFTsXJUsMj1NpjbHg8hNJPDBtWzLAnEjkm" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol": { + "keccak256": "0x42c6ca0e62e6a0d93137f11377ef4888c19d3c503169692f36f32076887059b6", + "urls": [ + "bzz-raw://1ac0120428aad94493baa9454143b7d0e0d1f063278abcad3ea24a1cadc84371", + "dweb:/ipfs/QmepMxuDv7SthD9c2EyD4wzPNkchHrRmDKcUEMg8ueV6Fr" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20.sol": { + "keccak256": "0x510a088112e38933c8eff10816a3f74a0ea2365dc0914384b9097cdb62d8db69", + "urls": [ + "bzz-raw://a3f702a4bfbec4bb8604174d80de82d5960b8997cd5b832c6f9a1850593e4bd4", + "dweb:/ipfs/QmfXs5ejLkLQKYAg2RSm2woaAhZya6oVPeDs7T5yrAWBhT" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20Permit.sol": { + "keccak256": "0xf455056affbe27997d7cdfbb7ee3b8e7cdef3c2f6b71d97cc204cb1621440193", + "urls": [ + "bzz-raw://0ce1d2a17f6d32246ec54ebf5e1fcfd72d48d606bb4c192a4e1051d08de2b20c", + "dweb:/ipfs/QmZSPGWfJAzBudcsLQaMXwhQvg3X2Jya5NvxkSGy7ViCFa" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol": { + "keccak256": "0x13984ac6962308e94d92148e47eb4cd31c113b2a4798246714f2235ab9d9d7a9", + "urls": [ + "bzz-raw://77edd0450d7c6bd07544bc4597845f2e7840ab19504d5286928f93a431e0e831", + "dweb:/ipfs/Qmddubpa2kF6UEsuiWtCuLjEDjk6EPz1AzqqyabwqJ1jaS" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/utils/Rescuable.sol": { + "keccak256": "0xf7b7704dda57414708709251229583c917874f89a439e998b3347ee9340a95f9", + "urls": [ + "bzz-raw://59a79763e07df9fd1ead7eb7b474e5b42927065db1e63dfb012a715887667a27", + "dweb:/ipfs/QmbZ7v236pDXPZVm4GnsgLp5sQM2ii83r2q41G1ywpThba" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/utils/interfaces/IRescuable.sol": { + "keccak256": "0xb7339cccbe91b2b0d9bd9adf4be58605ee75032eead9e3213304c6ae5ba108c1", + "urls": [ + "bzz-raw://09db6f6a18144eb4a47353163408cebd32499b2611972cc8ddffc257654780b1", + "dweb:/ipfs/Qmb6A7wFipu6seiUG3n2LoeWo91Nrj9xsapJKqEXExe7MX" + ], + "license": "MIT" + }, + "src/contracts/BaseCrossChainController.sol": { + "keccak256": "0x800641fd2b769118df88683020ffc0907a13ebc2a2817ef565c064152d0f35d5", + "urls": [ + "bzz-raw://2e86be71893e841b44f985f18af77071b7119587bfe09bb8aaf71d2f9a7edcac", + "dweb:/ipfs/QmTFgyzGdzRXe4ZNQn2tN51NcACgSdWAF2VAF7pExmEkU7" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainController.sol": { + "keccak256": "0x3cf72ab0d7673cb4261965ab31a2b8ba9567bcce68e6f83283da94d36da8da76", + "urls": [ + "bzz-raw://e2b8a78275e8200fcd2e434ad11d178ba816faabfc53eda845724aa002940d1c", + "dweb:/ipfs/QmZ5FaZLnA92he1U95KFvEWdYKSu6SAEYnxQXJN1zMknsJ" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainForwarder.sol": { + "keccak256": "0xbef311a4d79ee901ccae60b8ed8f88dd1559f799895458a48a92e6a6d114a6c3", + "urls": [ + "bzz-raw://3e237a8732716c69aaec8fd56d286ebe58a819c250b23ae7a693b1acd1350760", + "dweb:/ipfs/QmPtPfhUNQoXwYaHhDX15JNcHesn1zERix6sfSVyEyjGGn" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainReceiver.sol": { + "keccak256": "0x9a3613b6a4e0c2bdf82c917c7d6f108320cd62ef33e3fef49c3ef87ae405c6b8", + "urls": [ + "bzz-raw://94bb65cfcdd811affe0947f90148b0c20fc78211444ca14b07c6dec4ded8f58c", + "dweb:/ipfs/QmVyn5oe8CYWS5dzUsk2BbXUoZ9ppx3w44vq9zp1bEKJ5C" + ], + "license": "BUSL-1.1" + }, + "src/contracts/adapters/IBaseAdapter.sol": { + "keccak256": "0x97ef80b6aeebf7ced38ac3816fd57e5eabd58ae251d47f17b63d2981b1f92e8b", + "urls": [ + "bzz-raw://57a009f5ed843cfa18508b9f36eeaa521f233563553c9d16e80eaba90f81369b", + "dweb:/ipfs/QmaABhvQyMjF43qshQAH5hWrNqkWfYhYqHSYBmAgq6icug" + ], + "license": "MIT" + }, + "src/contracts/interfaces/IBaseCrossChainController.sol": { + "keccak256": "0x5d226f4f433e4b73650f8f1a749eac15f44c537d2561b44fb8b979221d2fa22b", + "urls": [ + "bzz-raw://20ec37bc28bd5bb67940021014f169a90912b8c281f4220949ea9e6e940116c9", + "dweb:/ipfs/QmXH9QBmoApfSYR82ZRVpu2JGekdE4116puXrJgkfLEdYe" + ], + "license": "MIT" + }, + "src/contracts/interfaces/IBaseReceiverPortal.sol": { + "keccak256": "0x636561bf24807679c5a877b7394308545dc028fe76932d15257098be5991959f", + "urls": [ + "bzz-raw://2e5f47d74b026fc94aaeec2fd74adc081dca753881b8a84265a34a7462d31b7b", + "dweb:/ipfs/QmVWnGLdJshoWJJwMZKNZS76auTNBTZgswvLUduUxCoja2" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainController.sol": { + "keccak256": "0x3e7285b5e32f47a8c352d3583d8bd892f5e89dfd63f48a532f972fbdf238e954", + "urls": [ + "bzz-raw://d42a2ded743fd9f5d614a0d85a5065b05e90b4c517b6935f2a1076f7bbf23a7f", + "dweb:/ipfs/QmRhceFdsSYSjrpkMkWXxvGbxRduyLER5sBVBN8uiwHkwg" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainForwarder.sol": { + "keccak256": "0x7c67c32148d66de52ca28ae18c115b10753772aacd6dd020280590f137cc2056", + "urls": [ + "bzz-raw://4077ddc3e091ee38556a7c0797de9b1608f32765d9f62a07efea6505bbebfa7c", + "dweb:/ipfs/Qmbns917YEfng8nqn8wu3KnKBy562K7uWK3kxfzRsPdY27" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainReceiver.sol": { + "keccak256": "0xf55d606adfb99cf829845731241d6eff48ef3a36153290fb6daf7af2250e3ec5", + "urls": [ + "bzz-raw://1331b21d98f083181beb5f1f9b817757760a4ef3d79665e118fb4036ca7c056a", + "dweb:/ipfs/QmUXUZeess24rcSjXxo1geCu9BxG4X7ivEHGKhSy6bPbmW" + ], + "license": "MIT" + }, + "src/contracts/libs/EncodingUtils.sol": { + "keccak256": "0xe778561273ede6b3db73f2fb7b2b443cf0a733a209967af59db107406b68964a", + "urls": [ + "bzz-raw://7361dd55dee3cf7bd053d7cd289e148c9451e98c8126672e6287f4e769ab8fba", + "dweb:/ipfs/QmeH1cwptCar31XamSH2QHSeG4BrS86KNdAbnvk6VGFvLB" + ], + "license": "MIT" + }, + "src/contracts/libs/Errors.sol": { + "keccak256": "0x4a4502debe85d126eb37f8268d2d816636ae21c08b0dae7f26cb11d2bae0f80d", + "urls": [ + "bzz-raw://ab72c20ea1e07f3bf567cddd96a0749b9a0afb0beefdc9a6f589657f4f97bc39", + "dweb:/ipfs/QmXXu7CRbhhHqpjdvoBanTsf7wjD6N457ho3vE2dprSy2S" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 178 +} diff --git a/ethereum-governance/src/abi/LDO.json b/ethereum-governance/src/abi/LDO.json new file mode 100644 index 000000000..3e1108790 --- /dev/null +++ b/ethereum-governance/src/abi/LDO.json @@ -0,0 +1,313 @@ +[ + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_spender", "type": "address" }, + { "name": "_amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "name": "success", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "creationBlock", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_from", "type": "address" }, + { "name": "_to", "type": "address" }, + { "name": "_amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "name": "success", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [{ "name": "", "type": "uint8" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "_newController", "type": "address" }], + "name": "changeController", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { "name": "_owner", "type": "address" }, + { "name": "_blockNumber", "type": "uint256" } + ], + "name": "balanceOfAt", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_cloneTokenName", "type": "string" }, + { "name": "_cloneDecimalUnits", "type": "uint8" }, + { "name": "_cloneTokenSymbol", "type": "string" }, + { "name": "_snapshotBlock", "type": "uint256" }, + { "name": "_transfersEnabled", "type": "bool" } + ], + "name": "createCloneToken", + "outputs": [{ "name": "", "type": "address" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "_owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "name": "balance", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "parentToken", + "outputs": [{ "name": "", "type": "address" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_owner", "type": "address" }, + { "name": "_amount", "type": "uint256" } + ], + "name": "generateTokens", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [{ "name": "", "type": "string" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [{ "name": "_blockNumber", "type": "uint256" }], + "name": "totalSupplyAt", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_to", "type": "address" }, + { "name": "_amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "name": "success", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "transfersEnabled", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "parentSnapShotBlock", + "outputs": [{ "name": "", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_spender", "type": "address" }, + { "name": "_amount", "type": "uint256" }, + { "name": "_extraData", "type": "bytes" } + ], + "name": "approveAndCall", + "outputs": [{ "name": "success", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { "name": "_owner", "type": "address" }, + { "name": "_amount", "type": "uint256" } + ], + "name": "destroyTokens", + "outputs": [{ "name": "", "type": "bool" }], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { "name": "_owner", "type": "address" }, + { "name": "_spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "name": "remaining", "type": "uint256" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "_token", "type": "address" }], + "name": "claimTokens", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "tokenFactory", + "outputs": [{ "name": "", "type": "address" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [{ "name": "_transfersEnabled", "type": "bool" }], + "name": "enableTransfers", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "controller", + "outputs": [{ "name": "", "type": "address" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "name": "_tokenFactory", "type": "address" }, + { "name": "_parentToken", "type": "address" }, + { "name": "_parentSnapShotBlock", "type": "uint256" }, + { "name": "_tokenName", "type": "string" }, + { "name": "_decimalUnits", "type": "uint8" }, + { "name": "_tokenSymbol", "type": "string" }, + { "name": "_transfersEnabled", "type": "bool" } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { "payable": true, "stateMutability": "payable", "type": "fallback" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "_token", "type": "address" }, + { "indexed": true, "name": "_controller", "type": "address" }, + { "indexed": false, "name": "_amount", "type": "uint256" } + ], + "name": "ClaimedTokens", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "_from", "type": "address" }, + { "indexed": true, "name": "_to", "type": "address" }, + { "indexed": false, "name": "_amount", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "_cloneToken", "type": "address" }, + { "indexed": false, "name": "_snapshotBlock", "type": "uint256" } + ], + "name": "NewCloneToken", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "name": "_owner", "type": "address" }, + { "indexed": true, "name": "_spender", "type": "address" }, + { "indexed": false, "name": "_amount", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + } +] diff --git a/ethereum-governance/src/abi/ProxyShort.json b/ethereum-governance/src/abi/ProxyShort.json deleted file mode 100644 index b73d7c162..000000000 --- a/ethereum-governance/src/abi/ProxyShort.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "inputs": [], - "name": "proxy__getAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/ethereum-governance/src/agent.ts b/ethereum-governance/src/agent.ts index 8ecfbf7bc..b042048b9 100644 --- a/ethereum-governance/src/agent.ts +++ b/ethereum-governance/src/agent.ts @@ -45,25 +45,25 @@ export function initialize(): Initialize { process.exit(1) } - const [, aragonVotingSrvErr] = await Promise.all([ - app.AclChangesSrv.initialize(latestBlockNumber.right), - app.AragonVotingSrv.initialize(latestBlockNumber.right), - app.EasyTrackSrv.initialize(latestBlockNumber.right), - app.EnsNamesSrv.initialize(latestBlockNumber.right), - app.ProxyWatcherSrv.initialize(latestBlockNumber.right), - app.TrpChangesSrv.initialize(latestBlockNumber.right), - app.StonksSrv.initialize(latestBlockNumber.right), - ]) + const initResults = await Promise.all( + app.subAgents.map(async (agent) => { + return await agent.initialize(latestBlockNumber.right) + }), + ) - if (aragonVotingSrvErr !== null) { - console.error(`Error: ${aragonVotingSrvErr.message}`) - console.error(`Stack: ${aragonVotingSrvErr.stack}`) + const errors = initResults.filter(Boolean) as Error[] + + if (errors.length > 0) { + errors.forEach((error) => { + console.error(`Error: ${error.message}`) + console.error(`Stack: ${error.stack}`) + }) process.exit(1) } - const agents: string[] = [app.EnsNamesSrv.getName(), app.EasyTrackSrv.getName()] - metadata.agents = '[' + agents.toString() + ']' + const agentsNames = app.subAgents.map((agent) => agent.getName()) + metadata.agents = '[' + agentsNames.toString() + ']' const decodedJwt = decodeJwt(token.right) @@ -100,16 +100,12 @@ export const handleBlock = (): HandleBlock => { findings.push(...findingsAsync) } - const servicesFindings = ( - await Promise.all([ - app.AclChangesSrv.handleBlock(blockEvent), - app.AragonVotingSrv.handleBlock(blockEvent), - app.EnsNamesSrv.handleBlock(blockEvent), - app.ProxyWatcherSrv.handleBlock(blockEvent), - app.StonksSrv.handleBlock(blockEvent), - ]) - ).flat() - findings.push(...servicesFindings) + for (const agent of app.subAgents) { + if (agent.handleBlock) { + const agentFindings = await agent.handleBlock(blockEvent) + findings.push(...agentFindings) + } + } app.healthChecker.check(findings) @@ -123,15 +119,14 @@ export const handleTransaction = (): HandleTransaction => { return async function (txEvent: TransactionEvent): Promise { const app = await App.getInstance() - const findings: Finding[] = ( - await Promise.all([ - await app.AclChangesSrv.handleTransaction(txEvent), - await app.AragonVotingSrv.handleTransaction(txEvent), - await app.EasyTrackSrv.handleTransaction(txEvent), - await app.TrpChangesSrv.handleTransaction(txEvent), - await app.StonksSrv.handleTransaction(txEvent), - ]) - ).flat() + const findings: Finding[] = [] + + for (const agent of app.subAgents) { + if (agent.handleTransaction) { + const agentFindings = await agent.handleTransaction(txEvent) + findings.push(...agentFindings) + } + } app.healthChecker.check(findings) diff --git a/ethereum-governance/src/app.ts b/ethereum-governance/src/app.ts index 6f37c427c..340e0bbef 100644 --- a/ethereum-governance/src/app.ts +++ b/ethereum-governance/src/app.ts @@ -1,8 +1,9 @@ -import { ethers, fetchJwt, Finding, getEthersProvider, verifyJwt } from 'forta-agent' +import { BlockEvent, ethers, fetchJwt, Finding, getEthersProvider, TransactionEvent, verifyJwt } from 'forta-agent' import { ARAGON_VOTING_ADDRESS, CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, ENS_BASE_REGISTRAR_ADDRESS, + LDO_ADDRESS, } from 'constants/common' import { ETHProvider } from './clients/eth_provider' import { FormatterWithEIP1898 } from './clients/eth_formatter' @@ -11,6 +12,7 @@ import { IncreaseStakingLimit__factory, NodeOperatorsRegistry__factory, AragonVoting__factory, + LDO__factory, } from './generated' import { EnsNamesSrv } from './services/ens-names/EnsNames.srv' import { EasyTrackSrv } from './services/easy-track/EasyTrack.srv' @@ -24,6 +26,14 @@ import { AclChangesSrv } from './services/acl-changes/AclChanges.srv' import { AragonVotingSrv } from './services/aragon-voting/AragonVoting.srv' import { TrpChangesSrv } from './services/trp-changes/TrpChanges.srv' import { StonksSrv } from './services/stonks/Stonks.srv' +import { CrossChainWatcherSrv } from './services/cross-chain-watcher/CrossChainWatcher.srv' + +type SubAgent = { + initialize: (currentBlock: number) => Promise | Error | null + getName: () => string + handleBlock?: (block: BlockEvent) => Promise + handleTransaction?: (tx: TransactionEvent) => Promise +} export type Container = { ethClient: ETHProvider @@ -34,8 +44,10 @@ export type Container = { AragonVotingSrv: AragonVotingSrv TrpChangesSrv: TrpChangesSrv StonksSrv: StonksSrv + CrossChainWatcherSrv: CrossChainWatcherSrv findingsRW: DataRW healthChecker: HealthChecker + subAgents: SubAgent[] } export class App { @@ -82,6 +94,8 @@ export class App { ) const aragonVotingContract = AragonVoting__factory.connect(ARAGON_VOTING_ADDRESS, ethersProvider) + const ldoContract = LDO__factory.connect(LDO_ADDRESS, ethersProvider) + const ethClient = new ETHProvider( ethersProvider, etherscanProvider, @@ -89,6 +103,7 @@ export class App { increaseStakingLimitContact, nodeOperatorsRegistryContract, aragonVotingContract, + ldoContract, ) const logger: Winston.Logger = Winston.createLogger({ @@ -97,13 +112,24 @@ export class App { }) const proxyWatcherSrv = new ProxyWatcherSrv(logger, ethClient) - const ensNamesSrv = new EnsNamesSrv(logger, ethClient) const easyTrackSrv = new EasyTrackSrv(logger, ethClient) const aclChangesSrv = new AclChangesSrv(logger, ethClient) const aragonVotingSrv = new AragonVotingSrv(logger, ethClient) const trpChangesSrv = new TrpChangesSrv(logger) const stonksSrv = new StonksSrv(logger, ethClient) + const crossChainWatcherSrv = new CrossChainWatcherSrv(logger, ethClient) + + const subAgents = [ + aclChangesSrv, + aragonVotingSrv, + easyTrackSrv, + ensNamesSrv, + proxyWatcherSrv, + trpChangesSrv, + stonksSrv, + crossChainWatcherSrv, + ] App.instance = { ethClient: ethClient, @@ -114,8 +140,10 @@ export class App { AragonVotingSrv: aragonVotingSrv, TrpChangesSrv: trpChangesSrv, StonksSrv: stonksSrv, + CrossChainWatcherSrv: crossChainWatcherSrv, findingsRW: new DataRW([]), healthChecker: new HealthChecker(BorderTime, MaxNumberErrorsPerBorderTime), + subAgents, } } diff --git a/ethereum-governance/src/clients/eth_provider.ts b/ethereum-governance/src/clients/eth_provider.ts index 24839acba..587e6894c 100644 --- a/ethereum-governance/src/clients/eth_provider.ts +++ b/ethereum-governance/src/clients/eth_provider.ts @@ -4,10 +4,14 @@ import * as E from 'fp-ts/Either' import { retryAsync } from 'ts-retry' import BigNumber from 'bignumber.js' import { - ENS as EnsContract, AragonVoting as AragonVotingContract, + BaseAdapter__factory, + CrossChainController__factory, + ENS as EnsContract, IncreaseStakingLimit as IncreaseStakingLimitContract, + LDO as LDOContract, NodeOperatorsRegistry as NodeOperatorsRegistryContract, + Stonks__factory, Swap__factory, } from '../generated' import { IEtherscanProvider } from './contracts' @@ -21,19 +25,23 @@ import { IAclChangesClient } from '../services/acl-changes/contract' import { IAragonVotingClient, IVoteInfo } from '../services/aragon-voting/contract' import { BLOCK_TO_WATCH, COW_PROTOCOL_ADDRESS } from 'constants/stonks' import { TypedEvent } from '../generated/common' -import { Stonks__factory } from '../generated' import { formatEther } from 'ethers/lib/utils' +import { BSC_CHAIN_ID, BSC_L1_CROSS_CHAIN_CONTROLLER } from '../shared/constants/cross-chain/mainnet' +import { ICrossChainForwarder } from '../generated/CrossChainController' +import { ICrossChainClient } from '../services/cross-chain-watcher/contract' +import { ProxyInfo } from '../shared/types' const DELAY_IN_500MS = 500 const ATTEMPTS_5 = 5 -export interface IProxyContractData { - name: string - shortABI: string -} - export class ETHProvider - implements IEnsNamesClient, IEasyTrackClient, IProxyWatcherClient, IAclChangesClient, IAragonVotingClient + implements + IEnsNamesClient, + IEasyTrackClient, + IProxyWatcherClient, + IAclChangesClient, + IAragonVotingClient, + ICrossChainClient { private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider private etherscanProvider: IEtherscanProvider @@ -42,6 +50,7 @@ export class ETHProvider private readonly increaseStakingLimitContract: IncreaseStakingLimitContract private readonly nodeOperatorsRegistryContract: NodeOperatorsRegistryContract private readonly aragonVotingContract: AragonVotingContract + private readonly ldoContract: LDOContract constructor( jsonRpcProvider: ethers.providers.JsonRpcProvider, @@ -51,6 +60,7 @@ export class ETHProvider increaseStakingLimitContract: IncreaseStakingLimitContract, nodeOperatorsRegistryContract: NodeOperatorsRegistryContract, aragonVotingContract: AragonVotingContract, + ldoContract: LDOContract, ) { this.jsonRpcProvider = jsonRpcProvider this.etherscanProvider = etherscanProvider @@ -59,6 +69,7 @@ export class ETHProvider this.increaseStakingLimitContract = increaseStakingLimitContract this.nodeOperatorsRegistryContract = nodeOperatorsRegistryContract this.aragonVotingContract = aragonVotingContract + this.ldoContract = ldoContract } public async getBlock(blockNumber: number): Promise> { @@ -216,22 +227,24 @@ export class ETHProvider public async getProxyImplementation( address: string, - data: IProxyContractData, + data: ProxyInfo, currentBlock: number, - ): Promise> { + ): Promise> { try { const str = await retryAsync( - async (): Promise => { + async (): Promise => { const proxyContract = new ethers.Contract(address, data.shortABI, this.jsonRpcProvider) if ('implementation' in proxyContract.functions) { - return await proxyContract.functions.implementation({ + const implementation = await proxyContract.functions.implementation({ blockTag: currentBlock, }) + return implementation[0] } if ('proxy__getImplementation' in proxyContract.functions) { - return await proxyContract.functions.proxy__getImplementation({ + const implementation = await proxyContract.functions.proxy__getImplementation({ blockTag: currentBlock, }) + return implementation[0] } throw new Error( @@ -437,6 +450,39 @@ export class ETHProvider } } + public async getBalance(address: string, tokenAddress?: string): Promise> { + if (!tokenAddress) { + try { + const result = await retryAsync( + async () => { + return await this.jsonRpcProvider.getBalance(address) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + return E.right(result) + } catch (e) { + return E.left(new NetworkError(e, `Could not call jsonRpcProvider.getBalance`)) + } + } + + const tokenContract = new ethers.Contract( + tokenAddress, + ['function balanceOf(address) view returns (uint256)'], + this.jsonRpcProvider, + ) + try { + const result = await retryAsync( + async () => { + return await tokenContract.balanceOf(address) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + return E.right(result) + } catch (e) { + return E.left(new NetworkError(e, `Could not call jsonRpcProvider.getLinkBalance`)) + } + } + public async getTokenSymbol(tokenAddress: string) { const abi = [ { @@ -460,4 +506,59 @@ export class ETHProvider return E.left(new NetworkError(e, `Could not get symbol for token ${tokenAddress}`)) } } + + public async getBSCForwarderBridgeAdapterNames() { + const cccContract = CrossChainController__factory.connect(BSC_L1_CROSS_CHAIN_CONTROLLER, this.jsonRpcProvider) + let adapters: ICrossChainForwarder.ChainIdBridgeConfigStructOutput[] = [] + const bscAdapters = new Map() + + try { + adapters = await retryAsync( + async () => { + return await cccContract.getForwarderBridgeAdaptersByChain(BSC_CHAIN_ID) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + } catch (e) { + return E.left(new NetworkError(e, `Could not get forwarder bridge adapters for BSC chain`)) + } + + for (const adapterAddress of adapters) { + const bridgeAdapterContract = BaseAdapter__factory.connect( + adapterAddress.currentChainBridgeAdapter, + this.jsonRpcProvider, + ) + + try { + const adapterName = await retryAsync( + async () => { + return await bridgeAdapterContract.adapterName() + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + bscAdapters.set(adapterAddress.currentChainBridgeAdapter, adapterName) + } catch (e) { + return E.left(new NetworkError(e, `Could not get forwarder bridge adapters for BSC chain`)) + } + } + + return E.right(bscAdapters) + } + + public async getVotingPower(voter: string, blockTag: BlockTag): Promise> { + try { + const votingPower = await retryAsync( + async () => { + const balance = await this.ldoContract.balanceOfAt(voter, blockTag) + return new BigNumber(String(balance)) + }, + { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, + ) + return E.right(votingPower) + } catch (e) { + return E.left( + new NetworkError(e, `Could not call ethers.ldoContract.balanceOfAt voter ${voter} block ${blockTag}`), + ) + } + } } diff --git a/ethereum-governance/src/services/acl-changes/AclChanges.spec.ts b/ethereum-governance/src/services/acl-changes/AclChanges.spec.ts index e4662e38b..2b17fc3ad 100644 --- a/ethereum-governance/src/services/acl-changes/AclChanges.spec.ts +++ b/ethereum-governance/src/services/acl-changes/AclChanges.spec.ts @@ -6,8 +6,6 @@ import * as E from 'fp-ts/Either' import * as constants from '../../shared/constants/acl-changes/mainnet' import { ACL_ENUMERABLE_CONTRACTS, - IHasRoles, - IOwnable, NEW_ROLE_MEMBERS_REPORT_INTERVAL, OWNABLE_CONTRACTS, ROLES_OWNERS, @@ -24,6 +22,7 @@ import { etherscanAddress, INamedRole, roleByName } from '../../shared/string' import { SET_PERMISSION_PARAMS_EVENT } from '../../shared/events/acl_events' import { networkAlert } from '../../shared/errors' import { expect } from '@jest/globals' +import { ContractRolesInfo, OwnableContractInfo } from '../../shared/types' describe('AclChangesSrv', () => { let logger: Logger @@ -66,8 +65,8 @@ describe('AclChangesSrv', () => { }) it('handles block without error', async () => { - jest.spyOn(aclChangesSrv, 'handleRolesMembers').mockResolvedValue([]) - jest.spyOn(aclChangesSrv, 'handleOwnerChange').mockResolvedValue([]) + jest.spyOn(aclChangesSrv, 'handleRolesMembersChanges').mockResolvedValue([]) + jest.spyOn(aclChangesSrv, 'handleContractsOwnersChanges').mockResolvedValue([]) const findings = await aclChangesSrv.handleBlock(blockEvent) @@ -88,14 +87,14 @@ describe('AclChangesSrv', () => { return E.right(roleMembersMap.get(roleHash + address) || []) }) - const findings = await aclChangesSrv.handleRolesMembers(blockEvent) + const findings = await aclChangesSrv.handleRolesMembersChanges(blockEvent) expect(findings).toEqual([]) }) it('handles roles members with findings', async () => { jest.mock('../../shared/constants/acl-changes/mainnet') - jest.mocked(constants).ACL_ENUMERABLE_CONTRACTS = new Map([ + jest.mocked(constants).ACL_ENUMERABLE_CONTRACTS = new Map([ [ oracleConfigAddress, { @@ -108,12 +107,12 @@ describe('AclChangesSrv', () => { return E.right([fakeAddress]) }) - const findings = await aclChangesSrv.handleRolesMembers(blockEvent) + const findings = await aclChangesSrv.handleRolesMembersChanges(blockEvent) expect(findings).toEqual([ Finding.fromObject({ alertId: 'ACL-UNEXPECTED-ROLE-MEMBERS', - description: `Role DEFAULT ADMIN ROLE members of OracleDaemonConfig are {[${fakeAddress}](https://etherscan.io/address/${fakeAddress})} but expected {[${ROLES_OWNERS.agent}](https://etherscan.io/address/${ROLES_OWNERS.agent})}.\nPlease update the constants file if the change was expected.`, + description: `Role DEFAULT ADMIN ROLE members of OracleDaemonConfig are {[${fakeAddress}](https://etherscan.io/address/${fakeAddress})} but expected {[${ROLES_OWNERS.agent}](https://etherscan.io/address/${ROLES_OWNERS.agent})}.\n\nPlease update the constants file if the change was expected.`, name: '🚨 ACL: Unexpected role members', severity: FindingSeverity.Critical, type: FindingType.Info, @@ -124,7 +123,7 @@ describe('AclChangesSrv', () => { it('handles owner change without errors', async () => { jest.spyOn(ethProvider, 'getContractOwner').mockResolvedValue(E.right(whitelistedOwner)) - const findings = await aclChangesSrv.handleOwnerChange(blockEvent) + const findings = await aclChangesSrv.handleContractsOwnersChanges(blockEvent) expect(findings).toEqual([]) }) @@ -133,11 +132,11 @@ describe('AclChangesSrv', () => { jest.spyOn(ethProvider, 'getContractOwner').mockResolvedValue(E.left(new Error('Test error'))) const finding = networkAlert( new Error('Test error'), - `Error in AclChangesSrv.handleOwnerChange (uid:3197e652)`, + `Error in AclChangesSrv.handleContractsOwnersChanges (uid:790dc305)`, `Could not call ethProvider.getOwner for address - ${dsAddress}`, ) - const findings = await aclChangesSrv.handleOwnerChange(blockEvent) + const findings = await aclChangesSrv.handleContractsOwnersChanges(blockEvent) expect(findings).toHaveLength(OWNABLE_CONTRACTS.size) expect(findings[0].name).toEqual(finding.name) @@ -159,6 +158,7 @@ describe('AclChangesSrv', () => { contract: dsAddress, name: 'Deposit Security module', owner: fakeAddress, + isDeployedLoaded: 'true', }, }, ], @@ -175,6 +175,7 @@ describe('AclChangesSrv', () => { contract: dsAddress, name: 'Deposit Security module', owner: fakeAddress, + isDeployedLoaded: 'true', }, }, ], @@ -182,7 +183,7 @@ describe('AclChangesSrv', () => { jest.spyOn(ethProvider, 'getContractOwner').mockResolvedValue(E.right(fakeAddress)) jest.spyOn(ethProvider, 'isDeployed').mockResolvedValue(E.right(isContract)) jest.mock('../../shared/constants/acl-changes/mainnet') - jest.mocked(constants).OWNABLE_CONTRACTS = new Map([ + jest.mocked(constants).OWNABLE_CONTRACTS = new Map([ [ dsAddress, { @@ -192,7 +193,7 @@ describe('AclChangesSrv', () => { ], ]) as never - const findings = await aclChangesSrv.handleOwnerChange(blockEvent) + const findings = await aclChangesSrv.handleContractsOwnersChanges(blockEvent) expect(findings).toEqual([Finding.fromObject(assertedObject)]) }) diff --git a/ethereum-governance/src/services/acl-changes/AclChanges.srv.ts b/ethereum-governance/src/services/acl-changes/AclChanges.srv.ts index 1be9f3689..a2b73ece7 100644 --- a/ethereum-governance/src/services/acl-changes/AclChanges.srv.ts +++ b/ethereum-governance/src/services/acl-changes/AclChanges.srv.ts @@ -2,7 +2,7 @@ import { BlockEvent, Finding, FindingSeverity, FindingType, LogDescription, Tran import _ from 'lodash' -import { etherscanAddress } from '../../shared/string' +import { etherscanAddress, roleByName } from '../../shared/string' import { SET_PERMISSION_EVENT, SET_PERMISSION_PARAMS_EVENT, @@ -20,13 +20,14 @@ import { NEW_OWNER_IS_EOA_REPORT_INTERVAL, NEW_ROLE_MEMBERS_REPORT_INTERVAL, } from 'constants/acl-changes' -import { ARAGON_ACL_ADDRESS } from 'constants/common' +import { ARAGON_ACL_ADDRESS, EASY_TRACK_ADDRESS, SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS } from 'constants/common' import * as E from 'fp-ts/Either' import { elapsedTime } from '../../shared/time' import { Logger } from 'winston' import { networkAlert } from '../../shared/errors' import type { IAclChangesClient } from './contract' +import { ContractRolesInfo, OwnableContractInfo } from '../../shared/types' interface IPermission { app: string @@ -41,10 +42,14 @@ export class AclChangesSrv { private readonly logger: Logger private readonly name = 'AclChangesSrv' private readonly ethProvider: IAclChangesClient + private readonly ownersReportsTimestamps: Map + private readonly roleMembersReportsTimestamps: Map constructor(logger: Logger, ethProvider: IAclChangesClient) { this.logger = logger this.ethProvider = ethProvider + this.ownersReportsTimestamps = new Map() + this.roleMembersReportsTimestamps = new Map() } public initialize(currentBlock: number): null { @@ -74,12 +79,12 @@ export class AclChangesSrv { const start = new Date().getTime() const findings: Finding[] = [] - const [rolesMembersFindings, ownerChangeFindings] = await Promise.all([ - this.handleRolesMembers(blockEvent), - this.handleOwnerChange(blockEvent), + const [roleChanges, ownerChanges] = await Promise.all([ + this.handleRolesMembersChanges(blockEvent), + this.handleContractsOwnersChanges(blockEvent), ]) - findings.push(...rolesMembersFindings, ...ownerChangeFindings) + findings.push(...roleChanges, ...ownerChanges) this.logger.info(elapsedTime(AclChangesSrv.name + '.' + this.handleBlock.name, start)) return findings @@ -100,141 +105,140 @@ export class AclChangesSrv { return findings } - public async handleRolesMembers(blockEvent: BlockEvent): Promise { - const out: Finding[] = [] - const roleMembersReports = new Map() + public async handleRolesMembersChanges(blockEvent: BlockEvent): Promise { + const findings: Finding[] = [] + const currentTimestamp = blockEvent.block.timestamp - const promises = Array.from(ACL_ENUMERABLE_CONTRACTS.keys()).map(async (address: string) => { - const lastReportedAt = roleMembersReports.get(address) || 0 - const now = blockEvent.block.timestamp - if (now - lastReportedAt < NEW_ROLE_MEMBERS_REPORT_INTERVAL) { - return + for (const address of ACL_ENUMERABLE_CONTRACTS.keys()) { + const lastReportTime = this.roleMembersReportsTimestamps.get(address) || 0 + if (currentTimestamp - lastReportTime < NEW_ROLE_MEMBERS_REPORT_INTERVAL) { + continue } - const data = ACL_ENUMERABLE_CONTRACTS.get(address) - if (!data) { - return - } + const aclContractInfo = ACL_ENUMERABLE_CONTRACTS.get(address) as ContractRolesInfo - await Promise.all( - Array.from(data.roles.entries()).map(async (entry) => { - const [role, members] = entry - const membersInLower = members.map((m) => m.toLowerCase()) - const curMembers = await this.ethProvider.getRoleMembers(address, role.hash, blockEvent.blockNumber) - - if (E.isLeft(curMembers)) { - out.push( - networkAlert( - curMembers.left, - `Error in ${AclChangesSrv.name}.${this.handleRolesMembers.name} (uid:550c057c)`, - `Could not call ethProvider.getRoleMembers for address - ${address}`, - ), - ) - return - } - - if (_.isEqual(curMembers.right, membersInLower)) { - return - } + for (const [role, members] of aclContractInfo.roles.entries()) { + const membersInLower = members.map((m) => m.toLowerCase()) + const currentRoleMembers: string[] = [] + const roleMembersFromNetwork = await this.ethProvider.getRoleMembers(address, role.hash, blockEvent.blockNumber) - out.push( + if (E.isLeft(roleMembersFromNetwork)) { + findings.push( + networkAlert( + roleMembersFromNetwork.left, + `Error in ${AclChangesSrv.name}.${this.handleRolesMembersChanges.name} (uid:550c057c)`, + `Could not call ethProvider.getRoleMembers for address - ${address}`, + ), + ) + } else { + currentRoleMembers.push(...roleMembersFromNetwork.right) + } + + if (!_.isEqual(currentRoleMembers, membersInLower)) { + const currentRoleMembersString = E.isLeft(roleMembersFromNetwork) + ? `UNKNOWN` + : currentRoleMembers.map((m) => etherscanAddress(m)).join(', ') + + const expectedRoleMembersString = membersInLower.map((m) => etherscanAddress(m)).join(', ') + + findings.push( Finding.fromObject({ name: `🚨 ACL: Unexpected role members`, - description: - `Role ${role.name} members of ${data.name} ` + - `are {${curMembers.right.map((m) => etherscanAddress(m)).join(', ')}}` + - ` but expected {${membersInLower.map((m) => etherscanAddress(m)).join(', ')}}.` + - `\nPlease update the constants file if the change was expected.`, + description: `Role ${role.name} members of ${aclContractInfo.name} are {${currentRoleMembersString}} but expected {${expectedRoleMembersString}}.\n\nPlease update the constants file if the change was expected.`, alertId: 'ACL-UNEXPECTED-ROLE-MEMBERS', severity: FindingSeverity.Critical, type: FindingType.Info, }), ) - roleMembersReports.set(address, now) - }), - ) - }) + this.roleMembersReportsTimestamps.set(address, currentTimestamp) + } + } + } - await Promise.all(promises) - return out + return findings } - public async handleOwnerChange(blockEvent: BlockEvent): Promise { - const out: Finding[] = [] - const findingsTimestamps = new Map() + public async handleContractsOwnersChanges(blockEvent: BlockEvent): Promise { + const findings: Finding[] = [] - const promises = Array.from(OWNABLE_CONTRACTS.keys()).map(async (address: string) => { - const data = OWNABLE_CONTRACTS.get(address) - if (!data) { - return - } + for (const address of OWNABLE_CONTRACTS.keys()) { + const ownerInfo = OWNABLE_CONTRACTS.get(address) as OwnableContractInfo - const curOwner = await this.ethProvider.getContractOwner(address, data.ownershipMethod, blockEvent.blockNumber) + const contractOwnerResponse = await this.ethProvider.getContractOwner( + address, + ownerInfo.ownershipMethod, + blockEvent.blockNumber, + ) - if (E.isLeft(curOwner)) { - out.push( + if (E.isLeft(contractOwnerResponse)) { + findings.push( networkAlert( - curOwner.left, - `Error in ${AclChangesSrv.name}.${this.handleOwnerChange.name} (uid:3197e652)`, + contractOwnerResponse.left, + `Error in ${AclChangesSrv.name}.${this.handleContractsOwnersChanges.name} (uid:790dc305)`, `Could not call ethProvider.getOwner for address - ${address}`, ), ) - return - } - if (WHITELISTED_OWNERS.includes(curOwner.right.toLowerCase())) { - return + continue } - const curOwnerIsContract = await this.ethProvider.isDeployed(curOwner.right) + const currentOwner = contractOwnerResponse.right.toLowerCase() - if (E.isLeft(curOwnerIsContract)) { - out.push( - networkAlert( - curOwnerIsContract.left, - `Error in ${AclChangesSrv.name}.${this.handleRolesMembers.name} (uid:eb602bbc)`, - `Could not call ethProvider.isDeployed for curOwner - ${curOwner}`, - ), - ) - return - } + if (!WHITELISTED_OWNERS.includes(currentOwner)) { + let isOwnerAContract = false + const isDeployed = await this.ethProvider.isDeployed(currentOwner) - const key = `${address}+${curOwner}` - const now = blockEvent.block.timestamp - // skip if reported recently - const lastReportTimestamp = findingsTimestamps.get(key) - const interval = curOwnerIsContract.right - ? NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL - : NEW_OWNER_IS_EOA_REPORT_INTERVAL - if (lastReportTimestamp && interval > now - lastReportTimestamp) { - return - } + if (E.isLeft(isDeployed)) { + findings.push( + networkAlert( + isDeployed.left, + `Error in ${AclChangesSrv.name}.${this.handleRolesMembersChanges.name} (uid:eb602bbc)`, + `Could not call ethProvider.isDeployed for currentOwner - ${currentOwner}`, + ), + ) + } else { + isOwnerAContract = isDeployed.right + } - out.push( - Finding.fromObject({ - name: curOwnerIsContract.right - ? '🚨 Contract owner set to address not in whitelist' - : '🚨🚨🚨 Contract owner set to EOA 🚨🚨🚨', - description: `${data.name} contract (${etherscanAddress(address)}) owner is set to ${ - curOwnerIsContract.right ? 'contract' : 'EOA' - } address ${etherscanAddress(curOwner.right)}`, - alertId: 'SUSPICIOUS-CONTRACT-OWNER', - type: FindingType.Suspicious, - severity: curOwnerIsContract.right ? FindingSeverity.High : FindingSeverity.Critical, - metadata: { - contract: address, - name: data.name, - owner: curOwner.right, - }, - }), - ) + const currentTimestamp = blockEvent.block.timestamp + const reportKey = `${address}+${currentOwner}` - findingsTimestamps.set(key, now) - }) + // skip alert if reported recently + const lastReportTimestamp = this.ownersReportsTimestamps.get(reportKey) + const reportInterval = isOwnerAContract + ? NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL + : NEW_OWNER_IS_EOA_REPORT_INTERVAL - await Promise.all(promises) - return out + if (lastReportTimestamp && reportInterval > currentTimestamp - lastReportTimestamp) { + continue + } + + findings.push( + Finding.fromObject({ + name: isOwnerAContract + ? '🚨 Contract owner set to address not in whitelist' + : '🚨🚨🚨 Contract owner set to EOA 🚨🚨🚨', + description: `${ownerInfo.name} contract (${etherscanAddress(address)}) owner is set to ${ + isOwnerAContract ? 'contract' : 'EOA' + } address ${etherscanAddress(currentOwner)}`, + alertId: 'SUSPICIOUS-CONTRACT-OWNER', + severity: isOwnerAContract ? FindingSeverity.High : FindingSeverity.Critical, + type: FindingType.Suspicious, + metadata: { + contract: address, + name: ownerInfo.name, + owner: currentOwner, + isDeployedLoaded: `${!E.isLeft(isDeployed)}`, + }, + }), + ) + + this.ownersReportsTimestamps.set(reportKey, currentTimestamp) + } + } + + return findings } public async handleSetPermission(txEvent: TransactionEvent) { @@ -268,16 +272,17 @@ export class AclChangesSrv { }) await Promise.all( Array.from(permissions.values()).map(async (permission: IPermission) => { - await this.handlePermissionChange(permission, out) + await this.handlePermissionChange(txEvent, permission, out) }), ) return out } - public async handlePermissionChange(permission: IPermission, out: Finding[]) { + public async handlePermissionChange(txEvent: TransactionEvent, permission: IPermission, out: Finding[]) { const shortState = permission.state.replace(' from', '').replace(' to', '') - const role = LIDO_ROLES.get(permission.role) || 'unknown' - const app = LIDO_APPS.get(permission.app.toLowerCase()) || 'unknown' + const roleLabel = LIDO_ROLES[permission.role] ?? 'unknown' + const appLower = permission.app.toLowerCase() + const appLabel = LIDO_APPS.get(appLower) || 'unknown' const entityRaw = permission.entity.toLowerCase() let severity = FindingSeverity.Info let entity = ORDINARY_ENTITIES.get(entityRaw) @@ -307,14 +312,39 @@ export class AclChangesSrv { } } } + + // When new NOs are being added to the SDVT registry, the permission alert shouldn't be critical + const isSdvtChange = + appLower === SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS.toLowerCase() && + permission.role === roleByName('MANAGE_SIGNING_KEYS').hash + + if (isSdvtChange) { + // Check that events are being emitted within motion enactment and NO addition to SDVT + const motionEnactedEvents = txEvent.filterLog( + 'event MotionEnacted(uint256 indexed _motionId)', + EASY_TRACK_ADDRESS, + ) + const nodeOperatorAddedEvents = txEvent.filterLog( + 'event NodeOperatorAdded(uint256 nodeOperatorId, string name, address rewardAddress, uint64 stakingLimit)', + SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, + ) + + if (motionEnactedEvents.length > 0 && nodeOperatorAddedEvents.length > 0) { + severity = FindingSeverity.Info + entity = 'new SDVT operator' + } + } + + const icon = severity === FindingSeverity.Info ? 'ℹ️' : '🚨' + out.push( Finding.fromObject({ - name: `🚨 Aragon ACL: Permission ${shortState}`, - description: `Role ${permission.role} (${role}) on the app ${etherscanAddress(permission.app)} (${app}) was ${ + name: `${icon} Aragon ACL: Permission ${shortState}`, + description: `Role ${permission.role} (${roleLabel}) on the app ${etherscanAddress(permission.app)} (${appLabel}) was ${ permission.state } ${permission.entity} (${entity})`, alertId: 'ARAGON-ACL-PERMISSION-CHANGED', - severity: severity, + severity, type: FindingType.Info, }), ) @@ -328,15 +358,15 @@ export class AclChangesSrv { const managerEvents = txEvent.filterLog(CHANGE_PERMISSION_MANAGER_EVENT, ARAGON_ACL_ADDRESS) managerEvents.forEach((event) => { - const role = LIDO_ROLES.get(event.args.role) || 'unknown' - const app = LIDO_APPS.get(event.args.app.toLowerCase()) || 'unknown' - const manager = LIDO_APPS.get(event.args.manager.toLowerCase()) || 'unknown' + const roleLabel = LIDO_ROLES[event.args.role] ?? 'unknown' + const appLabel = LIDO_APPS.get(event.args.app.toLowerCase()) || 'unknown' + const managerLabel = LIDO_APPS.get(event.args.manager.toLowerCase()) || 'unknown' out.push( Finding.fromObject({ name: `🚨 Aragon ACL: Permission manager changed`, - description: `Permission manager for the role ${event.args.role} (${role}) on the app ${etherscanAddress( + description: `Permission manager for the role ${event.args.role} (${roleLabel}) on the app ${etherscanAddress( event.args.app, - )} (${app}) was set to ${etherscanAddress(event.args.manager)} (${manager})`, + )} (${appLabel}) was set to ${etherscanAddress(event.args.manager)} (${managerLabel})`, alertId: 'ARAGON-ACL-PERMISSION-MANAGER-CHANGED', severity: FindingSeverity.Critical, type: FindingType.Info, diff --git a/ethereum-governance/src/services/aragon-voting/AragonVoting.spec.ts b/ethereum-governance/src/services/aragon-voting/AragonVoting.spec.ts index a9478c867..c3c23b3f5 100644 --- a/ethereum-governance/src/services/aragon-voting/AragonVoting.spec.ts +++ b/ethereum-governance/src/services/aragon-voting/AragonVoting.spec.ts @@ -6,6 +6,7 @@ import * as E from 'fp-ts/Either' import BigNumber from 'bignumber.js' import { BLOCK_WINDOW, TRIGGER_AFTER } from '../../shared/constants/aragon-voting/mainnet' import { ARAGON_VOTING_ADDRESS } from '../../shared/constants/common/mainnet' +import { SIGNIFICANT_VP_AMOUNT } from '../../shared/constants' describe('AragonVotingSrv', () => { let logger: Logger @@ -16,11 +17,19 @@ describe('AragonVotingSrv', () => { beforeEach(() => { logger = { info: jest.fn(), debug: jest.fn() } as unknown as Logger - ethProvider = { getStartedVotes: jest.fn(), getVote: jest.fn() } as unknown as IAragonVotingClient + ethProvider = { + getStartedVotes: jest.fn(), + getVote: jest.fn(), + getVotingPower: jest.fn(), + } as unknown as IAragonVotingClient jest.spyOn(ethProvider, 'getStartedVotes').mockResolvedValue(E.right(new Map())) aragonVotingSrv = new AragonVotingSrv(logger, ethProvider) blockEvent = { block: { number: 100, timestamp: 1000 } } as BlockEvent - txEvent = { addresses: { '0x123': true }, filterLog: jest.fn() } as unknown as TransactionEvent + txEvent = { + addresses: { '0x123': true }, + filterLog: jest.fn(), + block: { number: 123 }, + } as unknown as TransactionEvent }) it('initializes without error', () => { @@ -202,4 +211,38 @@ describe('AragonVotingSrv', () => { expect(outcome).toBe(Outcomes.Fail) }) + + it('handles assignDelegate transaction without findings when no matching events', async () => { + txEvent.addresses[ARAGON_VOTING_ADDRESS] = true + jest.mocked(txEvent.filterLog).mockReturnValue([]) + + const findings = await aragonVotingSrv.handleAssignDelegateTransaction(txEvent) + + expect(findings).toEqual([]) + }) + + it('handles assignDelegate transaction with findings when matching events', async () => { + txEvent.addresses[ARAGON_VOTING_ADDRESS] = true + jest.spyOn(ethProvider, 'getVotingPower').mockResolvedValue(E.right(SIGNIFICANT_VP_AMOUNT)) + jest + .mocked(txEvent.filterLog) + .mockReturnValue([{ args: { voter: '0x123', assignedDelegate: '0x345' } }] as unknown as LogDescription[]) + + const findings = await aragonVotingSrv.handleAssignDelegateTransaction(txEvent) + + expect(findings).toHaveLength(1) + expect(findings[0].name).toBe('ℹ️ Big delegation') + }) + + it('handles assignDelegate transaction without findings when vp amount is lower than significant', async () => { + txEvent.addresses[ARAGON_VOTING_ADDRESS] = true + jest.spyOn(ethProvider, 'getVotingPower').mockResolvedValue(E.right(BigNumber(100))) + jest + .mocked(txEvent.filterLog) + .mockReturnValue([{ args: { voter: '0x123', assignedDelegate: '0x345' } }] as unknown as LogDescription[]) + + const findings = await aragonVotingSrv.handleAssignDelegateTransaction(txEvent) + + expect(findings).toEqual([]) + }) }) diff --git a/ethereum-governance/src/services/aragon-voting/AragonVoting.srv.ts b/ethereum-governance/src/services/aragon-voting/AragonVoting.srv.ts index 348cec61e..87d462e16 100644 --- a/ethereum-governance/src/services/aragon-voting/AragonVoting.srv.ts +++ b/ethereum-governance/src/services/aragon-voting/AragonVoting.srv.ts @@ -6,11 +6,24 @@ import { handleEventsOfNotice } from '../../shared/notice' import { Block, BlockEvent, Finding, FindingSeverity, FindingType, TransactionEvent, TxEventBlock } from 'forta-agent' -import { ARAGON_VOTING_ADDRESS, ONE_HOUR } from 'constants/common' - -import { PHASE_ONE_DURATION, TRIGGER_AFTER, FIVE_DAYS_BLOCKS, BLOCK_WINDOW } from 'constants/aragon-voting' - -import { CAST_VOTE_EVENT, ARAGON_VOTING_EVENTS_OF_NOTICE } from '../../shared/events/aragon_events' +import { ARAGON_VOTING_ADDRESS, ETH_DECIMALS, ONE_HOUR } from 'constants/common' + +import { + PHASE_ONE_DURATION, + TRIGGER_AFTER, + FIVE_DAYS_BLOCKS, + BLOCK_WINDOW, + PUBLIC_DELEGATES_MAP, +} from 'constants/aragon-voting' + +import { + CAST_VOTE_EVENT, + ARAGON_VOTING_EVENTS_OF_NOTICE, + ASSIGN_DELEGATE_EVENT, +} from '../../shared/events/aragon_events' +import { SIGNIFICANT_VP_AMOUNT } from '../../shared/constants' +import { formatBN2Str } from '../../shared/format' +import { etherscanAddress } from '../../shared/string' export enum Outcomes { Pass = 'Pass', @@ -33,7 +46,6 @@ export class AragonVotingSrv { public async initialize(currentBlock: number, hasBlockWindow = true): Promise { const start = new Date().getTime() - this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) this.hasBlockWindow = hasBlockWindow const votes = await this.ethProvider.getStartedVotes(currentBlock - FIVE_DAYS_BLOCKS, currentBlock) @@ -42,6 +54,7 @@ export class AragonVotingSrv { } this.activeVotes = votes.right + this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) return null } @@ -134,16 +147,18 @@ export class AragonVotingSrv { const findings: Finding[] = [] const start = new Date().getTime() - const [findingsAragonTransaction, findingsEventsOfNotice] = await Promise.all([ + const [findingsAragonTransaction, findingsEventsOfNotice, findingsDelegation] = await Promise.all([ this.handleAragonTransaction(txEvent), handleEventsOfNotice(txEvent, ARAGON_VOTING_EVENTS_OF_NOTICE), + this.handleAssignDelegateTransaction(txEvent), ]) - findings.push(...findingsAragonTransaction, ...findingsEventsOfNotice) + findings.push(...findingsAragonTransaction, ...findingsEventsOfNotice, ...findingsDelegation) this.logger.debug(elapsedTime(AragonVotingSrv.name + '.' + this.handleTransaction.name, start)) return findings } + public async handleAragonTransaction(txEvent: TransactionEvent) { const out: Finding[] = [] if (!txEvent.addresses[ARAGON_VOTING_ADDRESS]) { @@ -161,4 +176,40 @@ export class AragonVotingSrv { } return out } + + public async handleAssignDelegateTransaction(txEvent: TransactionEvent) { + const out: Finding[] = [] + if (!txEvent.addresses[ARAGON_VOTING_ADDRESS]) { + return out + } + + const events = txEvent.filterLog(ASSIGN_DELEGATE_EVENT, ARAGON_VOTING_ADDRESS) + for (const event of events) { + if (event) { + const votingPower = await this.ethProvider.getVotingPower(event.args.voter, txEvent.block.number) + + if (E.isLeft(votingPower)) { + throw votingPower.left + } + + if (votingPower.right.isGreaterThanOrEqualTo(SIGNIFICANT_VP_AMOUNT)) { + const vpFormatted = formatBN2Str(votingPower.right.div(ETH_DECIMALS)) + + const delegateName = + PUBLIC_DELEGATES_MAP[event.args.assignedDelegate.toLowerCase()] ?? event.args.assignedDelegate + + out.push( + Finding.fromObject({ + name: 'ℹ️ Big delegation', + description: `${vpFormatted} LDO was delegated to ${etherscanAddress(event.args.assignedDelegate, delegateName)} from ${etherscanAddress(event.args.voter)}.`, + alertId: 'ARAGON-SIGNIFICANT-DELEGATE', + severity: FindingSeverity.Info, + type: FindingType.Info, + }), + ) + } + } + } + return out + } } diff --git a/ethereum-governance/src/services/aragon-voting/contract.ts b/ethereum-governance/src/services/aragon-voting/contract.ts index f41357a4f..afedc7107 100644 --- a/ethereum-governance/src/services/aragon-voting/contract.ts +++ b/ethereum-governance/src/services/aragon-voting/contract.ts @@ -19,4 +19,5 @@ export abstract class IAragonVotingClient { toBlock: BlockTag, ): Promise>> public abstract getVote(voteId: number, toBlock: BlockTag): Promise> + public abstract getVotingPower(voter: string, block: BlockTag): Promise> } diff --git a/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.spec.ts b/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.spec.ts new file mode 100644 index 000000000..a50951d70 --- /dev/null +++ b/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.spec.ts @@ -0,0 +1,89 @@ +import { Logger } from 'winston' +import * as E from 'fp-ts/Either' +import { BlockEvent, TransactionEvent } from 'forta-agent' +import { ICrossChainClient } from './contract' +import { CrossChainWatcherSrv } from './CrossChainWatcher.srv' +import * as handlers from './handlers' +import * as notice from '../../shared/notice' +import { BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS } from '../../shared/events/cross_chain_events' + +describe('CrossChainWatcherSrv', () => { + let logger: Logger + let ethProvider: jest.Mocked + let crossChainSrv: CrossChainWatcherSrv + let txEvent: TransactionEvent + + beforeEach(() => { + logger = { info: jest.fn() } as unknown as Logger + ethProvider = { getBSCForwarderBridgeAdapterNames: jest.fn() } as unknown as jest.Mocked + crossChainSrv = new CrossChainWatcherSrv(logger, ethProvider) + }) + + afterAll(() => { + jest.restoreAllMocks() + }) + + it('initializes with BSC adapters successfully', async () => { + const bscAdapters = E.right(new Map([['adapter1', '0x123']])) + ethProvider.getBSCForwarderBridgeAdapterNames.mockResolvedValue(bscAdapters) + + await crossChainSrv.initialize(100) + + expect(E.isRight(bscAdapters)).toBe(true) + if (bscAdapters._tag !== 'Left') { + expect(crossChainSrv['bscAdapters']).toEqual(bscAdapters.right) + } + expect(ethProvider.getBSCForwarderBridgeAdapterNames).toHaveBeenCalled() + expect(logger.info).toHaveBeenCalled() + }) + + it('initializes with error fetching BSC adapters', async () => { + const error = E.left(new Error('Failed to fetch')) + ethProvider.getBSCForwarderBridgeAdapterNames.mockResolvedValue(error) + console.warn = jest.fn() + + await crossChainSrv.initialize(100) + + expect(crossChainSrv['bscAdapters']).toEqual(new Map()) + expect(console.warn).toHaveBeenCalledWith( + 'Error fetching BSC forwarder bridge adapter names: Failed to fetch. Adapter names substitutions will not be available.', + ) + expect(logger.info).toHaveBeenCalled() + }) + + it('returns the correct name', () => { + expect(crossChainSrv.getName()).toBe('CrossChainWatcherSrv') + }) + + it('calls handleBridgeBalance on handleBlock', async () => { + const block = { block: { number: 100 } } as unknown as BlockEvent + jest.spyOn(handlers, 'handleBridgeBalance').mockResolvedValue([]) + + const findings = await crossChainSrv.handleBlock(block) + + expect(findings).toEqual([]) + expect(handlers.handleBridgeBalance).toHaveBeenCalledWith(crossChainSrv['ethProvider'], block) + }) + + it('calls handleTransactionForwardingAttempt on handleTransaction', async () => { + const bscAdapters = new Map([['adapter1', '0x123']]) + crossChainSrv['bscAdapters'] = bscAdapters + txEvent = { transaction: { hash: '0x123' }, addresses: {} } as unknown as TransactionEvent + jest.spyOn(handlers, 'handleTransactionForwardingAttempt').mockResolvedValue([]) + + const findings = await crossChainSrv.handleTransaction(txEvent) + + expect(findings).toEqual([]) + expect(handlers.handleTransactionForwardingAttempt).toHaveBeenCalledWith(txEvent, bscAdapters) + }) + + it('calls handleEventsOfNotice on handleTransaction', async () => { + txEvent = { transaction: { hash: '0x123' }, addresses: {} } as unknown as TransactionEvent + jest.spyOn(notice, 'handleEventsOfNotice').mockReturnValue([]) + + const findings = await crossChainSrv.handleTransaction(txEvent) + + expect(findings).toEqual([]) + expect(notice.handleEventsOfNotice).toHaveBeenCalledWith(txEvent, BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS) + }) +}) diff --git a/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.srv.ts b/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.srv.ts new file mode 100644 index 000000000..5a173b3bb --- /dev/null +++ b/ethereum-governance/src/services/cross-chain-watcher/CrossChainWatcher.srv.ts @@ -0,0 +1,59 @@ +import { Logger } from 'winston' +import { elapsedTime } from '../../shared/time' +import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' +import { ICrossChainClient } from './contract' +import { BlockEvent, Finding } from 'forta-agent' +import { handleBridgeBalance, handleTransactionForwardingAttempt } from './handlers' +import * as E from 'fp-ts/Either' +import { handleEventsOfNotice } from '../../shared/notice' +import { BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS } from '../../shared/events/cross_chain_events' + +export class CrossChainWatcherSrv { + private readonly logger: Logger + private readonly name = 'CrossChainWatcherSrv' + private readonly ethProvider + private bscAdapters: Map = new Map() + + constructor(logger: Logger, ethProvider: ICrossChainClient) { + this.logger = logger + this.ethProvider = ethProvider + } + + public async initialize(currentBlock: number) { + const start = new Date().getTime() + + const bscAdapters = await this.ethProvider.getBSCForwarderBridgeAdapterNames() + if (E.isRight(bscAdapters)) { + this.bscAdapters = bscAdapters.right + } else { + console.warn( + `Error fetching BSC forwarder bridge adapter names: ${bscAdapters.left.message}. Adapter names substitutions will not be available.`, + ) + } + + this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) + return null + } + + public getName(): string { + return this.name + } + + public async handleBlock(block: BlockEvent): Promise { + const start = new Date().getTime() + + const findings = await handleBridgeBalance(this.ethProvider, block) + + this.logger.info(elapsedTime(CrossChainWatcherSrv.name + '.' + this.handleBlock.name, start)) + return findings + } + + public async handleTransaction(txEvent: TransactionEvent): Promise { + const out: Finding[] = [] + + out.push(...(await handleTransactionForwardingAttempt(txEvent, this.bscAdapters))) + out.push(...handleEventsOfNotice(txEvent, BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS)) + + return out + } +} diff --git a/ethereum-governance/src/services/cross-chain-watcher/contract.ts b/ethereum-governance/src/services/cross-chain-watcher/contract.ts new file mode 100644 index 000000000..fd6f3a3db --- /dev/null +++ b/ethereum-governance/src/services/cross-chain-watcher/contract.ts @@ -0,0 +1,7 @@ +import * as E from 'fp-ts/Either' +import { ethers } from 'forta-agent' + +export abstract class ICrossChainClient { + public abstract getBalance(address: string, tokenAddress?: string): Promise> + public abstract getBSCForwarderBridgeAdapterNames(): Promise>> +} diff --git a/ethereum-governance/src/services/cross-chain-watcher/handlers.spec.ts b/ethereum-governance/src/services/cross-chain-watcher/handlers.spec.ts new file mode 100644 index 000000000..cd8a1dbe5 --- /dev/null +++ b/ethereum-governance/src/services/cross-chain-watcher/handlers.spec.ts @@ -0,0 +1,238 @@ +import { handleBridgeBalance, handleTransactionForwardingAttempt } from './handlers' +import * as agent from 'forta-agent' +import * as E from 'fp-ts/Either' +import { BlockEvent, FindingSeverity, FindingType } from 'forta-agent' +import { + BRIDGE_ETH_MIN_BALANCE, + BRIDGE_LINK_MIN_BALANCE, + BSC_L1_CROSS_CHAIN_CONTROLLER, +} from '../../shared/constants/cross-chain/mainnet' +import { describe } from '@jest/globals' +import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' +import BigNumber from 'bignumber.js' + +describe('handleBridgeBalance', () => { + let event: BlockEvent + const mockProvider = { + getBalance: jest.fn(), + } + + beforeEach(() => { + const random = Math.floor(Math.random() * 1000) + event = { block: { number: 300 * random } } as BlockEvent + jest.spyOn(agent, 'getEthersProvider').mockReturnValue(mockProvider as never) + }) + + afterEach(() => { + jest.clearAllMocks() + }) + + it('returns an empty array if block number is not a multiple of BALANCE_CHECK_INTERVAL', async () => { + const event = { block: { number: 123 } } as BlockEvent + const findings = await handleBridgeBalance(mockProvider as never, event) + expect(findings).toEqual([]) + }) + + it('returns a finding if ETH balance is below the minimum threshold', async () => { + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * (BRIDGE_ETH_MIN_BALANCE - 0.1)))) + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * BRIDGE_LINK_MIN_BALANCE))) + + const findings = await handleBridgeBalance(mockProvider as never, event) + + expect(findings).toHaveLength(1) + expect(findings[0]).toMatchObject({ + name: '⚠️ Cross-chain bridge ETH balance is low (0.5 ETH min)', + severity: FindingSeverity.Medium, + type: FindingType.Info, + }) + }) + + it('returns a finding if LINK balance is below the minimum threshold', async () => { + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * BRIDGE_ETH_MIN_BALANCE))) + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * (BRIDGE_LINK_MIN_BALANCE - 0.1)))) + + const findings = await handleBridgeBalance(mockProvider as never, event) + + expect(findings).toHaveLength(1) + expect(findings[0]).toMatchObject({ + name: '⚠️ Cross-chain bridge LINK balance is low (5 LINK min)', + severity: FindingSeverity.Medium, + type: FindingType.Info, + }) + }) + + it('returns findings for both ETH and LINK balances below the minimum threshold', async () => { + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * (BRIDGE_ETH_MIN_BALANCE - 0.1)))) + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * (BRIDGE_LINK_MIN_BALANCE - 0.1)))) + + const findings = await handleBridgeBalance(mockProvider as never, event) + + expect(findings).toHaveLength(2) + }) + + it('returns an empty array if both ETH and LINK balances are above the minimum threshold', async () => { + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * BRIDGE_ETH_MIN_BALANCE))) + mockProvider.getBalance.mockResolvedValueOnce(E.right(BigNumber(1e18 * BRIDGE_LINK_MIN_BALANCE))) + + const findings = await handleBridgeBalance(mockProvider as never, event) + + expect(findings).toEqual([]) + }) + + it('returns an array of network errors if there are errors', async () => { + mockProvider.getBalance.mockResolvedValueOnce(E.left(new Error('Network ETH error'))) + mockProvider.getBalance.mockResolvedValueOnce(E.left(new Error('Network LINK error'))) + + const findings = await handleBridgeBalance(mockProvider as never, event) + + expect(findings).toHaveLength(2) + expect(findings[0].alertId).toEqual('NETWORK-ERROR') + expect(findings[1].alertId).toEqual('NETWORK-ERROR') + expect(findings[0].name).toEqual('handleBridgeBalance') + expect(findings[1].name).toEqual('handleBridgeBalance') + expect(findings[0].description).toEqual(`Error fetching bridge ETH balance on block ${event.block.number}`) + expect(findings[1].description).toEqual(`Error fetching bridge LINK balance on block ${event.block.number}`) + expect(findings[0].metadata).toMatchObject({ + message: 'Network ETH error', + }) + expect(findings[1].metadata).toMatchObject({ + message: 'Network LINK error', + }) + }) +}) + +describe('handleTransactionForwardingAttempt', () => { + it('returns findings for valid transaction forwarding attempt', async () => { + const txEvent = { + addresses: { [BSC_L1_CROSS_CHAIN_CONTROLLER]: true }, + filterLog: jest.fn().mockReturnValue([ + { + args: { + transactionId: '0x1', + envelopeId: '0x2', + encodedTransaction: '0x3', + destinationChainId: 56, + bridgeAdapter: '0x4', + destinationBridgeAdapter: '0x5', + adapterSuccessful: true, + returnData: '0x6', + }, + }, + ]), + } as unknown as TransactionEvent + const bscAdapters = new Map([['0x4', 'AdapterName']]) + + const findings = await handleTransactionForwardingAttempt(txEvent, bscAdapters) + + expect(findings).toHaveLength(1) + expect(findings[0]).toMatchObject({ + name: 'ℹ️ BNB a.DI: Message sent by the AdapterName', + description: 'Message was sent from L1 to BSC using AdapterName (envelopeId: 0x2)', + alertId: 'L1-BRIDGE-MESSAGE-SENT', + severity: FindingSeverity.Low, + type: FindingType.Info, + metadata: { args: expect.any(String) }, + }) + }) + + it('returns findings with default adapter name if adapter is not in map', async () => { + const txEvent = { + addresses: { [BSC_L1_CROSS_CHAIN_CONTROLLER]: true }, + filterLog: jest.fn().mockReturnValue([ + { + args: { + transactionId: '0x1', + envelopeId: '0x2', + encodedTransaction: '0x3', + destinationChainId: 56, + bridgeAdapter: '0x4', + destinationBridgeAdapter: '0x5', + adapterSuccessful: true, + returnData: '0x6', + }, + }, + ]), + } as unknown as TransactionEvent + const bscAdapters = new Map() + + const findings = await handleTransactionForwardingAttempt(txEvent, bscAdapters) + + expect(findings).toHaveLength(1) + expect(findings[0]).toMatchObject({ + name: 'ℹ️ BNB a.DI: Message sent by the 0x4 adapter', + description: 'Message was sent from L1 to BSC using 0x4 adapter (envelopeId: 0x2)', + alertId: 'L1-BRIDGE-MESSAGE-SENT', + severity: FindingSeverity.Low, + type: FindingType.Info, + metadata: { args: expect.any(String) }, + }) + }) + + it('returns no findings if BSC_L1_CROSS_CHAIN_CONTROLLER is not in addresses', async () => { + const txEvent = { + addresses: { ['0x2']: true }, + filterLog: jest.fn().mockReturnValue([]), + } as unknown as TransactionEvent + const bscAdapters = new Map() + + const findings = await handleTransactionForwardingAttempt(txEvent, bscAdapters) + + expect(findings).toEqual([]) + }) + + it('handles multiple transaction forwarding attempts', async () => { + const txEvent = { + addresses: { [BSC_L1_CROSS_CHAIN_CONTROLLER]: true }, + filterLog: jest.fn().mockReturnValue([ + { + args: { + transactionId: '0x1', + envelopeId: '0x2', + encodedTransaction: '0x3', + destinationChainId: 56, + bridgeAdapter: '0x4', + destinationBridgeAdapter: '0x5', + adapterSuccessful: true, + returnData: '0x6', + }, + }, + { + args: { + transactionId: '0x7', + envelopeId: '0x8', + encodedTransaction: '0x9', + destinationChainId: 56, + bridgeAdapter: '0xA', + destinationBridgeAdapter: '0xB', + adapterSuccessful: true, + returnData: '0xC', + }, + }, + ]), + } as unknown as TransactionEvent + const bscAdapters = new Map([ + ['0x4', 'AdapterName1'], + ['0xA', 'AdapterName2'], + ]) + + const findings = await handleTransactionForwardingAttempt(txEvent, bscAdapters) + + expect(findings).toHaveLength(2) + expect(findings[0]).toMatchObject({ + name: 'ℹ️ BNB a.DI: Message sent by the AdapterName1', + description: 'Message was sent from L1 to BSC using AdapterName1 (envelopeId: 0x2)', + alertId: 'L1-BRIDGE-MESSAGE-SENT', + severity: FindingSeverity.Low, + type: FindingType.Info, + metadata: { args: expect.any(String) }, + }) + expect(findings[1]).toMatchObject({ + name: 'ℹ️ BNB a.DI: Message sent by the AdapterName2', + description: 'Message was sent from L1 to BSC using AdapterName2 (envelopeId: 0x8)', + alertId: 'L1-BRIDGE-MESSAGE-SENT', + severity: FindingSeverity.Low, + type: FindingType.Info, + metadata: { args: expect.any(String) }, + }) + }) +}) diff --git a/ethereum-governance/src/services/cross-chain-watcher/handlers.ts b/ethereum-governance/src/services/cross-chain-watcher/handlers.ts new file mode 100644 index 000000000..7bcfd1055 --- /dev/null +++ b/ethereum-governance/src/services/cross-chain-watcher/handlers.ts @@ -0,0 +1,90 @@ +import * as E from 'fp-ts/Either' +import { BlockEvent, Finding, FindingSeverity, FindingType } from 'forta-agent' +import { + BRIDGE_ETH_MIN_BALANCE, + BRIDGE_LINK_MIN_BALANCE, + BSC_L1_CROSS_CHAIN_CONTROLLER, + LINK_TOKEN_ADDRESS, +} from '../../shared/constants/cross-chain/mainnet' +import { formatEther } from 'ethers/lib/utils' +import { networkAlert } from '../../shared/errors' +import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' +import { ICrossChainClient } from './contract' + +const BALANCE_CHECK_INTERVAL = 300 // 1 hour ≈ 300 blocks + +export async function handleBridgeBalance(ethProvider: ICrossChainClient, event: BlockEvent) { + if (event.block.number % BALANCE_CHECK_INTERVAL !== 0) { + return [] + } + const findings: Finding[] = [] + const ethBalance = await ethProvider.getBalance(BSC_L1_CROSS_CHAIN_CONTROLLER) + if (E.isLeft(ethBalance)) { + findings.push( + networkAlert( + ethBalance.left, + 'handleBridgeBalance', + `Error fetching bridge ETH balance on block ${event.block.number}`, + ), + ) + } + if (E.isRight(ethBalance) && ethBalance.right.lt(BigInt(1e18 * BRIDGE_ETH_MIN_BALANCE))) { + findings.push( + Finding.fromObject({ + name: '⚠️ Cross-chain bridge ETH balance is low (0.5 ETH min)', + description: `Bridge balance is low: ${formatEther(ethBalance.right.toString())} ETH`, + alertId: 'BRIDGE-ETH-BALANCE-LOW', + severity: FindingSeverity.Medium, + type: FindingType.Info, + metadata: { ethBalance: ethBalance.right.toString() }, + }), + ) + } + + const linkBalance = await ethProvider.getBalance(BSC_L1_CROSS_CHAIN_CONTROLLER, LINK_TOKEN_ADDRESS) + if (E.isLeft(linkBalance)) { + findings.push( + networkAlert( + linkBalance.left, + 'handleBridgeBalance', + `Error fetching bridge LINK balance on block ${event.block.number}`, + ), + ) + } + if (E.isRight(linkBalance) && linkBalance.right.lt(BigInt(1e18 * BRIDGE_LINK_MIN_BALANCE))) { + findings.push( + Finding.fromObject({ + name: '⚠️ Cross-chain bridge LINK balance is low (5 LINK min)', + description: `Bridge balance is low: ${formatEther(linkBalance.right.toString())} LINK`, + alertId: 'BRIDGE-LINK-BALANCE-LOW', + severity: FindingSeverity.Medium, + type: FindingType.Info, + metadata: { linkBalance: linkBalance.right.toString() }, + }), + ) + } + return findings +} + +export async function handleTransactionForwardingAttempt(txEvent: TransactionEvent, bscAdapters: Map) { + if (!(BSC_L1_CROSS_CHAIN_CONTROLLER in txEvent.addresses)) { + return [] + } + const eventSignature = + 'event TransactionForwardingAttempted(bytes32 transactionId, bytes32 indexed envelopeId, bytes encodedTransaction, uint256 destinationChainId, address indexed bridgeAdapter, address destinationBridgeAdapter, bool indexed adapterSuccessful, bytes returnData)' + const events = txEvent.filterLog(eventSignature, BSC_L1_CROSS_CHAIN_CONTROLLER) + + return events.map((event) => { + const adapterName = bscAdapters.get(event.args.bridgeAdapter) || event.args.bridgeAdapter + ' adapter' + const description = `Message was sent from L1 to BSC using ${adapterName} (envelopeId: ${event.args.envelopeId})` + + return Finding.fromObject({ + name: `ℹ️ BNB a.DI: Message sent by the ${adapterName}`, + description: description, + alertId: 'L1-BRIDGE-MESSAGE-SENT', + severity: FindingSeverity.Low, + type: FindingType.Info, + metadata: { args: String(event.args) }, + }) + }) +} diff --git a/ethereum-governance/src/services/easy-track/EasyTrack.spec.ts b/ethereum-governance/src/services/easy-track/EasyTrack.spec.ts index 1b523143d..37555ab9f 100644 --- a/ethereum-governance/src/services/easy-track/EasyTrack.spec.ts +++ b/ethereum-governance/src/services/easy-track/EasyTrack.spec.ts @@ -13,6 +13,7 @@ import { TopUpAllowedRecipients__factory } from '../../generated' import { ETH_DECIMALS } from '../../shared/constants' import { TOP_UP_ALLOWED_RECIPIENTS_CONTRACT } from '../../shared/constants/easy-track/mainnet' import { etherscanAddress, formatAmount } from '../../shared/string' +import { getMotionCreatorNamedLink } from './utils' describe('EasyTrackSrv', () => { let logger: Logger @@ -48,7 +49,7 @@ describe('EasyTrackSrv', () => { totalSigningKeys: BigNumber(100), stakingLimit: BigNumber(50), expectedName: 'ℹ️ EasyTrack: New motion created', - expectedDescription: 'New motion [1](https://easytrack.lido.fi/motions/1) created by 0x123', + expectedDescription: `New motion [1](https://easytrack.lido.fi/motions/1) created by ${getMotionCreatorNamedLink('0x123')}`, }, { name: 'Increase node operator staking limit motion', @@ -56,8 +57,7 @@ describe('EasyTrackSrv', () => { totalSigningKeys: BigNumber(100), stakingLimit: BigNumber(50), expectedName: 'ℹ️ EasyTrack: New motion created', - expectedDescription: - 'Increase node operator staking limit motion [1](https://easytrack.lido.fi/motions/1) created by 0x123\nOperator Test wants to increase staking limit to **50**.\nNo issues with keys! ✅', + expectedDescription: `Increase node operator staking limit motion [1](https://easytrack.lido.fi/motions/1) created by ${getMotionCreatorNamedLink('0x123')}\nOperator Test wants to increase staking limit to **50**.\nNo issues with keys! ✅`, }, { name: 'Increase node operator staking limit motion - not enough keys', @@ -65,8 +65,7 @@ describe('EasyTrackSrv', () => { totalSigningKeys: BigNumber(50), stakingLimit: BigNumber(100), expectedName: '⚠️️ EasyTrack: New motion created', - expectedDescription: - 'Increase node operator staking limit motion [1](https://easytrack.lido.fi/motions/1) created by 0x123\nOperator Test wants to increase staking limit to **100**.\nBut operator has not enough keys uploaded! ⚠️\nRequired: 100\nAvailable: 50', + expectedDescription: `Increase node operator staking limit motion [1](https://easytrack.lido.fi/motions/1) created by ${getMotionCreatorNamedLink('0x123')}\nOperator Test wants to increase staking limit to **100**.\nBut operator has not enough keys uploaded! ⚠️\nRequired: 100\nAvailable: 50`, }, ])( 'handles EasyTrack motion - $name', @@ -124,7 +123,7 @@ describe('EasyTrackSrv', () => { expect(findings).toHaveLength(1) expect(findings[0].name).toBe('ℹ️ EasyTrack: New motion created') expect(findings[0].description).toBe( - 'New motion [1](https://easytrack.lido.fi/motions/1) created by 0x123\nTop up STONKS:\n[stETH -> DAI](https://etherscan.io/address/0x3e2D251275A92a8169A3B17A2C49016e2de492a7) pair with 100.00 stETH', + `Top up recipients (Stonks stETH) motion [1](https://easytrack.lido.fi/motions/1) created by ${getMotionCreatorNamedLink('0x123')}\nTop up STONKS:\n[stETH -> DAI](https://etherscan.io/address/0x3e2D251275A92a8169A3B17A2C49016e2de492a7) pair with 100.00 stETH`, ) expect(findings[0].alertId).toBe('EASY-TRACK-MOTION-CREATED') }) @@ -186,7 +185,7 @@ describe('EasyTrackSrv', () => { expect(findings).toHaveLength(1) expect(findings[0].name).toBe('ℹ️ EasyTrack: New motion created') expect(findings[0].description).toBe( - `New motion [1](https://easytrack.lido.fi/motions/1) created by 0x123\n${expectedDescription}`, + `Top up recipients (ATC stETH) motion [1](https://easytrack.lido.fi/motions/1) created by ${getMotionCreatorNamedLink('0x123')}\n${expectedDescription}`, ) expect(findings[0].alertId).toBe('EASY-TRACK-MOTION-CREATED') }) diff --git a/ethereum-governance/src/services/easy-track/EasyTrack.srv.ts b/ethereum-governance/src/services/easy-track/EasyTrack.srv.ts index 3dba478b8..74109bbef 100644 --- a/ethereum-governance/src/services/easy-track/EasyTrack.srv.ts +++ b/ethereum-governance/src/services/easy-track/EasyTrack.srv.ts @@ -2,7 +2,6 @@ import { ethers, Finding, FindingSeverity, FindingType, getEthersProvider } from import { elapsedTime } from '../../shared/time' import { etherscanAddress, formatEth, getMotionLink, getMotionType } from '../../shared/string' import { TransactionEvent } from 'forta-agent/dist/sdk/transaction.event' -import { MOTION_CREATED_EVENT } from '../../shared/events/motion_created_events' import { Logger } from 'winston' import { IEasyTrackClient } from './contract' @@ -13,15 +12,13 @@ import { EASY_TRACK_STONKS_CONTRACTS, EASY_TRACK_TYPES_BY_FACTORIES, INCREASE_STAKING_LIMIT_ADDRESS, - SAFES, TOP_UP_ALLOWED_RECIPIENTS_CONTRACT, } from 'constants/easy-track' import * as E from 'fp-ts/Either' import { networkAlert } from '../../shared/errors' -import { EASY_TRACK_EVENTS } from '../../shared/events/easytrack_events' -import { STONKS } from 'constants/stonks' +import { EASY_TRACK_EVENTS, MOTION_CREATED_EVENT } from '../../shared/events/easytrack_events' import { TopUpAllowedRecipients__factory } from '../../generated' -import { Blockchain } from '../../shared/contracts' +import { getMotionCreatorNamedLink, getSafeNameByAddress, getStonksContractInfo } from './utils' export class EasyTrackSrv { private readonly logger: Logger @@ -71,7 +68,7 @@ export class EasyTrackSrv { let alertName = 'ℹ️ EasyTrack: New motion created' let description = `${getMotionType(EASY_TRACK_TYPES_BY_FACTORIES, args._evmScriptFactory)} ` + - `motion ${getMotionLink(args._motionId)} created by ${args._creator}` + `motion ${getMotionLink(args._motionId)} created by ${getMotionCreatorNamedLink(args._creator)}` if (args._evmScriptFactory.toLowerCase() == INCREASE_STAKING_LIMIT_ADDRESS) { const NOInfo = await this.ethProvider.getNOInfoByMotionData(args._evmScriptCallData) @@ -146,21 +143,3 @@ export const buildStonksTopUpDescription = async (args: ethers.utils.Result): Pr }) return `Top up STONKS:\n${descriptions.join('\n')}` } - -const getStonksContractInfo = (address: string) => { - return STONKS.find((c) => c.address === address) -} - -export const getSafeNameByAddress = (address: string) => { - let safeName = address - Object.keys(SAFES).forEach((key) => { - const safe = SAFES[key as Blockchain].find( - (safeData: string[]) => safeData[0].toLowerCase() === address.toLowerCase(), - ) - if (safe) { - safeName = safe[1] - return - } - }) - return safeName -} diff --git a/ethereum-governance/src/services/easy-track/utils.ts b/ethereum-governance/src/services/easy-track/utils.ts new file mode 100644 index 000000000..80c85ad55 --- /dev/null +++ b/ethereum-governance/src/services/easy-track/utils.ts @@ -0,0 +1,32 @@ +import { SAFES } from 'constants/easy-track' +import { STONKS } from 'constants/stonks' +import { getSafeAddress, etherscanAddress } from '../../shared/string' +import { Blockchain } from '../../shared/contracts' + +export const getMotionCreatorNamedLink = (address: string) => { + const ethSafes = SAFES.Ethereum + const safeName = ethSafes.find((safeData: string[]) => safeData[0].toLowerCase() === address.toLowerCase()) + if (safeName) { + return getSafeAddress(address, safeName[1]) + } else { + return etherscanAddress(address) + } +} + +export const getStonksContractInfo = (address: string) => { + return STONKS.find((c) => c.address === address) +} + +export const getSafeNameByAddress = (address: string) => { + let safeName = address + Object.keys(SAFES).forEach((key) => { + const safe = SAFES[key as Blockchain].find( + (safeData: string[]) => safeData[0].toLowerCase() === address.toLowerCase(), + ) + if (safe) { + safeName = safe[1] + return + } + }) + return safeName +} diff --git a/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.spec.ts b/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.spec.ts index 2db5fb7f5..0faf2444f 100644 --- a/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.spec.ts +++ b/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.spec.ts @@ -5,10 +5,11 @@ import { ProxyWatcherSrv } from './ProxyWatcher.srv' import { BlockEvent, FindingSeverity } from 'forta-agent' import * as constants from '../../shared/constants/proxy-watcher/mainnet' import { implementationFuncShortABI } from '../../shared/constants/proxy-watcher/mainnet' -import { IProxyContractData, LIDO_STETH_ADDRESS as lidoStethAddress } from '../../shared/constants/common/mainnet' +import { LIDO_STETH_ADDRESS as lidoStethAddress } from '../../shared/constants/common/mainnet' import { faker } from '@faker-js/faker' import { etherscanAddress } from '../../shared/string' import { expect } from '@jest/globals' +import { ProxyInfo } from '../../shared/types' describe('ProxyWatcherSrv', () => { let logger: Logger @@ -25,7 +26,7 @@ describe('ProxyWatcherSrv', () => { dataName = faker.music.songName() jest.mock('../../shared/constants/proxy-watcher/mainnet') - jest.mocked(constants).LIDO_PROXY_CONTRACTS_DATA = new Map([ + jest.mocked(constants).LIDO_PROXY_CONTRACTS_DATA = new Map([ [ lidoStethAddress, { @@ -38,8 +39,8 @@ describe('ProxyWatcherSrv', () => { }) it('initializes without errors', async () => { - jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right(['0x1234'])) - jest.spyOn(proxyWatcherSrv, 'handleProxyImplementations').mockResolvedValue([]) + jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right('0x1234')) + jest.spyOn(proxyWatcherSrv, 'handleProxyChanges').mockResolvedValue([]) await proxyWatcherSrv.initialize(100) @@ -48,22 +49,19 @@ describe('ProxyWatcherSrv', () => { it('initializes with network error', async () => { jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.left(new Error('Network error'))) - jest.spyOn(proxyWatcherSrv, 'handleProxyImplementations').mockResolvedValue([]) - await proxyWatcherSrv.initialize(100) - - const findings = await proxyWatcherSrv.handleBlock(blockEvent) - - expect(findings).toHaveLength(1) - expect(findings[0]).toMatchObject({ - name: 'Error in ProxyWatcherSrv.initialize (uid:bdbd1548)', - description: `Could not call ethProvider.getCode for address - ${lidoStethAddress}`, - alertId: 'NETWORK-ERROR', - }) + jest.spyOn(proxyWatcherSrv, 'handleProxyChanges').mockResolvedValue([]) + const error = await proxyWatcherSrv.initialize(100) + + expect(error).toEqual( + Error( + `Error in ${ProxyWatcherSrv.name}.${proxyWatcherSrv.initialize.name}. Could not call ethProvider.getCode for address - ${lidoStethAddress}`, + ), + ) }) it('initializes but proxy contract not found', async () => { jest.spyOn(ethProvider, 'isDeployed').mockResolvedValue(E.right(false)) - jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right(['0x1234'])) + jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right('0x1234')) await proxyWatcherSrv.initialize(100) const findings = await proxyWatcherSrv.handleBlock(blockEvent) @@ -82,22 +80,22 @@ describe('ProxyWatcherSrv', () => { }) it('handles block without error', async () => { - jest.spyOn(proxyWatcherSrv, 'handleProxyImplementations').mockResolvedValue([]) + jest.spyOn(proxyWatcherSrv, 'handleProxyChanges').mockResolvedValue([]) await expect(proxyWatcherSrv.handleBlock(blockEvent)).resolves.toEqual([]) }) it('handles proxy implementations without error', async () => { - jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right(['0x1234'])) - await proxyWatcherSrv.handleProxyImplementations(blockEvent) // add to prevProxyImplementations + jest.spyOn(ethProvider, 'getProxyImplementation').mockResolvedValue(E.right('0x1234')) + await proxyWatcherSrv.handleProxyChanges(blockEvent) // add to prevProxyImplementations - await expect(proxyWatcherSrv.handleProxyImplementations(blockEvent)).resolves.toEqual([]) + await expect(proxyWatcherSrv.handleProxyChanges(blockEvent)).resolves.toEqual([]) }) it('handles proxy contract self destruction', async () => { jest.spyOn(ethProvider, 'isDeployed').mockResolvedValue(E.right(false)) - await expect(proxyWatcherSrv.handleProxyImplementations(blockEvent)).resolves.toMatchObject([ + await expect(proxyWatcherSrv.handleProxyChanges(blockEvent)).resolves.toMatchObject([ { name: '🚨 Proxy contract selfdestructed', description: `Proxy contract ${dataName} ([${lidoStethAddress}](https://etherscan.io/address/${lidoStethAddress})) selfdestructed`, @@ -109,19 +107,19 @@ describe('ProxyWatcherSrv', () => { it('handles proxy contract self destruction only once per address', async () => { jest.spyOn(ethProvider, 'isDeployed').mockResolvedValue(E.right(false)) - await proxyWatcherSrv.handleProxyImplementations(blockEvent) // handle error add address to proxiesNoCode + await proxyWatcherSrv.handleProxyChanges(blockEvent) // handle error add address to proxiesNoCode - await expect(proxyWatcherSrv.handleProxyImplementations(blockEvent)).resolves.toEqual([]) // second call should not add a finding + await expect(proxyWatcherSrv.handleProxyChanges(blockEvent)).resolves.toEqual([]) // second call should not add a finding }) it('handles proxy contract change', async () => { jest .spyOn(ethProvider, 'getProxyImplementation') - .mockResolvedValueOnce(E.right(['0x1234'])) // first call - .mockResolvedValueOnce(E.right(['0x5678'])) // second call - await proxyWatcherSrv.handleProxyImplementations(blockEvent) // add to prevProxyImplementations + .mockResolvedValueOnce(E.right('0x1234')) // first call + .mockResolvedValueOnce(E.right('0x5678')) // second call + await proxyWatcherSrv.handleProxyChanges(blockEvent) // add to prevProxyImplementations - await expect(proxyWatcherSrv.handleProxyImplementations(blockEvent)).resolves.toMatchObject([ + await expect(proxyWatcherSrv.handleProxyChanges(blockEvent)).resolves.toMatchObject([ { name: '🚨 Proxy implementation changed', description: `Implementation of ${dataName} ([${lidoStethAddress}](https://etherscan.io/address/${lidoStethAddress})) changed from ${etherscanAddress('0x1234')} to ${etherscanAddress('0x5678')}`, @@ -134,13 +132,13 @@ describe('ProxyWatcherSrv', () => { it('handles proxy contract change with network error', async () => { jest .spyOn(ethProvider, 'getProxyImplementation') - .mockResolvedValueOnce(E.right(['0x1234'])) // first call + .mockResolvedValueOnce(E.right('0x1234')) // first call .mockResolvedValueOnce(E.left(new Error('Network error'))) // second call - await proxyWatcherSrv.handleProxyImplementations(blockEvent) // add to prevProxyImplementations + await proxyWatcherSrv.handleProxyChanges(blockEvent) // add to prevProxyImplementations - await expect(proxyWatcherSrv.handleProxyImplementations(blockEvent)).resolves.toMatchObject([ + await expect(proxyWatcherSrv.handleProxyChanges(blockEvent)).resolves.toMatchObject([ { - name: 'Error in ProxyWatcherSrv.handleProxyImplementations (uid:bdbd1548)', + name: 'Error in ProxyWatcherSrv.handleProxyChanges (uid:bdbd1548)', description: `Could not call ethProvider.getCode for address - ${lidoStethAddress}`, alertId: 'NETWORK-ERROR', }, diff --git a/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.srv.ts b/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.srv.ts index 05c5901c7..5f359bcd7 100644 --- a/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.srv.ts +++ b/ethereum-governance/src/services/proxy-watcher/ProxyWatcher.srv.ts @@ -6,6 +6,7 @@ import { Logger } from 'winston' import { networkAlert } from '../../shared/errors' import type { IProxyWatcherClient } from './contract' import { etherscanAddress } from '../../shared/string' +import { ProxyInfo } from '../../shared/types' export class ProxyWatcherSrv { private readonly logger: Logger @@ -20,47 +21,41 @@ export class ProxyWatcherSrv { this.logger = logger this.ethProvider = ethProvider } - public async initialize(currentBlock: number): Promise { + public async initialize(currentBlock: number): Promise { const start = new Date().getTime() - this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) - - await Promise.all( - Array.from(LIDO_PROXY_CONTRACTS_DATA.keys()).map(async (address: string) => { - const data = LIDO_PROXY_CONTRACTS_DATA.get(address) - const isDeployed = await this.ethProvider.isDeployed(address, currentBlock) - if (!E.isLeft(isDeployed) && !isDeployed.right) { - this.proxiesNoCode.push(address) - this.initFindings.push( - Finding.fromObject({ - name: '🚨 Proxy contract not found', - description: `Proxy contract ${data?.name} (${etherscanAddress(address)}) not found`, - alertId: 'PROXY-NOT-FOUND', - severity: FindingSeverity.Critical, - type: FindingType.Info, - }), - ) - return - } - - if (!data) { - return - } - const proxyImplementation = await this.ethProvider.getProxyImplementation(address, data, currentBlock) - if (E.isLeft(proxyImplementation)) { - this.initFindings.push( - networkAlert( - proxyImplementation.left, - `Error in ${ProxyWatcherSrv.name}.${this.initialize.name} (uid:bdbd1548)`, - `Could not call ethProvider.getCode for address - ${address}`, - ), - ) - return - } - this.prevProxyImplementations.set(address, String(proxyImplementation.right?.[0])) - }), - ) + for (const address of LIDO_PROXY_CONTRACTS_DATA.keys()) { + const proxyInfo = LIDO_PROXY_CONTRACTS_DATA.get(address) as ProxyInfo + const isDeployed = await this.ethProvider.isDeployed(address, currentBlock) + + if (!E.isLeft(isDeployed) && !isDeployed.right) { + this.proxiesNoCode.push(address) + + this.initFindings.push( + Finding.fromObject({ + name: '🚨 Proxy contract not found', + description: `Proxy contract ${proxyInfo.name} (${etherscanAddress(address)}) not found`, + alertId: 'PROXY-NOT-FOUND', + severity: FindingSeverity.Critical, + type: FindingType.Info, + }), + ) + + continue + } + + const proxyImplementation = await this.ethProvider.getProxyImplementation(address, proxyInfo, currentBlock) + + if (E.isLeft(proxyImplementation)) { + return Error( + `Error in ${ProxyWatcherSrv.name}.${this.initialize.name}. Could not call ethProvider.getCode for address - ${address}`, + ) + } else { + this.prevProxyImplementations.set(address, proxyImplementation.right) + } + } + this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) return null } @@ -70,81 +65,88 @@ export class ProxyWatcherSrv { public async handleBlock(blockEvent: BlockEvent) { const start = new Date().getTime() - const findings: Finding[] = [...this.initFindings] - - const [proxyImplementationsFindings] = await Promise.all([this.handleProxyImplementations(blockEvent)]) - - findings.push(...proxyImplementationsFindings) - - this.logger.info(elapsedTime(ProxyWatcherSrv.name + '.' + this.handleBlock.name, start)) + const findings: Finding[] = [] if (this.initFindings.length > 0) { + findings.push(...this.initFindings) this.initFindings = [] } + const proxyFindings = await this.handleProxyChanges(blockEvent) + findings.push(...proxyFindings) + + this.logger.info(elapsedTime(ProxyWatcherSrv.name + '.' + this.handleBlock.name, start)) return findings } - public async handleProxyImplementations(blockEvent: BlockEvent) { - const out: Finding[] = [] - await Promise.all( - Array.from(LIDO_PROXY_CONTRACTS_DATA.keys()).map(async (address: string) => { - if (this.proxiesNoCode.includes(address)) { - return - } - - const data = LIDO_PROXY_CONTRACTS_DATA.get(address) - const isDeployed = await this.ethProvider.isDeployed(address, blockEvent.blockNumber) + public async handleProxyChanges(blockEvent: BlockEvent) { + const blockNumber = blockEvent.blockNumber + const findings: Finding[] = [] + + for (const address of LIDO_PROXY_CONTRACTS_DATA.keys()) { + if (this.proxiesNoCode.includes(address)) { + continue + } + + const proxyInfo = LIDO_PROXY_CONTRACTS_DATA.get(address) as ProxyInfo + const isDeployed = await this.ethProvider.isDeployed(address, blockNumber) + + if (!E.isLeft(isDeployed) && !isDeployed.right) { + this.proxiesNoCode.push(address) + + findings.push( + Finding.fromObject({ + name: `🚨 Proxy contract selfdestructed`, + description: `Proxy contract ${proxyInfo.name} (${etherscanAddress(address)}) selfdestructed`, + alertId: `PROXY-SELFDESTRUCTED`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }), + ) + + continue + } + + const proxyImplementation = await this.ethProvider.getProxyImplementation(address, proxyInfo, blockNumber) + + if (E.isLeft(proxyImplementation)) { + findings.push( + networkAlert( + proxyImplementation.left, + `Error in ${ProxyWatcherSrv.name}.${this.handleProxyChanges.name} (uid:bdbd1548)`, + `Could not call ethProvider.getCode for address - ${address}`, + ), + ) + } else { + const prevImpl = this.prevProxyImplementations.get(address) - if (!E.isLeft(isDeployed) && !isDeployed.right) { - this.proxiesNoCode.push(address) - out.push( + if (!prevImpl) { + findings.push( Finding.fromObject({ - name: `🚨 Proxy contract selfdestructed`, - description: `Proxy contract ${data?.name} (${etherscanAddress(address)}) selfdestructed`, - alertId: `PROXY-SELFDESTRUCTED`, - severity: FindingSeverity.Critical, + name: `🚨 Proxy implementation not found`, + description: `Proxy implementation of ${proxyInfo.name} contract was not found`, + alertId: `PROXY-IMPL-NOT-FOUND`, + severity: FindingSeverity.High, type: FindingType.Info, }), ) - return - } - - if (!data) { - return - } - - const proxyImplementation = await this.ethProvider.getProxyImplementation(address, data, blockEvent.blockNumber) - - if (E.isLeft(proxyImplementation)) { - out.push( - networkAlert( - proxyImplementation.left, - `Error in ${ProxyWatcherSrv.name}.${this.handleProxyImplementations.name} (uid:bdbd1548)`, - `Could not call ethProvider.getCode for address - ${address}`, - ), - ) - return - } - - const prevImpl = this.prevProxyImplementations.get(address) - if (prevImpl != proxyImplementation.right?.[0]) { - out.push( + } else if (prevImpl.toLowerCase() != proxyImplementation.right.toLowerCase()) { + findings.push( Finding.fromObject({ name: `🚨 Proxy implementation changed`, - description: `Implementation of ${data.name} (${etherscanAddress(address)}) changed from ${ + description: `Implementation of ${proxyInfo.name} (${etherscanAddress(address)}) changed from ${ prevImpl ? etherscanAddress(prevImpl) : prevImpl - } to ${etherscanAddress(proxyImplementation.right?.[0])}`, + } to ${etherscanAddress(proxyImplementation.right)}`, alertId: `PROXY-IMPL-CHANGED`, severity: FindingSeverity.Critical, type: FindingType.Info, }), ) } - this.prevProxyImplementations.set(address, proxyImplementation.right?.[0]) - }), - ) + this.prevProxyImplementations.set(address, proxyImplementation.right) + } + } - return out + return findings } } diff --git a/ethereum-governance/src/services/proxy-watcher/contract.ts b/ethereum-governance/src/services/proxy-watcher/contract.ts index d3ca53c0c..382447f2c 100644 --- a/ethereum-governance/src/services/proxy-watcher/contract.ts +++ b/ethereum-governance/src/services/proxy-watcher/contract.ts @@ -1,11 +1,11 @@ import * as E from 'fp-ts/Either' -import { IProxyContractData } from '../../clients/eth_provider' +import { ProxyInfo } from '../../shared/types' export abstract class IProxyWatcherClient { public abstract isDeployed(address: string, blockNumber?: number): Promise> public abstract getProxyImplementation( address: string, - data: IProxyContractData, + data: ProxyInfo, currentBlock: number, - ): Promise> + ): Promise> } diff --git a/ethereum-governance/src/services/stonks/Stonks.spec.ts b/ethereum-governance/src/services/stonks/Stonks.spec.ts index 9b4ac9f59..ed4686aff 100644 --- a/ethereum-governance/src/services/stonks/Stonks.spec.ts +++ b/ethereum-governance/src/services/stonks/Stonks.spec.ts @@ -44,9 +44,9 @@ describe('StonksSrv', () => { const errMsg = faker.lorem.sentence() mocked(ethProvider.getStonksOrderEvents).mockResolvedValue(E.left(new Error(errMsg))) - await expect(stonksSrv.initialize(100)).rejects.toThrow( - new Error(`Could not initialize StonksSrv. Cause: Could not load created orders. Cause: Error: ${errMsg}`), - ) + const error = await stonksSrv.initialize(100) + + expect(error).toEqual(Error(errMsg)) }) it('fails on initialize if getStonksOrderParams fails', async () => { @@ -54,11 +54,9 @@ describe('StonksSrv', () => { mocked(ethProvider.getStonksOrderEvents).mockResolvedValue(E.right([])) mocked(ethProvider.getStonksOrderParams).mockResolvedValue(E.left(new Error(errMsg))) - await expect(stonksSrv.initialize(100)).rejects.toThrow( - new Error( - `Could not initialize StonksSrv. Cause: Could not load created orders. Cause: Error: Could not get tokenFrom or orderDuration for ${STONKS[0].address}`, - ), - ) + const error = await stonksSrv.initialize(100) + + expect(error).toEqual(Error(`Could not get tokenFrom or orderDuration for ${STONKS[0].address}`)) }) it('returns the correct name', () => { diff --git a/ethereum-governance/src/services/stonks/Stonks.srv.ts b/ethereum-governance/src/services/stonks/Stonks.srv.ts index ebfaab97e..b3428361e 100644 --- a/ethereum-governance/src/services/stonks/Stonks.srv.ts +++ b/ethereum-governance/src/services/stonks/Stonks.srv.ts @@ -41,8 +41,9 @@ export class StonksSrv { const initResult = await this.loadCreatedOrders(currentBlock.right) if (E.isLeft(initResult)) { - throw new Error(`Could not initialize ${this.name}. Cause: ${initResult.left}`) + return initResult.left } + return null } private async loadCreatedOrders(currentBlock: ethers.providers.Block) { @@ -82,7 +83,7 @@ export class StonksSrv { ) return E.right(null) } catch (e) { - return E.left(`Could not load created orders. Cause: ${e}`) + return E.left(e as Error) } } @@ -91,10 +92,16 @@ export class StonksSrv { } public async handleBlock(blockEvent: BlockEvent): Promise { + const start = new Date().getTime() if (blockEvent.blockNumber % BLOCK_WINDOW != 0) { + this.logger.info(`${StonksSrv.name}: skipping block ${blockEvent.blockNumber}`) return [] } - return this.handleOrderSettlement(blockEvent) + + const findings = await this.handleOrderSettlement(blockEvent) + + this.logger.info(elapsedTime(StonksSrv.name + '.' + this.handleBlock.name, start)) + return findings } public async handleTransaction(txEvent: TransactionEvent): Promise { diff --git a/ethereum-governance/src/services/trp-changes/TrpChanges.srv.ts b/ethereum-governance/src/services/trp-changes/TrpChanges.srv.ts index 2dca6b264..0ffa76f55 100644 --- a/ethereum-governance/src/services/trp-changes/TrpChanges.srv.ts +++ b/ethereum-governance/src/services/trp-changes/TrpChanges.srv.ts @@ -4,7 +4,7 @@ import { handleEventsOfNotice } from '../../shared/notice' import { Finding, TransactionEvent } from 'forta-agent' -import { TRP_EVENTS_OF_NOTICE } from '../../shared/events/trp_changes' +import { TRP_EVENTS_OF_NOTICE } from '../../shared/events/trp_events' export class TrpChangesSrv { private readonly logger: Logger diff --git a/ethereum-governance/src/shared/constants.ts b/ethereum-governance/src/shared/constants.ts index 9635d637d..3c7d16cf4 100644 --- a/ethereum-governance/src/shared/constants.ts +++ b/ethereum-governance/src/shared/constants.ts @@ -1,4 +1,5 @@ import BigNumber from 'bignumber.js' + export type ERC20 = { decimals: number name: string @@ -76,3 +77,5 @@ export const Address: Address = { KNOWN_ERC20, ENS_BASE_REGISTRAR_ADDRESS, } + +export const SIGNIFICANT_VP_AMOUNT = new BigNumber(500_000).multipliedBy(ETH_DECIMALS) diff --git a/ethereum-governance/src/shared/constants/acl-changes/mainnet.ts b/ethereum-governance/src/shared/constants/acl-changes/mainnet.ts index 665374861..666c41b7e 100644 --- a/ethereum-governance/src/shared/constants/acl-changes/mainnet.ts +++ b/ethereum-governance/src/shared/constants/acl-changes/mainnet.ts @@ -1,4 +1,5 @@ -import { INamedRole, roleByName } from '../../string' +import { keccak256 } from 'forta-agent' +import { roleByName } from '../../string' import { ACCOUNTING_ORACLE_ADDRESS as accountingOracleAddress, @@ -35,7 +36,17 @@ import { ANCHOR_VAULT_ADDRESS as anchorVaultAddress, EMERGENCY_BRAKES_MS_ADDRESS as emergencyMsAddress, DEV_MS_ADDRESS as devMsAddress, + CS_MODULE as csmAddress, + CS_ACCOUNTING as csmAccountingAddress, + CS_FEE_DISTRIBUTOR as csmFeeDistributorAddress, + CS_FEE_ORACLE as csmFeeOracleAddress, + CS_HASH_CONSENSUS as csmHashConsensusAddress, + CS_GATE_SEAL as csmGateSealAddress, + CS_COMMITTEE as csmCommitteeAddress, + CS_VERIFIER as csmVerifierAddress, } from 'constants/common' +import { BSC_L1_CROSS_CHAIN_CONTROLLER as bscL1CrossChainControllerAddress } from '../cross-chain/mainnet' +import { ContractRolesInfo, NamedRole, OwnableContractInfo } from '../../types' export const NEW_OWNER_IS_CONTRACT_REPORT_INTERVAL = 24 * 60 * 60 // 24h export const NEW_OWNER_IS_EOA_REPORT_INTERVAL = 60 * 60 // 1h @@ -82,61 +93,100 @@ export const WHITELISTED_OWNERS = [ devMsAddress, ] -// i.e. keccak256("APP_MANAGER_ROLE") -export const LIDO_ROLES = new Map([ - ['0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0', 'APP MANAGER ROLE'], - ['0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea', 'UNSAFELY MODIFY VOTE TIME ROLE'], - ['0xad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39', 'MODIFY QUORUM ROLE'], - ['0xda3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650', 'MODIFY SUPPORT ROLE'], - ['0xe7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc', 'CREATE VOTES ROLE'], - ['0x2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4', 'ISSUE ROLE'], - ['0xf5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff', 'ASSIGN ROLE'], - ['0xe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22', 'BURN ROLE'], - ['0x154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686', 'MINT ROLE'], - ['0x95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e', 'REVOKE VESTINGS ROLE'], - ['0x5de467a460382d13defdc02aacddc9c7d6605d6d4e0b8bd2f70732cae8ea17bc', 'CREATE PAYMENTS ROLE'], - ['0xd35e458bacdd5343c2f050f574554b2f417a8ea38d6a9a65ce2225dbe8bb9a9d', 'CHANGE PERIOD ROLE'], - ['0xd79730e82bfef7d2f9639b9d10bf37ebb662b22ae2211502a00bdf7b2cc3a23a', 'CHANGE BUDGETS ROLE'], - ['0x563165d3eae48bcb0a092543ca070d989169c98357e9a1b324ec5da44bab75fd', 'EXECUTE PAYMENTS ROLE'], - ['0x30597dd103acfaef0649675953d9cb22faadab7e9d9ed57acc1c429d04b80777', 'MANAGE PAYMENTS ROLE'], - ['0x5de467a460382d13defdc02aacddc9c7d6605d6d4e0b8bd2f70732cae8ea17bc', 'CREATE PAYMENTS ROLE'], - ['0x6eb2a499556bfa2872f5aa15812b956cc4a71b4d64eb3553f7073c7e41415aaa', 'ADD PROTECTED TOKEN ROLE'], - ['0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c', 'TRANSFER ROLE'], - ['0xb421f7ad7646747f3051c50c0b8e2377839296cd4973e27f63821d73e390338f', 'RUN SCRIPT ROLE'], - ['0x0a1ad7b87f5846153c6d5a1f761d71c7d0cfd122384f56066cd33239b7933694', 'SAFE EXECUTE ROLE'], - ['0x71eee93d500f6f065e38b27d242a756466a00a52a1dbcd6b4260f01a8640402a', 'REMOVE PROTECTED TOKEN ROLE'], - ['0x23ce341656c3f14df6692eebd4757791e33662b7dcf9970c8308303da5472b7c', 'DESIGNATE SIGNER ROLE'], - ['0xcebf517aa4440d1d125e0355aae64401211d0848a23c02cc5d29a14822580ba4', 'EXECUTE ROLE'], - ['0x0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a', 'CREATE PERMISSIONS ROLE'], - ['0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8', 'CREATE VERSION ROLE'], - ['0xbf4b1c236312ab76e456c7a8cca624bd2f86c74a4f8e09b3a26d60b1ce492183', 'SET NODE OPERATOR ADDRESS ROLE'], - ['0x58412970477f41493548d908d4307dfca38391d6bc001d56ffef86bd4f4a72e8', 'SET NODE OPERATOR NAME ROLE'], - ['0xe9367af2d321a2fc8d9c8f1e67f0fc1e2adf2f9844fb89ffa212619c713685b2', 'ADD NODE OPERATOR ROLE'], - ['0x18ad851afd4930ecc8d243c8869bd91583210624f3f1572e99ee8b450315c80f', 'REPORT STOPPED VALIDATORS ROLE'], - ['0xd856e115ac9805c675a51831fa7d8ce01c333d666b0e34b3fc29833b7c68936a', 'SET NODE OPERATOR ACTIVE ROLE'], - ['0x07b39e0faf2521001ae4e58cb9ffd3840a63e205d288dc9c93c3774f0d794754', 'SET NODE OPERATOR LIMIT ROLE'], - ['0xa5ffa9f45fa52c446078e834e1914561bd9c2ab1e833572d62af775da092ccbc', 'MANAGE QUORUM'], - ['0xe22a455f1bfbaf705ac3e891a64e156da92cb0b42cfc389158e6e82bd57f37be', 'SET BEACON REPORT RECEIVER'], - ['0xbf6336045918ae0015f4cdb3441a2fdbfaa4bcde6558c8692aac7f56c69fb067', 'MANAGE MEMBERS'], - ['0x16a273d48baf8111397316e6d961e6836913acb23b181e6c5fb35ec0bd2648fc', 'SET BEACON SPEC'], - ['0x44adaee26c92733e57241cb0b26ffaa2d182ed7120ba3ecd7e0dce3635c01dc1', 'SET REPORT BOUNDARIES'], - ['0x2fc10cc8ae19568712f7a176fb4978616a610650813c9d05326c34abb62749c7', 'RESUME ROLE'], - ['0x84ea57490227bc2be925c684e2a367071d69890b629590198f4125a018eb1de8', 'STAKING PAUSE ROLE'], - ['0xa42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f', 'STAKING CONTROL ROLE'], - ['0xeb7bfce47948ec1179e2358171d5ee7c821994c911519349b95313b685109031', 'MANAGE PROTOCOL CONTRACTS ROLE'], - ['0x9d68ad53a92b6f44b2e8fb18d211bf8ccb1114f6fafd56aa364515dfdf23c44f', 'SET EL REWARDS VAULT ROLE'], - ['0xca7d176c2da2028ed06be7e3b9457e6419ae0744dc311989e9b29f6a1ceb1003', 'SET EL REWARDS WITHDRAWAL LIMIT ROLE'], - ['0x2561bf26f818282a3be40719542054d2173eb0d38539e8a8d3cff22f29fd2384', 'DEPOSIT ROLE'], - ['0xbb75b874360e0bfd87f964eadd8276d8efb7c942134fc329b513032d0803e0c6', 'STAKING ROUTER ROLE'], -]) - -export interface IOwnable { - name: string - ownershipMethod: string +// This map is being used by AclChanges agent to convert role hashes to human-readable names +export const LIDO_ROLES: Partial> = { + [keccak256('APP_MANAGER_ROLE')]: 'APP MANAGER ROLE', + [keccak256('UNSAFELY_MODIFY_VOTE_TIME_ROLE')]: 'UNSAFELY MODIFY VOTE TIME ROLE', + [keccak256('MODIFY_QUORUM_ROLE')]: 'MODIFY QUORUM ROLE', + [keccak256('MODIFY_SUPPORT_ROLE')]: 'MODIFY SUPPORT ROLE', + [keccak256('CREATE_VOTES_ROLE')]: 'CREATE VOTES ROLE', + [keccak256('ISSUE_ROLE')]: 'ISSUE ROLE', + [keccak256('ASSIGN_ROLE')]: 'ASSIGN ROLE', + [keccak256('BURN_ROLE')]: 'BURN ROLE', + [keccak256('MINT_ROLE')]: 'MINT ROLE', + [keccak256('REVOKE_VESTINGS_ROLE')]: 'REVOKE VESTINGS ROLE', + [keccak256('CREATE_PAYMENTS_ROLE')]: 'CREATE PAYMENTS ROLE', + [keccak256('CHANGE_PERIOD_ROLE')]: 'CHANGE PERIOD ROLE', + [keccak256('CHANGE_BUDGETS_ROLE')]: 'CHANGE BUDGETS ROLE', + [keccak256('EXECUTE_PAYMENTS_ROLE')]: 'EXECUTE PAYMENTS ROLE', + [keccak256('MANAGE_PAYMENTS_ROLE')]: 'MANAGE PAYMENTS ROLE', + [keccak256('CREATE_PAYMENTS_ROLE')]: 'CREATE PAYMENTS ROLE', + [keccak256('ADD_PROTECTED_TOKEN_ROLE')]: 'ADD PROTECTED TOKEN ROLE', + [keccak256('TRANSFER_ROLE')]: 'TRANSFER ROLE', + [keccak256('RUN_SCRIPT_ROLE')]: 'RUN SCRIPT ROLE', + [keccak256('SAFE_EXECUTE_ROLE')]: 'SAFE EXECUTE ROLE', + [keccak256('REMOVE_PROTECTED_TOKEN_ROLE')]: 'REMOVE PROTECTED TOKEN ROLE', + [keccak256('DESIGNATE_SIGNER_ROLE')]: 'DESIGNATE SIGNER ROLE', + [keccak256('EXECUTE_ROLE')]: 'EXECUTE ROLE', + [keccak256('CREATE_PERMISSIONS_ROLE')]: 'CREATE PERMISSIONS ROLE', + [keccak256('CREATE_VERSION_ROLE')]: 'CREATE VERSION ROLE', + [keccak256('SET_NODE_OPERATOR_ADDRESS_ROLE')]: 'SET NODE OPERATOR ADDRESS ROLE', + [keccak256('SET_NODE_OPERATOR_NAME_ROLE')]: 'SET NODE OPERATOR NAME ROLE', + [keccak256('ADD_NODE_OPERATOR_ROLE')]: 'ADD NODE OPERATOR ROLE', + [keccak256('REPORT_STOPPED_VALIDATORS_ROLE')]: 'REPORT STOPPED VALIDATORS ROLE', + [keccak256('SET_NODE_OPERATOR_ACTIVE_ROLE')]: 'SET NODE OPERATOR ACTIVE ROLE', + [keccak256('SET_NODE_OPERATOR_LIMIT_ROLE')]: 'SET NODE OPERATOR LIMIT ROLE', + [keccak256('MANAGE_QUORUM')]: 'MANAGE QUORUM', + [keccak256('SET_BEACON_REPORT_RECEIVER')]: 'SET BEACON REPORT RECEIVER', + [keccak256('MANAGE_MEMBERS')]: 'MANAGE MEMBERS', + [keccak256('SET_BEACON_SPEC')]: 'SET BEACON SPEC', + [keccak256('SET_REPORT_BOUNDARIES')]: 'SET REPORT BOUNDARIES', + [keccak256('RESUME_ROLE')]: 'RESUME ROLE', + [keccak256('STAKING_PAUSE_ROLE')]: 'STAKING PAUSE ROLE', + [keccak256('STAKING_CONTROL_ROLE')]: 'STAKING CONTROL ROLE', + [keccak256('MANAGE_PROTOCOL_CONTRACTS_ROLE')]: 'MANAGE PROTOCOL CONTRACTS ROLE', + [keccak256('SET_EL_REWARDS_VAULT_ROLE')]: 'SET EL REWARDS VAULT ROLE', + [keccak256('SET_EL_REWARDS_WITHDRAWAL_LIMIT_ROLE')]: 'SET EL REWARDS WITHDRAWAL LIMIT ROLE', + [keccak256('DEPOSIT_ROLE')]: 'DEPOSIT ROLE', + [keccak256('STAKING_ROUTER_ROLE')]: 'STAKING ROUTER ROLE', + [keccak256('MANAGE_SIGNING_KEYS')]: 'MANAGE SIGNING KEYS', + [keccak256('STAKING_MODULE_PAUSE_ROLE')]: 'STAKING MODULE PAUSE ROLE', + [keccak256('STAKING_MODULE_RESUME_ROLE')]: 'STAKING MODULE RESUME ROLE', + [keccak256('STAKING_MODULE_UNVETTING_ROLE')]: 'STAKING MODULE UNVETTING ROLE', + [keccak256('MANAGE_CONSENSUS_VERSION_ROLE')]: 'MANAGE CONSENSUS VERSION ROLE', + [keccak256('REQUEST_BURN_SHARES_ROLE')]: 'REQUEST BURN SHARES ROLE', + [keccak256('MANAGE_MEMBERS_AND_QUORUM_ROLE')]: 'MANAGE MEMBERS AND QUORUM ROLE', + [keccak256('DEFAULT_ADMIN_ROLE')]: 'DEFAULT ADMIN ROLE', + [keccak256('CONFIG_MANAGER_ROLE')]: 'CONFIG MANAGER ROLE', + [keccak256('MANAGE_FAST_LANE_CONFIG_ROLE')]: 'MANAGE FAST LANE CONFIG ROLE', + [keccak256('MANAGE_REPORT_PROCESSOR_ROLE')]: 'MANAGE REPORT PROCESSOR ROLE', + [keccak256('MANAGE_FRAME_CONFIG_ROLE')]: 'MANAGE FRAME CONFIG ROLE', + [keccak256('DISABLE_CONSENSUS_ROLE')]: 'DISABLE CONSENSUS ROLE', + [keccak256('MANAGE_CONSENSUS_CONTRACT_ROLE')]: 'MANAGE CONSENSUS CONTRACT ROLE', + [keccak256('SUBMIT_DATA_ROLE')]: 'SUBMIT DATA ROLE', + [keccak256('PAUSE_ROLE')]: 'PAUSE ROLE', + [keccak256('REQUEST_BURN_MY_STETH_ROLE')]: 'REQUEST BURN MY STETH ROLE', + [keccak256('RECOVER_ASSETS_ROLE')]: 'RECOVER ASSETS ROLE', + [keccak256('ALL_LIMITS_MANAGER_ROLE')]: 'ALL LIMITS MANAGER ROLE', + [keccak256('CHURN_VALIDATORS_PER_DAY_LIMIT_MANGER_ROLE')]: 'CHURN VALIDATORS PER DAY LIMIT MANGER ROLE', + [keccak256('ONE_OFF_CL_BALANCE_DECREASE_LIMIT_MANAGER_ROLE')]: 'ONE OFF CL BALANCE DECREASE LIMIT MANAGER ROLE', + [keccak256('ANNUAL_BALANCE_INCREASE_LIMIT_MANAGER_ROLE')]: 'ANNUAL BALANCE INCREASE LIMIT MANAGER ROLE', + [keccak256('SHARE_RATE_DEVIATION_LIMIT_MANAGER_ROLE')]: 'SHARE RATE DEVIATION LIMIT MANAGER ROLE', + [keccak256('MAX_VALIDATOR_EXIT_REQUESTS_PER_REPORT_ROLE')]: 'MAX VALIDATOR EXIT REQUESTS PER REPORT ROLE', + [keccak256('MAX_ACCOUNTING_EXTRA_DATA_LIST_ITEMS_COUNT_ROLE')]: 'MAX ACCOUNTING EXTRA DATA LIST ITEMS COUNT ROLE', + [keccak256('MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_COUNT_ROLE')]: 'MAX NODE OPERATORS PER EXTRA DATA ITEM COUNT ROLE', + [keccak256('REQUEST_TIMESTAMP_MARGIN_MANAGER_ROLE')]: 'REQUEST TIMESTAMP MARGIN MANAGER ROLE', + [keccak256('MAX_POSITIVE_TOKEN_REBASE_MANAGER_ROLE')]: 'MAX POSITIVE TOKEN REBASE MANAGER ROLE', + [keccak256('APPEARED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE')]: 'APPEARED VALIDATORS PER DAY LIMIT MANAGER ROLE', + [keccak256('EXITED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE')]: 'EXITED VALIDATORS PER DAY LIMIT MANAGER ROLE', + [keccak256('ACCOUNTING_MANAGER_ROLE')]: 'ACCOUNTING MANAGER ROLE', + [keccak256('FINALIZE_ROLE')]: 'FINALIZE ROLE', + [keccak256('ORACLE_ROLE')]: 'ORACLE ROLE', + [keccak256('MANAGE_TOKEN_URI_ROLE')]: 'MANAGE TOKEN URI ROLE', + [keccak256('MANAGE_WITHDRAWAL_CREDENTIALS_ROLE')]: 'MANAGE WITHDRAWAL CREDENTIALS ROLE', + [keccak256('STAKING_MODULE_MANAGE_ROLE')]: 'STAKING MODULE MANAGE ROLE', + [keccak256('REPORT_EXITED_VALIDATORS_ROLE')]: 'REPORT EXITED VALIDATORS ROLE', + [keccak256('UNSAFE_SET_EXITED_VALIDATORS_ROLE')]: 'UNSAFE SET EXITED VALIDATORS ROLE', + [keccak256('REPORT_REWARDS_MINTED_ROLE')]: 'REPORT REWARDS MINTED ROLE', + [keccak256('RECOVERER_ROLE')]: 'RECOVERER ROLE', + [keccak256('RESET_BOND_CURVE_ROLE')]: 'RESET BOND CURVE ROLE', + [keccak256('SET_BOND_CURVE_ROLE')]: 'SET BOND CURVE ROLE', + [keccak256('MANAGE_BOND_CURVES_ROLE')]: 'MANAGE BOND CURVES ROLE', + [keccak256('CONTRACT_MANAGER_ROLE')]: 'CONTRACT MANAGER ROLE', } // List of contracts to monitor for owner -export const OWNABLE_CONTRACTS = new Map([ +export const OWNABLE_CONTRACTS = new Map([ [ dsAddress, { @@ -249,13 +299,43 @@ export const OWNABLE_CONTRACTS = new Map([ ownershipMethod: 'proxy__getAdmin', }, ], + [ + bscL1CrossChainControllerAddress, + { + name: 'EHT -> BSC cross chain controller', + ownershipMethod: 'owner', + }, + ], + [ + csmAddress, + { + name: 'Community Staking Module', + ownershipMethod: 'proxy__getAdmin', + }, + ], + [ + csmAccountingAddress, + { + name: 'CSM Accounting', + ownershipMethod: 'proxy__getAdmin', + }, + ], + [ + csmFeeDistributorAddress, + { + name: 'CSM FeeDistributor', + ownershipMethod: 'proxy__getAdmin', + }, + ], + [ + csmFeeOracleAddress, + { + name: 'CSM FeeOracle', + ownershipMethod: 'proxy__getAdmin', + }, + ], ]) -export interface IHasRoles { - name: string - roles: Map -} - export const ROLES_OWNERS = { agent: agentAddress, dsm: dsAddress, @@ -264,14 +344,24 @@ export const ROLES_OWNERS = { accountingOracle: accountingOracleAddress, lido: lidoStethAddress, gateSeal: gsAddress, + stakingRouter: srAddress, + evmExecutor: evmExecutorAddress, + csm: csmAddress, + csmAccounting: csmAccountingAddress, + csmFeeDistributor: csmFeeDistributorAddress, + csmFeeOracle: csmFeeOracleAddress, + csmHashConsensus: csmHashConsensusAddress, + csmGateSeal: csmGateSealAddress, + csmCommittee: csmCommitteeAddress, + csmVerifier: csmVerifierAddress, } -export const ACL_ENUMERABLE_CONTRACTS = new Map([ +export const ACL_ENUMERABLE_CONTRACTS = new Map([ [ oracleConfigAddress, { name: 'OracleDaemonConfig', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('CONFIG_MANAGER_ROLE'), []], ]), @@ -281,7 +371,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ accountingHashConsensusAddress, { name: 'Accounting HashConsensus', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], @@ -295,7 +385,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ebHashAddress, { name: 'Validators Exit Bus HashConsensus', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], @@ -309,7 +399,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ accountingOracleAddress, { name: 'Accounting Oracle', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_CONSENSUS_CONTRACT_ROLE'), []], [roleByName('MANAGE_CONSENSUS_VERSION_ROLE'), []], @@ -321,7 +411,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ebOracleAddress, { name: 'Validators Exit Bus Oracle', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('SUBMIT_DATA_ROLE'), []], [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.gateSeal]], @@ -335,13 +425,13 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ burnerAddress, { name: 'Burner', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('REQUEST_BURN_MY_STETH_ROLE'), [ROLES_OWNERS.agent]], [roleByName('RECOVER_ASSETS_ROLE'), []], [ roleByName('REQUEST_BURN_SHARES_ROLE'), - [ROLES_OWNERS.lido, ROLES_OWNERS.curatedNor, ROLES_OWNERS.simpleDvtNor], + [ROLES_OWNERS.lido, ROLES_OWNERS.curatedNor, ROLES_OWNERS.simpleDvtNor, ROLES_OWNERS.csmAccounting], ], ]), }, @@ -350,7 +440,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ checkerAddress, { name: 'Oracle Report Sanity Checker', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('ALL_LIMITS_MANAGER_ROLE'), []], [roleByName('CHURN_VALIDATORS_PER_DAY_LIMIT_MANGER_ROLE'), []], @@ -358,10 +448,12 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ [roleByName('ANNUAL_BALANCE_INCREASE_LIMIT_MANAGER_ROLE'), []], [roleByName('SHARE_RATE_DEVIATION_LIMIT_MANAGER_ROLE'), []], [roleByName('MAX_VALIDATOR_EXIT_REQUESTS_PER_REPORT_ROLE'), []], - [roleByName('MAX_ACCOUNTING_EXTRA_DATA_LIST_ITEMS_COUNT_ROLE'), [ROLES_OWNERS.agent]], - [roleByName('MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_COUNT_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('MAX_ACCOUNTING_EXTRA_DATA_LIST_ITEMS_COUNT_ROLE'), []], + [roleByName('MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_COUNT_ROLE'), []], [roleByName('REQUEST_TIMESTAMP_MARGIN_MANAGER_ROLE'), []], [roleByName('MAX_POSITIVE_TOKEN_REBASE_MANAGER_ROLE'), []], + [roleByName('APPEARED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE'), []], + [roleByName('EXITED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE'), []], ]), }, ], @@ -369,7 +461,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ wqAddress, { name: 'Withdrawal Queue', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.gateSeal]], [roleByName('RESUME_ROLE'), []], @@ -383,11 +475,10 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ srAddress, { name: 'Staking Router', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_WITHDRAWAL_CREDENTIALS_ROLE'), []], - [roleByName('STAKING_MODULE_PAUSE_ROLE'), [ROLES_OWNERS.dsm]], - [roleByName('STAKING_MODULE_RESUME_ROLE'), [ROLES_OWNERS.dsm]], + [roleByName('STAKING_MODULE_UNVETTING_ROLE'), [ROLES_OWNERS.dsm]], [roleByName('STAKING_MODULE_MANAGE_ROLE'), [ROLES_OWNERS.agent]], [roleByName('REPORT_EXITED_VALIDATORS_ROLE'), [ROLES_OWNERS.accountingOracle]], [roleByName('UNSAFE_SET_EXITED_VALIDATORS_ROLE'), []], @@ -395,4 +486,77 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ]), }, ], + [ + csmAddress, + { + name: 'Community Staking Module', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('MODULE_MANAGER_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('REPORT_EL_REWARDS_STEALING_PENALTY_ROLE'), [ROLES_OWNERS.csmCommittee]], + [roleByName('RESUME_ROLE'), []], + [roleByName('SETTLE_EL_REWARDS_STEALING_PENALTY_ROLE'), [ROLES_OWNERS.evmExecutor]], + [roleByName('STAKING_ROUTER_ROLE'), [ROLES_OWNERS.stakingRouter]], + [roleByName('VERIFIER_ROLE'), [ROLES_OWNERS.csmVerifier]], + ]), + }, + ], + [ + csmAccountingAddress, + { + name: 'CSM Accounting', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('ACCOUNTING_MANAGER_ROLE'), []], + [roleByName('MANAGE_BOND_CURVES_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('RESET_BOND_CURVE_ROLE'), [ROLES_OWNERS.csm, ROLES_OWNERS.csmCommittee]], + [roleByName('RESUME_ROLE'), []], + [roleByName('SET_BOND_CURVE_ROLE'), [ROLES_OWNERS.csm, ROLES_OWNERS.csmCommittee]], + ]), + }, + ], + [ + csmFeeDistributorAddress, + { + name: 'CSM FeeDistributor', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('RECOVERER_ROLE'), []], + ]), + }, + ], + [ + csmFeeOracleAddress, + { + name: 'CSM FeeOracle', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('CONTRACT_MANAGER_ROLE'), []], + [roleByName('MANAGE_CONSENSUS_CONTRACT_ROLE'), []], + [roleByName('MANAGE_CONSENSUS_VERSION_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('RESUME_ROLE'), []], + [roleByName('SUBMIT_DATA_ROLE'), []], + ]), + }, + ], + [ + csmHashConsensusAddress, + { + name: 'CSM HashConsensus', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('DISABLE_CONSENSUS_ROLE'), []], + [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], + [roleByName('MANAGE_FRAME_CONFIG_ROLE'), []], + [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), [ROLES_OWNERS.agent]], + [roleByName('MANAGE_REPORT_PROCESSOR_ROLE'), []], + ]), + }, + ], ]) diff --git a/ethereum-governance/src/shared/constants/acl-changes/testnet.ts b/ethereum-governance/src/shared/constants/acl-changes/testnet.ts index eb9e99706..1608e3b5e 100644 --- a/ethereum-governance/src/shared/constants/acl-changes/testnet.ts +++ b/ethereum-governance/src/shared/constants/acl-changes/testnet.ts @@ -1,4 +1,5 @@ -import { INamedRole, roleByName } from '../../string' +import { ContractRolesInfo, NamedRole, OwnableContractInfo } from '../../types' +import { roleByName } from '../../string' import { ACCOUNTING_ORACLE_ADDRESS as accountingOracleAddress, @@ -32,6 +33,14 @@ import { CURVE_LIQUIDITY_FARMING_MANAGER_ADDRESS as curveManagerAddress, EMERGENCY_BRAKES_MS_ADDRESS as emergencyMsAddress, DEV_MS_ADDRESS as devMsAddress, + CS_MODULE as csmAddress, + CS_ACCOUNTING as csmAccountingAddress, + CS_FEE_DISTRIBUTOR as csmFeeDistributorAddress, + CS_FEE_ORACLE as csmFeeOracleAddress, + CS_HASH_CONSENSUS as csmHashConsensusAddress, + CS_GATE_SEAL as csmGateSealAddress, + CS_COMMITTEE as csmCommitteeAddress, + CS_VERIFIER as csmVerifierAddress, } from 'constants/common' export const DEV_EOAs = [ @@ -82,61 +91,8 @@ export const WHITELISTED_OWNERS = [ ...DEV_EOAs, ] -// i.e. keccak256("APP_MANAGER_ROLE") -export const LIDO_ROLES = new Map([ - ['0xb6d92708f3d4817afc106147d969e229ced5c46e65e0a5002a0d391287762bd0', 'APP MANAGER ROLE'], - ['0x068ca51c9d69625c7add396c98ca4f3b27d894c3b973051ad3ee53017d7094ea', 'UNSAFELY MODIFY VOTE TIME ROLE'], - ['0xad15e7261800b4bb73f1b69d3864565ffb1fd00cb93cf14fe48da8f1f2149f39', 'MODIFY QUORUM ROLE'], - ['0xda3972983e62bdf826c4b807c4c9c2b8a941e1f83dfa76d53d6aeac11e1be650', 'MODIFY SUPPORT ROLE'], - ['0xe7dcd7275292e064d090fbc5f3bd7995be23b502c1fed5cd94cfddbbdcd32bbc', 'CREATE VOTES ROLE'], - ['0x2406f1e99f79cea012fb88c5c36566feaeefee0f4b98d3a376b49310222b53c4', 'ISSUE ROLE'], - ['0xf5a08927c847d7a29dc35e105208dbde5ce951392105d712761cc5d17440e2ff', 'ASSIGN ROLE'], - ['0xe97b137254058bd94f28d2f3eb79e2d34074ffb488d042e3bc958e0a57d2fa22', 'BURN ROLE'], - ['0x154c00819833dac601ee5ddded6fda79d9d8b506b911b3dbd54cdb95fe6c3686', 'MINT ROLE'], - ['0x95ffc68daedf1eb334cfcd22ee24a5eeb5a8e58aa40679f2ad247a84140f8d6e', 'REVOKE VESTINGS ROLE'], - ['0x5de467a460382d13defdc02aacddc9c7d6605d6d4e0b8bd2f70732cae8ea17bc', 'CREATE PAYMENTS ROLE'], - ['0xd35e458bacdd5343c2f050f574554b2f417a8ea38d6a9a65ce2225dbe8bb9a9d', 'CHANGE PERIOD ROLE'], - ['0xd79730e82bfef7d2f9639b9d10bf37ebb662b22ae2211502a00bdf7b2cc3a23a', 'CHANGE BUDGETS ROLE'], - ['0x563165d3eae48bcb0a092543ca070d989169c98357e9a1b324ec5da44bab75fd', 'EXECUTE PAYMENTS ROLE'], - ['0x30597dd103acfaef0649675953d9cb22faadab7e9d9ed57acc1c429d04b80777', 'MANAGE PAYMENTS ROLE'], - ['0x5de467a460382d13defdc02aacddc9c7d6605d6d4e0b8bd2f70732cae8ea17bc', 'CREATE PAYMENTS ROLE'], - ['0x6eb2a499556bfa2872f5aa15812b956cc4a71b4d64eb3553f7073c7e41415aaa', 'ADD PROTECTED TOKEN ROLE'], - ['0x8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c', 'TRANSFER ROLE'], - ['0xb421f7ad7646747f3051c50c0b8e2377839296cd4973e27f63821d73e390338f', 'RUN SCRIPT ROLE'], - ['0x0a1ad7b87f5846153c6d5a1f761d71c7d0cfd122384f56066cd33239b7933694', 'SAFE EXECUTE ROLE'], - ['0x71eee93d500f6f065e38b27d242a756466a00a52a1dbcd6b4260f01a8640402a', 'REMOVE PROTECTED TOKEN ROLE'], - ['0x23ce341656c3f14df6692eebd4757791e33662b7dcf9970c8308303da5472b7c', 'DESIGNATE SIGNER ROLE'], - ['0xcebf517aa4440d1d125e0355aae64401211d0848a23c02cc5d29a14822580ba4', 'EXECUTE ROLE'], - ['0x0b719b33c83b8e5d300c521cb8b54ae9bd933996a14bef8c2f4e0285d2d2400a', 'CREATE PERMISSIONS ROLE'], - ['0x1f56cfecd3595a2e6cc1a7e6cb0b20df84cdbd92eff2fee554e70e4e45a9a7d8', 'CREATE VERSION ROLE'], - ['0xbf4b1c236312ab76e456c7a8cca624bd2f86c74a4f8e09b3a26d60b1ce492183', 'SET NODE OPERATOR ADDRESS ROLE'], - ['0x58412970477f41493548d908d4307dfca38391d6bc001d56ffef86bd4f4a72e8', 'SET NODE OPERATOR NAME ROLE'], - ['0xe9367af2d321a2fc8d9c8f1e67f0fc1e2adf2f9844fb89ffa212619c713685b2', 'ADD NODE OPERATOR ROLE'], - ['0x18ad851afd4930ecc8d243c8869bd91583210624f3f1572e99ee8b450315c80f', 'REPORT STOPPED VALIDATORS ROLE'], - ['0xd856e115ac9805c675a51831fa7d8ce01c333d666b0e34b3fc29833b7c68936a', 'SET NODE OPERATOR ACTIVE ROLE'], - ['0x07b39e0faf2521001ae4e58cb9ffd3840a63e205d288dc9c93c3774f0d794754', 'SET NODE OPERATOR LIMIT ROLE'], - ['0xa5ffa9f45fa52c446078e834e1914561bd9c2ab1e833572d62af775da092ccbc', 'MANAGE QUORUM'], - ['0xe22a455f1bfbaf705ac3e891a64e156da92cb0b42cfc389158e6e82bd57f37be', 'SET BEACON REPORT RECEIVER'], - ['0xbf6336045918ae0015f4cdb3441a2fdbfaa4bcde6558c8692aac7f56c69fb067', 'MANAGE MEMBERS'], - ['0x16a273d48baf8111397316e6d961e6836913acb23b181e6c5fb35ec0bd2648fc', 'SET BEACON SPEC'], - ['0x44adaee26c92733e57241cb0b26ffaa2d182ed7120ba3ecd7e0dce3635c01dc1', 'SET REPORT BOUNDARIES'], - ['0x2fc10cc8ae19568712f7a176fb4978616a610650813c9d05326c34abb62749c7', 'RESUME ROLE'], - ['0x84ea57490227bc2be925c684e2a367071d69890b629590198f4125a018eb1de8', 'STAKING PAUSE ROLE'], - ['0xa42eee1333c0758ba72be38e728b6dadb32ea767de5b4ddbaea1dae85b1b051f', 'STAKING CONTROL ROLE'], - ['0xeb7bfce47948ec1179e2358171d5ee7c821994c911519349b95313b685109031', 'MANAGE PROTOCOL CONTRACTS ROLE'], - ['0x9d68ad53a92b6f44b2e8fb18d211bf8ccb1114f6fafd56aa364515dfdf23c44f', 'SET EL REWARDS VAULT ROLE'], - ['0xca7d176c2da2028ed06be7e3b9457e6419ae0744dc311989e9b29f6a1ceb1003', 'SET EL REWARDS WITHDRAWAL LIMIT ROLE'], - ['0x2561bf26f818282a3be40719542054d2173eb0d38539e8a8d3cff22f29fd2384', 'DEPOSIT ROLE'], - ['0xbb75b874360e0bfd87f964eadd8276d8efb7c942134fc329b513032d0803e0c6', 'STAKING ROUTER ROLE'], -]) - -export interface IOwnable { - name: string - ownershipMethod: string -} - // List of contracts to monitor for owner -export const OWNABLE_CONTRACTS = new Map([ +export const OWNABLE_CONTRACTS = new Map([ [ dsAddress, { @@ -202,11 +158,6 @@ export const OWNABLE_CONTRACTS = new Map([ ], ]) -export interface IHasRoles { - name: string - roles: Map -} - export const ROLES_OWNERS = { agent: agentAddress, dsm: dsAddress, @@ -214,14 +165,24 @@ export const ROLES_OWNERS = { accountingOracle: accountingOracleAddress, lido: lidoStethAddress, gateSeal: gsAddress, + stakingRouter: srAddress, + evmExecutor: evmExecutorAddress, + csm: csmAddress, + csmAccounting: csmAccountingAddress, + csmFeeDistributor: csmFeeDistributorAddress, + csmFeeOracle: csmFeeOracleAddress, + csmHashConsensus: csmHashConsensusAddress, + csmGateSeal: csmGateSealAddress, + csmCommittee: csmCommitteeAddress, + csmVerifier: csmVerifierAddress, } -export const ACL_ENUMERABLE_CONTRACTS = new Map([ +export const ACL_ENUMERABLE_CONTRACTS = new Map([ [ oracleConfigAddress, { name: 'OracleDaemonConfig', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('CONFIG_MANAGER_ROLE'), [DEV_EOAs[0]]], ]), @@ -231,7 +192,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ accountingHashConsensusAddress, { name: 'Accounting HashConsensus', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), [DEV_EOAs[0], ROLES_OWNERS.agent]], [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], @@ -245,7 +206,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ebHashAddress, { name: 'Validators Exit Bus HashConsensus', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), [DEV_EOAs[0], ROLES_OWNERS.agent]], [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], @@ -259,7 +220,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ accountingOracleAddress, { name: 'Accounting Oracle', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_CONSENSUS_CONTRACT_ROLE'), []], [roleByName('MANAGE_CONSENSUS_VERSION_ROLE'), []], @@ -271,7 +232,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ebOracleAddress, { name: 'Validators Exit Bus Oracle', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('SUBMIT_DATA_ROLE'), []], [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.gateSeal]], @@ -285,7 +246,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ burnerAddress, { name: 'Burner', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('REQUEST_BURN_MY_STETH_ROLE'), []], [roleByName('RECOVER_ASSETS_ROLE'), []], @@ -297,7 +258,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ checkerAddress, { name: 'Oracle Report Sanity Checker', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('ALL_LIMITS_MANAGER_ROLE'), []], [roleByName('CHURN_VALIDATORS_PER_DAY_LIMIT_MANGER_ROLE'), []], @@ -316,7 +277,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ wqAddress, { name: 'Withdrawal Queue', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.gateSeal]], [roleByName('RESUME_ROLE'), []], @@ -330,7 +291,7 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ srAddress, { name: 'Staking Router', - roles: new Map([ + roles: new Map([ [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent]], [roleByName('MANAGE_WITHDRAWAL_CREDENTIALS_ROLE'), []], [roleByName('STAKING_MODULE_PAUSE_ROLE'), [DEV_EOAs[4], DEV_EOAs[2]]], @@ -342,4 +303,77 @@ export const ACL_ENUMERABLE_CONTRACTS = new Map([ ]), }, ], + [ + csmAddress, + { + name: 'Community Staking Module', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent, ROLES_OWNERS.csmCommittee]], + [roleByName('MODULE_MANAGER_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('REPORT_EL_REWARDS_STEALING_PENALTY_ROLE'), [ROLES_OWNERS.csmCommittee]], + [roleByName('RESUME_ROLE'), []], + [roleByName('SETTLE_EL_REWARDS_STEALING_PENALTY_ROLE'), [ROLES_OWNERS.evmExecutor]], + [roleByName('STAKING_ROUTER_ROLE'), [ROLES_OWNERS.stakingRouter]], + [roleByName('VERIFIER_ROLE'), [ROLES_OWNERS.csmVerifier]], + ]), + }, + ], + [ + csmAccountingAddress, + { + name: 'CSM Accounting', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent, ROLES_OWNERS.csmCommittee]], + [roleByName('ACCOUNTING_MANAGER_ROLE'), []], + [roleByName('MANAGE_BOND_CURVES_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('RESET_BOND_CURVE_ROLE'), [ROLES_OWNERS.csm, ROLES_OWNERS.csmCommittee]], + [roleByName('RESUME_ROLE'), []], + [roleByName('SET_BOND_CURVE_ROLE'), [ROLES_OWNERS.csm, ROLES_OWNERS.csmCommittee]], + ]), + }, + ], + [ + csmFeeDistributorAddress, + { + name: 'CSM FeeDistributor', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent, ROLES_OWNERS.csmCommittee]], + [roleByName('RECOVERER_ROLE'), []], + ]), + }, + ], + [ + csmFeeOracleAddress, + { + name: 'CSM FeeOracle', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent, ROLES_OWNERS.csmCommittee]], + [roleByName('CONTRACT_MANAGER_ROLE'), []], + [roleByName('MANAGE_CONSENSUS_CONTRACT_ROLE'), []], + [roleByName('MANAGE_CONSENSUS_VERSION_ROLE'), []], + [roleByName('PAUSE_ROLE'), [ROLES_OWNERS.csmGateSeal]], + [roleByName('RECOVERER_ROLE'), []], + [roleByName('RESUME_ROLE'), []], + [roleByName('SUBMIT_DATA_ROLE'), []], + ]), + }, + ], + [ + csmHashConsensusAddress, + { + name: 'CSM HashConsensus', + roles: new Map([ + [roleByName('DEFAULT_ADMIN_ROLE'), [ROLES_OWNERS.agent, ROLES_OWNERS.csmCommittee]], + [roleByName('DISABLE_CONSENSUS_ROLE'), []], + [roleByName('MANAGE_FAST_LANE_CONFIG_ROLE'), []], + [roleByName('MANAGE_FRAME_CONFIG_ROLE'), []], + [roleByName('MANAGE_MEMBERS_AND_QUORUM_ROLE'), []], + [roleByName('MANAGE_REPORT_PROCESSOR_ROLE'), []], + ]), + }, + ], ]) diff --git a/ethereum-governance/src/shared/constants/aragon-voting/mainnet.ts b/ethereum-governance/src/shared/constants/aragon-voting/mainnet.ts index 750b99ed0..ae0502fdc 100644 --- a/ethereum-governance/src/shared/constants/aragon-voting/mainnet.ts +++ b/ethereum-governance/src/shared/constants/aragon-voting/mainnet.ts @@ -11,3 +11,43 @@ export const TRIGGER_AFTER = 46 * ONE_HOUR // 48 hours export const PHASE_ONE_DURATION = 48 * ONE_HOUR + +// The list of public delegates was provided by DAO Ops workstream member +export const PUBLIC_DELEGATES_MAP: Record = { + '0x33379367200ac200182ccd4abd71683f2d24e373': 'Matt Stam', + '0x3ddc7d25c7a1dc381443e491bbf1caa8928a05b0': 'Ignas', + '0xb933aee47c438f22de0747d57fc239fe37878dd1': 'Wintermute Governance', + '0x8ab6612bbcf7e133a6bb03b3264718d30f25e0ba': 'WPRC (WhitePaper Reading Club)', + '0xb79294d00848a3a4c00c22d9367f19b4280689d7': 'Tane', + '0xc1c2e8a21b86e41d1e706c232a2db5581b3524f8': 'SEEDOrg', + '0x42e6dd8d517abb3e4f6611ca53a8d1243c183fb0': 'Anthony Leuts', + '0x2d7d6ec6198adfd5850d00bd601958f6e316b05e': 'Sov', + '0x1f76a6bf03429480472b3695e08689219ce15ed6': 'Polar', + '0x2cc1ade245020fc5aae66ad443e1f66e01c54df1': 'TokenLogic', + '0xff4139e99bd7c23f4611dc660c33c97a825ea67b': 'BlockworksResearch', + '0x3b9f47629cd4d5903cf3eb897aac4f6b41dd2589': 'Blockful (Daniela Zschaber)', + '0x8787fc2de4de95c53e5e3a4e5459247d9773ea52': 'karpatkey', + '0xecc2a9240268bc7a26386ecb49e1befca2706ac9': 'StableLab', + '0xbeb3364d14dbb4d9a406966b97b9fb3ff8ab7646': 'DegentradingLSD', + '0x000b4369b71b6634f27f5de9cbaaabb0d21b8be5': 'NodeSoda', + '0x5ef980c7bda50c81e8fb13dff2b804113065ed1c': 'eboadom (Ernesto)', + '0x4f894bfc9481110278c356ade1473ebe2127fd3c': 'ReservoirDAO', + '0x070341aa5ed571f0fb2c4a5641409b1a46b4961b': 'FranklinDAO', + '0x61cc8f06f3b6e1a3fba28cbebc4c89304b1187d1': 'Mog', + '0xb6647e02ae6dd74137cb80b1c24333852e4af890': 'Pol Lanski', + '0xce3b1e215f379a5eddbc1ee80a6de089c0b92e55': 'notjamiedimon', + '0x06a90756e57bc7a016eed0ab23fc36d11c42bba0': 'Irina', + '0x98308b6da79b47d15e9438cb66831563649dbd94': 'marcbcs', + '0x04827a54f2e345467beafefb9ef76cb2f2c62d83': 'Daedalus Collective', + '0x7a5959855b6508af1055af460331fb697dd08e22': 'ProRelGuild', + '0xf163d77b8efc151757fecba3d463f3bac7a4d808': 'Today in DeFi', + '0x18c674f655594f15c490aeeac737895b7903e37f': 'Next Finance Tech', + '0x6f9bb7e454f5b3eb2310343f0e99269dc2bb8a1d': 'cp0x', + '0xcedf324843775c9e7f695251001531798545614b': 'Simply Staking', + '0x6de8448e7d5f58af394cc9540abe703d0c955dfd': 'Boardroom', + '0xc3a673736415bbf5ba8a8e0642ec3ab16f4ada24': 'Proof Group', + '0x58b1b454dbe5156acc8fc2139e7238451b59f432': 'Lemma Solutions', + '0xa4181c75495f60106ae539b7c55c0d263f2fb737': 'Nansen', + '0x057928bc52bd08e4d7ce24bf47e01ce99e074048': 'DAOplomats', + '0x3fb19771947072629c8eee7995a2ef23b72d4c8a': 'PGov.eth', +} diff --git a/ethereum-governance/src/shared/constants/common/mainnet.ts b/ethereum-governance/src/shared/constants/common/mainnet.ts index cf2b68f16..928cb4c1a 100644 --- a/ethereum-governance/src/shared/constants/common/mainnet.ts +++ b/ethereum-governance/src/shared/constants/common/mainnet.ts @@ -8,8 +8,8 @@ export const LIDO_STETH_ADDRESS = '0xae7ab96520de3a18e5e111b5eaab095312d7fe84' export const WSTETH_ADDRESS = '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' export const STAKING_ROUTER_ADDRESS = '0xfddf38947afb03c621c71b06c9c70bce73f12999' export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = '0x55032650b14df07b85bf18a3a3ec8e0af2e028d5' -export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = '0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433' -export const DEPOSIT_SECURITY_ADDRESS = '0xc77f8768774e1c9244beed705c4354f2113cfc09' +export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = '0xae7b191a31f627b4eb1d4dac64eab9976995b433' +export const DEPOSIT_SECURITY_ADDRESS = '0xffa96d84def2ea035c7ab153d8b991128e3d72fd' export const EL_REWARDS_VAULT_ADDRESS = '0x388c818ca8b9251b393131c08a736a67ccb19297' export const WITHDRAWALS_QUEUE_ADDRESS = '0x889edc2edab5f40e902b864ad4d7ade8e412f9b1' export const WITHDRAWALS_VAULT_ADDRESS = '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f' @@ -21,10 +21,20 @@ export const ACCOUNTING_ORACLE_ADDRESS = '0x852ded011285fe67063a08005c71a8569050 export const ACCOUNTING_HASH_CONSENSUS_ADDRESS = '0xd624b08c83baecf0807dd2c6880c3154a5f0b288' export const EXITBUS_ORACLE_ADDRESS = '0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e' export const EXITBUS_HASH_CONSENSUS_ADDRESS = '0x7fadb6358950c5faa66cb5eb8ee5147de3df355a' -export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = '0x9305c1dbfe22c12c66339184c0025d7006f0f1cc' +export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = '0x6232397ebac4f5772e53285b26c47914e9461e75' export const ORACLE_DAEMON_CONFIG_ADDRESS = '0xbf05a929c3d7885a6aead833a992da6e5ac23b09' export const LEGACY_ORACLE_ADDRESS = '0x442af784a788a5bd6f42a01ebe9f287a871243fb' +// CSM Contracts +export const CS_MODULE = '0xda7de2ecddfccc6c3af10108db212acbbf9ea83f' +export const CS_ACCOUNTING = '0x4d72bff1beac69925f8bd12526a39baab069e5da' +export const CS_FEE_DISTRIBUTOR = '0xd99cc66fec647e68294c6477b40fc7e0f6f618d0' +export const CS_FEE_ORACLE = '0x4d4074628678bd302921c20573eea1ed38ddf7fb' +export const CS_HASH_CONSENSUS = '0x71093eff8d8599b5fa340d665ad60fa7c80688e4' +export const CS_GATE_SEAL = '0x5cfca30450b1e5548f140c24a47e36c10ce306f0' +export const CS_VERIFIER = '0x3dfc50f22aca652a0a6f28a0f892ab62074b5583' +export const CS_COMMITTEE = '0xc52fc3081123073078698f1eac2f1dc7bd71880f' + // Lido DAO Contracts export const LIDO_DAO_ADDRESS = '0xb8ffc3cd6e7cf5a098a1c92f48009765b24088dc' export const LDO_ADDRESS = '0x5a98fcbea516cf06857215779fd812ca3bef1b32' @@ -74,8 +84,3 @@ export const ONE_YEAR = 365 * ONE_DAY // 1 ETH export const ETH_DECIMALS = new BigNumber(10).pow(18) - -export interface IProxyContractData { - name: string - shortABI: string -} diff --git a/ethereum-governance/src/shared/constants/common/testnet.ts b/ethereum-governance/src/shared/constants/common/testnet.ts index 41bd4d008..422f32e96 100644 --- a/ethereum-governance/src/shared/constants/common/testnet.ts +++ b/ethereum-governance/src/shared/constants/common/testnet.ts @@ -24,6 +24,16 @@ export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = '0xbf74600040F91D3560d575728 export const ORACLE_DAEMON_CONFIG_ADDRESS = '0xe9cc5bd91543cdc9788454ee5063e2cd76b5206d' export const LEGACY_ORACLE_ADDRESS = '0x24d8451BC07e7aF4Ba94F69aCDD9ad3c6579D9FB' +// CSM Contracts +export const CS_MODULE = '0x4562c3e63c2e586cd1651b958c22f88135acad4f ' +export const CS_ACCOUNTING = '0xc093e53e8f4b55a223c18a2da6fa00e60dd5efe1 ' +export const CS_FEE_DISTRIBUTOR = '0xd7ba648c8f72669c6ae649648b516ec03d07c8ed ' +export const CS_FEE_ORACLE = '0xaf57326c7d513085051b50912d51809ecc5d98ee ' +export const CS_HASH_CONSENSUS = '0xbf38618ea09b503c1ded867156a0ea276ca1ae37' +export const CS_GATE_SEAL = '0x41f2677fae0222cf1f08cd1c0aaa607b469654ce' +export const CS_VERIFIER = '0x6fdaa094227cf8e1593f9fb9c1b867c1f846f916' +export const CS_COMMITTEE = '0xc4DAB3a3ef68C6DFd8614a870D64D475bA44F164' + // Lido DAO Contracts export const LIDO_DAO_ADDRESS = '0x1dD91b354Ebd706aB3Ac7c727455C7BAA164945A' export const LDO_ADDRESS = '0x56340274fB5a72af1A3C6609061c451De7961Bd4' @@ -70,8 +80,3 @@ export const ONE_YEAR = 365 * ONE_DAY // 1 ETH export const ETH_DECIMALS = new BigNumber(10).pow(18) - -export interface IProxyContractData { - name: string - shortABI: string -} diff --git a/ethereum-governance/src/shared/constants/cross-chain/mainnet.ts b/ethereum-governance/src/shared/constants/cross-chain/mainnet.ts new file mode 100644 index 000000000..f7cd0fdfd --- /dev/null +++ b/ethereum-governance/src/shared/constants/cross-chain/mainnet.ts @@ -0,0 +1,9 @@ +export const BSC_CHAIN_ID = 56 +export const BRIDGE_ETH_MIN_BALANCE = 0.45 +export const BRIDGE_LINK_MIN_BALANCE = 5 + +// https://docs.lido.fi/deployed-contracts/#adi-governance-forwarding +export const BSC_L1_CROSS_CHAIN_CONTROLLER = '0x93559892d3c7f66de4570132d68b69bd3c369a7c' + +// https://docs.chain.link/resources/link-token-contracts#ethereum-mainnet +export const LINK_TOKEN_ADDRESS = '0x514910771AF9Ca656af840dff83E8264EcF986CA' diff --git a/ethereum-governance/src/shared/constants/easy-track/mainnet.ts b/ethereum-governance/src/shared/constants/easy-track/mainnet.ts index 00ae37261..cdee10aee 100644 --- a/ethereum-governance/src/shared/constants/easy-track/mainnet.ts +++ b/ethereum-governance/src/shared/constants/easy-track/mainnet.ts @@ -20,8 +20,8 @@ export const EASY_TRACK_TYPES_BY_FACTORIES = new Map([ ['0x1dcfc37719a99d73a0ce25ceecbefbf39938cf2c', 'Add recipient (reWARDS)'], ['0x00bb68a12180a8f7e20d8422ba9f81c07a19a79e', 'Remove recipient (reWARDS)'], ['0x85d703b2a4bad713b596c647badac9a1e95bb03d', 'Top up recipients (reWARDS)'], - ['0x00caaef11ec545b192f16313f53912e453c91458', 'Top up recipients (Lego LDO)'], - ['0x0535a67ea2d6d46f85fe568b7eaa91ca16824fec', 'Top up recipients (Lego DAI)'], + ['0x00caaef11ec545b192f16313f53912e453c91458', 'Top up recipients (LEGO LDO)'], + ['0x0535a67ea2d6d46f85fe568b7eaa91ca16824fec', 'Top up recipients (LEGO DAI)'], ['0x84f74733ede9bfd53c1b3ea96338867c94ec313e', 'Top up recipients (RCC DAI)'], ['0x4e6d3a5023a38ce2c4c5456d3760357fd93a22cd', 'Top up recipients (PML DAI)'], ['0x67fb97abb9035e2e93a7e3761a0d0571c5d7cd07', 'Top up recipients (ATC DAI)'], @@ -31,6 +31,20 @@ export const EASY_TRACK_TYPES_BY_FACTORIES = new Map([ ['0x935cb3366faf2cfc415b2099d1f974fd27202b77', 'Add recipient (stETH reWARDS)'], ['0x22010d1747cafc370b1f1fbba61022a313c5693b', 'Remove recipient (stETH reWARDS)'], ['0x1f2b79fe297b7098875930bba6dd17068103897e', 'Top up recipients (stETH reWARDS)'], + ['0xe5656eee7eed02bde009d77c88247bc8271e26eb', 'Top up recipients (Alliance Ops stablecoins)'], + ['0x87b02df27cd6ec128532add7c8bc19f62e6f1fb9', 'Top up recipients (ATC stETH)'], + ['0x6e04aed774b7c89bb43721acdd7d03c872a51b69', 'Top up recipients (Stonks stETH)'], + ['0x41cf3dbdc939c5115823fba1432c4ec5e7bd226c', 'Update target validator limits (SDVT)'], + ['0xd75778b855886fc5e1ea7d6bfada9eb68b35c19d', 'Set vetted validators limits (SDVT)'], + ['0x589e298964b9181d9938b84bb034c3bb9024e2c0', 'Set node operators reward addresses (SDVT)'], + ['0xcaa3af7460e83e665eefec73a7a542e5005c9639', 'Add Node Operators (SDVT)'], + ['0x1f809d2cb72a5ab13778811742050eda876129b6', 'Add Rewards Share Program participant'], + ['0xbd08f9d6bf1d25cc7407e4855df1d46c2043b3ea', 'Top up recipients (Rewards Share stETH)'], + ['0x6ab39a8be67d9305799c3f8fdfc95caf3150d17c', 'Top up recipients (LEGO stablecoins)'], + ['0x75bdecbb6453a901ebbb945215416561547dfdd4', 'Top up recipients (RCC stablecoins)'], + ['0x92a27c4e5e35cfea112acab53851ec70e2d99a8d', 'Top up recipients (PML stablecoins)'], + ['0x1843bc35d1fd15abe1913b9f72852a79457c42ab', 'Top up recipients (ATC stablecoins)'], + ['0xF6B6E7997338C48Ea3a8BCfa4BB64a315fDa76f4', 'Settle EL Rewards Stealing penalty for CSM operators'], ]) export const EASY_TRACK_STONKS_CONTRACTS = [STONKS_ALLOWED_RECIPIENT_ADDRESS] @@ -52,6 +66,8 @@ export const SAFES = { ['0xa02FC823cCE0D016bD7e17ac684c9abAb2d6D647', 'Treasury Management Committee'], ['0x98be4a407bff0c125e25fbe9eb1165504349c37d', 'Relay Maintenance Committee'], ['0x8772e3a2d86b9347a2688f9bc1808a6d8917760c', 'Gate Seal Committee'], + ['0x08637515E85A4633E23dfc7861e2A9f53af640f7', 'Simple DVT Module Committee'], + ['0xC52fC3081123073078698F1EAc2f1Dc7Bd71880f', 'CSM Committee'], ], [Blockchain.POLYGON]: [['0x87d93d9b2c672bf9c9642d853a8682546a5012b5', 'Liquidity Observation Lab (Polygon)']], [Blockchain.ARBITRUM]: [ diff --git a/ethereum-governance/src/shared/constants/easy-track/testnet.ts b/ethereum-governance/src/shared/constants/easy-track/testnet.ts index 20a6fa9dc..966dde185 100644 --- a/ethereum-governance/src/shared/constants/easy-track/testnet.ts +++ b/ethereum-governance/src/shared/constants/easy-track/testnet.ts @@ -30,4 +30,5 @@ export const EASY_TRACK_TYPES_BY_FACTORIES = new Map([ ['0x785a8b1cdc03bb191670ed4696e9ed5b11af910a', 'Add recipient (stETH reWARDS)'], ['0xefea524d1739800ff6f7d2532ed4c8508220239a', 'Remove recipient (stETH reWARDS)'], ['0xf2f7fc1e8879c10d4579bc82d5fea923a5a228de', 'Top up recipients (stETH reWARDS)'], + ['0x07696ea8a5b53c3e35d9cce10cc62c6c79c4691d', 'Settle EL Rewards Stealing penalty for CSM operators'], ]) diff --git a/ethereum-governance/src/shared/constants/proxy-watcher/mainnet.ts b/ethereum-governance/src/shared/constants/proxy-watcher/mainnet.ts index b8eb393ad..c78ce2ae4 100644 --- a/ethereum-governance/src/shared/constants/proxy-watcher/mainnet.ts +++ b/ethereum-governance/src/shared/constants/proxy-watcher/mainnet.ts @@ -1,4 +1,4 @@ -import { IProxyContractData } from 'constants/common' +import { ProxyInfo } from '../../../shared/types' import { ACCOUNTING_ORACLE_ADDRESS as accountingOracleAddress, LIDO_LOCATOR_ADDRESS as lidoLocatorAddress, @@ -20,6 +20,10 @@ import { ARAGON_FINANCE_ADDRESS as financeAddress, LIDO_DAO_ADDRESS as daoAddress, ANCHOR_VAULT_ADDRESS as anchorVaultAddress, + CS_MODULE as csmAddress, + CS_ACCOUNTING as csmAccountingAddress, + CS_FEE_DISTRIBUTOR as csmFeeDistributorAddress, + CS_FEE_ORACLE as csmFeeOracleAddress, } from 'constants/common' export const implementationFuncShortABI = @@ -28,7 +32,7 @@ export const implementationFuncShortABI = export const ossifiableProxyImplABI = '[{"inputs":[],"name":"proxy__getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]' -export const LIDO_PROXY_CONTRACTS_DATA: Map = new Map([ +export const LIDO_PROXY_CONTRACTS_DATA = new Map([ [ lidoStethAddress, { @@ -169,4 +173,32 @@ export const LIDO_PROXY_CONTRACTS_DATA: Map = new Ma shortABI: ossifiableProxyImplABI, }, ], + [ + csmAddress, + { + name: 'Community Staking Module', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmAccountingAddress, + { + name: 'CSM Accounting', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmFeeDistributorAddress, + { + name: 'CSM FeeDistributor', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmFeeOracleAddress, + { + name: 'CSM FeeOracle', + shortABI: ossifiableProxyImplABI, + }, + ], ]) diff --git a/ethereum-governance/src/shared/constants/proxy-watcher/testnet.ts b/ethereum-governance/src/shared/constants/proxy-watcher/testnet.ts index 616d65399..fcc1514c3 100644 --- a/ethereum-governance/src/shared/constants/proxy-watcher/testnet.ts +++ b/ethereum-governance/src/shared/constants/proxy-watcher/testnet.ts @@ -1,4 +1,4 @@ -import { IProxyContractData } from 'constants/common' +import { ProxyInfo } from '../../../shared/types' import { ACCOUNTING_ORACLE_ADDRESS as accountingOracleAddress, LIDO_LOCATOR_ADDRESS as lidoLocatorAddress, @@ -18,6 +18,10 @@ import { CURATED_NO_REPO_ADDRESS as curatedNoRepoAddress, ARAGON_TOKEN_MANAGER_ADDRESS as tmAddress, ARAGON_FINANCE_ADDRESS as financeAddress, + CS_MODULE as csmAddress, + CS_ACCOUNTING as csmAccountingAddress, + CS_FEE_DISTRIBUTOR as csmFeeDistributorAddress, + CS_FEE_ORACLE as csmFeeOracleAddress, } from 'constants/common' export const implementationFuncShortABI = @@ -26,7 +30,7 @@ export const implementationFuncShortABI = export const ossifiableProxyImplABI = '[{"inputs":[],"name":"proxy__getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]' -export const LIDO_PROXY_CONTRACTS_DATA: Map = new Map([ +export const LIDO_PROXY_CONTRACTS_DATA = new Map([ [ lidoStethAddress, { @@ -153,4 +157,32 @@ export const LIDO_PROXY_CONTRACTS_DATA: Map = new Ma shortABI: ossifiableProxyImplABI, }, ], + [ + csmAddress, + { + name: 'Community Staking Module', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmAccountingAddress, + { + name: 'CSM Accounting', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmFeeDistributorAddress, + { + name: 'CSM FeeDistributor', + shortABI: ossifiableProxyImplABI, + }, + ], + [ + csmFeeOracleAddress, + { + name: 'CSM FeeOracle', + shortABI: ossifiableProxyImplABI, + }, + ], ]) diff --git a/ethereum-governance/src/shared/events/aragon_events.ts b/ethereum-governance/src/shared/events/aragon_events.ts index 050ca1a31..48c12dbce 100644 --- a/ethereum-governance/src/shared/events/aragon_events.ts +++ b/ethereum-governance/src/shared/events/aragon_events.ts @@ -26,3 +26,5 @@ export const ARAGON_VOTING_EVENTS_OF_NOTICE = [ type: FindingType.Info, }, ] + +export const ASSIGN_DELEGATE_EVENT = 'event AssignDelegate(address indexed voter, address indexed assignedDelegate)' diff --git a/ethereum-governance/src/shared/events/burner_events.ts b/ethereum-governance/src/shared/events/burner_events.ts deleted file mode 100644 index 7a5082243..000000000 --- a/ethereum-governance/src/shared/events/burner_events.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' - -export function getBurnerEvents(BURNER_ADDRESS: string): EventOfNotice[] { - return [ - { - address: BURNER_ADDRESS, - event: 'event ERC20Recovered(address indexed requestedBy, address indexed token,uint256 amount)', - alertId: 'LIDO-BURNER-ERC20-RECOVERED', - name: 'ℹ️ Lido Burner: ERC20 recovered', - description: (args: Result) => - `ERC20 recovered:\n` + - `Requested by: ${etherscanAddress(args.requestedBy)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Amount: ${args.amount}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: BURNER_ADDRESS, - event: 'event ERC721Recovered(address indexed requestedBy, address indexed token, uint256 tokenId)', - alertId: 'LIDO-BURNER-ERC721-RECOVERED', - name: 'ℹ️ Lido Burner: ERC721 recovered', - description: (args: Result) => - `ERC721 recovered:\n` + - `Requested by: ${etherscanAddress(args.requestedBy)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Token ID: ${args.tokenId}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - ] -} diff --git a/ethereum-governance/src/shared/events/cross_chain_events.ts b/ethereum-governance/src/shared/events/cross_chain_events.ts new file mode 100644 index 000000000..3b5a154c6 --- /dev/null +++ b/ethereum-governance/src/shared/events/cross_chain_events.ts @@ -0,0 +1,65 @@ +import { BSC_L1_CROSS_CHAIN_CONTROLLER } from '../constants/cross-chain/mainnet' +import { Result } from '@ethersproject/abi/lib' +import { FindingSeverity, FindingType } from 'forta-agent' +import { EventOfNotice } from '../../entity/events' + +export const BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS: EventOfNotice[] = [ + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: 'event SenderUpdated(address indexed sender, bool indexed isApproved)', + alertId: 'BSC-ADI-APPROVED-SENDER-UPDATED', + name: '🚨🚨🚨 BSC a.DI: Approved sender changed', + description: (args: Result) => + args.isApproved + ? `Address ${args.sender} was set as an approved sender` + : `Address ${args.sender} was removed from the approved senders list`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: 'event ProxyOssified()', + alertId: 'PROXY-OSSIFIED', + name: `🚨 BscCrossChainController: Proxy ossified`, + description: () => + `Proxy for BscCrossChainController(${BSC_L1_CROSS_CHAIN_CONTROLLER}) was ossified` + `\n(detected by event)`, + severity: FindingSeverity.High, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: 'event AdminChanged(address previousAdmin, address newAdmin)', + alertId: 'PROXY-ADMIN-CHANGED', + name: `🚨🚨🚨 BscCrossChainController: Proxy admin changed`, + description: (args: Result) => + `Proxy admin for BscCrossChainController(${BSC_L1_CROSS_CHAIN_CONTROLLER}) ` + + `was changed from ${args.previousAdmin} to ${args.newAdmin}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: 'event Upgraded(address indexed implementation)', + alertId: 'PROXY-UPGRADED', + name: `🚨🚨🚨 BscCrossChainController: Proxy upgraded`, + description: (args: Result) => + `Proxy for BscCrossChainController(${BSC_L1_CROSS_CHAIN_CONTROLLER}) ` + + `was updated to ${args.implementation}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: 'event BeaconUpgraded(address indexed beacon)', + alertId: 'PROXY-BEACON-UPGRADED', + name: `🚨 BscCrossChainController: Proxy beacon upgraded`, + description: (args: Result) => + `Proxy for BscCrossChainController(${BSC_L1_CROSS_CHAIN_CONTROLLER}) ` + + `beacon was updated to ${args.beacon}` + + `\n(detected by event)`, + severity: FindingSeverity.High, + type: FindingType.Info, + }, +] diff --git a/ethereum-governance/src/shared/events/deposit_security_events.ts b/ethereum-governance/src/shared/events/deposit_security_events.ts deleted file mode 100644 index 3bed6c265..000000000 --- a/ethereum-governance/src/shared/events/deposit_security_events.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' - -export function getDepositSecurityEvents(DEPOSIT_SECURITY_ADDRESS: string): EventOfNotice[] { - return [ - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event DepositsPaused(address indexed guardian, uint24 indexed stakingModuleId)', - alertId: 'LIDO-DEPOSITS-PAUSED', - name: '🚨 Deposit Security: Deposits paused', - description: (args: Result) => - `Deposits were paused by ${etherscanAddress(args.guardian)} for ${args.stakingModuleId} staking module`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event DepositsUnpaused(uint24 indexed stakingModuleId)', - alertId: 'LIDO-DEPOSITS-UNPAUSED', - name: '⚠️ Deposit Security: Deposits resumed', - description: (args: Result) => `Deposits were resumed for ${args.stakingModuleId} staking module`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event GuardianAdded(address guardian)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-ADDED', - name: '⚠️ Deposit Security: Guardian added', - description: (args: Result) => `New guardian added ${etherscanAddress(args.guardian)}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event GuardianRemoved(address guardian)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-REMOVED', - name: '⚠️ Deposit Security: Guardian removed', - description: (args: Result) => `Guardian ${etherscanAddress(args.guardian)} was removed`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event GuardianQuorumChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-QUORUM-CHANGED', - name: '🚨 Deposit Security: Guardian quorum changed', - description: (args: Result) => `New quorum size ${args.newValue}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event MaxDepositsChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-MAX-DEPOSITS-CHANGED', - name: '⚠️ Deposit Security: Max deposits changed', - description: (args: Result) => `New value ${args.newValue}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event MinDepositBlockDistanceChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-MIN-DEPOSITS-BLOCK-DISTANCE-CHANGED', - name: '⚠️ Deposit Security: Min deposit block distance changed', - description: (args: Result) => `New value ${args.newValue}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - event: 'event OwnerChanged(address newValue)', - alertId: 'LIDO-DEPOSITOR-OWNER-CHANGED', - name: '🚨 Deposit Security: Owner changed', - description: (args: Result) => `New owner ${etherscanAddress(args.newValue)}`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - ] -} diff --git a/ethereum-governance/src/shared/events/easytrack_events.ts b/ethereum-governance/src/shared/events/easytrack_events.ts index 84a3984a0..5dae5ccd8 100644 --- a/ethereum-governance/src/shared/events/easytrack_events.ts +++ b/ethereum-governance/src/shared/events/easytrack_events.ts @@ -2,9 +2,18 @@ import { EventOfNotice } from '../../entity/events' import { FindingSeverity, FindingType } from 'forta-agent' import { etherscanAddress } from '../string' import { EASY_TRACK_ADDRESS, REWARD_PROGRAMS_REGISTRY_ADDRESS, EVM_SCRIPT_EXECUTOR_ADDRESS } from 'constants/easy-track' -import { MOTION_ENACTED_EVENT } from './motion_enacted_events' import { Result } from '@ethersproject/abi/lib' +export const MOTION_CREATED_EVENT = ` + event MotionCreated( + uint256 indexed _motionId, + address _creator, + address indexed _evmScriptFactory, + bytes _evmScriptCallData, + bytes _evmScript + ) +` + export const EASY_TRACK_EVENTS: EventOfNotice[] = [ { address: EASY_TRACK_ADDRESS, @@ -50,7 +59,7 @@ export const EASY_TRACK_EVENTS: EventOfNotice[] = [ }, { address: EASY_TRACK_ADDRESS, - event: MOTION_ENACTED_EVENT, + event: 'event MotionEnacted(uint256 indexed _motionId)', alertId: 'EASY-TRACK-MOTION-ENACTED', name: '✅ EasyTrack: Motion executed successfully 🎉', description: (args: Result) => `EasyTrack motion ${args._motionId} was enacted`, diff --git a/ethereum-governance/src/shared/events/gate_seal_events.ts b/ethereum-governance/src/shared/events/gate_seal_events.ts deleted file mode 100644 index 84b2db24e..000000000 --- a/ethereum-governance/src/shared/events/gate_seal_events.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const GATE_SEAL_SEALED_EVENT = - 'event Sealed (address gate_seal, address sealed_by, uint256 sealed_for, address sealable, uint256 sealed_at)' - -export const GATE_SEAL_FACTORY_GATE_SEAL_CREATED_EVENT = 'event GateSealCreated (address gate_seal)' diff --git a/ethereum-governance/src/shared/events/insurance_fund_events.ts b/ethereum-governance/src/shared/events/insurance_fund_events.ts deleted file mode 100644 index 6dd750f6c..000000000 --- a/ethereum-governance/src/shared/events/insurance_fund_events.ts +++ /dev/null @@ -1,81 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { ERC20, ETH_DECIMALS } from '../constants' -import BigNumber from 'bignumber.js' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' - -export function getInsuranceFundEvents( - INSURANCE_FUND_ADDRESS: string, - KNOWN_ERC20: Map, -): EventOfNotice[] { - return [ - { - address: INSURANCE_FUND_ADDRESS, - event: 'event EtherTransferred(address indexed _recipient, uint256 _amount)', - alertId: 'INS-FUND-ETH-TRANSFERRED', - name: '⚠️ Insurance fund: ETH transferred', - description: (args: Result) => - `${new BigNumber(String(args._amount)) - .div(ETH_DECIMALS) - .toFixed(2)} ETH were transferred from insurance fund to ${etherscanAddress(args._recipient)}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: INSURANCE_FUND_ADDRESS, - event: - 'event ERC721Transferred(address indexed _token, address indexed _recipient, uint256 _tokenId, bytes _data)', - alertId: 'INS-FUND-ERC721-TRANSFERRED', - name: '⚠️ Insurance fund: ERC721 transferred', - description: (args: Result) => - `ERC721 token (address: ${etherscanAddress(args._token)}, id: ${ - args._tokenId - }) was transferred form insurance fund to ${etherscanAddress(args._recipient)}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: INSURANCE_FUND_ADDRESS, - event: 'event ERC20Transferred(address indexed _token, address indexed _recipient, uint256 _amount)', - alertId: 'INS-FUND-ERC20-TRANSFERRED', - name: '🚨 Insurance fund: ERC20 transferred', - description: (args: Result) => { - const tokenInfo = KNOWN_ERC20.get(args._token.toLowerCase()) || { - decimals: 18, - name: 'unknown', - } - return `${new BigNumber(String(args._amount)).div(10 ** tokenInfo.decimals).toFixed(2)} of ${etherscanAddress( - args._token, - )}(${tokenInfo.name}) were transferred from insurance fund to ${etherscanAddress(args._recipient)}` - }, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: INSURANCE_FUND_ADDRESS, - event: - 'event ERC1155Transferred(address indexed _token, address indexed _recipient, uint256 _tokenId, uint256 _amount, bytes _data)', - alertId: 'INS-FUND-ERC1155-TRANSFERRED', - name: '⚠️ Insurance fund: ERC1155 transferred', - description: (args: Result) => - `${args._amount} of ERC1155 token (address: ${etherscanAddress(args._token)}, id: ${ - args._tokenId - }) was transferred form insurance fund to ${etherscanAddress(args._recipient)}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: INSURANCE_FUND_ADDRESS, - event: 'event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)', - alertId: 'INS-FUND-OWNERSHIP-TRANSFERRED', - name: '🚨 Insurance fund: Ownership transferred', - description: (args: Result) => - `Owner of the insurance fund was transferred from ${etherscanAddress(args.previousOwner)} to ${etherscanAddress( - args.newOwner, - )}`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - ] -} diff --git a/ethereum-governance/src/shared/events/lido_events.ts b/ethereum-governance/src/shared/events/lido_events.ts deleted file mode 100644 index 025aedd17..000000000 --- a/ethereum-governance/src/shared/events/lido_events.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' - -export const alertId_token_rebased = 'LIDO-TOKEN-REBASED' - -export function getLidoEvents(LIDO_STETH_ADDRESS: string): EventOfNotice[] { - return [ - { - address: LIDO_STETH_ADDRESS, - event: 'event Stopped()', - alertId: 'LIDO-STOPPED', - name: '🚨🚨🚨 Lido: Stopped 🚨🚨🚨', - description: () => `Lido DAO contract was stopped`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event Resumed()', - alertId: 'LIDO-RESUMED', - name: '⚠️ Lido: Resumed', - description: () => `Lido DAO contract was resumed`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event StakingPaused()', - alertId: 'LIDO-STAKING-PAUSED', - name: '🚨 Lido: Staking paused', - description: () => `Staking was paused!`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event StakingResumed()', - alertId: 'LIDO-STAKING-RESUMED', - name: '⚠️ Lido: Staking resumed', - description: () => `Staking was resumed!`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event StakingLimitSet(uint256 maxStakeLimit, uint256 stakeLimitIncreasePerBlock)', - alertId: 'LIDO-STAKING-LIMIT-SET', - name: '⚠️ Lido: Staking limit set', - description: (args: Result) => - `Staking limit was set with:\n` + - `Max staking limit: ${args.maxStakeLimit}\n` + - `Stake limit increase per block: ${args.stakeLimitIncreasePerBlock}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event StakingLimitRemoved()', - alertId: 'LIDO-STAKING-LIMIT-REMOVED', - name: '🚨 Lido: Staking limit removed', - description: () => `Staking limit was removed`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event LidoLocatorSet(address lidoLocator)', - alertId: 'LIDO-LOCATOR-SET', - name: '🚨 Lido: Locator set', - description: (args: Result) => `Lido locator was set to: ${etherscanAddress(args.lidoLocator)}`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event RecoverToVault(address vault, address token, uint256 amount)', - alertId: 'LIDO-RECOVER-TO-VAULT', - name: '⚠️ Lido: Funds recovered to vault', - description: (args: Result) => - `Funds recovered to vault:\n` + - `Vault: ${etherscanAddress(args.vault)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Amount: ${args.amount}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: 'event ContractVersionSet(uint256 version)', - alertId: 'LIDO-CONTRACT-VERSION-SET', - name: '⚠️ Lido: Contract version set', - description: (args: Result) => `Contract version set:\n` + `Version: ${args.version}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - { - address: LIDO_STETH_ADDRESS, - event: - 'event TokenRebased(uint256 indexed reportTimestamp, uint256 timeElapsed, uint256 preTotalShares, uint256 preTotalEther, uint256 postTotalShares, uint256 postTotalEther, uint256 sharesMintedAsFees)', - alertId: alertId_token_rebased, - name: 'ℹ️ Lido: Token rebased', - description: (args: Result) => `reportTimestamp: ${args.reportTimestamp}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - }, - ] -} diff --git a/ethereum-governance/src/shared/events/motion_created_events.ts b/ethereum-governance/src/shared/events/motion_created_events.ts deleted file mode 100644 index 1d5726f24..000000000 --- a/ethereum-governance/src/shared/events/motion_created_events.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const MOTION_CREATED_EVENT = ` - event MotionCreated( - uint256 indexed _motionId, - address _creator, - address indexed _evmScriptFactory, - bytes _evmScriptCallData, - bytes _evmScript - ) -` diff --git a/ethereum-governance/src/shared/events/motion_enacted_events.ts b/ethereum-governance/src/shared/events/motion_enacted_events.ts deleted file mode 100644 index b1dd14555..000000000 --- a/ethereum-governance/src/shared/events/motion_enacted_events.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const MOTION_ENACTED_EVENT = ` - event MotionEnacted( - uint256 indexed _motionId - ) -` diff --git a/ethereum-governance/src/shared/events/trp_changes.ts b/ethereum-governance/src/shared/events/trp_events.ts similarity index 100% rename from ethereum-governance/src/shared/events/trp_changes.ts rename to ethereum-governance/src/shared/events/trp_events.ts diff --git a/ethereum-governance/src/shared/events/vault_events.ts b/ethereum-governance/src/shared/events/vault_events.ts deleted file mode 100644 index 16b733cef..000000000 --- a/ethereum-governance/src/shared/events/vault_events.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const TRANSFER_SHARES_EVENT = ` - event TransferShares( - address indexed from, - address indexed to, - uint256 sharesValue - ) -` diff --git a/ethereum-governance/src/shared/events/withdrawals_events.ts b/ethereum-governance/src/shared/events/withdrawals_events.ts deleted file mode 100644 index 21963fa85..000000000 --- a/ethereum-governance/src/shared/events/withdrawals_events.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' -import BigNumber from 'bignumber.js' -import { Result } from '@ethersproject/abi/lib' -import { EventOfNotice } from '../../entity/events' - -export const WITHDRAWALS_BUNKER_MODE_ENABLED_EVENT = 'event BunkerModeEnabled(uint256 _sinceTimestamp)' - -export const WITHDRAWALS_BUNKER_MODE_DISABLED_EVENT = 'event BunkerModeDisabled()' - -export const WITHDRAWAL_QUEUE_WITHDRAWAL_REQUESTED_EVENT = - 'event WithdrawalRequested(uint256 indexed requestId, address indexed requestor, address indexed owner, uint256 amountOfStETH, uint256 amountOfShares)' - -export const LIDO_TOKEN_REBASED_EVENT = - 'event TokenRebased(uint256 indexed reportTimestamp, uint256 timeElapsed, uint256 preTotalShares, uint256 preTotalEther, uint256 postTotalShares, uint256 postTotalEther, uint256 sharesMintedAsFees)' - -export const WITHDRAWAL_QUEUE_WITHDRAWALS_FINALIZED_EVENT = - 'event WithdrawalsFinalized(uint256 indexed from, uint256 indexed to, uint256 amountOfETHLocked, uint256 sharesToBurn, uint256 timestamp)' - -export const WITHDRAWAL_QUEUE_WITHDRAWAL_CLAIMED_EVENT = - 'event WithdrawalClaimed(uint256 indexed requestId, address indexed owner, address indexed receiver, uint256 amountOfETH)' - -export function getWithdrawalsEvents(WITHDRAWALS_QUEUE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: WITHDRAWALS_QUEUE_ADDRESS, - event: 'event Resumed()', - alertId: 'WITHDRAWALS-UNPAUSED', - name: '⚠️ Withdrawals: contract was unpaused', - description: () => 'Contract was resumed', - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: WITHDRAWALS_QUEUE_ADDRESS, - event: 'event Paused(uint256 duration)', - alertId: 'WITHDRAWALS-PAUSED', - name: '🚨 Withdrawals: contract was paused', - description: (args: Result) => `For ${new BigNumber(args.duration).div(60 * 60)} hours`, - severity: FindingSeverity.Critical, - type: FindingType.Info, - }, - ] -} diff --git a/ethereum-governance/src/shared/format.ts b/ethereum-governance/src/shared/format.ts new file mode 100644 index 000000000..27bc3f070 --- /dev/null +++ b/ethereum-governance/src/shared/format.ts @@ -0,0 +1,8 @@ +import BigNumber from 'bignumber.js' + +export const formatBN2Str = (bn: BigNumber): string => { + return bn.toNumber().toLocaleString('en-US', { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }) +} diff --git a/ethereum-governance/src/shared/string.spec.ts b/ethereum-governance/src/shared/string.spec.ts index 43047f0e3..2b363b73a 100644 --- a/ethereum-governance/src/shared/string.spec.ts +++ b/ethereum-governance/src/shared/string.spec.ts @@ -13,7 +13,7 @@ describe('getMotionType', () => { it('returns the correct type when the evmScriptFactory is not in the types map', () => { const result = getMotionType(types, '0x789') - expect(result).toBe('New ') + expect(result).toBe('New') }) it('returns the correct type when the evmScriptFactory is in the types map but in different case', () => { diff --git a/ethereum-governance/src/shared/string.ts b/ethereum-governance/src/shared/string.ts index 94bbe3053..853232ee1 100644 --- a/ethereum-governance/src/shared/string.ts +++ b/ethereum-governance/src/shared/string.ts @@ -17,8 +17,12 @@ export function etherscanAddress(address: string, text = address): string { return `[${text}](https://${getSubpathForNetwork()}etherscan.io/address/${address})` } +export function getSafeAddress(address: string, text = address): string { + return `[${text}](https://app.safe.global/home?safe=eth:${address})` +} + export const getMotionType = (types: Map, evmScriptFactory: string) => { - return types.get(evmScriptFactory.toLowerCase()) || 'New ' + return types.get(evmScriptFactory.toLowerCase()) || 'New' } export const getMotionLink = (motionId: string) => { diff --git a/ethereum-governance/src/shared/types.ts b/ethereum-governance/src/shared/types.ts new file mode 100644 index 000000000..e39cb132f --- /dev/null +++ b/ethereum-governance/src/shared/types.ts @@ -0,0 +1,19 @@ +export type ProxyInfo = { + name: string + shortABI: string +} + +export type NamedRole = { + name: string + hash: string +} + +export type ContractRolesInfo = { + name: string + roles: Map +} + +export type OwnableContractInfo = { + name: string + ownershipMethod: string +} diff --git a/ethereum-governance/tests/e2e/__snapshots__/agent-acl-changes.spec.ts.snap b/ethereum-governance/tests/e2e/__snapshots__/agent-acl-changes.spec.ts.snap index be5dcd000..2bc5de874 100644 --- a/ethereum-governance/tests/e2e/__snapshots__/agent-acl-changes.spec.ts.snap +++ b/ethereum-governance/tests/e2e/__snapshots__/agent-acl-changes.spec.ts.snap @@ -1,5 +1,35 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`agent-acl-changes e2e tests should process tx with permission change 1`] = `undefined`; +exports[`agent-acl-changes e2e tests should process tx with permission change 1`] = ` +Finding { + "addresses": [], + "alertId": "ARAGON-ACL-PERMISSION-CHANGED", + "description": "Role 0x5de467a460382d13defdc02aacddc9c7d6605d6d4e0b8bd2f70732cae8ea17bc (CREATE PAYMENTS ROLE) on the app [0xB9E5CBB9CA5b0d659238807E84D0176930753d86](https://etherscan.io/address/0xB9E5CBB9CA5b0d659238807E84D0176930753d86) (Aragon Finance) was revoked from and granted with params to 0xFE5986E06210aC1eCC1aDCafc0cc7f8D63B3F977 (EVMScriptExecutor)", + "labels": [], + "metadata": {}, + "name": "🚨 Aragon ACL: Permission revoked and granted with params", + "protocol": "ethereum", + "severity": 3, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", +} +`; -exports[`agent-acl-changes e2e tests should process tx with permission manager changed 1`] = `undefined`; +exports[`agent-acl-changes e2e tests should process tx with permission manager changed 1`] = ` +Finding { + "addresses": [], + "alertId": "ARAGON-ACL-PERMISSION-MANAGER-CHANGED", + "description": "Permission manager for the role 0x9d68ad53a92b6f44b2e8fb18d211bf8ccb1114f6fafd56aa364515dfdf23c44f (SET EL REWARDS VAULT ROLE) on the app [0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84](https://etherscan.io/address/0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84) (stETH token) was set to [0x2e59A20f205bB85a89C53f1936454680651E618e](https://etherscan.io/address/0x2e59A20f205bB85a89C53f1936454680651E618e) (Aragon Voting)", + "labels": [], + "metadata": {}, + "name": "🚨 Aragon ACL: Permission manager changed", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", +} +`; diff --git a/ethereum-governance/tests/e2e/__snapshots__/agent-easy-track.spec.ts.snap b/ethereum-governance/tests/e2e/__snapshots__/agent-easy-track.spec.ts.snap index eb4b1b5de..a83b91a12 100644 --- a/ethereum-governance/tests/e2e/__snapshots__/agent-easy-track.spec.ts.snap +++ b/ethereum-governance/tests/e2e/__snapshots__/agent-easy-track.spec.ts.snap @@ -61,7 +61,7 @@ exports[`agent-easy-track e2e tests should process tx with new motion created 1` Finding { "addresses": [], "alertId": "EASY-TRACK-MOTION-CREATED", - "description": "Top up recipients (TRP LDO) motion [365](https://easytrack.lido.fi/motions/365) created by 0x834560F580764Bc2e0B16925F8bF229bb00cB759", + "description": "Top up recipients (TRP LDO) motion [365](https://easytrack.lido.fi/motions/365) created by [TRP Committee](https://app.safe.global/home?safe=eth:0x834560F580764Bc2e0B16925F8bF229bb00cB759)", "labels": [], "metadata": { "args": "365,0x834560F580764Bc2e0B16925F8bF229bb00cB759,0xBd2b6dC189EefD51B273F5cb2d99BA1ce565fb8C,0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000834560f580764bc2e0b16925f8bf229bb00cb75900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000096d0707a0aadf3200000,0x00000001231ac69a1a37649c6b06a71ab32ddd92158c80b800000024666712290000000000000000000000000000000000000000000096d0707a0aadf3200000b9e5cbb9ca5b0d659238807e84d0176930753d86000000c4f63648460000000000000000000000005a98fcbea516cf06857215779fd812ca3bef1b32000000000000000000000000834560f580764bc2e0b16925f8bf229bb00cb7590000000000000000000000000000000000000000000096d0707a0aadf32000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001c4561737920547261636b3a20746f7020757020726563697069656e7400000000", diff --git a/ethereum-governance/tests/e2e/__snapshots__/agent-proxy-watcher.spec.ts.snap b/ethereum-governance/tests/e2e/__snapshots__/agent-proxy-watcher.spec.ts.snap index 5646c25a0..5c390659e 100644 --- a/ethereum-governance/tests/e2e/__snapshots__/agent-proxy-watcher.spec.ts.snap +++ b/ethereum-governance/tests/e2e/__snapshots__/agent-proxy-watcher.spec.ts.snap @@ -72,6 +72,62 @@ exports[`agent-proxy-watcher e2e tests should process block with changed proxy i "type": 4, "uniqueKey": "", }, + Finding { + "addresses": [], + "alertId": "PROXY-NOT-FOUND", + "description": "Proxy contract CSM Accounting ([0x4d72bff1beac69925f8bd12526a39baab069e5da](https://etherscan.io/address/0x4d72bff1beac69925f8bd12526a39baab069e5da)) not found", + "labels": [], + "metadata": {}, + "name": "🚨 Proxy contract not found", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "PROXY-NOT-FOUND", + "description": "Proxy contract CSM FeeDistributor ([0xd99cc66fec647e68294c6477b40fc7e0f6f618d0](https://etherscan.io/address/0xd99cc66fec647e68294c6477b40fc7e0f6f618d0)) not found", + "labels": [], + "metadata": {}, + "name": "🚨 Proxy contract not found", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "PROXY-NOT-FOUND", + "description": "Proxy contract CSM FeeOracle ([0x4d4074628678bd302921c20573eea1ed38ddf7fb](https://etherscan.io/address/0x4d4074628678bd302921c20573eea1ed38ddf7fb)) not found", + "labels": [], + "metadata": {}, + "name": "🚨 Proxy contract not found", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "PROXY-NOT-FOUND", + "description": "Proxy contract Community Staking Module ([0xda7de2ecddfccc6c3af10108db212acbbf9ea83f](https://etherscan.io/address/0xda7de2ecddfccc6c3af10108db212acbbf9ea83f)) not found", + "labels": [], + "metadata": {}, + "name": "🚨 Proxy contract not found", + "protocol": "ethereum", + "severity": 5, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, Finding { "addresses": [], "alertId": "PROXY-NOT-FOUND", diff --git a/ethereum-governance/tests/e2e/agent-acl-changes.spec.ts b/ethereum-governance/tests/e2e/agent-acl-changes.spec.ts index a87cae5b1..449b275e2 100644 --- a/ethereum-governance/tests/e2e/agent-acl-changes.spec.ts +++ b/ethereum-governance/tests/e2e/agent-acl-changes.spec.ts @@ -36,7 +36,7 @@ describe('agent-acl-changes e2e tests', () => { const txEvent = createTransactionEvent(transaction, block, Network.MAINNET, [], receipt.logs) - return app.EasyTrackSrv.handleTransaction(txEvent) + return app.AclChangesSrv.handleTransaction(txEvent) } getRoleMembers = async (address: string, hash: string, currentBlock: BlockTag) => { diff --git a/ethereum-huge-tx/src/subagents/huge-tx/constants.ts b/ethereum-huge-tx/src/subagents/huge-tx/constants.ts index 2e7ab2ec0..df3ce703a 100644 --- a/ethereum-huge-tx/src/subagents/huge-tx/constants.ts +++ b/ethereum-huge-tx/src/subagents/huge-tx/constants.ts @@ -148,6 +148,15 @@ export const MONITORED_TOKENS = new Map( "Aave Ethereum Variable Debt wstETH", ], ["0x12b54025c112aa61face2cdb7118740875a566e9", "Spark wstETH (spwstETH)"], + ["0xc329400492c6ff2438472d4651ad17389fcb843a", "Symbiotic DC_wstETH"], + ["0xbeef69ac7870777598a04b2bd4771c71212e6abc", "steakLRT"], + ["0x84631c0d0081fde56deb72f6de77abbbf6a9f93a", "Re7LRT"], + ["0x5fd13359ba15a84b76f7f87568309040176167cd", "amphrETH"], + ["0x7a4effd87c2f3c55ca251080b1343b605f327e3a", "rstETH"], + ["0x49cd586dd9ba227be9654c735a659a1db08232a9", "ifsETH"], + ["0x82dc3260f599f4fc4307209a1122b6eaa007163b", "LugaETH"], + ["0xd6e09a5e6d719d1c881579c9c8670a210437931b", "coETH"], + ["0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811", "pzETH"], ].map((pair: string[]) => [pair[0].toLowerCase(), pair[1]]), ); @@ -1529,6 +1538,342 @@ export const COMPLEX_TRANSFERS_TEMPLATES: ComplexTransferPattern[] = [ `were withdrawn from Spark Protocol\n` + `by: ${info.to} (${info.toName})`, }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x84631c0d0081fde56deb72f6de77abbbf6a9f93a", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x84631c0d0081fde56deb72f6de77abbbf6a9f93a", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Re7 Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x84631c0d0081fde56deb72f6de77abbbf6a9f93a", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x84631c0d0081fde56deb72f6de77abbbf6a9f93a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Re7 Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0xbeef69ac7870777598a04b2bd4771c71212e6abc", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xbeef69ac7870777598a04b2bd4771c71212e6abc", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Steakhouse Vault\n` + + `Vault: ${info.from} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0xbeef69ac7870777598a04b2bd4771c71212e6abc", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0xbeef69ac7870777598a04b2bd4771c71212e6abc", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Steakhouse Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x5fd13359ba15a84b76f7f87568309040176167cd", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x5fd13359ba15a84b76f7f87568309040176167cd", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Mev Capital Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x5fd13359ba15a84b76f7f87568309040176167cd", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x5fd13359ba15a84b76f7f87568309040176167cd", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Mev Capital Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x7a4effd87c2f3c55ca251080b1343b605f327e3a", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x7a4effd87c2f3c55ca251080b1343b605f327e3a", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `wstETH was withdrawn from Symbiotic by Mellow Protocol: P2P Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x7a4effd87c2f3c55ca251080b1343b605f327e3a", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x7a4effd87c2f3c55ca251080b1343b605f327e3a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: P2P Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x49cd586dd9ba227be9654c735a659a1db08232a9", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x49cd586dd9ba227be9654c735a659a1db08232a9", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: InfStones Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x49cd586dd9ba227be9654c735a659a1db08232a9", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x49cd586dd9ba227be9654c735a659a1db08232a9", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: InfStones Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x82dc3260f599f4fc4307209a1122b6eaa007163b", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x82dc3260f599f4fc4307209a1122b6eaa007163b", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Luganodes Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x82dc3260f599f4fc4307209a1122b6eaa007163b", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x82dc3260f599f4fc4307209a1122b6eaa007163b", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Luganodes Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0xd6e09a5e6d719d1c881579c9c8670a210437931b", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xd6e09a5e6d719d1c881579c9c8670a210437931b", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Chorus One Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0xd6e09a5e6d719d1c881579c9c8670a210437931b", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0xd6e09a5e6d719d1c881579c9c8670a210437931b", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Chorus One Vault\n` + + `Vault: ${info.to} `, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811", + to: NULL_ADDRESS, + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811", + from: "0xc329400492c6ff2438472d4651ad17389fcb843a", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was withdrawn from Symbiotic by Mellow Protocol: Renzo Vault\n` + + `Vault: ${info.from}`, + }, + + { + transferPatterns: { + mainTransfer: { + contract: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: NULL_ADDRESS, + to: "0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811", + }, + additionalTransfers: [ + { + contract: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + to: "0xc329400492c6ff2438472d4651ad17389fcb843a", + from: "0x8c9532a60e0e7c6bbd2b2c1303f63ace1c3e9811", + }, + ], + }, + description: (info: TransferEventInfo) => + `**${info.amountPretty} ${info.tokenName}** ` + + `was deposited to Symbiotic by Mellow Protocol: Renzo Vault\n` + + `Vault: ${info.to} `, + }, ]; export const EXCHANGE_STETH_TO_ETH_CURVE_PATTERN: TransferPattern = { diff --git a/ethereum-steth/.dockerignore b/ethereum-steth/.dockerignore deleted file mode 100644 index 78972be8e..000000000 --- a/ethereum-steth/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -dist/ -forta.config.json diff --git a/ethereum-steth/.env.sample b/ethereum-steth/.env.sample deleted file mode 100644 index 3ee750a22..000000000 --- a/ethereum-steth/.env.sample +++ /dev/null @@ -1,13 +0,0 @@ -APP_NAME=ethereum-steth -INSTANCE=forta - -HTTP_PORT=3000 -LOG_FORMAT=simple -LOG_LEVEL=debug -ETHEREUM_RPC_URL=https://eth.drpc.com -USE_FORTA_RPC_URL=true - -## FORTA compatible env names -NODE_ENV=local -AGENT_GRPC_PORT=50051 -FORTA_CHAIN_ID=1 \ No newline at end of file diff --git a/ethereum-steth/.eslintignore b/ethereum-steth/.eslintignore deleted file mode 100644 index a096acf71..000000000 --- a/ethereum-steth/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/ethereum-steth/.eslintrc.json b/ethereum-steth/.eslintrc.json deleted file mode 100644 index 1262ce136..000000000 --- a/ethereum-steth/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error", - "semi": "off" - } -} diff --git a/ethereum-steth/.gitignore b/ethereum-steth/.gitignore deleted file mode 100644 index e498c8f4d..000000000 --- a/ethereum-steth/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -/coverage/ - -tools/vendor -bin - -.env \ No newline at end of file diff --git a/ethereum-steth/.prettierignore b/ethereum-steth/.prettierignore deleted file mode 100644 index a096acf71..000000000 --- a/ethereum-steth/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/ethereum-steth/.prettierrc.json b/ethereum-steth/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/ethereum-steth/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/ethereum-steth/Dockerfile b/ethereum-steth/Dockerfile deleted file mode 100644 index 05e0b4698..000000000 --- a/ethereum-steth/Dockerfile +++ /dev/null @@ -1,35 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.10.0-alpine3.18 AS base - -RUN apk add --no-cache python3=3.11.8-r0 g++=12.2.1_git20220924-r10 make=4.4.1-r1 sqlite=3.41.2-r3 - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" - -ENV APP_NAME=ethereum-steth -ENV NODE_ENV=production -ENV ETHEREUM_RPC_URL=https://eth.drpc.org - -ENV AGENT_GRPC_PORT=50051 -ENV HTTP_PORT=3000 -ENV LOG_FORMAT=simple -ENV LOG_LEVEL=info -ENV INSTANCE=forta -ENV USE_FORTA_RPC_URL=true - -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:docker:prod"] \ No newline at end of file diff --git a/ethereum-steth/Makefile b/ethereum-steth/Makefile deleted file mode 100644 index 8b12e9335..000000000 --- a/ethereum-steth/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Makefile - -.PHONY: gen_proto_prod -gen_proto_prod: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./dist/generated/proto \ - --grpc_out=grpc_js:./dist/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - -I ./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_js -gen_js: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./src/generated/proto \ - --grpc_out=grpc_js:./src/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_ts -gen_ts: - # generate d.ts codes - yarn grpc_tools_node_protoc \ - --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts \ - --ts_out=grpc_js:./src/generated/proto \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -tools: - cd tools && go mod tidy && go mod vendor && go mod verify && go generate -tags tools -.PHONY: tools - -.PHONY: check_alerts_syntax -check_alerts_syntax: - ./bin/promtool check rules ./alerts.yml - -.PHONY: test_alerts -test_alerts: - bin/promtool test rules ./alerts_tests.yml \ No newline at end of file diff --git a/ethereum-steth/README.md b/ethereum-steth/README.md deleted file mode 100644 index 0e275194d..000000000 --- a/ethereum-steth/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# Lido Ethereum StETH bot - -## Supported chains - -- Ethereum mainnet - -## Alerts - -1. Infra: - - 1. ⚠️ Currently processing Ethereum network block is outdated - -2. StETH operations - 1. HandleBlock - 1. 🚨🚨🚨 Buffered ETH drain (checks each block) - 2. 🚨 Huge depositable ETH amount (checks every 100 blocks) - 3. ⚠️ High depositable ETH amount (checks every 100 blocks) - 4. ⚠️ Low deposit executor balance (checks every 100 blocks) - 5. ⚠️ Unspent staking limit below 10% (checks every 25 blocks) - 6. 📉 Unspent staking limit below 30% (checks every 25 blocks) - 2. HandleTransaction - 1. Deposit Security events - 1. 🚨 Deposit Security: Deposits paused - 2. 🚨 Deposit Security: Guardian quorum changed - 3. 🚨 Deposit Security: Owner changed - 4. ⚠️ Deposit Security: Deposits resumed - 5. ⚠️ Deposit Security: Guardian added - 6. ⚠️ Deposit Security: Guardian removed - 7. ⚠️ Deposit Security: Max deposits changed - 8. ⚠️ Deposit Security: Min deposit block distance changed - 2. Lido events - 1. 🚨🚨🚨 Lido: Stopped 🚨🚨🚨 - 2. 🚨🚨🚨 Share rate unexpected has changed - 3. 🚨 Lido: Staking limit removed - 4. 🚨 Lido: Locator set - 5. 🚨 Lido: Staking paused - 6. ⚠️ Lido: Resumed - 7. ⚠️ Lido: Staking resumed - 8. ⚠️ Lido: Staking limit set - 9. ⚠️ Lido: Funds recovered to vault - 10. ⚠️ Lido: Contract version set - 11. ℹ️ Lido: Token rebased - 3. Insurance fund events - 1. 🚨 Insurance fund: ERC20 transferred - 2. 🚨 Insurance fund: Ownership transferred - 3. ⚠️ Insurance fund: ETH transferred - 4. ⚠️ Insurance fund: ERC1155 transferred - 5. ⚠️ Insurance fund: ERC721 transferred - 4. Burner events - 1. ℹ️ Lido Burner: ERC20 recovered - 2. ℹ️ Lido Burner: ERC721 recovered -3. Withdrawals - 1. HandleBlock runs on each 100-th block or one per 20 minutes - 1. 🚨🚨🚨 Withdrawals: unclaimed requests size is more than withdrawal queue balance - 2. ⚠️ Withdrawals: % of stake limit is spent and unfinalized queue is on par with drained stake - limit - 3. ⚠️ Withdrawals: unfinalized queue is more than 100_000 stETH - 4. ⚠️ Withdrawals: unfinalized queue wait time is more than 1 day - 5. ℹ️ Withdrawals: ${unclaimedSizeRate.times(100).toFixed(2)}% of finalized requests are unclaimed - 2. HandleTransaction - 1. 🚨🚨🚨 Withdrawals: claimed amount is more than requested - 2. 🚨 Withdrawals: BUNKER MODE ON! 🚨 - 3. 🚨 Withdrawals: contract was paused - 4. ⚠️ Withdrawals: BUNKER MODE OFF! ✅ - 5. ⚠️ Withdrawals: contract was unpaused - 6. ⚠️ Withdrawals: the sum of received withdrawal requests since the last rebase greater than 150_000 stETH (max - staking limit) - 7. ℹ️ Huge stETH withdrawal requests batch -4. GateSeal - 1. HandleBlock runs on each next block - 1. 🚨 GateSeal: actual address doesn't have PAUSE_ROLE for contracts - 2. 🚨 GateSeal: is expired! - 3. ⚠️ GateSeal: GateSeal: a new instance deployed from factory - 4. ⚠️ GateSeal: default GateSeal address in forta agent is expired - 5. ⚠️️ GateSeal: default GateSeal address in forta agent doesn't have PAUSE_ROLE for contracts - 6. ⚠️ GateSeal: is about to be expired - 2. HandleTransaction - 1. 🚨🚨🚨 GateSeal: is sealed 🚨🚨🚨 - 2. 🚨 GateSeal: is expired -5. Vaults - 1. Handleblock - 1. 🚨🚨🚨 Withdrawal Vault balance mismatch. [without oracle report] - 2. 🚨🚨🚨 Withdrawal Vault balance mismatch. [within oracle report] - 3. 🚨🚨🚨 EL Vault balance mismatch. [without oracle report] - 4. 🚨🚨🚨 EL Vault balance mismatch. [within oracle report] - 5. ℹ️ Withdrawal Vault Balance significant change (checks every on 100-th block) - 6. ℹ️ EL Vault Balance significant change - 2. HandleTransaction - 1. 🚨 Burner shares transfer - -## Development (Forta specific) - -Edit `alerting-forta//forta.config.json` and set `jsonRpcUrl` to your JSON-RPC provider. Install deps: - -``` -yarn install -yarn build -yarn start -``` - -In separate console run - -``` -docker-compose up -d -``` - -## Testing alerts - -1. For testing alerts you have to install promtool on your machine. - ``` - make tools - ``` -2. Check alerts - ``` - make test_alerts - ``` diff --git a/ethereum-steth/alerts.yml b/ethereum-steth/alerts.yml deleted file mode 100644 index 45ce33b7c..000000000 --- a/ethereum-steth/alerts.yml +++ /dev/null @@ -1,10 +0,0 @@ -groups: - - name: EthereumStethGroup - rules: - - alert: TooMuchNetworkErrors - expr: increase(ethereum_steth_network_errors_total[15m]) >= 25 - labels: - severity: critical - annotations: - summary: "Eth-steth has detected {{ $value }} network errors in the last 15 minutes" - description: "The ethereum_steth_network_errors_total {{ $value }} in the last 15 minutes." diff --git a/ethereum-steth/alerts_tests.yml b/ethereum-steth/alerts_tests.yml deleted file mode 100644 index ba08844c2..000000000 --- a/ethereum-steth/alerts_tests.yml +++ /dev/null @@ -1,30 +0,0 @@ -rule_files: - - alerts.yml - -tests: - - interval: 5m - input_series: - - series: 'ethereum_steth_network_errors_total{}' - values: '100 110 120 125 130 165' - alert_rule_test: - - alertname: TooMuchNetworkErrors - eval_time: 15m - exp_alerts: - - exp_labels: - severity: critical - exp_annotations: - summary: "Eth-steth has detected 25 network errors in the last 15 minutes" - description: "The ethereum_steth_network_errors_total 25 in the last 15 minutes." - - - alertname: TooMuchNetworkErrors - eval_time: 20m - exp_alerts: [ ] - - - alertname: TooMuchNetworkErrors - eval_time: 25m - exp_alerts: - - exp_labels: - severity: critical - exp_annotations: - summary: "Eth-steth has detected 45 network errors in the last 15 minutes" - description: "The ethereum_steth_network_errors_total 45 in the last 15 minutes." diff --git a/ethereum-steth/jest.config.js b/ethereum-steth/jest.config.js deleted file mode 100644 index 9dfeb5d27..000000000 --- a/ethereum-steth/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['dist'], -} diff --git a/ethereum-steth/package.json b/ethereum-steth/package.json deleted file mode 100644 index ea3742a1f..000000000 --- a/ethereum-steth/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "name": "lido-steth-forta-bot", - "version": "1.0.0", - "description": "Forta Bot for Lido stETH", - "repository": { - "type": "git", - "directory": "https://github.com/lidofinance/alerting-forta/tree/main/ethereum-steth" - }, - "license": "MIT", - "chainIds": [ - 1 - ], - "husky": { - "hooks": { - "pre-commit": "yarn run lint" - } - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "move-migrations": "mkdir -p dist/db/migrations && cp src/db/migrations/* dist/db/migrations/", - "move-db": "cp src/db/*.sql dist/db/", - "build": "tsc && yarn run copy-version && yarn run move-migrations && yarn run move-db && mkdir dist/generated/proto && make gen_proto_prod", - "copy-version": "cp version.json dist", - "start": "ts-node src/main.ts", - "start:prod": "node dist/main.js", - "start:docker:prod": "node src/main.js", - "push": "yarn run update-version && forta-agent push", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated/typechain ./src/brief/abi/*", - "generate-proto": "make gen_ts && make gen_js", - "eslint:lint": "eslint ./src", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src README.md", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types && yarn generate-proto" - }, - "dependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@grpc/grpc-js": "^1.10.2", - "@types/lodash": "^4.14.202", - "@types/node": "^20.14.2", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "dotenv": "^16.4.5", - "ethers": "^5.7.2", - "express": "^4.19.2", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "knex": "^3.1.0", - "lodash": "^4.17.21", - "prom-client": "^15.1.2", - "sqlite": "3", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@faker-js/faker": "^8.3.1", - "@jest/globals": "^29.7.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.11", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "grpc-tools": "^1.12.4", - "grpc_tools_node_protoc_ts": "^5.3.3", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.1.0", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.2", - "ts-node": "^10.9.2", - "typechain": "^8.3.2", - "typescript": "^5.3.2" - }, - "packageManager": "yarn@1.22.22" -} diff --git a/ethereum-steth/src/brief/abi/GateSeal.json b/ethereum-steth/src/brief/abi/GateSeal.json deleted file mode 100644 index 8243451b1..000000000 --- a/ethereum-steth/src/brief/abi/GateSeal.json +++ /dev/null @@ -1,67 +0,0 @@ -[ - { - "name": "Sealed", - "inputs": [ - { "name": "gate_seal", "type": "address", "indexed": false }, - { "name": "sealed_by", "type": "address", "indexed": false }, - { "name": "sealed_for", "type": "uint256", "indexed": false }, - { "name": "sealable", "type": "address", "indexed": false }, - { "name": "sealed_at", "type": "uint256", "indexed": false } - ], - "anonymous": false, - "type": "event" - }, - { - "stateMutability": "nonpayable", - "type": "constructor", - "inputs": [ - { "name": "_sealing_committee", "type": "address" }, - { "name": "_seal_duration_seconds", "type": "uint256" }, - { "name": "_sealables", "type": "address[]" }, - { "name": "_expiry_timestamp", "type": "uint256" } - ], - "outputs": [] - }, - { - "stateMutability": "view", - "type": "function", - "name": "get_sealing_committee", - "inputs": [], - "outputs": [{ "name": "", "type": "address" }] - }, - { - "stateMutability": "view", - "type": "function", - "name": "get_seal_duration_seconds", - "inputs": [], - "outputs": [{ "name": "", "type": "uint256" }] - }, - { - "stateMutability": "view", - "type": "function", - "name": "get_sealables", - "inputs": [], - "outputs": [{ "name": "", "type": "address[]" }] - }, - { - "stateMutability": "view", - "type": "function", - "name": "get_expiry_timestamp", - "inputs": [], - "outputs": [{ "name": "", "type": "uint256" }] - }, - { - "stateMutability": "view", - "type": "function", - "name": "is_expired", - "inputs": [], - "outputs": [{ "name": "", "type": "bool" }] - }, - { - "stateMutability": "nonpayable", - "type": "function", - "name": "seal", - "inputs": [{ "name": "_sealables", "type": "address[]" }], - "outputs": [] - } -] diff --git a/ethereum-steth/src/brief/abi/GateSealFactory.json b/ethereum-steth/src/brief/abi/GateSealFactory.json deleted file mode 100644 index 2045e1ebe..000000000 --- a/ethereum-steth/src/brief/abi/GateSealFactory.json +++ /dev/null @@ -1,33 +0,0 @@ -[ - { - "name": "GateSealCreated", - "inputs": [{ "name": "gate_seal", "type": "address", "indexed": false }], - "anonymous": false, - "type": "event" - }, - { - "stateMutability": "nonpayable", - "type": "constructor", - "inputs": [{ "name": "_blueprint", "type": "address" }], - "outputs": [] - }, - { - "stateMutability": "view", - "type": "function", - "name": "get_blueprint", - "inputs": [], - "outputs": [{ "name": "", "type": "address" }] - }, - { - "stateMutability": "nonpayable", - "type": "function", - "name": "create_gate_seal", - "inputs": [ - { "name": "_sealing_committee", "type": "address" }, - { "name": "_seal_duration_seconds", "type": "uint256" }, - { "name": "_sealables", "type": "address[]" }, - { "name": "_expiry_timestamp", "type": "uint256" } - ], - "outputs": [] - } -] diff --git a/ethereum-steth/src/brief/abi/Lido.json b/ethereum-steth/src/brief/abi/Lido.json deleted file mode 100644 index 0d2c29468..000000000 --- a/ethereum-steth/src/brief/abi/Lido.json +++ /dev/null @@ -1,871 +0,0 @@ -[ - { - "constant": false, - "inputs": [], - "name": "resume", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "stop", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "hasInitialized", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "STAKING_CONTROL_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_ethAmount", "type": "uint256" }], - "name": "getSharesByPooledEth", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isStakingPaused", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_sender", "type": "address" }, - { "name": "_recipient", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_script", "type": "bytes" }], - "name": "getEVMScriptExecutor", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_maxStakeLimit", "type": "uint256" }, - { "name": "_stakeLimitIncreasePerBlock", "type": "uint256" } - ], - "name": "setStakingLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "RESUME_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_lidoLocator", "type": "address" }, - { "name": "_eip712StETH", "type": "address" } - ], - "name": "finalizeUpgrade_v2", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [{ "name": "", "type": "uint8" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getRecoveryVault", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalPooledEther", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_newDepositedValidators", "type": "uint256" }], - "name": "unsafeChangeDepositedValidators", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "PAUSE_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTreasury", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isStopped", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getBufferedEther", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_lidoLocator", "type": "address" }, - { "name": "_eip712StETH", "type": "address" } - ], - "name": "initialize", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "receiveELRewards", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getWithdrawalCredentials", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getCurrentStakeLimit", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getStakeLimitFullInfo", - "outputs": [ - { "name": "isStakingPaused", "type": "bool" }, - { "name": "isStakingLimitSet", "type": "bool" }, - { "name": "currentStakeLimit", "type": "uint256" }, - { "name": "maxStakeLimit", "type": "uint256" }, - { "name": "maxStakeLimitGrowthBlocks", "type": "uint256" }, - { "name": "prevStakeLimit", "type": "uint256" }, - { "name": "prevStakeBlockNumber", "type": "uint256" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_sender", "type": "address" }, - { "name": "_recipient", "type": "address" }, - { "name": "_sharesAmount", "type": "uint256" } - ], - "name": "transferSharesFrom", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_account", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "resumeStaking", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getFeeDistribution", - "outputs": [ - { "name": "treasuryFeeBasisPoints", "type": "uint16" }, - { "name": "insuranceFeeBasisPoints", "type": "uint16" }, - { "name": "operatorsFeeBasisPoints", "type": "uint16" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "receiveWithdrawals", - "outputs": [], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_sharesAmount", "type": "uint256" }], - "name": "getPooledEthByShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "token", "type": "address" }], - "name": "allowRecoverability", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "owner", "type": "address" }], - "name": "nonces", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "appId", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOracle", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "eip712Domain", - "outputs": [ - { "name": "name", "type": "string" }, - { "name": "version", "type": "string" }, - { "name": "chainId", "type": "uint256" }, - { "name": "verifyingContract", "type": "address" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getContractVersion", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getInitializationBlock", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_recipient", "type": "address" }, - { "name": "_sharesAmount", "type": "uint256" } - ], - "name": "transferShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [{ "name": "", "type": "string" }], - "payable": false, - "stateMutability": "pure", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getEIP712StETH", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "", "type": "address" }], - "name": "transferToVault", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "name": "_sender", "type": "address" }, - { "name": "_role", "type": "bytes32" }, - { "name": "_params", "type": "uint256[]" } - ], - "name": "canPerform", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [{ "name": "_referral", "type": "address" }], - "name": "submit", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": true, - "stateMutability": "payable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_spender", "type": "address" }, - { "name": "_subtractedValue", "type": "uint256" } - ], - "name": "decreaseAllowance", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getEVMScriptRegistry", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_recipient", "type": "address" }, - { "name": "_amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_maxDepositsCount", "type": "uint256" }, - { "name": "_stakingModuleId", "type": "uint256" }, - { "name": "_depositCalldata", "type": "bytes" } - ], - "name": "deposit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "UNSAFE_CHANGE_DEPOSITED_VALIDATORS_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getBeaconStat", - "outputs": [ - { "name": "depositedValidators", "type": "uint256" }, - { "name": "beaconValidators", "type": "uint256" }, - { "name": "beaconBalance", "type": "uint256" } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "removeStakingLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_reportTimestamp", "type": "uint256" }, - { "name": "_timeElapsed", "type": "uint256" }, - { "name": "_clValidators", "type": "uint256" }, - { "name": "_clBalance", "type": "uint256" }, - { "name": "_withdrawalVaultBalance", "type": "uint256" }, - { "name": "_elRewardsVaultBalance", "type": "uint256" }, - { "name": "_sharesRequestedToBurn", "type": "uint256" }, - { "name": "_withdrawalFinalizationBatches", "type": "uint256[]" }, - { "name": "_simulatedShareRate", "type": "uint256" } - ], - "name": "handleOracleReport", - "outputs": [{ "name": "postRebaseAmounts", "type": "uint256[4]" }], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getFee", - "outputs": [{ "name": "totalFee", "type": "uint16" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "kernel", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalShares", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { "name": "_owner", "type": "address" }, - { "name": "_spender", "type": "address" }, - { "name": "_value", "type": "uint256" }, - { "name": "_deadline", "type": "uint256" }, - { "name": "_v", "type": "uint8" }, - { "name": "_r", "type": "bytes32" }, - { "name": "_s", "type": "bytes32" } - ], - "name": "permit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { "name": "_owner", "type": "address" }, - { "name": "_spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "isPetrified", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getLidoLocator", - "outputs": [{ "name": "", "type": "address" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "canDeposit", - "outputs": [{ "name": "", "type": "bool" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "STAKING_PAUSE_ROLE", - "outputs": [{ "name": "", "type": "bytes32" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getDepositableEther", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [{ "name": "_account", "type": "address" }], - "name": "sharesOf", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [], - "name": "pauseStaking", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getTotalELRewardsCollected", - "outputs": [{ "name": "", "type": "uint256" }], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { "payable": true, "stateMutability": "payable", "type": "fallback" }, - { "anonymous": false, "inputs": [], "name": "StakingPaused", "type": "event" }, - { "anonymous": false, "inputs": [], "name": "StakingResumed", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "name": "maxStakeLimit", "type": "uint256" }, - { "indexed": false, "name": "stakeLimitIncreasePerBlock", "type": "uint256" } - ], - "name": "StakingLimitSet", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "StakingLimitRemoved", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "reportTimestamp", "type": "uint256" }, - { "indexed": false, "name": "preCLValidators", "type": "uint256" }, - { "indexed": false, "name": "postCLValidators", "type": "uint256" } - ], - "name": "CLValidatorsUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "depositedValidators", "type": "uint256" }], - "name": "DepositedValidatorsChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "reportTimestamp", "type": "uint256" }, - { "indexed": false, "name": "preCLBalance", "type": "uint256" }, - { "indexed": false, "name": "postCLBalance", "type": "uint256" }, - { "indexed": false, "name": "withdrawalsWithdrawn", "type": "uint256" }, - { "indexed": false, "name": "executionLayerRewardsWithdrawn", "type": "uint256" }, - { "indexed": false, "name": "postBufferedEther", "type": "uint256" } - ], - "name": "ETHDistributed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "reportTimestamp", "type": "uint256" }, - { "indexed": false, "name": "timeElapsed", "type": "uint256" }, - { "indexed": false, "name": "preTotalShares", "type": "uint256" }, - { "indexed": false, "name": "preTotalEther", "type": "uint256" }, - { "indexed": false, "name": "postTotalShares", "type": "uint256" }, - { "indexed": false, "name": "postTotalEther", "type": "uint256" }, - { "indexed": false, "name": "sharesMintedAsFees", "type": "uint256" } - ], - "name": "TokenRebased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "lidoLocator", "type": "address" }], - "name": "LidoLocatorSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "amount", "type": "uint256" }], - "name": "ELRewardsReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "amount", "type": "uint256" }], - "name": "WithdrawalsReceived", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "sender", "type": "address" }, - { "indexed": false, "name": "amount", "type": "uint256" }, - { "indexed": false, "name": "referral", "type": "address" } - ], - "name": "Submitted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "amount", "type": "uint256" }], - "name": "Unbuffered", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "executor", "type": "address" }, - { "indexed": false, "name": "script", "type": "bytes" }, - { "indexed": false, "name": "input", "type": "bytes" }, - { "indexed": false, "name": "returnData", "type": "bytes" } - ], - "name": "ScriptResult", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "vault", "type": "address" }, - { "indexed": true, "name": "token", "type": "address" }, - { "indexed": false, "name": "amount", "type": "uint256" } - ], - "name": "RecoverToVault", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "eip712StETH", "type": "address" }], - "name": "EIP712StETHInitialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "from", "type": "address" }, - { "indexed": true, "name": "to", "type": "address" }, - { "indexed": false, "name": "sharesValue", "type": "uint256" } - ], - "name": "TransferShares", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "account", "type": "address" }, - { "indexed": false, "name": "preRebaseTokenAmount", "type": "uint256" }, - { "indexed": false, "name": "postRebaseTokenAmount", "type": "uint256" }, - { "indexed": false, "name": "sharesAmount", "type": "uint256" } - ], - "name": "SharesBurnt", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "Stopped", "type": "event" }, - { "anonymous": false, "inputs": [], "name": "Resumed", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "from", "type": "address" }, - { "indexed": true, "name": "to", "type": "address" }, - { "indexed": false, "name": "value", "type": "uint256" } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "name": "owner", "type": "address" }, - { "indexed": true, "name": "spender", "type": "address" }, - { "indexed": false, "name": "value", "type": "uint256" } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "name": "version", "type": "uint256" }], - "name": "ContractVersionSet", - "type": "event" - } -] diff --git a/ethereum-steth/src/brief/abi/ValidatorsExitBusOracle.json b/ethereum-steth/src/brief/abi/ValidatorsExitBusOracle.json deleted file mode 100644 index b127f2361..000000000 --- a/ethereum-steth/src/brief/abi/ValidatorsExitBusOracle.json +++ /dev/null @@ -1,1179 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "uint256", - "name": "secondsPerSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "genesisTime", - "type": "uint256" - }, - { - "internalType": "address", - "name": "lidoLocator", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "AddressCannotBeSame", - "type": "error" - }, - { - "inputs": [], - "name": "AddressCannotBeZero", - "type": "error" - }, - { - "inputs": [], - "name": "AdminCannotBeZero", - "type": "error" - }, - { - "inputs": [], - "name": "ArgumentOutOfBounds", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "initialRefSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "processingRefSlot", - "type": "uint256" - } - ], - "name": "InitialRefSlotCannotBeLessThanProcessingOne", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidContractVersionIncrement", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRequestsData", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRequestsDataLength", - "type": "error" - }, - { - "inputs": [], - "name": "InvalidRequestsDataSortOrder", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "moduleId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "nodeOpId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "prevRequestedValidatorIndex", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "requestedValidatorIndex", - "type": "uint256" - } - ], - "name": "NodeOpValidatorIndexMustIncrease", - "type": "error" - }, - { - "inputs": [], - "name": "NonZeroContractVersionOnInit", - "type": "error" - }, - { - "inputs": [], - "name": "OnlyConsensusContractCanSubmitReport", - "type": "error" - }, - { - "inputs": [], - "name": "PauseUntilMustBeInFuture", - "type": "error" - }, - { - "inputs": [], - "name": "PausedExpected", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "ProcessingDeadlineMissed", - "type": "error" - }, - { - "inputs": [], - "name": "RefSlotAlreadyProcessing", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "prevRefSlot", - "type": "uint256" - } - ], - "name": "RefSlotCannotDecrease", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "processingRefSlot", - "type": "uint256" - } - ], - "name": "RefSlotMustBeGreaterThanProcessingOne", - "type": "error" - }, - { - "inputs": [], - "name": "ResumedExpected", - "type": "error" - }, - { - "inputs": [], - "name": "SenderNotAllowed", - "type": "error" - }, - { - "inputs": [], - "name": "UnexpectedChainConfig", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "expectedVersion", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "receivedVersion", - "type": "uint256" - } - ], - "name": "UnexpectedConsensusVersion", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "expected", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "received", - "type": "uint256" - } - ], - "name": "UnexpectedContractVersion", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "consensusHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "receivedHash", - "type": "bytes32" - } - ], - "name": "UnexpectedDataHash", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "consensusRefSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "dataRefSlot", - "type": "uint256" - } - ], - "name": "UnexpectedRefSlot", - "type": "error" - }, - { - "inputs": [], - "name": "UnexpectedRequestsDataLength", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "format", - "type": "uint256" - } - ], - "name": "UnsupportedRequestsDataFormat", - "type": "error" - }, - { - "inputs": [], - "name": "VersionCannotBeSame", - "type": "error" - }, - { - "inputs": [], - "name": "ZeroPauseDuration", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "addr", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "prevAddr", - "type": "address" - } - ], - "name": "ConsensusHashContractSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "version", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "prevVersion", - "type": "uint256" - } - ], - "name": "ConsensusVersionSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "version", - "type": "uint256" - } - ], - "name": "ContractVersionSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "Paused", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ], - "name": "ProcessingStarted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "processingDeadlineTime", - "type": "uint256" - } - ], - "name": "ReportSubmitted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "Resumed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "stakingModuleId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "nodeOperatorId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "validatorIndex", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "validatorPubkey", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "name": "ValidatorExitRequest", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "requestsProcessed", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "requestsCount", - "type": "uint256" - } - ], - "name": "WarnDataIncompleteProcessing", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - } - ], - "name": "WarnProcessingMissed", - "type": "event" - }, - { - "inputs": [], - "name": "DATA_FORMAT_LIST", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "GENESIS_TIME", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MANAGE_CONSENSUS_CONTRACT_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MANAGE_CONSENSUS_VERSION_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PAUSE_INFINITELY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PAUSE_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESUME_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SECONDS_PER_SLOT", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "SUBMIT_DATA_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getConsensusContract", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getConsensusReport", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "processingDeadlineTime", - "type": "uint256" - }, - { - "internalType": "bool", - "name": "processingStarted", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getConsensusVersion", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getContractVersion", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastProcessingRefSlot", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "moduleId", - "type": "uint256" - }, - { - "internalType": "uint256[]", - "name": "nodeOpIds", - "type": "uint256[]" - } - ], - "name": "getLastRequestedValidatorIndices", - "outputs": [ - { - "internalType": "int256[]", - "name": "", - "type": "int256[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getProcessingState", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "currentFrameRefSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "processingDeadlineTime", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "dataHash", - "type": "bytes32" - }, - { - "internalType": "bool", - "name": "dataSubmitted", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "dataFormat", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "requestsCount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "requestsSubmitted", - "type": "uint256" - } - ], - "internalType": "struct ValidatorsExitBusOracle.ProcessingState", - "name": "result", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getResumeSinceTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "getRoleMember", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleMemberCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getTotalRequestsProcessed", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "admin", - "type": "address" - }, - { - "internalType": "address", - "name": "consensusContract", - "type": "address" - }, - { - "internalType": "uint256", - "name": "consensusVersion", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastProcessingRefSlot", - "type": "uint256" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isPaused", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_duration", - "type": "uint256" - } - ], - "name": "pauseFor", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "_pauseUntilInclusive", - "type": "uint256" - } - ], - "name": "pauseUntil", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "resume", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "setConsensusContract", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "version", - "type": "uint256" - } - ], - "name": "setConsensusVersion", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "reportHash", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - } - ], - "name": "submitConsensusReport", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "consensusVersion", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "refSlot", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "requestsCount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "dataFormat", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "internalType": "struct ValidatorsExitBusOracle.ReportData", - "name": "data", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "contractVersion", - "type": "uint256" - } - ], - "name": "submitReportData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/ethereum-steth/src/brief/abi/WithdrawalQueueERC721.json b/ethereum-steth/src/brief/abi/WithdrawalQueueERC721.json deleted file mode 100644 index 3f04ff262..000000000 --- a/ethereum-steth/src/brief/abi/WithdrawalQueueERC721.json +++ /dev/null @@ -1,890 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "address", "name": "_wstETH", "type": "address" }, - { "internalType": "string", "name": "_name", "type": "string" }, - { "internalType": "string", "name": "_symbol", "type": "string" } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { "inputs": [], "name": "AdminZeroAddress", "type": "error" }, - { "inputs": [], "name": "ApprovalToOwner", "type": "error" }, - { "inputs": [], "name": "ApproveToCaller", "type": "error" }, - { - "inputs": [ - { "internalType": "uint256", "name": "_firstArrayLength", "type": "uint256" }, - { "internalType": "uint256", "name": "_secondArrayLength", "type": "uint256" } - ], - "name": "ArraysLengthMismatch", - "type": "error" - }, - { "inputs": [], "name": "BatchesAreNotSorted", "type": "error" }, - { "inputs": [], "name": "CantSendValueRecipientMayHaveReverted", "type": "error" }, - { "inputs": [], "name": "EmptyBatches", "type": "error" }, - { "inputs": [], "name": "InvalidContractVersionIncrement", "type": "error" }, - { - "inputs": [{ "internalType": "uint256", "name": "_hint", "type": "uint256" }], - "name": "InvalidHint", - "type": "error" - }, - { - "inputs": [{ "internalType": "address", "name": "", "type": "address" }], - "name": "InvalidOwnerAddress", - "type": "error" - }, - { "inputs": [], "name": "InvalidReportTimestamp", "type": "error" }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "InvalidRequestId", - "type": "error" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "startId", "type": "uint256" }, - { "internalType": "uint256", "name": "endId", "type": "uint256" } - ], - "name": "InvalidRequestIdRange", - "type": "error" - }, - { "inputs": [], "name": "InvalidState", "type": "error" }, - { "inputs": [], "name": "NonZeroContractVersionOnInit", "type": "error" }, - { "inputs": [], "name": "NotEnoughEther", "type": "error" }, - { - "inputs": [ - { "internalType": "address", "name": "_sender", "type": "address" }, - { "internalType": "address", "name": "_owner", "type": "address" } - ], - "name": "NotOwner", - "type": "error" - }, - { - "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], - "name": "NotOwnerOrApproved", - "type": "error" - }, - { - "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], - "name": "NotOwnerOrApprovedForAll", - "type": "error" - }, - { "inputs": [], "name": "PauseUntilMustBeInFuture", "type": "error" }, - { "inputs": [], "name": "PausedExpected", "type": "error" }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "RequestAlreadyClaimed", - "type": "error" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_amountOfStETH", "type": "uint256" }], - "name": "RequestAmountTooLarge", - "type": "error" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_amountOfStETH", "type": "uint256" }], - "name": "RequestAmountTooSmall", - "type": "error" - }, - { "inputs": [], "name": "RequestIdsNotSorted", "type": "error" }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "RequestNotFoundOrNotFinalized", - "type": "error" - }, - { "inputs": [], "name": "ResumedExpected", "type": "error" }, - { - "inputs": [{ "internalType": "string", "name": "str", "type": "string" }], - "name": "StringTooLong", - "type": "error" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "sent", "type": "uint256" }, - { "internalType": "uint256", "name": "maxExpected", "type": "uint256" } - ], - "name": "TooMuchEtherToFinalize", - "type": "error" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "realOwner", "type": "address" } - ], - "name": "TransferFromIncorrectOwner", - "type": "error" - }, - { "inputs": [], "name": "TransferFromZeroAddress", "type": "error" }, - { - "inputs": [{ "internalType": "address", "name": "", "type": "address" }], - "name": "TransferToNonIERC721Receiver", - "type": "error" - }, - { "inputs": [], "name": "TransferToThemselves", "type": "error" }, - { "inputs": [], "name": "TransferToZeroAddress", "type": "error" }, - { - "inputs": [ - { "internalType": "uint256", "name": "expected", "type": "uint256" }, - { "internalType": "uint256", "name": "received", "type": "uint256" } - ], - "name": "UnexpectedContractVersion", - "type": "error" - }, - { "inputs": [], "name": "ZeroAmountOfETH", "type": "error" }, - { "inputs": [], "name": "ZeroMetadata", "type": "error" }, - { "inputs": [], "name": "ZeroPauseDuration", "type": "error" }, - { "inputs": [], "name": "ZeroRecipient", "type": "error" }, - { "inputs": [], "name": "ZeroShareRate", "type": "error" }, - { "inputs": [], "name": "ZeroTimestamp", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, - { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, - { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], - "name": "BaseURISet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } - ], - "name": "BatchMetadataUpdate", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "BunkerModeDisabled", "type": "event" }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "uint256", "name": "_sinceTimestamp", "type": "uint256" }], - "name": "BunkerModeEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "uint256", "name": "version", "type": "uint256" }], - "name": "ContractVersionSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "address", "name": "_admin", "type": "address" }], - "name": "InitializedV1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" }], - "name": "MetadataUpdate", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "address", "name": "nftDescriptorAddress", "type": "address" }], - "name": "NftDescriptorAddressSet", - "type": "event" - }, - { - "anonymous": false, - "inputs": [{ "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" }], - "name": "Paused", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "Resumed", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, - { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, - { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "uint256", "name": "requestId", "type": "uint256" }, - { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, - { "indexed": false, "internalType": "uint256", "name": "amountOfETH", "type": "uint256" } - ], - "name": "WithdrawalClaimed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "uint256", "name": "requestId", "type": "uint256" }, - { "indexed": true, "internalType": "address", "name": "requestor", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, - { "indexed": false, "internalType": "uint256", "name": "amountOfStETH", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "amountOfShares", "type": "uint256" } - ], - "name": "WithdrawalRequested", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "uint256", "name": "from", "type": "uint256" }, - { "indexed": true, "internalType": "uint256", "name": "to", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "amountOfETHLocked", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "sharesToBurn", "type": "uint256" }, - { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } - ], - "name": "WithdrawalsFinalized", - "type": "event" - }, - { - "inputs": [], - "name": "BUNKER_MODE_DISABLED_TIMESTAMP", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "FINALIZE_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MANAGE_TOKEN_URI_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_BATCHES_LENGTH", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAX_STETH_WITHDRAWAL_AMOUNT", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MIN_STETH_WITHDRAWAL_AMOUNT", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "ORACLE_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PAUSE_INFINITELY", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PAUSE_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RESUME_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "STETH", - "outputs": [{ "internalType": "contract IStETH", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WSTETH", - "outputs": [{ "internalType": "contract IWstETH", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "uint256", "name": "_requestId", "type": "uint256" } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_owner", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bunkerModeSinceTimestamp", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "_maxShareRate", "type": "uint256" }, - { "internalType": "uint256", "name": "_maxTimestamp", "type": "uint256" }, - { "internalType": "uint256", "name": "_maxRequestsPerCall", "type": "uint256" }, - { - "components": [ - { "internalType": "uint256", "name": "remainingEthBudget", "type": "uint256" }, - { "internalType": "bool", "name": "finished", "type": "bool" }, - { "internalType": "uint256[36]", "name": "batches", "type": "uint256[36]" }, - { "internalType": "uint256", "name": "batchesLength", "type": "uint256" } - ], - "internalType": "struct WithdrawalQueueBase.BatchesCalculationState", - "name": "_state", - "type": "tuple" - } - ], - "name": "calculateFinalizationBatches", - "outputs": [ - { - "components": [ - { "internalType": "uint256", "name": "remainingEthBudget", "type": "uint256" }, - { "internalType": "bool", "name": "finished", "type": "bool" }, - { "internalType": "uint256[36]", "name": "batches", "type": "uint256[36]" }, - { "internalType": "uint256", "name": "batchesLength", "type": "uint256" } - ], - "internalType": "struct WithdrawalQueueBase.BatchesCalculationState", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "claimWithdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_requestIds", "type": "uint256[]" }, - { "internalType": "uint256[]", "name": "_hints", "type": "uint256[]" } - ], - "name": "claimWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_requestIds", "type": "uint256[]" }, - { "internalType": "uint256[]", "name": "_hints", "type": "uint256[]" }, - { "internalType": "address", "name": "_recipient", "type": "address" } - ], - "name": "claimWithdrawalsTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "_lastRequestIdToBeFinalized", "type": "uint256" }, - { "internalType": "uint256", "name": "_maxShareRate", "type": "uint256" } - ], - "name": "finalize", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_requestIds", "type": "uint256[]" }, - { "internalType": "uint256", "name": "_firstIndex", "type": "uint256" }, - { "internalType": "uint256", "name": "_lastIndex", "type": "uint256" } - ], - "name": "findCheckpointHints", - "outputs": [{ "internalType": "uint256[]", "name": "hintIds", "type": "uint256[]" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "getApproved", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBaseURI", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_requestIds", "type": "uint256[]" }, - { "internalType": "uint256[]", "name": "_hints", "type": "uint256[]" } - ], - "name": "getClaimableEther", - "outputs": [{ "internalType": "uint256[]", "name": "claimableEthValues", "type": "uint256[]" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getContractVersion", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastCheckpointIndex", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastFinalizedRequestId", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastRequestId", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLockedEtherAmount", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getNFTDescriptorAddress", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getResumeSinceTimestamp", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], - "name": "getRoleAdmin", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "uint256", "name": "index", "type": "uint256" } - ], - "name": "getRoleMember", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], - "name": "getRoleMemberCount", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_owner", "type": "address" }], - "name": "getWithdrawalRequests", - "outputs": [{ "internalType": "uint256[]", "name": "requestsIds", "type": "uint256[]" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256[]", "name": "_requestIds", "type": "uint256[]" }], - "name": "getWithdrawalStatus", - "outputs": [ - { - "components": [ - { "internalType": "uint256", "name": "amountOfStETH", "type": "uint256" }, - { "internalType": "uint256", "name": "amountOfShares", "type": "uint256" }, - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, - { "internalType": "bool", "name": "isFinalized", "type": "bool" }, - { "internalType": "bool", "name": "isClaimed", "type": "bool" } - ], - "internalType": "struct WithdrawalQueueBase.WithdrawalRequestStatus[]", - "name": "statuses", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "hasRole", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_admin", "type": "address" }], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_owner", "type": "address" }, - { "internalType": "address", "name": "_operator", "type": "address" } - ], - "name": "isApprovedForAll", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isBunkerModeActive", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isPaused", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bool", "name": "_isBunkerModeNow", "type": "bool" }, - { "internalType": "uint256", "name": "_bunkerStartTimestamp", "type": "uint256" }, - { "internalType": "uint256", "name": "_currentReportTimestamp", "type": "uint256" } - ], - "name": "onOracleReport", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "ownerOf", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_duration", "type": "uint256" }], - "name": "pauseFor", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_pauseUntilInclusive", "type": "uint256" }], - "name": "pauseUntil", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_batches", "type": "uint256[]" }, - { "internalType": "uint256", "name": "_maxShareRate", "type": "uint256" } - ], - "name": "prefinalize", - "outputs": [ - { "internalType": "uint256", "name": "ethToLock", "type": "uint256" }, - { "internalType": "uint256", "name": "sharesToBurn", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, - { "internalType": "address", "name": "_owner", "type": "address" } - ], - "name": "requestWithdrawals", - "outputs": [{ "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, - { "internalType": "address", "name": "_owner", "type": "address" }, - { - "components": [ - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "uint256", "name": "deadline", "type": "uint256" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "internalType": "struct WithdrawalQueue.PermitInput", - "name": "_permit", - "type": "tuple" - } - ], - "name": "requestWithdrawalsWithPermit", - "outputs": [{ "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, - { "internalType": "address", "name": "_owner", "type": "address" } - ], - "name": "requestWithdrawalsWstETH", - "outputs": [{ "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256[]", "name": "_amounts", "type": "uint256[]" }, - { "internalType": "address", "name": "_owner", "type": "address" }, - { - "components": [ - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "uint256", "name": "deadline", "type": "uint256" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "internalType": "struct WithdrawalQueue.PermitInput", - "name": "_permit", - "type": "tuple" - } - ], - "name": "requestWithdrawalsWstETHWithPermit", - "outputs": [{ "internalType": "uint256[]", "name": "requestIds", "type": "uint256[]" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { "inputs": [], "name": "resume", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "uint256", "name": "_requestId", "type": "uint256" } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "uint256", "name": "_requestId", "type": "uint256" }, - { "internalType": "bytes", "name": "_data", "type": "bytes" } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_operator", "type": "address" }, - { "internalType": "bool", "name": "_approved", "type": "bool" } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "string", "name": "_baseURI", "type": "string" }], - "name": "setBaseURI", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "_nftDescriptorAddress", "type": "address" }], - "name": "setNFTDescriptorAddress", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], - "name": "supportsInterface", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "uint256", "name": "_requestId", "type": "uint256" }], - "name": "tokenURI", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_from", "type": "address" }, - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "uint256", "name": "_requestId", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unfinalizedRequestNumber", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "unfinalizedStETH", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - } -] diff --git a/ethereum-steth/src/brief/proto/agent.proto b/ethereum-steth/src/brief/proto/agent.proto deleted file mode 100644 index 95b9af4b6..000000000 --- a/ethereum-steth/src/brief/proto/agent.proto +++ /dev/null @@ -1,348 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -import public "alert.proto"; - -option go_package = "./;protocol"; - - -service Agent { - rpc Initialize (InitializeRequest) returns (InitializeResponse) {} - rpc EvaluateTx (EvaluateTxRequest) returns (EvaluateTxResponse) {} - rpc EvaluateBlock (EvaluateBlockRequest) returns (EvaluateBlockResponse) {} - rpc EvaluateAlert (EvaluateAlertRequest) returns (EvaluateAlertResponse) {} - rpc HealthCheck (HealthCheckRequest) returns (HealthCheckResponse) {} -} - -message Error { - string message = 1; -} - -enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; -} - -message HealthCheckRequest {} - -message HealthCheckResponse { - enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; - } - - ResponseStatus status = 1; - repeated Error errors = 2; -} - -message InitializeRequest { - string agentId = 1; - string proxyHost = 2; - int32 shardId = 3; -} - -message InitializeResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated string addresses = 3; - AlertConfig alertConfig = 4; -} - -message AlertConfig { - repeated CombinerBotSubscription subscriptions = 1; -} - -message CombinerBotSubscription { - string botId = 1; - string alertId = 2; - repeated string alertIds = 3; - uint64 chainId = 4; -} - -message EvaluateTxRequest { - string requestId = 1; - TransactionEvent event = 2; - int32 shardId = 3; -} - -message EvaluateBlockRequest { - string requestId = 1; - BlockEvent event = 2; - int32 shardId = 3; -} - -message EvaluateAlertRequest { - string requestId = 1; - AlertEvent event = 2; - string targetBotId = 3; - int32 shardId = 4; -} - -message EvaluateTxResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateBlockResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateAlertResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message BlockEvent { - enum EventType { - BLOCK = 0; - REORG = 1 [deprecated = true]; - } - message Network { - string chainId = 1; - } - - message EthBlock { - string difficulty = 1; - string extraData = 2; - string gasLimit = 3; - string gasUsed = 4; - string hash = 5; - string logsBloom = 6; - string miner = 7; - string mixHash = 8; - string nonce = 9; - string number = 10; - string parentHash = 11; - string receiptsRoot = 12; - string sha3Uncles = 13; - string size = 14; - string stateRoot = 15; - string timestamp = 16; - string totalDifficulty = 17; - repeated string transactions = 18; - string transactionsRoot = 19; - repeated string uncles = 20; - string baseFeePerGas = 21; - } - - EventType type = 1; - string blockHash = 2; - string blockNumber = 3; - Network network = 4; - EthBlock block = 5; - TrackingTimestamps timestamps = 6; -} - -message TransactionEvent { - - enum EventType { - BLOCK = 0; - REORG = 1; - } - - message Network { - string chainId = 1; - } - - message EthBlock { - string blockHash = 1; - string blockNumber = 2; - string blockTimestamp = 3; - string baseFeePerGas = 4; - } - - message EthTransaction { - string type = 1; - string nonce = 2; - string gasPrice = 3; - string gas = 4; - string value = 5; - string input = 6; - string v = 7; - string r = 8; - string s = 9; - string to = 10; - string hash = 11; - string from = 12; - string maxFeePerGas = 13; - string maxPriorityFeePerGas = 14; - } - - message Log { - string address = 1; - repeated string topics = 2; - string data = 3; - string blockNumber = 4; - string transactionHash = 5; - string transactionIndex = 6; - string blockHash = 7; - string logIndex = 8; - bool removed = 9; - } - - message EthReceipt { - string root = 1; - string status = 2; - string cumulativeGasUsed = 3; - string logsBloom = 4; - repeated Log logs = 5; - string transactionHash = 6; - string contractAddress = 7; - string gasUsed = 8; - string blockHash = 9; - string blockNumber = 10; - string transactionIndex = 11; - } - - message TraceAction { - string callType = 1; - string to = 2; - string input = 3; - string from = 4; - string value = 5; - string init = 6; - string address = 7; - string balance = 8; - string refundAddress = 9; - } - - message TraceResult { - string gasUsed = 1; - string address = 2; - string code = 3; - string output = 4; - } - - message Trace { - TraceAction action = 1; - string blockHash = 2; - int64 blockNumber = 3; - TraceResult result = 4; - int64 subtraces = 5; - repeated int64 traceAddress = 6; - string transactionHash = 7; - int64 transactionPosition = 8; - string type = 9; - string error = 10; - } - - EventType type = 1; - EthTransaction transaction = 2; - EthReceipt receipt = 3 [deprecated = true]; - Network network = 4; - repeated Trace traces = 5; - map addresses = 6; - EthBlock block = 7; - repeated Log logs = 8; - bool isContractDeployment = 9; - string contractAddress = 10; - TrackingTimestamps timestamps = 11; - map txAddresses = 12; -} - -message AlertEvent { - message Alert { - message Contract { - string name = 1; - string projectId = 2; - } - - message Project { - string id = 1; - } - - message Block { - uint64 number = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Bot { - repeated string chainIds = 1; - string createdAt = 2; - string description = 3; - string developer = 4; - string DocReference = 5; - bool enabled = 6; - string id = 7; - string image = 8; - string name = 9; - string reference = 10; - string repository = 11; - repeated string projects = 12; - repeated string scanNodes = 13; - string version = 14; - } - - message SourceAlertEvent { - string botId = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Source { - string transactionHash = 1; - Bot bot = 2; - Block block = 3; - SourceAlertEvent sourceAlert = 4; - } - - message Label { - string label = 1; - float confidence = 2; - string entity = 3; - string entityType = 4; - bool remove = 5; - repeated string metadata = 6; - string uniqueKey = 7; - } - - // Unique string to identify this class of finding, - // primarily used to group similar findings for the end user - string alertId = 1; - // List of addresses involved in the alert - repeated string addresses = 2; - // List of contracts related to the alert - repeated Contract contracts = 3; - // Timestamp when the alert was published - string createdAt = 4; - string description = 5; - string hash = 6; - map metadata = 7; - string name = 8; - repeated Project projects = 9; - int32 scanNodeCount = 10; - string severity = 11; - Source source = 12; - string findingType = 13; - repeated string relatedAlerts = 14; - uint64 chainId = 15; - repeated Label labels = 16; - bool truncated = 17; - BloomFilter addressBloomFilter = 18; - } - - Alert alert = 1; - TrackingTimestamps timestamps = 2; -} diff --git a/ethereum-steth/src/brief/proto/alert.proto b/ethereum-steth/src/brief/proto/alert.proto deleted file mode 100644 index 16c089991..000000000 --- a/ethereum-steth/src/brief/proto/alert.proto +++ /dev/null @@ -1,179 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -option go_package = "./;protocol"; - -message TrackingTimestamps { - string block = 1; - string feed = 2; - string botRequest = 3; - string botResponse = 4; - string sourceAlert = 5; -} - -enum AlertType { - UNKNOWN_ALERT_TYPE = 0; - TRANSACTION = 1; - BLOCK = 2; - PRIVATE = 3; - COMBINATION = 4; - API = 5; -} - -message AgentInfo { - string image = 1; - string imageHash = 2; - string id = 3; - bool isTest = 4; - string manifest = 5; -} - -message ScannerInfo { - string address = 1; -} - -message AlertResponse { - repeated SignedAlert alerts = 1; - string nextPageToken = 2; -} - -message Signature { - string signature = 1; - string algorithm = 2; - string signer = 3; -} - -message BloomFilter { - string k = 1; - string m = 2; - string bitset = 3; - uint32 itemCount = 4; -} - -message Alert { - string id = 1; - AlertType type = 2; - Finding finding = 3; - string timestamp = 4; - map metadata = 5; - AgentInfo agent = 6; - map tags = 7; - ScannerInfo scanner = 8; - TrackingTimestamps timestamps = 9; - bool truncated = 10; - BloomFilter addressBloomFilter = 11; -} - -message SignedAlert { - Alert alert = 1; - Signature signature = 2; - string chainId = 3; - string blockNumber = 4; - string publishedWithTx = 5; -} - -message Label { - enum EntityType { - UNKNOWN_ENTITY_TYPE = 0; - ADDRESS = 1; - TRANSACTION = 2; - BLOCK = 3; - URL = 4; - } - - EntityType entityType = 1; - string entity = 2; - reserved 3; - float confidence = 4; - reserved 5; - bool remove = 6; - string label = 7; - repeated string metadata = 8; - string uniqueKey = 9; -} - -message Source { - message TransactionSource { - uint64 chainId = 1; - string hash = 2; - } - - message BlockSource { - uint64 chainId = 1; - string hash = 2; - uint64 number = 3; - } - - message URLSource { - string url = 1; - } - - message ChainSource { - uint64 chainId = 1; - } - - message AlertSource { - string id = 1; - } - - message CustomSource { - string name = 1; - string value = 2; - } - - repeated TransactionSource transactions = 1; - repeated BlockSource blocks = 2; - repeated URLSource urls = 3; - repeated ChainSource chains = 4; - repeated AlertSource alerts = 5; - repeated CustomSource customSources = 6; -} - -message Finding { - enum Severity { - UNKNOWN = 0; - INFO = 1; - LOW = 2; - MEDIUM = 3; - HIGH = 4; - CRITICAL = 5; - } - - enum FindingType { - UNKNOWN_TYPE = 0; - EXPLOIT = 1; - SUSPICIOUS = 2; - DEGRADED = 3; - INFORMATION = 4; - SCAM = 5; - } - - string protocol = 1; - Severity severity = 2; - map metadata = 3; - FindingType type = 4; - string alertId = 5; - string name = 6; - string description = 7; - reserved 8; - bool private = 9; - repeated string addresses = 10; - map indicators = 11; - repeated Label labels = 12; - repeated string relatedAlerts = 13; - string uniqueKey = 14; - Source source = 15; - string timestamp = 16; -} - -message APIAlert { - message APIAlertAgent { - string id = 1; - } - string id = 1; - AlertType type = 2; - Finding finding = 3; - APIAlertAgent agent = 4; - string timestamp = 5; -} \ No newline at end of file diff --git a/ethereum-steth/src/clients/eth_provider.spec.ts b/ethereum-steth/src/clients/eth_provider.spec.ts deleted file mode 100644 index bcc731108..000000000 --- a/ethereum-steth/src/clients/eth_provider.spec.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { either as E } from 'fp-ts' -import { Address, ETH_DECIMALS, GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024 } from '../utils/constants' -import { GateSeal } from '../entity/gate_seal' -import { ethers } from 'forta-agent' -import BigNumber from 'bignumber.js' -import { expect } from '@jest/globals' -import * as Winston from 'winston' -import { getFortaConfig } from 'forta-agent/dist/sdk/utils' -import { - GateSeal__factory, - Lido__factory, - ValidatorsExitBusOracle__factory, - WithdrawalQueueERC721__factory, -} from '../generated/typechain' -import { ETHProvider } from './eth_provider' -import { Metrics } from '../utils/metrics/metrics' -import promClient from 'prom-client' -import { HISTORY_BLOCK_OFFSET } from '../services/steth_operation/StethOperation.srv' - -describe('eth provider tests', () => { - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - const address: Address = Address - const chainId = 1 - - const fortaEthersProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) - const lidoRunner = Lido__factory.connect(address.LIDO_STETH_ADDRESS, fortaEthersProvider) - const wdQueueRunner = WithdrawalQueueERC721__factory.connect(address.WITHDRAWALS_QUEUE_ADDRESS, fortaEthersProvider) - const gateSealRunner = GateSeal__factory.connect(address.GATE_SEAL_DEFAULT_ADDRESS, fortaEthersProvider) - const veboRunner = ValidatorsExitBusOracle__factory.connect(address.EXIT_BUS_ORACLE_ADDRESS, fortaEthersProvider) - - const defaultRegistry = promClient - const prefix = 'test_' - defaultRegistry.collectDefaultMetrics({ - prefix: prefix, - }) - - const registry = new promClient.Registry() - const metrics = new Metrics(registry, prefix) - - const ethClient = new ETHProvider( - logger, - metrics, - fortaEthersProvider, - lidoRunner, - wdQueueRunner, - gateSealRunner, - veboRunner, - ) - - test('getWithdrawalStatuses should return 1750 withdrawal statuses', async () => { - const blockNumber = 19112800 - const requestsRange: number[] = [] - for (let i = 21001; i <= 22750; i++) { - requestsRange.push(i) - } - - const statuses = await ethClient.getWithdrawalStatuses(requestsRange, blockNumber) - if (E.isLeft(statuses)) { - throw statuses.left.message - } - - expect(statuses.right.length).toEqual(1750) - }, 120_000) - - test('checkGateSeal should be success', async () => { - const blockNumber = 19140476 - - const resp = await ethClient.checkGateSeal(blockNumber, GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024) - if (E.isLeft(resp)) { - throw resp.left.message - } - - const expected: GateSeal = { - roleForWithdrawalQueue: true, - roleForExitBus: true, - exitBusOracleAddress: '0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e', - withdrawalQueueAddress: '0x889edc2edab5f40e902b864ad4d7ade8e412f9b1', - } - - expect(resp.right).toEqual(expected) - }, 120_000) - - test('getBalanceByBlockHash is 16619.29059680177', async () => { - const blockNumber = 19_140_476 - const block = await fortaEthersProvider.getBlock(blockNumber) - const parentBlockHash = '0x55fdadee696dd3b08c0752c2fa5feba7abd19992fd3d2f18f9a87baa62fa34ae' - expect(block.parentHash).toEqual(parentBlockHash) - - const parentBlock = await fortaEthersProvider.getBlock(parentBlockHash) - expect(parentBlock.number).toEqual(blockNumber - 1) - const resp = await ethClient.getBalanceByBlockHash(Address.WITHDRAWALS_QUEUE_ADDRESS, block.parentHash) - - if (E.isLeft(resp)) { - throw resp.left.message - } - - const resp2 = new BigNumber( - (await fortaEthersProvider.getBalance(Address.WITHDRAWALS_QUEUE_ADDRESS, blockNumber - 1)).toString(), - ) - - const expectedBalance = 16619.29059680177 - expect(resp.right.dividedBy(ETH_DECIMALS).toNumber()).toEqual(expectedBalance) - expect(resp2.div(ETH_DECIMALS).toNumber()).toEqual(expectedBalance) - }, 120_000) - - test('getBalanceByBlockHash is 38186.88677324665', async () => { - const blockNumber = 19_619_102 - const block = await fortaEthersProvider.getBlock(blockNumber) - const parentBlockHash = '0x0667f8c4447dfcac0f667cd1c6dbb2b5a6dfed35a051a44d8f512710191938a9' - expect(block.parentHash).toEqual(parentBlockHash) - - const parentBlock = await fortaEthersProvider.getBlock(parentBlockHash) - expect(parentBlock.number).toEqual(blockNumber - 1) - const resp = await ethClient.getBalanceByBlockHash(Address.WITHDRAWALS_QUEUE_ADDRESS, block.parentHash) - - if (E.isLeft(resp)) { - throw resp.left.message - } - - const resp2 = new BigNumber( - (await fortaEthersProvider.getBalance(Address.WITHDRAWALS_QUEUE_ADDRESS, blockNumber - 1)).toString(), - ) - - const expectedBalance = 38186.88677324665 - expect(resp.right.dividedBy(ETH_DECIMALS).toNumber()).toEqual(expectedBalance) - expect(resp2.div(ETH_DECIMALS).toNumber()).toEqual(expectedBalance) - }, 120_000) - - test('getShareRate is 1.16583492875463847628', async () => { - const blockNumber = 19_811_012 - const shareRate = await ethClient.getShareRate(blockNumber) - if (E.isLeft(shareRate)) { - throw shareRate.left.message - } - - expect('1.16583492875463847628').toEqual(shareRate.right.toString()) - }, 120_000) - - test('getBlock by hash', async () => { - const blockHash = `0x0b99aebc4925ff127f1368b4aafff11dacc051a24247c0ee4159b735ca300d49` - const block = await ethClient.getBlockByHash(blockHash) - if (E.isLeft(block)) { - throw block.left.message - } - - expect(20_160_727).toEqual(block.right.number) - }, 120_000) - - test('getBufferedEther by blockNumber', async () => { - const blockNumber = 20_160_727 - const bufferedEther = await ethClient.getBufferedEther(blockNumber) - if (E.isLeft(bufferedEther)) { - throw bufferedEther.left.message - } - - expect(6016.430655102903).toEqual(bufferedEther.right.dividedBy(ETH_DECIMALS).toNumber()) - }, 120_000) - - test('getChainBlocks by hash', async () => { - const parentHash = `0x0b99aebc4925ff127f1368b4aafff11dacc051a24247c0ee4159b735ca300d49` - const chain = await ethClient.getChainPrevBlocks(parentHash, 4) - if (E.isLeft(chain)) { - throw chain.left.message - } - - expect(chain.right[3].hash).toEqual(parentHash) - expect(chain.right[0].number).toEqual(20_160_724) - expect(chain.right[1].number).toEqual(20_160_725) - expect(chain.right[2].number).toEqual(20_160_726) - expect(chain.right[3].number).toEqual(20_160_727) - - expect(chain.right[0].hash).toEqual(chain.right[1].parentHash) - expect(chain.right[1].hash).toEqual(chain.right[2].parentHash) - expect(chain.right[2].hash).toEqual(chain.right[3].parentHash) - }, 120_000) - - test('getETHDistributedEvent', async () => { - const currBlock = 20_211_671 - const events = await ethClient.getETHDistributedEvents(currBlock, currBlock) - if (E.isLeft(events)) { - throw events.left.message - } - - expect(events.right.length).toEqual(1) - }, 120_000) - - test('getUnbufferedEvents', async () => { - const currBlock = 20_212_690 - const events = await ethClient.getUnbufferedEvents(currBlock - HISTORY_BLOCK_OFFSET, currBlock) - if (E.isLeft(events)) { - throw events.left.message - } - - const latestDepositBlock = await ethClient.getBlockByNumber(events.right[events.right.length - 1].blockNumber) - if (E.isLeft(latestDepositBlock)) { - throw latestDepositBlock.left - } - - const expectedBlockNumber = 20190032 - const expectedTimestamp = 1719575867 - - expect(latestDepositBlock.right.number).toEqual(expectedBlockNumber) - expect(latestDepositBlock.right.timestamp).toEqual(expectedTimestamp) - }, 120_000) - - test('getStethBalance', async () => { - const currBlock = 20_218_548 - - const stBalance = await ethClient.getStethBalance(address.LIDO_STETH_ADDRESS, currBlock) - if (E.isLeft(stBalance)) { - throw stBalance.left.message - } - - logger.info(stBalance.right.div(ETH_DECIMALS).toNumber()) - }, 120_000) -}) diff --git a/ethereum-steth/src/clients/eth_provider.ts b/ethereum-steth/src/clients/eth_provider.ts deleted file mode 100644 index 883a7490b..000000000 --- a/ethereum-steth/src/clients/eth_provider.ts +++ /dev/null @@ -1,900 +0,0 @@ -import { ethers } from 'forta-agent' -import { either as E } from 'fp-ts' -import { retryAsync } from 'ts-retry' -import { BigNumber as EtherBigNumber } from '@ethersproject/bignumber/lib/bignumber' -import BigNumber from 'bignumber.js' -import { ETH_DECIMALS } from '../utils/constants' -import { StakingLimitInfo } from '../entity/staking_limit_info' -import { - GateSeal as GateSealRunner, - Lido as LidoRunner, - ValidatorsExitBusOracle as VeboRunner, - WithdrawalQueueERC721 as WithdrawalQueueRunner, -} from '../generated/typechain' -import { GateSeal, GateSealExpiredErr } from '../entity/gate_seal' -import { ETHDistributedEvent, UnbufferedEvent } from '../generated/typechain/Lido' -import { DataRW } from '../utils/mutex' -import { WithdrawalRequest } from '../entity/withdrawal_request' -import { TypedEvent } from '../generated/typechain/common' -import { NetworkError } from '../utils/errors' -import { Logger } from 'winston' -import { IGateSealClient } from '../services/gate-seal/GateSeal.srv' -import { Block } from '@ethersproject/providers' -import { IStethClient } from '../services/steth_operation/StethOperation.srv' -import { IVaultClient } from '../services/vault/Vault.srv' -import { IWithdrawalsClient } from '../services/withdrawals/Withdrawals.srv' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { BlockDto } from '../entity/events' -import { WithdrawalClaimedEvent } from '../generated/typechain/WithdrawalQueueERC721' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IGateSealClient, IStethClient, IVaultClient, IWithdrawalsClient { - private jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly lidoRunner: LidoRunner - private readonly wdQueueRunner: WithdrawalQueueRunner - private readonly veboRunner: VeboRunner - private gateSealRunner: GateSealRunner - private readonly logger: Logger - private readonly metrics: Metrics - - constructor( - logger: Logger, - metrcs: Metrics, - jsonRpcProvider: ethers.providers.JsonRpcProvider, - lidoRunner: LidoRunner, - wdQueueRunner: WithdrawalQueueRunner, - gateSealRunner: GateSealRunner, - veboRunner: VeboRunner, - ) { - this.jsonRpcProvider = jsonRpcProvider - this.lidoRunner = lidoRunner - this.wdQueueRunner = wdQueueRunner - this.gateSealRunner = gateSealRunner - this.veboRunner = veboRunner - this.logger = logger - this.metrics = metrcs - } - - public async getBlockNumber(): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getBlockNumber.name }).startTimer() - try { - const latestBlockNumber = await this.jsonRpcProvider.getBlockNumber() - - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(latestBlockNumber) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } - - public async getUnbufferedEvents(startBlock: number, endBlock: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getUnbufferedEvents.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - return await this.lidoRunner.queryFilter(this.lidoRunner.filters.Unbuffered(), startBlock, endBlock) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - out.sort((a, b) => a.blockNumber - b.blockNumber) - - this.metrics.etherJsRequest.labels({ method: this.getUnbufferedEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getUnbufferedEvents.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - throw new NetworkError(e, `Could not call StakingRouterETHDeposited`) - } - } - - public async getStethBalance(lidoStethAddress: string, block: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getStethBalance.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - return await this.lidoRunner.balanceOf(lidoStethAddress, { - blockTag: block, - }) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - this.metrics.etherJsRequest.labels({ method: this.getStethBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(String(out))) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getStethBalance.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch Steth balance`)) - } - } - - public async getEthBalance(address: string, block: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ - method: this.getEthBalance.name, - }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBalance(address, block) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getEthBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(String(out))) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getEthBalance.name, status: StatusFail }).inc() - end({ status: StatusOK }) - - return E.left(new NetworkError(e, `Could not fetch balance by address ${address}`)) - } - } - - public async getBalanceByBlockHash(address: string, blockHash: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getBalanceByBlockHash' }) - - try { - const out = await retryAsync( - async (): Promise => { - const block = await this.jsonRpcProvider.getBlock(blockHash) - const balance = await this.jsonRpcProvider.getBalance(address, new BigNumber(block.number, 10).toNumber()) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'getBalanceByBlockHash', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getBalanceByBlockHash', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch balance by address ${address} and blockHash ${blockHash}`)) - } - } - - public async getStakingLimitInfo(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: 'getStakingLimitInfo' }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const resp = await this.lidoRunner.functions.getStakeLimitFullInfo({ - blockTag: blockNumber, - }) - - return { - currentStakeLimit: new BigNumber(String(resp.currentStakeLimit)).div(ETH_DECIMALS), - maxStakeLimit: new BigNumber(String(resp.maxStakeLimit)).div(ETH_DECIMALS), - isStakingPaused: resp.isStakingPaused, - } - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'getStakeLimitFullInfo', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getStakeLimitFullInfo', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call lidoContract.getStakeLimitFullInfo`)) - } - } - - public async getUnfinalizedStETH(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: 'getUnfinalizedStETH' }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const out = await this.wdQueueRunner.unfinalizedStETH({ - blockTag: blockNumber, - }) - - return new BigNumber(String(out)) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'unfinalizedStETH', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'unfinalizedStETH', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.unfinalizedStETH`)) - } - } - - public async getWithdrawalStatuses( - requestIds: number[], - currentBlock: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: this.getWithdrawalStatuses.name }) - - const fetchStatusesChunk = async (requestIds: number[], blockNumber: number): Promise => { - try { - const out = await retryAsync( - async (): Promise => { - const resp = await this.wdQueueRunner.functions.getWithdrawalStatus(requestIds, { - blockTag: blockNumber, - }) - - const out: WithdrawalRequest[] = [] - for (let i = 0; i < requestIds.length; i++) { - const requestId = requestIds[i] - - const requestStatus = resp.statuses[i] - const withdrawalRequest = WithdrawalRequest.toWithdrawalRequest(requestStatus, requestId) - out.push(withdrawalRequest) - } - - return out - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalStatuses.name, status: StatusOK }).inc() - return out - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalStatuses.name, status: StatusFail }).inc() - throw new NetworkError( - e, - `Could not call wdQueueContract.getWithdrawalStatus on ${blockNumber} between ${requestIds[0]} and ${ - requestIds[requestIds.length - 1] - }. Total: ${requestIds.length}`, - ) - } - } - - const chunkPromises: Promise[] = [] - const MAX_REQUESTS_CHUNK_SIZE = 875 - const out = new DataRW([]) - - for (let i = 0; i < requestIds.length; i += MAX_REQUESTS_CHUNK_SIZE) { - const requestChunk = requestIds.slice(i, i + MAX_REQUESTS_CHUNK_SIZE) - - const promise = fetchStatusesChunk(requestChunk, currentBlock).then((statuses) => { - out.write(statuses) - }) - - chunkPromises.push(promise) - } - - try { - await Promise.all(chunkPromises) - end({ status: StatusOK }) - - return E.right(await out.read()) - } catch (e) { - end({ status: StatusFail }) - - return E.left(new NetworkError(e)) - } - } - - public async getBufferedEther(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getBufferedEther' }) - - try { - const resp = await retryAsync( - async (): Promise => { - return await this.lidoRunner.getBufferedEther({ - blockTag: blockNumber, - }) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'getBufferedEther', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(resp.toString())) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getBufferedEther', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call lidoContract.getBufferedEther`)) - } - } - - public async checkGateSeal(blockNumber: number, gateSealAddress: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'checkGateSeal' }) - - const isExpired = await this.isGateSealExpired(blockNumber, gateSealAddress) - if (E.isLeft(isExpired)) { - end({ status: StatusFail }) - return E.left(isExpired.left) - } - - if (isExpired.right) { - end({ status: StatusFail }) - return E.left(GateSealExpiredErr) - } - - const [isGateSealHasPauseRole, isGateSealHasExitBusPauseRoleMember] = await Promise.all([ - this.isGateSealHasPauseRole(blockNumber, gateSealAddress), - this.isGateSealHasExitBusPauseRoleMember(blockNumber, gateSealAddress), - ]) - - if (E.isLeft(isGateSealHasPauseRole)) { - end({ status: StatusFail }) - return E.left(isGateSealHasPauseRole.left) - } - - if (E.isLeft(isGateSealHasExitBusPauseRoleMember)) { - end({ status: StatusFail }) - return E.left(isGateSealHasExitBusPauseRoleMember.left) - } - - const out: GateSeal = { - roleForWithdrawalQueue: isGateSealHasPauseRole.right, - roleForExitBus: isGateSealHasExitBusPauseRoleMember.right, - exitBusOracleAddress: this.veboRunner.address, - withdrawalQueueAddress: this.wdQueueRunner.address, - } - - end({ status: StatusOK }) - return E.right(out) - } - - public async getExpiryTimestamp(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'gateSealGetExpiryTimestamp' }) - - try { - const expiryTimestamp = await retryAsync( - async (): Promise => { - const [resp] = await this.gateSealRunner.functions.get_expiry_timestamp({ - blockTag: blockNumber, - }) - - return new BigNumber(String(resp)) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'gate_seal_get_expiry_timestamp', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(expiryTimestamp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'gate_seal_get_expiry_timestamp', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call gateSeal.functions.get_expiry_timestamp`)) - } - } - - public async getETHDistributedEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getETHDistributedEvents.name }).startTimer() - - try { - const report = await retryAsync( - async (): Promise => { - return await this.lidoRunner.queryFilter( - this.lidoRunner.filters.ETHDistributed(), - fromBlockNumber, - toBlockNumber, - ) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getETHDistributedEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(report) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getETHDistributedEvents.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call this.lidoContract.filters.ETHDistributed"`)) - } - } - - private async isGateSealExpired(blockNumber: number, gateSealAddress: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'isGateSealExpired' }) - - this.gateSealRunner = this.gateSealRunner.attach(gateSealAddress) - - try { - const isExpired = await retryAsync( - async (): Promise => { - const [resp] = await this.gateSealRunner.functions.is_expired({ - blockTag: blockNumber, - }) - - return resp - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'gate_seal_is_expired', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(isExpired) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'gate_seal_is_expired', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call gateSeal.functions.is_expired`)) - } - } - - private async isGateSealHasPauseRole( - blockNumber: number, - gateSealAddress: string, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: 'isGateSealHasPauseRole' }).startTimer() - const keccakPauseRole = ethers.utils.keccak256(ethers.utils.toUtf8Bytes('PAUSE_ROLE')) - - try { - const queuePauseRoleMember = await retryAsync( - async (): Promise => { - const [resp] = await this.wdQueueRunner.functions.hasRole(keccakPauseRole, gateSealAddress, { - blockTag: blockNumber, - }) - - return resp - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'wd_queue_hasRole', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(queuePauseRoleMember) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'wd_queue_hasRole', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.functions.hasRole`)) - } - } - - private async isGateSealHasExitBusPauseRoleMember( - blockNumber: number, - gateSealAddress: string, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'isGateSealHasExitBusPauseRoleMember' }) - - const keccakPauseRole = ethers.utils.keccak256(ethers.utils.toUtf8Bytes('PAUSE_ROLE')) - - try { - const exitBusPauseRoleMember = await retryAsync( - async (): Promise => { - const [resp] = await this.veboRunner.functions.hasRole(keccakPauseRole, gateSealAddress, { - blockTag: blockNumber, - }) - - return resp - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'vebo_hasRole', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(exitBusPauseRoleMember) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'vebo_hasRole', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call this.exitBusContract.functions.hasRole`)) - } - } - - public async getTotalPooledEther(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getTotalPooledEther' }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.lidoRunner.getTotalPooledEther({ - blockTag: blockNumber, - }) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'getTotalPooledEther', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out.toString())) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getTotalPooledEther', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call this.getTotalPooledEther`)) - } - } - - public async getTotalShares(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getTotalShares' }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.lidoRunner.getTotalShares({ - blockTag: blockNumber, - }) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'getTotalShares', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out.toString())) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getTotalShares', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call lidoContract.getTotalShares`)) - } - } - - public async getShareRate(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getShareRate' }) - - const [totalPooledEth, totalShares] = await Promise.all([ - this.getTotalPooledEther(blockNumber), - this.getTotalShares(blockNumber), - ]) - - if (E.isLeft(totalPooledEth)) { - end({ status: StatusFail }) - return E.left(totalPooledEth.left) - } - - if (E.isLeft(totalShares)) { - end({ status: StatusFail }) - return E.left(totalShares.left) - } - - end({ status: StatusOK }) - return E.right(totalPooledEth.right.div(totalShares.right)) - } - - public async isBunkerModeActive(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'isBunkerModeActive' }) - - try { - const isBunkerMode = await retryAsync( - async (): Promise => { - const [isBunkerMode] = await this.wdQueueRunner.functions.isBunkerModeActive({ - blockTag: blockNumber, - }) - - return isBunkerMode - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'wq_queue_is_bunker_mode_active', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(isBunkerMode) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'wq_queue_is_bunker_mode_active', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.isBunkerModeActive`)) - } - } - - public async getBunkerTimestamp(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getBunkerTimestamp' }) - - try { - const bunkerModeSinceTimestamp = await retryAsync( - async (): Promise => { - const [resp] = await this.wdQueueRunner.functions.bunkerModeSinceTimestamp({ - blockTag: blockNumber, - }) - - return resp.toNumber() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'wq_queue_bunker_mode_since_timestamp', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(bunkerModeSinceTimestamp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'wq_queue_bunker_mode_since_timestamp', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.bunkerModeSinceTimestamp`)) - } - } - - public async getWithdrawalLastRequestId(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getWithdrawalLastRequestId' }) - - try { - const lastRequestId = await retryAsync( - async (): Promise => { - const [resp] = await this.wdQueueRunner.functions.getLastRequestId({ - blockTag: blockNumber, - }) - - return resp.toNumber() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'wq_queue_get_last_request_id', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(lastRequestId) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'wq_queue_get_last_request_id', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.getLastRequestId`)) - } - } - - public async getWithdrawalStatus( - requestId: number, - blockNumber: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getWithdrawalStatus' }) - - try { - const out = await retryAsync( - async (): Promise => { - const resp = await this.wdQueueRunner.functions.getWithdrawalStatus([requestId], { - blockTag: blockNumber, - }) - - return WithdrawalRequest.toWithdrawalRequest(resp.statuses[0], requestId) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'wq_queue_get_withdrawal_status', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'wq_queue_get_withdrawal_status', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.getWithdrawalStatus`)) - } - } - - public async getWithdrawalsFinalizedEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getWithdrawalsFinalizedEvents' }) - - try { - const out = await retryAsync( - async (): Promise => { - const filter = this.wdQueueRunner.filters.WithdrawalsFinalized() - - return await this.wdQueueRunner.queryFilter(filter, fromBlockNumber, toBlockNumber) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest - .labels({ method: 'wd_queue_get_withdrawals_finalized_events', status: StatusOK }) - .inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest - .labels({ method: 'wd_queue_get_withdrawals_finalized_events', status: StatusFail }) - .inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wdQueueContract.queryFilter`)) - } - } - - public async getDepositableEther(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getDepositableEther' }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.lidoRunner.getDepositableEther({ - blockTag: blockNumber, - }) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: 'lido_get_depositable_ether', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out.toString())) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'lido_get_depositable_ether', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call lidoContract.getDepositableEther"`)) - } - } - - public async getBlockByHash(blockHash: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: this.getBlockByHash.name }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlock(blockHash) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getBlockByHash.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right({ - number: out.number, - timestamp: out.timestamp, - parentHash: out.parentHash, - hash: out.hash, - }) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockByHash.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call jsonRpcProvider.getBlock(blockHash)`)) - } - } - - public async getBlockByNumber(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: this.getBlockByNumber.name }) - - try { - const out = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlock(blockNumber) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getBlockByNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right({ - number: out.number, - timestamp: out.timestamp, - parentHash: out.parentHash, - hash: out.hash, - }) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockByNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call jsonRpcProvider.${this.getBlockByNumber.name}`)) - } - } - - public async getChainPrevBlocks(parentHash: string, depth: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: 'getChainPrevBlocks' }) - const chain = new Array(depth) - - while (depth > 0) { - try { - const prevBlock = await retryAsync( - async (): Promise => { - const parentBlock = await this.getBlockByHash(parentHash) - - if (E.isLeft(parentBlock)) { - throw parentBlock.left - } - - return parentBlock.right - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - chain[depth - 1] = prevBlock - parentHash = prevBlock.parentHash - depth -= 1 - } catch (e) { - this.metrics.etherJsRequest.labels({ method: 'getChainPrevBlocks', status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call this.getBlockByHash(parentHash)`)) - } - } - - this.metrics.etherJsRequest.labels({ method: 'getChainPrevBlocks', status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(chain) - } - - /** - * Uses only for dev purposes for prefilling up db - * Returns all claimed events from Lido V2. - * - * @param currentBlock - */ - public async getClaimedEvents(currentBlock: number): Promise> { - const startedBlock = 17_264_250 - const end = this.metrics.etherJsDurationHistogram.startTimer({ method: this.getClaimedEvents.name }) - - const fetchClaimedEvents = async (from: number, to: number): Promise => { - try { - return await retryAsync( - async (): Promise => { - const claimedFilter = this.wdQueueRunner.filters.WithdrawalClaimed() - return await this.wdQueueRunner.queryFilter(claimedFilter, from, to) - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - } catch (e) { - throw new NetworkError(e, `Could not call this.getClaimedEvents`) - } - } - - const batchPromises: Promise[] = [] - const out = new DataRW([]) - const batchSize = 10_000 - - for (let i = startedBlock; i <= currentBlock; i += batchSize) { - const start = i - const end = Math.min(i + batchSize - 1, currentBlock) - - const promise = fetchClaimedEvents(start, end).then((chunkTrxResp) => { - out.write(chunkTrxResp) - }) - - batchPromises.push(promise) - } - - try { - await Promise.all(batchPromises) - - this.metrics.etherJsRequest.labels({ method: this.getClaimedEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - return E.right(await out.read()) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getClaimedEvents.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch claimed events`)) - } - } -} diff --git a/ethereum-steth/src/db/migrations/withdrawal_requests.js b/ethereum-steth/src/db/migrations/withdrawal_requests.js deleted file mode 100644 index 6c2927c96..000000000 --- a/ethereum-steth/src/db/migrations/withdrawal_requests.js +++ /dev/null @@ -1,18 +0,0 @@ -function up(knex) { - return knex.schema.createTable('withdrawal_requests', (tbl) => { - tbl.integer('id').primary().notNullable() - tbl.string('amountOfStETH').notNullable() - tbl.string('amountOfShares').notNullable() - tbl.string('owner').notNullable() - tbl.timestamp('timestamp').notNullable() - tbl.boolean('isFinalized').notNullable() - tbl.boolean('isClaimed').notNullable() - }) -} - -function down(knex) { - return knex.schema.dropTableIfExists('withdrawal_requests') -} - -exports.up = up -exports.down = down diff --git a/ethereum-steth/src/db/withdrawal_requests_17_07_24.sql b/ethereum-steth/src/db/withdrawal_requests_17_07_24.sql deleted file mode 100644 index e70f18d98..000000000 --- a/ethereum-steth/src/db/withdrawal_requests_17_07_24.sql +++ /dev/null @@ -1,4808 +0,0 @@ -insert into main.withdrawal_requests (id, amountOfStETH, amountOfShares, owner, timestamp, isFinalized, isClaimed) -values (1, '24000000000000000', '21349108949384689', '0x0a24f077377F2d555D6Dcc7cAEF68b3568fbac1D', '1684163759', 1, 0), - (2, '69420', '61752', '0x516fCA170bfE24BFC54e01F215EF85Fe9B5B798A', '1684163771', 1, 0), - (4, '89933495798443477', '79999999999999999', '0x4B17b32De85Aa3636929AC2CC029b95173B2Aee5', '1684163783', 1, 0), - (5, '100000000000000000', '88954620622436205', '0x4B17b32De85Aa3636929AC2CC029b95173B2Aee5', '1684163879', 1, 0), - (7, '10000000000000', '8895462062243', '0x0AAEf336811136c176100092E24cEe3794389B19', '1684163999', 1, 0), - (8, '10000000000000000', '8895462062243620', '0xb729717DAf009663aAB623947D8e6fd0C03601FB', '1684164167', 1, 0), - (10, '15052300000', '13389716359', '0xD1c0264E13a79e0F49d72C93683C4885bf5766fe', '1684164311', 1, 0), - (13, '100', '88', '0xD1c0264E13a79e0F49d72C93683C4885bf5766fe', '1684164743', 1, 0), - (15, '2000000000000000', '1779092412448724', '0x9a9B0b60842051a2ED51407b179f35Ac37f262F3', '1684165547', 1, 0), - (16, '100000000000000', '88954620622436', '0xd96F56b0E4aEfCc8679403a6E903687b743E7035', '1684167299', 1, 0), - (19, '100000000000000000', '88954620622436205', '0x8796b6696dBda78b00bc675692F6E775cC8439c5', '1684168055', 1, 0), - (20, '10000000000000000', '8895462062243620', '0xB4b18818E9262584921b371c891b62219DaefeA3', '1684168367', 1, 0), - (21, '100000000000000000', '88954620622436205', '0x5afeF2Dc0871993977071229F2Ede20fB89469A1', '1684168583', 1, 0), - (22, '1000000000000000000', '889546206224362055', '0x00B3A4E828D0D8bc873dcD33FdcEBb7Ed2e6EDb5', '1684168811', 1, 0), - (23, '100000000000000', '88954620622436', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1684168931', 1, 0), - (26, '10000000000000000', '8895462062243620', '0xbA99F374C20A3475De737B466ee68Ad9C38c26AF', '1684169219', 1, 0), - (32, '10008534027609669', '8903053474127615', '0x69c6b16ecCCbf7F06091cE835d86e3F932173553', '1684172663', 1, 0), - (36, '100000000000000000', '88954620622436205', '0x00B3A4E828D0D8bc873dcD33FdcEBb7Ed2e6EDb5', '1684175879', 1, 0), - (39, '100000000000000', '88954620622436', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1684178759', 1, 0), - (66, '9999999999999999', '8895462062243619', '0x2840220771A89bF1b8B3e480e3dFF548aF056080', '1684208963', 1, 0), - (96, '10000000000000000', '8895462062243620', '0xbA99F374C20A3475De737B466ee68Ad9C38c26AF', '1684229219', 1, 0), - (116, '248103660494638719', '220699669943383003', '0x65e8aA223cC1620d657710d8Da3ECcCc8664E281', '1684242143', 1, 0), - (605, '100000000000000', '88940315610822', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1684322639', 1, 0), - (635, '9999999999999999', '8892806719686628', '0x8BabD58b6B09B94609939214B07235edd8834335', '1684394027', 1, 0), - (655, '4999999999999999', '4446403359843313', '0x3Ac31F963243eFAA113e690d20e8C066CcBE5e62', '1684409939', 1, 0), - (657, '3000000000000000', '2667842015905988', '0xdA35B1d7A3D2d29B7006B3F9c50E2C885AB2C4F2', '1684410263', 1, 0), - (661, '999999999999999', '889152538572966', '0xD37C7a871ec8F540452d0Fd056fAF1CaAaf197bb', '1684414031', 1, 0), - (692, '5000000000000000', '4445762692864836', '0x017787DBb82C8a329365bf4ab73904E630dF8bA0', '1684467659', 1, 0), - (743, '100059325342485459', '88954620622436204', '0xc56d6CFf03B337E12022B7b531aa43E1cCF08240', '1684546487', 1, 0), - (755, '101326772501554', '90081404965704', '0x90a88B0a533988701eD48D12EC0a9D56f9826002', '1684569215', 1, 0), - (776, '92695426149350122', '82397552372077864', '0xB68bDFcFEa93994E95EB5C3fea2Ec58Ac208518c', '1684594943', 1, 0), - (789, '308929857224808706', '274609709965265371', '0x3951aA0b6B99079721edE0bd80F5e02bdf9A553E', '1684610351', 1, 0), - (834, '1011382630996598619', '898912846377343567', '0xb48b18906f61A7821510f523017B52007Eb8DFC8', '1684683995', 1, 0), - (853, '266200000000000000', '236597497694671815', '0x80439344459F9782C50AEBFCaA9363eC3fCd3E31', '1684716455', 1, 0), - (861, '10179847347671838', '9047807698620956', '0xfb7dD9e8b6D84945b7951516D90840ad278189BE', '1684732979', 1, 0), - (866, '10325680231074957', '9177423383424776', '0xE3e34FA93575AF41BEF3476236E1A3CDb3F60B85', '1684745831', 1, 0), - (892, '80757436870267548', '71767608822835412', '0xDE749340D62062ba92E4A78847Ad1160ABa8DbAF', '1684814087', 1, 0), - (908, '994317644172915042', '883631309984251686', '0x44d43a329269d986C05312C4E3a116916a6e430b', '1684840367', 1, 0), - (929, '88810023997925926', '78912836370865617', '0x695494FDC07CB5754E50022672bE1E4182258b56', '1684868195', 1, 0), - (944, '7919692912117964', '7037104627919755', '0x184AbEfBdCa24Ce0Dd964a74f6d5E69CE44D9579', '1684895891', 1, 0), - (959, '20448133083770087', '18169347416986591', '0xdF530B3b421d3a2d828ad6851BAE963Ee63c148C', '1684915859', 1, 0), - (963, '11527198819435472811', '10242582011618313004', '0x61b2a7aE9760291E9e6271e928432BA7d7d3A230', '1684919795', 1, 0), - (973, '500000000000000', '444217919236067', '0x80DB446734c9e172dEE325725e73331F7889B0E1', '1684938311', 1, 0), - (998, '103653167237071060', '92089188544559667', '0xf1cC89F1958531E03c68B6298A7E793f8a63C721', '1684986971', 1, 0), - (1002, '400200431949676429', '355552406316121411', '0xBfAC7693D2362b1B7b9570147771065048b53aC9', '1684989023', 1, 0), - (1005, '9728707360300813', '8643332280898884', '0x994b3a52b06F0e0157BF9839C76bF3AdE9379bE3', '1684994363', 1, 0), - (1009, '20124263136270791', '17879116593106618', '0x358506b4C5c441873AdE429c5A2BE777578E2C6f', '1685004923', 1, 0), - (1015, '200000000000000', '177662782413021', '0x9a9B0b60842051a2ED51407b179f35Ac37f262F3', '1685018579', 1, 0), - (1022, '186475699514790829', '165648958141061625', '0x3f66af92b8F0cB766E04FbC5823Dd06FCE437Ed0', '1685031011', 1, 0), - (1063, '1999999999999999', '1776627824130217', '0x744389092141256f2DC8aA8d7Ab0D948F4E781Ec', '1685097827', 1, 0), - (1068, '9999999999999999', '8881925046336407', '0x6939468e0719837B28E6205a25e0a8e53598af24', '1685107691', 1, 0), - (1079, '109131603405342735', '96929872163276535', '0x6b0C251d96f7EAE2FE1C4d0E7B6eaE3efDfF9411', '1685123315', 1, 0), - (1094, '14663318441356889', '13023849532669430', '0xa76B4A3Ae496d3c22eFa69DDF9459F8e675f2588', '1685153447', 1, 0), - (1114, '10084061891918789', '8956588188664000', '0x219ae328C5fc6c735CF7F0263520bC160004170d', '1685175311', 1, 0), - (1178, '10006664738027775', '8885577642981893', '0xc0828Ce4752A4f192aa7D3F91D56542d46812B21', '1685305499', 1, 0), - (1194, '10377915272377463', '9215235479466263', '0xB4959182D50e1203c1153D6a3AE4aF9603F82904', '1685330771', 1, 0), - (1218, '199979889202177880', '177550901388344943', '0x5E53c9F6f74d2D6ECC700eB2834880CDAA96E187', '1685365199', 1, 0), - (1220, '1215151562850599747', '1078864760693298956', '0xA539e9D98D1eaE04471654efEc99502767236e58', '1685369159', 1, 0), - (1238, '4216939438044421522', '3743983464096718182', '0xf1E5d304EB2642BF29a7994A57b535E19B4104A9', '1685394515', 1, 0), - (1247, '503744518056394013', '447246438665274113', '0x50aa199492D06602442B33f03df066E5d3866F66', '1685415227', 1, 0), - (1249, '426723817867475489', '378864088826693319', '0x93F14D8ff3e8E5A69F632DfaA726666f50A9e5b8', '1685416907', 1, 0), - (1265, '32003678482054159482', '28410643976412557541', '0x046ca4A32a11638fC9F30E9c2e707A5A92435290', '1685450471', 1, 0), - (1283, '199999999999999998', '177546115471342637', '0xa5D160e4B2936BEEd18B6bDCf16Af153e405F2ac', '1685499935', 1, 0), - (1285, '100052034624998848', '88819250463364086', '0x77D38DD16eC34e1C2D9881F25f695f88e468A3D6', '1685504387', 1, 0), - (1320, '12706533785834040', '11278529536426418', '0x60C6EC170117B002740fc3693E49F50bAb5DE24F', '1685567975', 1, 0), - (1321, '818301895212901288', '726338295748420617', '0xD78fDe7EBcc68d113c5413263A8c7A2C8cE012E8', '1685568875', 1, 0), - (1332, '147529428311123781', '130949560497304130', '0x04d6F5DeEb1509674b1aa0c4Dd5dA73E1592b9bA', '1685589851', 1, 0), - (1339, '100012847750', '88773057734', '0x2DB70019DB049Ae99566190b40748CcEa4E73A42', '1685603999', 1, 0), - (1346, '5000000000000000', '4438082692937219', '0x89eD30ba4dD03014F7ae7E3858c11bD937b63402', '1685612507', 1, 0), - (1359, '3569114903633003769', '3167618619111226915', '0x8A5016858402cB19c3DA59A07b5E188eE7FDC655', '1685630471', 1, 0), - (1399, '249024381451324259', '220982363173228151', '0x8Bfaf1c56fb9584Aee5960230f82B171ed31ff55', '1685710007', 1, 0), - (1410, '102534149844630191', '90988033406894230', '0xA20624bEb8d5198D8CD7a4207B771762450afA34', '1685738783', 1, 0), - (1433, '9999999999999999', '8873924789425593', '0x990955dF076f948703c3fb416a7CaBCbdBd12637', '1685779631', 1, 0), - (1444, '25673746109033234', '22782689203436891', '0x2C01875bef3BBB6a0eA9437E5ba0fC2309A68878', '1685786063', 1, 0), - (1462, '1000000000000000000', '887292493439157662', '0x37B105874D98867a9375a7ef56DC3E0646c47019', '1685812139', 1, 0), - (1477, '9999999999999999', '8872924934391575', '0x6c50ab3DafF9ad2F80F929377dD8ea628D9A0a52', '1685852039', 1, 0), - (1484, '93024496239574754', '82539937219333829', '0x553Eb87520134946Da0059FD0A8E596d741195aa', '1685862215', 1, 0), - (1513, '8435709043111644', '7484142767949987', '0x35aa33089bf0A2b79cf18B006CA2f4eF9706CA61', '1685887139', 1, 0), - (1514, '7833460358057007', '6949829040707391', '0xCF768a8FEF178C5A31EE19E88Bf4455cfAA3575E', '1685887547', 1, 0), - (1544, '9999999999999999', '8871978312316640', '0x2D7BeA982612108051D0dCd8cEA2998E71AC25D0', '1685933879', 1, 0), - (1568, '50000000000000000', '44354995453987675', '0x67F862aB78Fe821e547832ac0A4E24dEc6F9a022', '1685968931', 1, 0), - (1581, '10000000000000000', '8870999090797535', '0x0b95297B97E4c7Cb4C450F784DB723640a40a158', '1685992079', 1, 0), - (1598, '101474915861708001', '90018388634796804', '0xb2a94F3C5D53d8CD192498430358780679479675', '1686014771', 1, 0), - (1642, '10000000000000000', '8869961692342300', '0x82A5d2E9A84b1347Ef311f0b71ABdD47A8849521', '1686072683', 1, 0), - (1665, '101548662686793721', '90073274794045026', '0xa2A90BbbAF0be8832284C8d07e493AE5Af059155', '1686098891', 1, 0), - (1743, '123740493279977112', '109744975136352125', '0x74854EFA2A6ec1085964A7B08FFFAD6B3A46389c', '1686181547', 1, 0), - (1745, '1000000000000000000', '886896215033194384', '0x851717a02E61689248cB5105468088Fa43f67a6B', '1686183431', 1, 0), - (1754, '1075803777041745067', '954126297976738240', '0xF3fE3B80af554B4B2Be1d4475C51464980150604', '1686194879', 1, 0), - (1758, '999999999999999', '886896215033193', '0x00001EAa14a7684337C2C0f0A72c67b9Fc2C607C', '1686204083', 1, 0), - (1767, '41406705963744471', '36723450796237368', '0xFbCd6Ae4C1c2d9108Bee36E9b6a68BbeE14f166a', '1686212351', 1, 0), - (1799, '1000000000000000', '886799296430885', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1686245303', 1, 0), - (1800, '622395144611716826', '551939576343669469', '0xcECf076119C81121fc7E5b800B8091b0c214481f', '1686251063', 1, 0), - (1924, '4957014922009320', '4395384187597855', '0xC42135d8336ceB751B5dD9619F0D603b192fB38b', '1686378599', 1, 0), - (1944, '189575554899992662', '168096608437232013', '0x44d25A8a8C0ecaA0114B3FE392bEBb3663792E15', '1686391895', 1, 0), - (1961, '110367390480101625', '97850082684679825', '0x65E89775f5239F27F2ba403FCf0e37d3eE0E23Cd', '1686402671', 1, 0), - (1967, '1060605898184148758', '940317374377795551', '0xA1AA611DB2Dfed08db6F21881A8c3a1C63D6d16b', '1686411311', 1, 0), - (1974, '40000000000000', '35463403550280', '0x1f38148CDb592e9A3750086d41F26C7BD9Fcb168', '1686424139', 1, 0), - (1978, '1000000000000000', '886585088757004', '0x08c3f837f0627b22Dec51AcdE9A135a0Dd468A39', '1686429407', 1, 0), - (1994, '31026099309450149', '27507277010052483', '0xAb9474373D0e94fBdb0151B5575da7F92b108530', '1686440711', 1, 0), - (1996, '41772266163389790', '37034668304050134', '0xe8F969647595ADa0F7d10b3E5d36E1529CDa345D', '1686444323', 1, 0), - (2004, '43870476883235126', '38894910641335109', '0x3A9c81c20D184845A9e01900d6e8f013ba97f7BC', '1686459023', 1, 0), - (2020, '10534488841235789', '9339720724316700', '0xd5652c15b620E9915617B04a9E0D488986301e6E', '1686474959', 1, 0), - (2060, '5213082899919009', '4621389415713059', '0x0BABA1Ad5bE3a5C0a66E7ac838a129Bf948f1eA4', '1686525959', 1, 0), - (2069, '1025957165129991670', '909509339277988640', '0xD89Fd3FFB92e84c72aA3894467cAB1dEe0b3C1C2', '1686538907', 1, 0), - (2094, '9999999999999998', '8864983550875158', '0x7770855BE3D5d0222897cc6c38749C74671b7777', '1686565607', 1, 0), - (2184, '101595915463229', '90055396421688', '0xbf1F2365579BE0eb5E9ee548980A610502af9ba9', '1686656675', 1, 0), - (2219, '5999999999999999', '5317888839443769', '0xB931c501d189a768B3B0E3802BA5b73bB4a5C975', '1686685523', 1, 0), - (2221, '4999999999999999', '4431574032869807', '0xfE87CF105F343F3e2D83Ef47774Dfed264c7e75a', '1686685655', 1, 0), - (2222, '4999999999999999', '4431574032869807', '0xa947A0d53d4084a63525240bee891491aF92527f', '1686685931', 1, 0), - (2223, '4899999999999999', '4342942552212411', '0x5858032a5BAf1F5f07f73EFed7eA05c45342B273', '1686686123', 1, 0), - (2225, '5099999999999999', '4520205513527203', '0x929a9662d662D3312CB16333F7107F3017AF59f7', '1686686279', 1, 0), - (2227, '4999999999999999', '4431574032869807', '0x5CAe625aE41d14366Ad05616d6E1d3239c2aa3D6', '1686686567', 1, 0), - (2228, '5099999999999999', '4520205513527203', '0x7B846a3b1738F3E8BAf84Ae846fC5B2340BDA952', '1686686903', 1, 0), - (2229, '5199999999999999', '4608836994184600', '0x7d21a528214e3D0674f3F30B1C5DfD05Ce711A76', '1686687023', 1, 0), - (2231, '5199999999999999', '4608836994184600', '0xd6175ed9f1c008f684fAB398d664372F7695Fb92', '1686687203', 1, 0), - (2232, '5299999999999999', '4697468474841996', '0x0b4E5Cb2ac93cf39082eB7cad058f1A92d34D55E', '1686687371', 1, 0), - (2233, '5209999999999999', '4617700142250339', '0xbaC0c37cCe72e062e3A747C1711347c303C2aE49', '1686687563', 1, 0), - (2234, '5249999999999999', '4653152734513298', '0xF9D47964207Ca43338614e179Db425F6417cd120', '1686687731', 1, 0), - (2235, '4999999999999999', '4431574032869807', '0x47f766278C43d76FC02700d1324D4612856B17b6', '1686687947', 1, 0), - (2253, '9147231194582289', '8107326446913510', '0x8eE3Fc743653BC3854a71FB06505bA4c988A3148', '1686715583', 1, 0), - (2259, '103650212809392730', '91866718317506889', '0xAE75B29ADe678372D77A8B41225654138a7E6ff1', '1686723239', 1, 0), - (2283, '9999999999999999', '8862261228042340', '0x42B436EE7b9fd7739f44C7cEfB2FE8094A4E71A3', '1686745475', 1, 0), - (2313, '9999999999999999', '8862261228042340', '0xCb4B8F4810188fCBe96C06ccf8A763eb49f56a29', '1686778355', 1, 0), - (2323, '12865145093437175', '11401427655470743', '0xA0aB296AE3CD07a30608d31dc34c922DEF55B643', '1686791063', 1, 0), - (2331, '5218072538527865', '4624392194330797', '0x3217B33Fc257a3Cee8370d77F9d26E8fA599187a', '1686798359', 1, 0), - (2342, '15013033577043959', '13304942538513449', '0xda6A09082EB30a699e5924E0BBEc145Fb73Cc83e', '1686806123', 1, 0), - (2360, '999999999999999', '886226122804233', '0x7AE390a22C3b1ce8efcde42a9FEBebaDE413b99B', '1686819251', 1, 0), - (2364, '3586798534756384', '3178714558737058', '0x6ad9126AB0ba38e67A2cdA812AeEdC38CED0a71c', '1686821615', 1, 0), - (2383, '505451307387643420', '447894163117826945', '0x722E895A12d2A11BE99ed69dBc1FEdbB9F3Cd8fe', '1686835379', 1, 0), - (2422, '22676199746046182', '20093997897523941', '0x4dBa78c372e0D1A610317cD4Ee3793addF54d72c', '1686872771', 1, 0), - (2435, '101075646491557449', '89565881886640012', '0xEB966b82ac49225CF1d0F05be53cAFC13c7f04E9', '1686899831', 1, 0), - (2442, '61723283827027001', '54694682060419180', '0xCdE1E60c84002C5E524Dff1Bb15510a6771C0f10', '1686907055', 1, 0), - (2472, '50021003997991338', '44320382375156962', '0x1f38148CDb592e9A3750086d41F26C7BD9Fcb168', '1686936683', 1, 0), - (2526, '33917319170831331', '30048676859517936', '0xB49c54EdfE1cFE5ac83e74B179474F6224D0763F', '1687036475', 1, 0), - (2538, '332065546139061214', '294189827971224801', '0x7Baa821573cD5BA3dEE48F621d7937d479bE4449', '1687053023', 1, 0), - (2567, '9999999999999998', '8858466904030952', '0xBE969FDfb5eBAA4B6c825fc9E123e8e2f2f7ED03', '1687092287', 1, 0), - (2574, '999999999999999', '885846690403094', '0x1abf66750E9c83b7c8633342e6008ABA6A839a52', '1687099211', 1, 0), - (2584, '400000000000000', '354338676161238', '0xC01318baB7ee1f5ba734172bF7718b5DC6Ec90E1', '1687102703', 1, 0), - (2607, '489999999999999', '434064878297515', '0x2be59e62d811A1a8a25a937c4812313cf8bBE428', '1687123679', 1, 0), - (2623, '1000000000000000000', '885846690403095421', '0x4C94523b876316BF9092fd18ECf9154c08a061A5', '1687146647', 1, 0), - (2635, '11288635052019', '9999999999999', '0x220b9Ac49BA8DC6886f6191319D3932eE37859CF', '1687173743', 1, 0), - (2653, '1305554825189215', '1156410068091669', '0xe1483bfdcF79174e343fbA3c5585B4C78FcB15BF', '1687188695', 1, 0), - (2685, '907501738556422', '803830009302936', '0x6A26e4F3F3d8ae3C90dB895CB675C88187b79967', '1687224563', 1, 0), - (2688, '10000000000000000', '8857613987402405', '0xAaE2b6540bf7880B4775583c85830F774dAe1F4c', '1687229615', 1, 0), - (2689, '141027329873809411', '124916564969626738', '0x6074494025Ff8cD9Fa1Ba946AeFd10D674f7ad99', '1687231631', 1, 0), - (2711, '49750800635980856', '44067338759773253', '0xAfd710e163F845cBbb9AF1257015869Fd9d95428', '1687252535', 1, 0), - (2720, '488758423902040', '432923345201546', '0x220b9Ac49BA8DC6886f6191319D3932eE37859CF', '1687259939', 1, 0), - (2734, '100000000000000', '88566515018064', '0xF56FA087C47bD0b52F5a3fDCE5Fb25D83358F3b5', '1687284887', 1, 0), - (2774, '225818979056821', '199999999999999', '0x220b9Ac49BA8DC6886f6191319D3932eE37859CF', '1687340483', 1, 0), - (2777, '4999999999999999', '4428325750903235', '0x006A876188e9784efB1a401fBCD444568758b5bc', '1687343819', 1, 0), - (2816, '82480494236087292', '73042247423495494', '0xB7a18BB60D175f23985647e64689597bd9819D5F', '1687362395', 1, 0), - (2822, '544839166384515758', '482493195096022552', '0xA447BF2Ce55149cfb4FF6E0067aB843773F3Ad50', '1687368371', 1, 0), - (2841, '1000000000000000', '885569953235533', '0xd68089df73ee98150184a9EDC1874B6943aF65Fd', '1687391087', 1, 0), - (2865, '10117791880885417', '8960012482802556', '0x6a37D3c4D748EF6f88Fe640B4E68016aC1B48a42', '1687411979', 1, 0), - (2890, '100000000000000', '88546952216102', '0xe797D80848A2977E14D1b349Ba857BF88C684654', '1687437491', 1, 0), - (2904, '326770497544924309', '289345316317425703', '0x1CAA6d486855918923fA9f809e051d3c3145E88f', '1687455335', 1, 0), - (2922, '111047280763280523', '98328982634743590', '0x5E3D848Df4d172EdE732fdBd88747A059bA2Ad50', '1687482647', 1, 0), - (2943, '9999999999999999', '8854695221610285', '0x078eCD26dC85CEaD68c8744f49a1738E0f6E815e', '1687513775', 1, 0), - (2969, '1063108287521548473', '941246863735558119', '0x688cdBaBAC4c1Ce2CC668b52366993FB91c6903d', '1687530863', 1, 0), - (2985, '8511424825152116', '7535781647674358', '0xaEB66894A7536C70489fa216909E4eF5C2E8d6A7', '1687551731', 1, 0), - (3049, '10307766264319993420', '9125268893006925694', '0x929d5AB51be0B6249D8E6A63E4802Ec20B2Ef17e', '1687644623', 1, 0), - (3050, '102548781568501566', '90784480601000837', '0xaE1cFB433CEc0740C40320d82b28eCB1CAA4a1e7', '1687644983', 1, 0), - (3060, '9999999999999999', '8852809288656218', '0x4df533E57c7aEd40f7d16827a6923C95b9eA3690', '1687668407', 1, 0), - (3120, '100000000000000000', '88519504118693231', '0x7B20E093044Cd1BbbB51ccF9B8f1938700D22B7B', '1687758899', 1, 0), - (3132, '5091860076881974', '4507289290473635', '0xe3933a68C04A685A6088b207E226482f23d13cA0', '1687776155', 1, 0), - (3142, '3000293683444006', '2655585123560795', '0x62Fe21195eD84D2d9299B5d66C99cE49b52D89BE', '1687786007', 1, 0), - (3161, '20241324844476832', '17915766524713076', '0x5C3C03530C29a71Df5cdf9C7D9e229c91A3cd299', '1687805567', 1, 0), - (3162, '20241324844476832', '17915766524713076', '0x8849a4F9956499dbEd1527b77293D0488F444a9A', '1687805651', 1, 0), - (3163, '35184571863247273', '31142159894041247', '0x976811908a75b5148DB66B1390FF55185FeB3BDB', '1687806779', 1, 0), - (3166, '10000000000000000', '8851083939597796', '0x80D7A3840f1883E8f0Ed110d855a6666244Ed92a', '1687810031', 1, 0), - (3170, '141326276785525180', '125089073869951488', '0x43BEcBBfc71b8764f514bdCAd42e2df160d3b024', '1687818419', 1, 0), - (3222, '10000000000000000', '8851083939597796', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1687863743', 1, 0), - (3223, '100000000000000', '88510839395977', '0x2b5303771e86B5C1476F35e36BF8A914212ee553', '1687863935', 1, 0), - (3224, '1000000000000000', '885108393959779', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1687865063', 1, 0), - (3241, '91494013294737850', '80973820115975151', '0x2A082AE466699413db6371DF486806e5E2693BB8', '1687890335', 1, 0), - (3269, '1043615859728031', '923618495382544', '0xe69f773A15f08794f1c6b0507A5fa80F9D4939Dd', '1687929755', 1, 0), - (3287, '5000000000000000', '4424597040231232', '0x80D7A3840f1883E8f0Ed110d855a6666244Ed92a', '1687956143', 1, 0), - (3362, '100000000000000000', '88482197332252441', '0x4789040E8B0E74CFBC2cE28D98b2361eA6963e95', '1688092223', 1, 0), - (3381, '220000000000000000', '194660834130955372', '0xBcA724dcE35EB85F636a7E4EE2BBe4c44fbf9614', '1688113379', 1, 0), - (3390, '221113987350103258', '195646514616330066', '0x756E2a9C5423C5a9BB39d731A0c323C6cEf63187', '1688123699', 1, 0), - (3392, '100000000000000', '88471641335704', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1688129375', 1, 0), - (3394, '100000000000000', '88471641335704', '0xd96F56b0E4aEfCc8679403a6E903687b743E7035', '1688130995', 1, 0), - (3395, '226061138892069', '199999999999999', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1688131799', 1, 0), - (3403, '1007018359355128200', '890925671073361573', '0x4C58031AeCC2dB014133C5b6DCD834Ab30ABcB22', '1688154299', 1, 0), - (3416, '111245972945452670', '98421138184715383', '0x7E9210ee1Fda34d83d397883Ec165127395f3265', '1688174723', 1, 0), - (3422, '63021385244601163', '55756053918395931', '0x4C2F440De0e726B7Ed9763623682148e1537124a', '1688187155', 1, 0), - (3430, '84868806777808479', '75084826338354509', '0x5ad836e4b056250bdd539b95B2dD355B4a7884Bb', '1688200919', 1, 0), - (3449, '10006618276925251', '8851950411869321', '0x720EE847e27A400A03F429ABf5B82fa99fe09296', '1688232923', 1, 0), - (3505, '484370910739534961', '428436368509299000', '0x6D81145629f154dBf07fDAb18D2892818626FeCF', '1688311883', 1, 0), - (3567, '100000000000000', '88452126048437', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1688371259', 1, 0), - (3569, '100000000000000', '88452126048437', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1688372651', 1, 0), - (3570, '100000000000000', '88452126048437', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1688376431', 1, 0), - (3576, '99999999999999', '88452126048436', '0x19DB95a48F8068Bc24eD3b9e2449b71A5E9a467c', '1688383163', 1, 0), - (3577, '100000000000000', '88452126048437', '0x19DB95a48F8068Bc24eD3b9e2449b71A5E9a467c', '1688384207', 1, 0), - (3578, '10000000000000000', '8845212604843767', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1688384435', 1, 0), - (3632, '30181398361938068', '26693279909178211', '0x007a31DCa39360Ff6646dA48e9864d8436fd877A', '1688431823', 1, 0), - (3659, '10001052179842232', '8845212604843766', '0x98E21BeA511489B91EC03530F97fAAcd8e5984ad', '1688465543', 1, 0), - (3687, '1559718509075340100', '1379311187960691698', '0xC6EFC8F0f4548b369b73AE7C18A7b459Ad7d918D', '1688479655', 1, 0), - (3715, '200000000000000', '176866682024360', '0x8946f3382C34ff9d5bC4B7A3113e860DE76BEA47', '1688530967', 1, 0), - (3755, '4748722595519786649', '4199022136089180850', '0xa957dAB2be4E1E0F5a120eC5f67b51A21ca7fD82', '1688609639', 1, 0), - (3761, '100000000000000', '88424245712958', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1688624915', 1, 0), - (3769, '99999999998', '88424245711', '0xf2F3e73be57031114dd1f4E75c1DD87658be7F0E', '1688642759', 1, 0), - (3771, '9999999999999', '8842424571294', '0xf2F3e73be57031114dd1f4E75c1DD87658be7F0E', '1688643095', 1, 0), - (3774, '641920351916151274', '567550370358254638', '0x57893e666BD15E886D74751B0879361A3383b57A', '1688650403', 1, 0), - (3803, '100000000000000', '88414453391935', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1688707811', 1, 0), - (3808, '10000000000000', '8841445339193', '0x1205c1c98e68EED80f4f1ad78CC936e0e7f5f4ff', '1688716955', 1, 0), - (3916, '1338866313961550325', '1183486874406468176', '0xb82bfddEe389aEC1360A7D5524E64B563ef54751', '1688833391', 1, 0), - (3922, '199511389528053128', '176357496143433369', '0xe92399226c7eA8F5ce2f9a8F05a95B4F45CfcC90', '1688837771', 1, 0), - (3933, '76050753042579510', '67224835725611808', '0x4D7035c1daC3Ee3eDF624Bdd8A2446dE110cA63B', '1688856323', 1, 0), - (3940, '50055003212355015', '44245970402312328', '0xf07F65CD74BEcd71339fa95BC10C3C7c0a070D0A', '1688864795', 1, 0), - (3943, '83036581810728931', '73399938174408930', '0x870D493727Bd82d88A831D2eec6d65e20DE8f21f', '1688867675', 1, 0), - (3954, '1330124528398394', '1175759599199834', '0xda6856Fe1420b6647D2D443E811483825B65181f', '1688885891', 1, 0), - (4014, '19999999999999999', '17677105376645909', '0xF88Efca6F4CF4a637B523744a931EccE9240613c', '1688971739', 1, 0), - (4031, '2363740181951090011', '2089204213968079799', '0x8cCDEf99caEE4b4875fF42a4e7068D52617bFB4B', '1688989475', 1, 0), - (4041, '10000000000000000', '8837624218118929', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1689007655', 1, 0), - (4046, '26621998961043211', '23527522275285245', '0x02c0bc719120b477020Ce8220354e7958D10C63C', '1689011891', 1, 0), - (4065, '82160788713000962', '72610617610976968', '0xcea24F082303359d1C16fE6b2CcEc8492b88D12e', '1689047783', 1, 0), - (4077, '47367255835151950', '41861400731457404', '0x4eaDDb380c7a6b6e7a78A13A91AB137cc6e070eE', '1689056111', 1, 0), - (4084, '9999999999999999', '8837624218118928', '0x5B0c1a42F3836498D29d7Fae8268621C25701f27', '1689059051', 1, 0), - (4087, '1000000000000000', '883762421811892', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1689065651', 1, 0), - (4088, '1000000000000000', '883762421811892', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1689065963', 1, 0), - (4089, '1000000000000000', '883762421811892', '0x206739F22F107d63426dFC1bD3870B083FCc1367', '1689066191', 1, 0), - (4130, '13743865565182666', '12144960483199551', '0x8710467f6bdFE64A53C984Dd78b91810935A1662', '1689100523', 1, 0), - (4140, '30627701504879320', '27064600035837660', '0x6037eC0e0E22A9dD6FE432a77441b13c51d74F88', '1689107795', 1, 0), - (4167, '103337178838807306', '91315354293190761', '0x4E39d95eE63BD29e1Be6b8B53b7ca3562f7E9761', '1689150215', 1, 0), - (4172, '99999999999999', '88366409185245', '0x08E80715b67eac62632d24F5F8B1149Cb69b5317', '1689157259', 1, 0), - (4173, '100000000000000', '88366409185246', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1689161471', 1, 0), - (4222, '3095857947852232421', '2735413982329372636', '0x8087f97270caFbC759d9Dd003D68f86a25381d5D', '1689188495', 1, 0), - (4297, '40008612009062141', '35350496872475716', '0x4bE17d2F4F91C91e713dC08dADF5D4c9Aa9fc44e', '1689211487', 1, 0), - (4325, '13301383378001236', '11752732421637827', '0xa55102FFB17Fe19aB6FEa9425310B5fB5F599A18', '1689223175', 1, 0), - (4336, '79036694805051839', '69834625402249684', '0xB1901A93a28Db2DDeFb12E147D7c2F07fD1f7A17', '1689226271', 1, 0), - (4349, '4054216011483230', '3582192513997150', '0xbDF8CeA8dc973E06197A39d9D8571cFf5CE50F52', '1689234683', 1, 0), - (4365, '100000000000000', '88357218851952', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1689248183', 1, 0), - (4387, '1081375517930376304', '955371698001228530', '0x20599ea33c5F533382D0eFa20B15A4Bb0FA612A6', '1689270203', 1, 0), - (4411, '1364557045686127643', '1205556404912646666', '0x3E68dc3c8cf6C10C11B524ab2fB12c5E0cDcC772', '1689295547', 1, 0), - (4433, '13613184212042325045', '12026951507792275681', '0x43e7E3578Acfbc47d21e201B0c38fBE33aA33B32', '1689315467', 1, 0), - (4436, '31050860967753288', '27432758810684022', '0x2C23D079e95a923eeCD239488A2f0Bd8F5e3755f', '1689318035', 1, 0), - (4490, '1526506213961524180', '1348478979323977039', '0xd8773b07ee5543676eB6d6334c6861B5095bFF6b', '1689365831', 1, 0), - (4495, '6525757764991468', '5764697902810511', '0xbD1273D117d928056667a26578f07ca7C75E6458', '1689369131', 1, 0), - (4501, '9999999999999999', '8833760170713366', '0x6fd8e0D5e01e62307D6D05d5Ee2BcD1106D33727', '1689370835', 1, 0), - (4513, '19999999999999999', '17667520341426734', '0x53418Eb843d11643Be3601d5A4D323403b70e5ca', '1689378731', 1, 0), - (4522, '10181179711554167', '8993809982680221', '0xa465a5776f481BC097cb534571Fa93D8A078d649', '1689391847', 1, 0), - (4534, '1000000000000000', '883376017071336', '0x184AbEfBdCa24Ce0Dd964a74f6d5E69CE44D9579', '1689400187', 1, 0), - (4575, '148906181157267122', '131526552423734946', '0x945FF3E1fB51e820F7cA567B079B6a2B59eF16e8', '1689440699', 1, 0), - (4579, '697028368267913341', '615674497239270250', '0x832FF8011dEaAd7c048394225B0538C431116179', '1689444071', 1, 0), - (4582, '950139635580664564', '839243808536619694', '0xE1C5Ce16ED9FfCe96aBEdC11Abc35A94b5EEa075', '1689447803', 1, 0), - (4589, '9999999999999999', '8832847058566580', '0x1AA294a7160aF34E43779c715CCdB8cb4ED46917', '1689461843', 1, 0), - (4598, '1000219064017989', '883478201753351', '0x507fE9b32B1D356e2d49843c06eEB969dF171fD7', '1689477947', 1, 0), - (4634, '897304287588938211', '792493527872648626', '0x4993Bc0E434dc58379F818D6836d3Ae6D8e29D44', '1689520091', 1, 0), - (4643, '3169165929839832543', '2798987503894697250', '0xB06712AA3016d8125293A1A77286b25DD2eB2bF6', '1689534647', 1, 0), - (4645, '9000000000000000', '7948743641935278', '0x605D1D1E553AA9b8dD3645E21C4d39D6b7B549a3', '1689537311', 1, 0), - (4708, '2000000000000000', '1766387475985617', '0xED63546362291b31278f385AE3DDD0fb286D4268', '1689594887', 1, 0), - (4724, '5703077556044819', '5036361474561309', '0xc644E6E3bE5AAeF33ead20F48c2C6F94a2Df686C', '1689613295', 1, 0), - (4791, '100000000000000000', '88300134034253145', '0xF9B25d3A9cd426091097dF93e551ab6b8e183748', '1689687563', 1, 0), - (4827, '10000000000000', '8830013403425', '0x184AbEfBdCa24Ce0Dd964a74f6d5E69CE44D9579', '1689729107', 1, 0), - (4841, '1500864165423749265', '1325265069741245457', '0xCb721B27CA670C806A6aAA9AC9DF6D065d24bCd5', '1689750851', 1, 0), - (4861, '5403491025454826', '4771289818005451', '0x26Fe3B0784B30A6aDe6A94966f9784cb71460b3c', '1689758771', 1, 0), - (4898, '101569705055895484', '89676381616814066', '0x77D57f6942e4d7744060a7e5101E948CBD45d216', '1689781463', 1, 0), - (4911, '19729102779731473', '17418919833024107', '0x1A64ab8B27A4964d45C1bd67e56A1826b4739B4C', '1689806399', 1, 0), - (4922, '1000000000000000000', '882904814653775700', '0xB8fd6AceddB834c03d6D8d1dA3dC2a819B5ceD40', '1689828143', 1, 0), - (4974, '999999999999999', '882804399956108', '0x31437564020dfe21a684D358b4AAE30aC7A8e8bd', '1689897983', 1, 0), - (5016, '274265991345020073', '242095643456319940', '0x5dd23805e332dDa76252b8401D138Fc6d9Ef962a', '1689970979', 1, 0), - (5038, '21369482327997437', '18862924087503469', '0x0261Da54A53C6731F20a0371A2b251F476326CC8', '1690015667', 1, 0), - (5050, '13011343245327716', '11483888221927376', '0x75fED583C9fe8B7B30fb100075EC21533eB43e60', '1690036631', 1, 0), - (5051, '50005548690131421', '44135191947981875', '0x7caF57bB1FfC42A7d7dA0a6A19F6696310910814', '1690036787', 1, 0), - (5085, '1015669851591852576', '896436196182189465', '0x9A9424D087b9809Fd56650f103c34Fd1D12A99D6', '1690085195', 1, 0), - (5116, '10137068565799138', '8947036452170613', '0xbd7BD560D5a707e33c7a1500BcB1A7EE4b0a09A5', '1690111079', 1, 0), - (5119, '1857729147015849275', '1639642692433571708', '0x7907159263faed67cdb7eC05505E3f9208C18009', '1690113407', 1, 0), - (5149, '103559026467973631', '91392298728165526', '0xcbc62048151654b0b176E40f4621C770dD5F7D03', '1690163255', 1, 0), - (5165, '133997487738529636', '118254669302155572', '0xDC1e028A1A49305502Ca84edD6b58A8e81CED6Cc', '1690177283', 1, 0), - (5200, '27999999999999999', '24707618076427824', '0x3b16aDfBD635Ad7324dC0B842EC82D48B02e284B', '1690242011', 1, 0), - (5201, '27999999999999999', '24707618076427824', '0xc9E4efAb5b3da4Dc027D95c92D6bF0bAab4F51C4', '1690242395', 1, 0), - (5228, '29999999999999999', '26472447939029812', '0x897BAf610BD4D72FF412Fab569CBC45D1c97cEEb', '1690268063', 1, 0), - (5235, '34593749719265519', '30526041281969455', '0x4b7DCF82F00Cf0965F5BEA3916da767f786Ce160', '1690277159', 1, 0), - (5237, '399999999999999999', '352965972520397507', '0xEf89F4BC267a6fb8d7ef15f2F67001470f36Ef73', '1690279547', 1, 0), - (5243, '36999999999999999', '32649352458136768', '0xc8CC91B80fE78E30F20e86115dA052a96aA7852F', '1690281983', 1, 0), - (5287, '29999999999999999', '26469451615054951', '0x4a46D7274C75f51c9D293c54D975bD6b1daa3Ea8', '1690357787', 1, 0), - (5306, '113351011284943', '99999999999999', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1690381895', 1, 0), - (5307, '100000000000000', '88221533152993', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1690383167', 1, 0), - (5311, '40315659963879010', '35567093320881733', '0xAd46779CcB2327B02E8668e65F7B8c608B648de7', '1690387355', 1, 0), - (5325, '2000000000000000000', '1764430663059874245', '0xbcA2A6125FbF9505eF6DD1a3f5275f330Ac60Ae8', '1690405979', 1, 0), - (5350, '39999999999999998', '35288613261197483', '0xEFDFA1D714116AF8c7a5665825cac5760f09211B', '1690456079', 1, 0), - (5358, '223989015979381114', '197584488052480111', '0xFc79068eA9B698d2e5480FcC02f9B21b08dd0c6C', '1690467479', 1, 0), - (5376, '9999999999999998', '8821168626887862', '0xdA55f733DC725796a61b276F1d7d1BA7A5C707B2', '1690511339', 1, 0), - (5390, '29999999999999999', '26463505880663590', '0x7976B93dD172a91aa7578da674A0D699BF2e54c4', '1690531811', 1, 0), - (5409, '390546014822654729', '344507225330968457', '0x693bace8C81544DC9a90db46A975E9Fec5FdC708', '1690546583', 1, 0), - (5423, '807155737209526843', '711927504933696046', '0x8f976203EF90Ae4273a672Ac436a70EF29484187', '1690571339', 1, 0), - (5425, '50780499547757064', '44789416311782693', '0x8239143e934a4dBcd7FEAf0beb4611Ec616A4410', '1690577975', 1, 0), - (5427, '196938272872698027', '173703495829598195', '0xB3b681204C3Be82dF667ef4911D75a052CC19D80', '1690581059', 1, 0), - (5510, '37003580661181819', '32634083480737979', '0xA1C28CE82Dd180f74feD52Ef522946d64bE4216D', '1690699019', 1, 0), - (5515, '20000000000000000', '17638338181133043', '0xeBfAcDA219878d71babe55F9cad858c5b8A2F99C', '1690703387', 1, 0), - (5521, '10154563534304114', '8955481284992877', '0x6d3E7bBE2c8B86BEdC000a59B9D72Ee955DAaD80', '1690707587', 1, 0), - (5530, '10150833242443767', '8952191477525521', '0xff41DCC84e5FEE9652B35B20C6DCcb73AAC57A94', '1690715111', 1, 0), - (5531, '250056681539406043', '220529215672196597', '0x477027e78a2c8595daa138B12D10E49b9b1508f0', '1690717295', 1, 0), - (5544, '34999999999999999', '30864094169964069', '0x2e3773747AE57959451655e97567181ffb19E5A8', '1690726547', 1, 0), - (5546, '29999999999999999', '26454937859969202', '0xAd000cB34EBA73F1af0C2a7e4db56526997Cc394', '1690726943', 1, 0), - (5584, '1001326873285151663', '883001340342531455', '0xe289E7149a434d24e24302A81CC60F5D287DbE7b', '1690760999', 1, 0), - (5586, '1001326873285151663', '883001340342531455', '0xa458E3Cf88B7eef56349dA1396f40ab9Ee5cf9eD', '1690761203', 1, 0), - (5613, '10765698026406283', '9493529076925710', '0xf163F26f0fB04d37D94730C82512D3BEE3a9386A', '1690775063', 1, 0), - (5625, '755988658175116386', '666654432495473432', '0xaaAd5068678c9dE60b3e0fc3b9Ef229718C6d377', '1690780439', 1, 0), - (5645, '2280000000000000000', '2010575277357659444', '0x422CF102166dC1F4E47e5B2CCEA144D03282554D', '1690793423', 1, 0), - (5647, '1100000000000000000', '970014388198870784', '0xE09960b6fF7d3Dc372295D4D792C70e05c46e105', '1690793867', 1, 0), - (5665, '51767938274981834', '45650586340112190', '0xfC2145DB2968f8f706D4eE2423cd45B9c1fBf86A', '1690800839', 1, 0), - (5694, '900000000000000', '793524376932836', '0xE24eBf7Ba011e497c3c5D6857C322C0CAcB3E058', '1690826927', 1, 0), - (5697, '3477213278088197119', '3065837222175023423', '0xD536f61674712a335bBF8d7E92d537C856681E62', '1690829639', 1, 0), - (5715, '300000000000000000', '264508125644278692', '0x28703ADDADC0D031C977E7FefB77dAb09b20A13a', '1690854431', 1, 0), - (5741, '10158389085606979', '8956588188664000', '0x956F36Ad9b8623313366d84939295952D3e7F40F', '1690874111', 1, 0), - (5747, '35016795932721089', '30874090194107522', '0xE7C6c1451124745E13E48E137067A9dE6DBB946E', '1690879715', 1, 0), - (5755, '5100600000000000000', '4497167152204026321', '0x080EaD407C64346f7D9AC93EF511FcA478f2F988', '1690882199', 1, 0), - (5764, '1000000000000000', '881693752147595', '0x1312D129a34b45521aB550700860ef26b46FF813', '1690889003', 1, 0), - (5785, '10498113128163918769', '9255129143332142767', '0x5E20AAE3daa13074AD18234067603CEF5b5Ed05F', '1690899071', 1, 0), - (5791, '50305505129680840', '44349297908278747', '0x5D55fCD39aadF150794cCd2b6DC0CC2C97715db6', '1690905575', 1, 0), - (5793, '15030230078317787', '13250640256070050', '0x57E24A826D522619E0b105C49648857C607A2b76', '1690908767', 1, 0), - (5808, '50772451372953841', '44760957387627609', '0xe19b26d8836Be47759397EE2f7a5376bEE8294D5', '1690920779', 1, 0), - (5832, '507765913843151383', '447646072187292462', '0x7ac96a8EdCf913fAcA97e14e5A98815CB708452F', '1690940759', 1, 0), - (5841, '1246467266645246219', '1098884664786958408', '0xfaa661545D2481F9fB6882630Cad43eCb5c28579', '1690947323', 1, 0), - (5850, '3177593153154881474', '2801363886860681235', '0x8d94648cF5D35a59C3feec570ff313C7e4708c72', '1690952423', 1, 0), - (5867, '7137471584931468', '6292389924641403', '0x3B92ACD12b8d38AC79Ae9D2E2183752969Bf3dF9', '1690972487', 1, 0), - (5875, '14198769186306839', '12516228319295190', '0xdFD5477E42bD164610599471aA848bC9fAC1703C', '1690982447', 1, 0), - (5912, '250230889837963221', '220578763458791272', '0xA5d46576dee0A8856BE606b69FfB33677AAA8342', '1691013839', 1, 0), - (5914, '364318410487512196', '321147019629132929', '0x81E6782F72daC4Cc5F6035484dDF67746ceb0be9', '1691018039', 1, 0), - (5923, '1020283657279670290', '899380998268022204', '0x15c2d33fA9BcD8eb55ad847086f84fcfC98E2cEc', '1691026991', 1, 0), - (5930, '28003124327142978', '24684780288572033', '0x1bebdc4C4fbE5dd7818F6a24Bce9E4c0C1E351e2', '1691046683', 1, 0), - (5958, '2999990000000000', '2644493991198466', '0x52030a0389Fe214b185583b2381830d4281bA2B1', '1691059355', 1, 0), - (5972, '10000000000000000', '8814021953617813', '0xf054f7ed42f01D1c57B1378c97237B811a144bFD', '1691067335', 1, 0), - (6013, '1307945413405199621', '1152825958788715677', '0x6ed40a7C11E0150458863EB198864acf7831Ccc7', '1691123519', 1, 0), - (6026, '114517146505102918', '100935664336164462', '0xa0373Fa9ffffE0c5b5C669D32f326c3aeF6D75cC', '1691144471', 1, 0), - (6100, '10000000000000000', '8812160788894881', '0xB8A1880a740C0cE3AEC761dfEf20E9CfC76942e4', '1691241719', 1, 0), - (6148, '8573953184137932', '7555505405508070', '0x576B2610301FA7846a5ee2DAC5109f3C4358e063', '1691286359', 1, 0), - (6160, '29999999999999999', '26436482366684644', '0x1215cDe249f32C0f98B89778bA603A442CaAFE90', '1691307023', 1, 0), - (6171, '3000000000000000', '2643648236668464', '0x588aacC99E1Cf3eDf41aaA7b5c2880Bc593859E5', '1691315867', 1, 0), - (6190, '5199993299599134', '4581855873694949', '0x09A13c09D94f71FfA7fc82704F08ED403DFa9B59', '1691327519', 1, 0), - (6212, '540982155731915', '476674127252339', '0xB3708795D8D6c17cE0Be1c77124cE30103A95172', '1691340491', 1, 0), - (6246, '29999999999999999', '26433817947697145', '0x6aF127A3756D5Ad56d95f95CC83730c6FAf27696', '1691362607', 1, 0), - (6275, '51516100009066097', '45392240300500418', '0x9E6153325bF836CAE5b46F5cdFC4CB35E9Cfef36', '1691390183', 1, 0), - (6283, '464852860260138849', '409594529352760403', '0xbbe0970Ba723e64018b72Bca59CC2b1F0d944521', '1691401955', 1, 0), - (6286, '1000000000000000', '881127264923238', '0x88aaFF86fc80604aE5bA2afD07432911534C1dE1', '1691403275', 1, 0), - (6288, '10007392689952827', '8817786549910942', '0x88aaFF86fc80604aE5bA2afD07432911534C1dE1', '1691403779', 1, 0), - (6289, '44500000000000000', '39210163289084101', '0xeE0ddC8ec1529b17Da165489825d0f22c29907a7', '1691404859', 1, 0), - (6336, '3123021667514084468', '2751495380207262487', '0x58A855078aB2c582d18A1A0A896252DD01c34170', '1691461127', 1, 0), - (6360, '1903783891923839', '1677302670689146', '0x918E03D7C59d61B6505FeD486082419941fFD77f', '1691481407', 1, 0), - (6372, '539113360844377749', '474926556617211158', '0x247c4eB3CD3701ef3513Df2eD3e40D20ebEF20fE', '1691507783', 1, 0), - (6376, '153749762202280996', '135444324787421672', '0xb7615c4d95d498f8c0523A6C2C7b53d05e75F04e', '1691513891', 1, 0), - (6389, '32547297986599276', '28672218651304987', '0x599585FD3e340B2740dAB70ee37199A153244B0D', '1691531519', 1, 0), - (6395, '9999999999999999', '8809400603119257', '0xd5Fc9Cd0CBfDdB460E2C1786a3d2cb164B8C50aF', '1691535431', 1, 0), - (6407, '211000000000000000', '185878352725816346', '0x4cc9f4aaeb1Ae9D1aa2AE4c354a96e7E6442796B', '1691556851', 1, 0), - (6424, '330900000000000000', '291503065957216251', '0xEc5AF3C24262f2D2AFD5251fE3eA28e67148EF70', '1691577419', 1, 0), - (6459, '27353856719817862', '24094537891725222', '0xebFE9CedDDb8C5ED7a134a4502044c13f578762a', '1691612315', 1, 0), - (6477, '29603157594699303', '26075825785233003', '0x5e68409789E66E9E9c89393bA6144CddB80aBb8B', '1691652863', 1, 0), - (6483, '100000000000000', '88084609561724', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1691660039', 1, 0), - (6493, '100000000000000', '88084609561724', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1691666855', 1, 0), - (6496, '30083175113061754', '26495812139784262', '0xE9394EA9be8cb9c228bFFb6443d4960F8dA6dA18', '1691670479', 1, 0), - (6498, '2002619255921098', '1763810614836380', '0x58aC0FD4f1Cca9132BeBb8Eb6Ab425AF4b2c089C', '1691673047', 1, 0), - (6499, '27035715610433487', '23811756544529608', '0x32505E71d2af1eb03b323249d75dE7CEa3556f88', '1691675339', 1, 0), - (6501, '10000000000000000', '8807518501689038', '0x26b356616Ad27AcFec78467Af97c25f3d3EB2332', '1691682239', 1, 0), - (6583, '22490063415987356', '19806070291878642', '0x3B135f0B87df5c11a20186DCce6a11d073a31697', '1691803307', 1, 0), - (6587, '11609400754317284', '10223919921148093', '0xcE2B27766E603671E2C5684cc5664D68667Fd6cc', '1691805791', 1, 0), - (6597, '24999999999999998', '22016467812402028', '0x2a3eA5E9FC49A39b4FE41F63309E9e89d29a31dB', '1691816243', 1, 0), - (6600, '4999999999999998', '4403293562480404', '0xF52D1159cc55EC686aAf715E541D604eee85146c', '1691817359', 1, 0), - (6608, '7160206625023830', '6305698347599396', '0xE3371E63a3115A3bA72C161a80D162b6cE08F11b', '1691824463', 1, 0), - (6621, '1139600000000000', '1003598668760534', '0xaB8399C5Dbfe62562EC57dAd965Dde51eB9d2B4b', '1691840159', 1, 0), - (6632, '2442921199904769', '2151160099245488', '0x74C187c5bE912E5Ac728BDF3430084858c7b8da0', '1691849771', 1, 0), - (6634, '574721037068305755', '506081392713985704', '0xf4C1A842008eDAA71Bf63C863782AaB0dB20EC8f', '1691851535', 1, 0), - (6653, '41613398502920324', '36643458846308154', '0xe0A9B3021cA6f50d65c9715e997cd342D8CAB564', '1691871347', 1, 0), - (6654, '70123060000000000', '61748176205960991', '0x1Dc3Bcc07B93c73C476D7E1056B64c8Bd947184A', '1691878751', 1, 0), - (6671, '19237502585771611', '16939943856255782', '0x778044A424E028816295C9F5D1DE214A07d2016B', '1691899403', 1, 0), - (6676, '12201125897861383', '10743930339780646', '0xd879Ca8459d31cC512542bf6d0b64467de97ab59', '1691904203', 1, 0), - (6684, '10229911478235163', '9008140496570567', '0x03f3344A01a7697DB1eC51066Ed43cC080483a73', '1691914007', 1, 0), - (6716, '7414230000000000', '6528094868165093', '0x5dc7C9f5e45421D78bCfD6AD69671E356357E246', '1691945591', 1, 0), - (6722, '200253828430369798', '176319859204085956', '0x73cA996Ed694b0D2f0fbE9707Dd01f8C3DFf69F3', '1691948231', 1, 0), - (6747, '720000000000000000', '633946924370955241', '0x9C008Bea0400Ec3520b57049B1DD36fA25111a3E', '1691968295', 1, 0), - (6750, '395295403412777583', '348050423904869934', '0xE4982B6255661120859f8A8468a64E6F9937C793', '1691971895', 1, 0), - (6769, '70581394683182216', '62145636218355359', '0x1AC2107DDF6bc3B80ac3ff030afA804fbCc825da', '1692001955', 1, 0), - (6790, '15811610806818095', '13920431961918027', '0x9A9EA69f0C81fAc726b063B672E8663dA36A3054', '1692022583', 1, 0), - (6794, '10000000000000', '8803930309184', '0x018097085cA9106E38c5647ca543a4cFc397068A', '1692027203', 1, 0), - (6800, '30999999999999998', '27292183958472980', '0xF04A239B898f1AacF6F2d4Faf97D9A19eBE6d51d', '1692036527', 1, 0), - (6806, '6309307824409807', '5554670638529851', '0xA11F7c28db6Ab0fC0977CBD99c2E5438E0ca7731', '1692052451', 1, 0), - (6819, '100000000000000', '88039303091848', '0x66AB7AF2Ae04634db54dAC8Cc92cbe5Ac88cBFDf', '1692072911', 1, 0), - (6823, '52301954969186559', '46046276658284182', '0x8894B63a7f7192521b251c1C7D3925fd90BaB8a4', '1692080339', 1, 0), - (6844, '668220441321623744', '588232885849984214', '0x6D93936551a2126aD29e06DBB0FAE93AE91aE6de', '1692103067', 1, 0), - (6860, '280221898166562078', '246678679135976163', '0x7C7B7a059776f99dCAC3A4e2560886967877AfFd', '1692136115', 1, 0), - (6900, '10226736342913859793', '9001557554653490007', '0x263F788544b2D15dee7e4753Ecb208db46565faf', '1692213959', 1, 0), - (6994, '29999999999999999', '26403012287113934', '0x4223984C6A5008230dA189547e39C7FA85658DF4', '1692325775', 1, 0), - (7019, '1136233990037628555', '999999999999999999', '0x3637a131c537dFDABAB3a5E964f70FA65c364008', '1692356339', 1, 0), - (7049, '105254285731466391', '92620797417946176', '0x920e3932c046FC5AC8A9935062fe78389F7131eB', '1692402827', 1, 0), - (7056, '780434525717945985021', '686760330965629378417', '0xE6DD2d3D487203eE2caED1E9221167482791c11A', '1692411563', 1, 0), - (7064, '30083293137855585', '26472447939029812', '0x5C925F73F5a628D62b255129627C4BAdb7cEA563', '1692425771', 1, 0), - (7079, '32999999999999998', '29039067564338323', '0x0eBefc8174c9A51acd3eC706903d26DFe6434e82', '1692444311', 1, 0), - (7080, '52005455152531068', '45758461488865436', '0x617478Dd22181F206a4787456e84a77F58675a96', '1692448499', 1, 0), - (7082, '184473973388740626', '162314610693217746', '0x14868b7eE761ff65C4c19a29028c3f114c156a27', '1692450455', 1, 0), - (7119, '10284384245855884', '9049004552896163', '0xAD756Bb6ACbfda2165422f2590Cb195711A85C10', '1692510719', 1, 0), - (7135, '30999999999999999', '27276221350132544', '0x2703b05C5cCeedE76A3B1B06603e6fD036727965', '1692530399', 1, 0), - (7140, '54776912880179347', '48197006470861236', '0xEBC7C6c1e874f52c7D1eE226b64692C3B705A4d2', '1692533087', 1, 0), - (7147, '32730611860266734', '28796048855288806', '0x85bAb03A768b7534570D72423Ab3f7c9ae11Fd9c', '1692544523', 1, 0), - (7150, '11261155698594132', '9907446614445536', '0xec30160Ab02A0338eF746BB9F448d97732e63B74', '1692548363', 1, 0), - (7153, '282175571671149808', '248255106940896030', '0x6AB5cF6fC7DD2aB819EbB71e21f39815631faA1a', '1692552995', 1, 0), - (7159, '318621304417294154', '280319680166879681', '0x24a21d91C82d684cd793e3829318a33784ef3626', '1692561767', 1, 0), - (7165, '26403022254681415', '23229101918991368', '0x17e9D3d36f5D8BB70A9D874bb7856165C81263E7', '1692564563', 1, 0), - (7186, '31999999999999999', '28153264207317276', '0x61376DeB5F4F5767648eC57343A2DfD37974d93D', '1692585971', 1, 0), - (7208, '100000000000000', '87978950647866', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1692612827', 1, 0), - (7228, '1098041739055172578', '965944025569741086', '0xEc939E74399aA48A72aBa99d6e299B5994771dB5', '1692646151', 1, 0), - (7239, '499999999999999', '439848500841553', '0x60dE74F84F020A0F4bF6515775bB5Bf48E7E156B', '1692674723', 1, 0), - (7244, '500000000000000', '439848500841554', '0x60dE74F84F020A0F4bF6515775bB5Bf48E7E156B', '1692683075', 1, 0), - (7247, '999999999999999', '879697001683107', '0x25BB54bcAa5926FEe60E5820c660645C71452340', '1692687167', 1, 0), - (7249, '10286501529029734', '9049004552896163', '0xeE05b5A8031753EFbE5E36216D27FDB6CbbBC72A', '1692688103', 1, 0), - (7250, '9999999999999998', '8796970016831079', '0x44F1048Fe8fC9cC00413219eB0135c10AF1b31eF', '1692688883', 1, 0), - (7261, '9999999999999998', '8796970016831079', '0x4996136749E7bE661CBb07BaD6f2F53A232BfD30', '1692700343', 1, 0), - (7266, '3250000000000000', '2859015255470101', '0x60dE74F84F020A0F4bF6515775bB5Bf48E7E156B', '1692701867', 1, 0), - (7284, '999999999999999999', '879605118043978893', '0xA7ec245997999a3E26FA908EE323fD747D12edCa', '1692718883', 1, 0), - (7286, '199999999999999998', '175921023608795777', '0x660C93763d389faB0B6dC7f59abea62a28494Df5', '1692719759', 1, 0), - (7287, '19001984741911616', '16714243031979052', '0xE9eede96CEc6d4B32fB747eea54a0fAE20936Dab', '1692720851', 1, 0), - (7346, '499000000000000', '438922953903945', '0x8B1911186644d5beE10fBFDa9B7B04bD72281c62', '1692761987', 1, 0), - (7358, '20512956299062056', '18043301346867460', '0x7037c9bDa84fCa89002E95193de685F8Bb05bAcB', '1692766823', 1, 0), - (7413, '9999999999999999', '8795111107870843', '0x49b9b8A64C433D8c6409c4dF1b7699a1129F27aD', '1692793703', 1, 0), - (7436, '128499999999999999', '113017177736140354', '0xD4C79d53ac5C8e5378AD0434cD5171263CCfdD25', '1692816287', 1, 0), - (7437, '15267303784337278', '13427763310086337', '0x3739798b5C653Bbf7C3CFaF5032036f567BCeD41', '1692821075', 1, 0), - (7442, '100021135707524746', '87969700168310808', '0x8A3328113B552B5A2af9a4D90975e9d8a314E785', '1692824087', 1, 0), - (7459, '50000000000000', '43975555539354', '0xe58A5782e7FCb39Eca107d7CBf32Be12DEdEB491', '1692843971', 1, 0), - (7468, '12181092031359037', '10713405783100289', '0x94F568e447Eb0C8922A30c87b5999631F840815C', '1692855911', 1, 0), - (7471, '30000000000000000', '26385333323612534', '0x1ec4618e976D204CE2B77340105a5eb334a56622', '1692859103', 1, 0), - (7486, '260000000000000000', '228672888804641964', '0x252E1396a0e579bC6bcFC39b38730B047Bc05777', '1692872111', 1, 0), - (7489, '20304394452682741', '17857940518938113', '0xf3B54EeB65845D5294b0F6cc4a073Ebb81D02F31', '1692875651', 1, 0), - (7531, '10023702242097846', '8815009354026068', '0xfF778147cD06D12Ee7C662426a20c185Db9b140D', '1692926699', 1, 0), - (7533, '18792673796305640', '16526587811623239', '0xf1A905AA003Ffdaf452e92396998457337499E64', '1692928259', 1, 0), - (7542, '31084289739370909', '27336037942649850', '0x5d92B0442000dC776e0D7C78fAc3428BFbB8B945', '1692940955', 1, 0), - (7573, '1000000000000000', '879416521073872', '0x32EcAb571D114968306e093E16AA7a8e72dCcfd5', '1692963515', 1, 0), - (7574, '1000000000000000', '879416521073872', '0x32EcAb571D114968306e093E16AA7a8e72dCcfd5', '1692963767', 1, 0), - (7591, '20074695593691662', '17652117856549762', '0x63cd3eB0dEe715661602400a1E922e73497acB0D', '1692975503', 1, 0), - (7604, '50081314404891812', '44037592508445190', '0xf9E193dD7Bb19b87EB03494d60b8A1a7113a3868', '1692993215', 1, 0), - (7625, '100000000000000000', '87932181955958634', '0x92448ad2AB6Ce5026b4d13E62Fae5638218e81F1', '1693002503', 1, 0), - (7689, '530429784462413773', '466418483222088881', '0x2e20E3043cbB8E4F8EBe36A1F2A33bB5c5820a9d', '1693036907', 1, 0), - (7712, '35462571511349562', '31179781753721150', '0x3E39b5c5127b7b16BD725Bb5aCF70ABA183827Cb', '1693061111', 1, 0), - (7744, '9970859458024689', '8766685791489715', '0x6D995301dC8e50E13d5B6571C270eFbb3efB2C63', '1693086743', 1, 0), - (7756, '10245479877542527', '9008140496570567', '0x5494489F2C56A5AfE61CdBf01Dfb8746b0E502aF', '1693102823', 1, 0), - (7779, '73840156991320419', '64922533294378703', '0x69BC6Dd2De366954084728bd7963DC5e798EAC23', '1693119995', 1, 0), - (7879, '200000000000000000', '175829392714500839', '0x34EC6fe523041d32bdCAC2e8ba1EA0479838C2a7', '1693218623', 1, 0), - (7882, '1000000000000000000', '879146963572504196', '0x8D9A93Aa66eE8Db48E79Bc15b7ce2d6df72D7435', '1693221179', 1, 0), - (7907, '2040708305696933144', '1793896940459766232', '0x1d7fd4D914A8C06CE03a6Bfd61b3fE7fBd621015', '1693266743', 1, 0), - (7919, '10626578560546892', '9341357956011314', '0xf8f65f18DDFAEe1E23b961F5053e9C73e1Cc3F1d', '1693280639', 1, 0), - (7920, '100000000000000', '87905602944420', '0x2767705CdB23CEa4F57d245c725569f813f1B7fC', '1693280963', 1, 0), - (7928, '20016394889988281', '17595532615780463', '0x69ccC4e8C680c93De5C17816df328c692433FbbB', '1693290647', 1, 0), - (7950, '101803393558639397', '89480515875946041', '0x56E30aF541D4d54b96770Ecc1a9113F02FEe3bf1', '1693319399', 1, 0), - (7966, '50031682804995347', '43975555539354222', '0xEac7fC039b337753bda03112e6DC5c2429475F84', '1693344191', 1, 0), - (7985, '12000000000000000000', '10547449873494211166', '0x9d28AF6Eaa82F0692d8DA521662197411d59697a', '1693365995', 1, 0), - (8006, '1008108873595839', '886081484273068', '0x000000000000000000000000000394dea34e3bbf', '1693388375', 1, 0), - (8015, '30442588481659628', '26754624293775958', '0xDDcc97489AbfD1A66d07937ff9f48ad318a51B6c', '1693403807', 1, 0), - (8033, '7026906295982663861', '6175632469947436092', '0x926108525B1b768aca7b23A864D5816FFA95105f', '1693426019', 1, 0), - (8037, '5026836526199477', '4417860942597640', '0xD4FB434785897BEbE4b5B189BaeeE2604655F740', '1693432571', 1, 0), - (8040, '100000000000000', '87885510490983', '0x7ADB5b7d19ca6fC8d438Dd9C610A9494E53C8598', '1693439195', 1, 0), - (8104, '100000000000000', '87876704687885', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1693490603', 1, 0), - (8109, '91193531894576447', '80137870717449978', '0xb773B412651F8b410431a5b5452b8070585e1d85', '1693493219', 1, 0), - (8172, '50123471680768335', '44042304780862466', '0x737dF46328276516C6d6f325f75DEAdb7d9D48c0', '1693572407', 1, 0), - (8207, '32999999999999999', '28996316676247084', '0xCE944ADCB0Fb023E8305D19a412B8D355Da56fc9', '1693617191', 1, 0), - (8212, '5100003039029958', '4481251611198035', '0x2793eEaB9262d6715f24541B38eca5770bFaDBCb', '1693620467', 1, 0), - (8221, '93927066739646864', '82531483989508949', '0xa0C2606228439E5a70Bc4B4e1c1f03E116805442', '1693628531', 1, 0), - (8252, '50058083893329586', '43984850084155403', '0x921c19C30467deaE44b8B17F6CcA286D27724738', '1693656995', 1, 0), - (8262, '2000000000000000000', '1757187335713286263', '0x34DAEB2d3a91f916d2b5D73f1af3571f749b5fa6', '1693665503', 1, 0), - (8269, '105821149261797596', '92973791666728053', '0x51B9425ECAC5ef44d5D5F033C03793cBeF44A0d9', '1693675703', 1, 0), - (8280, '5006805413388301958', '4398947532393324582', '0x447468C3280403f5362c985C209154eB84EAdC7A', '1693701071', 1, 0), - (8322, '21259157876168727', '18678161493966525', '0x8A545d0aDB708f0F506230F56C8e152936AffD4F', '1693740563', 1, 0), - (8327, '30593659482500038', '26876995848772492', '0xe2C16B23661d77F5f5cA53dA59B9508C19022249', '1693750295', 1, 0), - (8351, '9586388358985151', '8421788190345317', '0x5E9D951Dd0E6D9484B997eB95c259b241928F479', '1693775819', 1, 0), - (8386, '5576383600212765', '4898937930580443', '0xc2E2153eA6A85006B7259B9f79009D487e939EC3', '1693812095', 1, 0), - (8392, '100000000000000', '87851523169846', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1693819631', 1, 0), - (8397, '21471368289238515', '18862924087503469', '0xA25442d1590993779264aefEbeF4B3fbD802FF44', '1693822859', 1, 0), - (8414, '200267442192151857', '175921023608795777', '0x4A763d33f69550D3cF26CE7E298051462461609C', '1693838987', 1, 0), - (8483, '510049210336982', '448042768166218', '0xA17823941Cd133F8C8df0E75278C3C0286B3f0ea', '1693904879', 1, 0), - (8520, '1000000000000000000', '878341973572334653', '0x822a8E8C00CB78772749B36F58ac17530bD526b0', '1693933823', 1, 0), - (8572, '100000000000000', '87834197357233', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1693989335', 1, 0), - (8574, '12119140000000000', '10644749345599423', '0xFF3Ada6F1CB21a8246d6c755f54fcE47DD657F81', '1693989839', 1, 0), - (8583, '100000000000000', '87834197357233', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1693994903', 1, 0), - (8618, '1420796578258572', '1247809349441684', '0xe0165431f6f664b35ee245677D405bF5eb588927', '1694031155', 1, 0), - (8629, '10034163023187198', '8812466630164114', '0x8f87Ba7DC41707403Adf50A959d29B2A9eABe4f7', '1694046983', 1, 0), - (8671, '421716070127420343', '370370581663262319', '0x59Bc9F9aE05b2A8f03fa8fF590b94b1010296Db8', '1694086055', 1, 0), - (8697, '100000000000000', '87815228315890', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1694105399', 1, 0), - (8751, '241768203254072283', '212309299682788846', '0x4acca1F63CF3F5Bc26b412C474F41FC1BB61FBd6', '1694170667', 1, 0), - (8803, '11999999999999998', '10536759202667115', '0xa34abf4Ddf1018044f7a4A2CA4Cdee3b091cCF2a', '1694221055', 1, 0), - (8805, '100186061170736608', '87969700168310808', '0xAF79E81c4BeD431Ca67eC784B07dfDc6F6df7b7b', '1694223263', 1, 0), - (8857, '10014353046874376', '8792307050756954', '0x8ef78FCA6892Bf838Ae6574D700b68d5B9d894a1', '1694278307', 1, 0), - (8860, '73100000000000000', '64179647192579736', '0x992B2a4580E56178C671db0a2A869734050cb48C', '1694282039', 1, 0), - (8870, '9999999999999999', '8779705498300920', '0x18a843b07802a664Fc3748f09b6d8FBb5BCEb731', '1694293547', 1, 0), - (8930, '10962200191985325915', '9623577227060768668', '0x407a99440519409e26beE5fc42cD1C2f95318B92', '1694352947', 1, 0), - (8946, '10170974595324966', '8928970259469056', '0x03Da13141A4E084ac3CB4873239f5e95aFc3FDfA', '1694367515', 1, 0), - (8948, '6009181062242430', '5275384230454172', '0xaE4ABb9b6d607F93c681f3d2362dDD30D329EA49', '1694369939', 1, 0), - (8952, '999999999999999', '877887381959758', '0x239B358a5b39631dd9B3A2814a92F11f411dd6dD', '1694372315', 1, 0), - (8957, '5005184568939585736', '4393988377451759365', '0x82cF1663B6b968F2D7D486433ddD82F8aeDC75a0', '1694375243', 1, 0), - (8958, '10894626537165252', '9564255168141321', '0x6a864dF218D1b6a686042eb082d7B6175552f420', '1694377703', 1, 0), - (8964, '42563228958082882', '37365721637765195', '0x0283a54bedd539CE1b138480754336f7Dc7CEfd8', '1694385179', 1, 0), - (8967, '19548141016792479', '17161066339412136', '0x6A4FBF0B68cc7d6F1B6e53b03be7189Ca910BdDe', '1694386895', 1, 0), - (9010, '10222202834436132', '8973942884184766', '0x8aD7587A0FD5b4c6CFD03D091Bf2C6BAcb1f6366', '1694416583', 1, 0), - (9013, '22023892343149445', '19334497189691055', '0xEb4A5fcF64e02a7535E0dd3879C8E3992e8f71da', '1694417363', 1, 0), - (9016, '10512567386468820', '9228850260582661', '0xd60848390bD1966EC2981b1Af79319064AC46784', '1694419391', 1, 0), - (9097, '615536638188006950', '540319259838496088', '0x07dDb3Ba06876247fCaE5C091DCDc8E42485f4eC', '1694469395', 1, 0), - (9106, '12051580604839322', '10578900926936944', '0xf68e2E7Fe294dFdDD1726196454640227b6508b1', '1694477315', 1, 0), - (9123, '99999999999990', '87780194762900', '0x0E418961CB87e574C0170F7e6C25095ef0fA423B', '1694486555', 1, 0), - (9143, '99999999999990', '87780194762900', '0x0E418961CB87e574C0170F7e6C25095ef0fA423B', '1694499239', 1, 0), - (9165, '829933313572953734', '728517079056604535', '0x9dbEd82360f58C7Ec80c8313165508131a18E7F7', '1694515451', 1, 0), - (9176, '175515979543834064', '154050359261075973', '0xa47211386bBFA48D555bc88dE01FF80C60F6DC0F', '1694525783', 1, 0), - (9189, '5524435036153949', '4848796128112361', '0x0e6040985EBA529187F88cC9f1CDdfD9f0d6BC27', '1694540171', 1, 0), - (9240, '100000000000000000', '87760883510607668', '0xAF7b2C152b2aAf639B0f681ABC2b68b60B93845c', '1694608199', 1, 0), - (9249, '999999999999999', '877608835106075', '0xbf22b90C02607e95692Ab369E894AfAB82fcD1FA', '1694624303', 1, 0), - (9286, '3999999999999999', '3510435340424305', '0x4DCB389201C60b3503c0Bb04F35748e6377303Be', '1694672699', 1, 0), - (9314, '20778577772729182', '18233700276276321', '0xF318D82e4DFa2b0406359b3859eE7fa3C0305468', '1694702579', 1, 0), - (9345, '5150366940121121', '4519570498336190', '0x748426A6344422043dFEa70F142e27e808697C6e', '1694746643', 1, 0), - (9356, '100000000000000', '87752398050106', '0xA2983004198a89f5a66dCDE33Fc2b547c289c620', '1694758391', 1, 0), - (9357, '50020706069963129', '43894369097987964', '0x66D324b40b1072460969b41377437bbBE4e7c37B', '1694758955', 1, 0), - (9399, '33000000000000000', '28955358935942981', '0x9DF087ADa77aF80F553DC0d2FB43C18dC5a6B444', '1694791583', 1, 0), - (9409, '5100000000000000', '4474919108282097', '0x11420299763c81DC25315b95C3Dc9dE84EF4073f', '1694808779', 1, 0), - (9504, '8616627939574491', '7559796272375509', '0xCaF604C35e9ED2D29E36f871662CF92fAE82C736', '1694889527', 1, 0), - (9592, '31999999999999999', '28075191642539753', '0xDDae4b5a64d3CB411785E55D0Ab6765B8549026c', '1694949959', 1, 0), - (9662, '32999999999999999', '28949888273313701', '0xabd48458F12b393F317aD831959ecE5f02de79f3', '1695022499', 1, 0), - (9674, '10000000000000000', '8772693416155667', '0xA423C15CE0F5f23F6615658a850Ec32AEe6d45E7', '1695028331', 1, 0), - (9688, '13084906649654459', '11478987441643518', '0x5983A50A686141fF6856B653727d9595EAaDe1d6', '1695037475', 1, 0), - (9694, '100000000000000', '87718496435181', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1695040019', 1, 0), - (9699, '10028637487341624', '8796970016831079', '0x42d2629C43A504541078f91C892b7def6750B106', '1695044567', 1, 0), - (9720, '1077388361141260255', '945068871160761256', '0x13B51150Dd95d1619fF3b6B8351bAd46654E4296', '1695059807', 1, 0), - (9723, '32105808589189149', '28162732562794213', '0x51427Ae046F0e85Ba912F937D1dBB499b90D8734', '1695065147', 1, 0), - (9813, '1000895575631364', '877970549830091', '0x7735C45a0aE0e82996251a333992403447eBbb49', '1695120443', 1, 0), - (9825, '1069800917294675838', '938316702109708890', '0x2671b161BEc950Fc004Ee73fEc8020E1c4249EeA', '1695130091', 1, 0), - (9827, '49256932496550309', '43202993855232185', '0xB17950bD62b3F6B00B3aafc5987a831D68A546f7', '1695133019', 1, 0), - (9833, '10001029262196309', '8771849643518190', '0xfa7E9f80aD693C186e32A0471CC6036Ec74B0890', '1695137879', 1, 0), - (9838, '37740032467022790', '33101582013521426', '0xFc3A4C73DA250c1BE7796b3ac0392355a88EeDC5', '1695144983', 1, 0), - (9841, '56581867849776158', '49627655745770181', '0xFf73868059aeA9b416F04d41140A908070759d3f', '1695150959', 1, 0), - (9845, '101801668376995618', '89289702594690569', '0xbD7f8Cb7963B11078fc8e06ca5043815Ed93b16A', '1695154283', 1, 0), - (9847, '5031417386227740', '4413029464137439', '0x26ff3fbE171C6d4cCEcf1996240422ce07162fEE', '1695155459', 1, 0), - (9855, '308587529226050816', '270660482763275014', '0xc7237d77d88AF10A08eA9d9cBC750911971fFd05', '1695164447', 1, 0), - (9865, '40852525419363907', '35831533049426154', '0xf7AB56CbdafF79919028A88ed60a97993045e7E4', '1695173243', 1, 0), - (9964, '63958327531404641', '56097509351068934', '0x8Ddd557fA230B64494212529802AE8f355Aae33F', '1695191723', 1, 0), - (9980, '399999999999999999', '350837875324517141', '0x6713AAA85838C9CC14C41158e01741F723671496', '1695200423', 1, 0), - (10001, '100000000000000', '87700301188842', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1695216875', 1, 0), - (10007, '289521485217188544', '253911214541883180', '0x9Bc3d5e7b6bcB527f74C886Aebda20177B45da85', '1695223211', 1, 0), - (10024, '868153824821024', '761373519150490', '0x22Ce69385548dB818c5A6AfdEcF33aAB6103dF7A', '1695250019', 1, 0), - (10044, '10075952760409620', '8836640918524681', '0x2F0636B16b4314713CF0f36cb02a44715224d018', '1695265259', 1, 0), - (10060, '500000000000000000', '438501505944210277', '0x6774bdEfD4097A7ea317115eBa6D69c3B2A5d311', '1695274811', 1, 0), - (10085, '187919641893612899', '164806091933691926', '0x5E9630BDbe8aBA8605Afca7C371fFdDf1141B724', '1695294263', 1, 0), - (10109, '1564218626793788112', '1371682262198238350', '0xf946B0A96cC28cEE391a51E2Fd782a6b9Ece415E', '1695307607', 1, 0), - (10124, '22360558138292718', '19608244298955044', '0x1Ad7e136B29231c54c023f37F48C90B7D8D46aBF', '1695318095', 1, 0), - (10129, '14692043306117787', '12883630749083829', '0xac3220316764d534B5F222F5C0Fc749C50d99D43', '1695321983', 1, 0), - (10185, '5718258216601655', '5014409898991602', '0xD8f97844Dc278009063920baC21598705174730F', '1695365555', 1, 0), - (10212, '11626483671638088', '10195404370559145', '0x9960CE5E941bd6505064Ab79749eBD495a9cA8a6', '1695381599', 1, 0), - (10240, '8173021149286090', '7166306609885229', '0x432714EF42f0f5f369d2de44B7E1503eaA4F51D3', '1695404843', 1, 0), - (10314, '7152283931902406', '6271299031380247', '0xD4b02ECA7b2682455Fa853F17e21D1c6b605d434', '1695468383', 1, 0), - (10360, '10476018242380074', '9184774599758450', '0x7e0CABb92d22495910C1488611510F48ec543D38', '1695503615', 1, 0), - (10378, '24235776191524059', '21248544668319293', '0x266ACb2b6Eb2150254d2c2EC9a126aa52827B27f', '1695520211', 1, 0), - (10398, '42166604908487', '36969271412182', '0x39E91A89C4c7e706EDf6C3E8262E207D3D167C14', '1695549287', 1, 0), - (10438, '6545875195183103', '5738506488225894', '0xbf9Eaaf8b3A144344F4fC0DB8746d73438A43981', '1695587135', 1, 0), - (10460, '2355387382350275487', '2064873736952508134', '0xE570eB045AAa94AD1ceD74c8F493A952A001c9dE', '1695606623', 1, 0), - (10478, '9999999999999999', '8766599296681786', '0x9914dc1278e6F527b09451DA14163609B8c7A936', '1695622391', 1, 0), - (10551, '1032648782180562164', '905198179288253619', '0x7740d3c5de14e7aeE58462690BBbcB9366c2C924', '1695693455', 1, 0), - (10561, '1403651661799356', '1230411491826601', '0x4f9666C905939913ABf3779DE2a75F575B9ed799', '1695702323', 1, 0), - (10571, '10276473733971983', '9008140496570566', '0x20bC4d08256D3239837F271a25dD654DE973073E', '1695707675', 1, 0), - (10581, '19999999999999999', '17531578885452587', '0x3C2C822f3e97cC8273E8345f9a35d5C9f11a3c80', '1695711431', 1, 0), - (10585, '99999999999999999', '87657894427262939', '0x3F35948153bCC06f1056DB516D47faA6C8772eB7', '1695713663', 1, 0), - (10592, '49950049950038', '43785162051569', '0x9978571397477cb5Aaa6d057a512f711205A5264', '1695725519', 1, 0), - (10610, '849202711002311374', '744314708661394442', '0x0AAAA39A5D2168742391d16AEcD7cDbA74C61F1b', '1695740795', 1, 0), - (10613, '100000000000000', '87648649611926', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1695744431', 1, 0), - (10698, '200000000000000000', '175279706504897387', '0xB69f4C2165c5C12fbF959c7e09f54Ad5a85c2D80', '1695819719', 1, 0), - (10701, '737167154486314', '646052212417057', '0xA4af216fdF49C03FbBd4472Bb0A1933aa9097BbF', '1695820235', 1, 0), - (10727, '32003211820796531', '28047567875816393', '0xe9AB37D29bc59b846e4377cc21B782f5728Ed1aa', '1695854435', 1, 0), - (10728, '10032316034841481', '8792307050756953', '0x9000E4be0Bc55115C42620a831C1be45a641912b', '1695855947', 1, 0), - (10789, '136961410597628656', '120021018099870374', '0xFE4D7352e9752F16cD09a7855486803845D6a78D', '1695909983', 1, 0), - (10794, '7948429530809828', '6965309428547808', '0xb70B0DD242775C01dAbEa5ca2FD39a1b77A6ee16', '1695916283', 1, 0), - (10833, '419920087965864403', '367981289462002530', '0xc18d2F424Fef95EA280a2D3560190C0F26AEF57a', '1695969731', 1, 0), - (10840, '2672540283060770', '2341980885610293', '0x9dBd35AdF013e26DfDa9741c09c1790Cf8a25Dd1', '1695980087', 1, 0), - (10844, '3196762997151141560', '2801363886863443459', '0x9c50726de80204f983fb370018Ff10846CF3c8CD', '1695981635', 1, 0), - (10847, '2465120110076442', '2160215961991280', '0xf3Cd63A13E4dD6B68F61FD7da3dB57D219c4696F', '1695984515', 1, 0), - (10886, '90853847071856271', '79608623390123342', '0x6a40701c5426B1deb5F47739fDBa42C2644A6D16', '1696016279', 1, 0), - (10904, '94999999999999999', '83241595879592053', '0x4552BC7b2f1FDCa5A9A79D81C298427D126553a1', '1696040591', 1, 0), - (10930, '8841045234675634', '7746765416611181', '0x1c81637f2a5C18a02d461d865708A78E83388530', '1696067987', 1, 0), - (10983, '19908785406015683', '17442933122424603', '0x017C868C64B7B8F44f1F58fC027526B3f37BBC54', '1696107815', 1, 0), - (10999, '10148492205651866', '8891525385729671', '0xfB50Fc92c3F11B33a999ba6ca13E6BA17E94c9ba', '1696132343', 1, 0), - (11025, '999999999999999', '876142505265740', '0x903E533F5b123EC285af5b20E09e570e06811DE9', '1696151243', 1, 0), - (11036, '258135779883145002', '226163728885544532', '0xB63D03dfAaF8089Cfee2752e0CBE34D2B999561b', '1696159667', 1, 0), - (11114, '100000000000000000', '87606091832666831', '0x85922937621c89aEfEcD6558cE7f1984575872fc', '1696216583', 1, 0), - (11147, '137695319078745240', '120629487681409166', '0xf8D20B673E7A6dde089307DB11D4e319d7E34064', '1696235279', 1, 0), - (11154, '1081634253759413350', '947577497642052246', '0x0298F4332e3857631385b39766325058a93e249f', '1696238699', 1, 0), - (11156, '171582439817943151', '150316669795637575', '0xd73C53EB7c2C71CE1bAa763ca9390650611235aD', '1696239755', 1, 0), - (11160, '15000000000000000', '13140913774900024', '0xB09cD60ad551cE7fF6bc97458B483A8D50489Ee7', '1696242935', 1, 0), - (11161, '60140790651593245', '52686996287126686', '0x474402e3A61CB7148c219d15334064fc9c7A567d', '1696244447', 1, 0), - (11175, '4010387151840196', '3512985232470327', '0xbd672f27B465Fd76e21923f7b89670dE964b31d3', '1696252655', 1, 0), - (11189, '9090984789417646014', '7963444451786223223', '0x32C976FA8aFB0B0045E23E94A071DAB3B50b1689', '1696257167', 1, 0), - (11233, '49999999999999998', '43798579781235936', '0x08B08d7254909830ddE8906bfa05187F58ac8421', '1696316099', 1, 0), - (11242, '100000000000000', '87597159562471', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1696323779', 1, 0), - (11247, '8280968345302292', '7253893054752235', '0x09eeE16b749e58352fFf00f667C246f3027A8eBa', '1696326959', 1, 0), - (11263, '43568761088379997', '38160822872347626', '0xD049dFc27730580EAF742925DA4721C3cb633343', '1696336823', 1, 0), - (11287, '234605099037940478', '205484925568015625', '0xC801330Ae93ffB3fDdC44cB5C78cEDAd6DFff92f', '1696378919', 1, 0), - (11292, '5991375687193964', '5247700890482222', '0xc9A8E0ef65bd8f728302097BbA5Dc3596fF44DfC', '1696383455', 1, 0), - (11294, '6958038676733451', '6094377596442281', '0xE73f3aF6C95C8D3be041dDa4cb1A7B5DA28946cc', '1696383743', 1, 0), - (11306, '32009744543707794', '28036560168503711', '0x062B55daB8DCf9544f32e2C3Ec466C55Cbf5D225', '1696402595', 1, 0), - (11400, '3540387229952283', '3100939448511503', '0x4191D29bd8857aA0376b6E1A5f81ff51136999f4', '1696407311', 1, 0), - (11413, '44372330848436580', '38864650167709316', '0x4882FD0A23ad559918962dB3511D12f970e9B27C', '1696418627', 1, 0), - (11420, '124453809830738640', '109006078531948523', '0xc9af5846Cd453518c9f8155655B75f30e19624E1', '1696421411', 1, 0), - (11427, '141188978795318940', '123651469271288101', '0xd23c17c052Ad04534b4B56C31398756B5775818b', '1696424207', 1, 0), - (11430, '502126162766102563', '439755555393542239', '0x6b412D6fB24D6F0A17641afdE687D5171839dB75', '1696426775', 1, 0), - (11445, '26035949663249639', '22801945712782886', '0x5E9D951Dd0E6D9484B997eB95c259b241928F479', '1696443659', 1, 0), - (11477, '3432100547853692', '3005788971985766', '0x30c1Bd908E3F1EbB8B94eAe008A686b87525B93e', '1696469075', 1, 0), - (11561, '10001963122377633', '8758757862069503', '0x524b29A7b971b1564094C8634f232E00D7C1f36b', '1696558787', 1, 0), - (11569, '9999999999999999', '8757038748196664', '0x5ffe91864190e3747e4A01916aB55D748701907A', '1696571891', 1, 0), - (11604, '52800366320550829', '46233215415336008', '0x737F4Cd1897C46176488bfcc768DF5AdBD7dc619', '1696596371', 1, 0), - (11640, '169953976161514701', '148815611294535768', '0x726a9dc8C3738F4f438fa6f1e66f85d02598C178', '1696623779', 1, 0), - (11657, '100009235705173893', '87570387481966652', '0x7F330FbEaf0502044A808B7b79b1589017Ced5bd', '1696656755', 1, 0), - (11662, '95842709165828979', '83922080993754426', '0xAC2a08a4aC6600c1657206e35f0252D09a927A9D', '1696659815', 1, 0), - (11670, '99999999999999999', '87562300486050281', '0xF1d7F85e6821C5fa490251752AaA4e22d2C657f0', '1696665491', 1, 0), - (11680, '21848277371662703', '19130854283201024', '0x5f73Fae52C593230C15EDA0a32a727810F5580d2', '1696670843', 1, 0), - (11692, '281038797345531', '246084036214075', '0xaB43E5eF4ADa49749875C466fa7287930d367F84', '1696678475', 1, 0), - (11720, '22612947444893064', '19798585660279031', '0x81eb46BEFd6089B6ED8F6d791d89aFdA17f81E20', '1696710983', 1, 0), - (11766, '53269419818475546', '46639615376085752', '0xC065F5D649cdbe291f67d282B31e49eEfA17EF11', '1696758695', 1, 0), - (11841, '8361825732338260', '7320463823074101', '0xd523EbcBd1937Ee21Ff6c5DeE02C97498B16691f', '1696827899', 1, 0), - (11892, '158027021993023653', '138334370465446391', '0x98c75F4b8e928622B759D514831a493433aaf87a', '1696855103', 1, 0), - (11938, '19525900631443961', '17092666415879854', '0xef3C533Fc5250019b809bf67a6949999316D9D6D', '1696897859', 1, 0), - (11955, '5251591508734654', '4597160638353126', '0x8E673100B9C1883B2C503D0d8Ab718823357f5dd', '1696907279', 1, 0), - (11957, '10435847732999598', '9135377027363629', '0x2767705CdB23CEa4F57d245c725569f813f1B7fC', '1696907723', 1, 0), - (11961, '5075244022449775669', '4442788821490947451', '0xa1F74D6044B386C20899cf69CCF036Da4E305B6e', '1696910939', 1, 0), - (11975, '999999999999999', '875384277453214', '0x8FAceE83b07758eeCe6C3De85bddc516c526135c', '1696923011', 1, 0), - (11990, '7748998712212214', '6783351638675785', '0x2f940Cb1FE951c15571efef85b83ee983Dc29577', '1696932707', 1, 0), - (12030, '99999999999999', '87530482272988', '0x7D224B45fb7C393399B33af581Ce50841706a99a', '1696947779', 1, 0), - (12051, '50000000000000000', '43765241136494935', '0xe080E860741b7f9e8369b61645E68AD197B1e74C', '1696960307', 1, 0), - (12135, '5611398497359407', '4911684166997995', '0x7B4cBb4B95B75637534F3394dc858b15Ad4f4b66', '1697008151', 1, 0), - (12144, '399999999999999', '350121929091958', '0xF692f703Cc4652d1aa9D90F57d41677b028C7dD0', '1697013347', 1, 0), - (12182, '45310846930529471', '39657197733377881', '0xe830786ee82ec2Ba6e5811176c086E82051091D5', '1697035331', 1, 0), - (12232, '8215440581451623', '7190361109448299', '0x2551DC445daf962fd020d52d25Fc88c476ECc7Cf', '1697075915', 1, 0), - (12242, '912285242260697603', '798455087300489572', '0x1900374a232E95122d6bdD3daBA4469c2bB8a10D', '1697085659', 1, 0), - (12256, '4354153352176574', '3810864994721006', '0x529e0c0A5A21e9fC914D911Fa9CA99124287E1D6', '1697099387', 1, 0), - (12257, '6586282541913070', '5764480842589476', '0xfa8B9C822aA8CC28140D8b66826351FCBA453DFc', '1697099567', 1, 0), - (12268, '1016493660261845', '889660926919645', '0xcAC86Cb22B85B4dd129e7aCA8A430CD929Ff1eFe', '1697111795', 1, 0), - (12280, '999999999999999', '875144332027026', '0x7DF0A3Aad26113B1a4f69B1b2523D41f43287AEb', '1697116031', 1, 0), - (12307, '49999874999999999', '43757107208309846', '0x5377E320FC58a639780ac6741b7dE461609cc461', '1697133203', 1, 0), - (12308, '999999999999999999', '875144332027027012', '0x3860a000ee39fb82BBC772D2c31c7488fFEd9370', '1697133707', 1, 0), - (12334, '12019670421611554', '10518946442306257', '0x2E21544D06E798bc538bBF5B5230D89977111392', '1697150207', 1, 0), - (12347, '6453183217415725', '5647466716253305', '0x6B85ebEdBDfc3F17876dACce38406f0cc9F913dc', '1697163899', 1, 0), - (12373, '50190176593309643', '43923648569070493', '0x1468e1d11c0Bfa6A87b8553f3d580BaC89856317', '1697181155', 1, 0), - (12432, '4207673834488499', '3681971704606349', '0xd02871f6F0dE696A899af6c15e8b48c2fC7491D8', '1697247779', 1, 0), - (12435, '8016122961981203', '7014597396960072', '0x014caa5ab06c109BE7CdB38232D776c44393DA1C', '1697249231', 1, 0), - (12437, '9999999999999999', '8750611025091359', '0x1fF64f22D924c414De06163FD0183321Ca6d4DF3', '1697251223', 1, 0), - (12450, '10078346603772671', '8819169090566520', '0x322F6791d85A8c0E75E3E6C57E75a729fA5cbfA9', '1697266451', 1, 0), - (12456, '999999999999997', '875061102509133', '0x1D8EB73488Dd8a04190258bd2A42B0E7CEaFe322', '1697271539', 1, 0), - (12461, '6012092221485901', '5260948047720053', '0xd76309659a007F6B58C559fAbfA35344F5D9EE60', '1697274899', 1, 0), - (12462, '19999999999999999', '17501222050182720', '0xBB5A0D1298e0B2D3be91b35D7936641da6BFE16D', '1697275643', 1, 0), - (12468, '2621346339059489118', '2293838217515684118', '0x3323bB97A395351F4a0467dFBd2Bb71E90528A5D', '1697278967', 1, 0), - (12472, '70000000000000000', '61254277175639523', '0xa3ccA6244244247AA1909323A08a1063FdAB5a9d', '1697282843', 1, 0), - (12494, '10159172754779775', '8889063440877825', '0x6E47CB2299a2DBa6825177E9060c7EbD39804548', '1697306159', 1, 0), - (12499, '20489287588584873', '17927697621603217', '0x17369c615d003Abb06A8C1D84B79FfEA057CfD82', '1697313851', 1, 0), - (12502, '7515230315608663', '6575669167238392', '0x35FF4bd8611D0c8CC38AAB3348c3cC8aFc1Ccf16', '1697317511', 1, 0), - (12510, '2939903043120102', '2572353605073709', '0x8Edbff2101D656b561e47F25F3f9359D9CCb925A', '1697329283', 1, 0), - (12515, '3406853931742111', '2980925855287924', '0xc5e042B6d8AF93FE3369024A816D065281f48bd7', '1697334935', 1, 0), - (12530, '26827236246621104', '23473269989176546', '0xed764DcEcB445179b7184e3702c8D6e10793108C', '1697353847', 1, 0), - (12536, '699999999999999', '612485342931778', '0x41c836B70aA5Ad52c97b4FfFC2849a54FC0F50ca', '1697358395', 1, 0), - (12538, '53000000000000000', '46373890250548993', '0xc5dD2Bbc5AC7b89240C965e548E45E5a56f70E13', '1697359679', 1, 0), - (12539, '102363457418492', '89565881886639', '0x7489939a50BC6A0c59c9b60e7583b6Dd75e6176D', '1697360603', 1, 0), - (12551, '1052333686217563', '920769940973753', '0x94A594C9B979d8268e0A80e7BC2c8d3787fE4E2C', '1697368883', 1, 0), - (12560, '1059389946782939806', '926863512166895486', '0x203d8957791AE99548823ceeE02B390FA7D2C78d', '1697374523', 1, 0), - (12584, '3143977402422564', '2750675467736709', '0xEd9C2D4386934De3F8288963cb68475B26779D6d', '1697394755', 1, 0), - (12592, '8191991975272798', '7167198893005997', '0xC558b5E3E92dD023B033D03a09886aF3Eb2cEC3A', '1697402615', 1, 0), - (12596, '10006392826062426', '8754623759693018', '0xd0882A2b35D9d613A7977722df11b9014d6a7AB6', '1697404427', 1, 0), - (12599, '4128273236212139', '3611838910232895', '0x1DA238BE6E729Fd3F29c2ab0F7d5A8345f810fd8', '1697412299', 1, 0), - (12603, '999999999999999', '874903065657277', '0xa0AD538269e2eEA76FC5aba98f67bCfA947f624A', '1697416811', 1, 0), - (12604, '10243610991957712', '8962166660264400', '0x0DdD9DD9B77d3Ba97B2496e3590787DeF887a95b', '1697417795', 1, 0), - (12612, '150000000000000000', '131235459848591821', '0x2a17d93FF760Cc89981c198AEACE715d5a72dBb9', '1697426879', 1, 0), - (12628, '6013178207082541', '5260948047720054', '0x910277C7430FA5D4101FD21E93D877559B4dD82a', '1697438231', 1, 0), - (12629, '8188775773247511', '7164385027994301', '0x8D48C4567Bfa1EDDEd1F8149b7B9B7DAb3945B45', '1697438435', 1, 0), - (12638, '10149306741566456', '8879659582492579', '0xc75A0110840023ad6a151D844909B9707E1430a3', '1697444603', 1, 0), - (12639, '499999999999999999', '437451532828639402', '0x38C585E00E4eD0aCD12Bf56e2e17Dc40517a2225', '1697444939', 1, 0), - (12654, '100000000000000', '87490306565727', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1697456447', 1, 0), - (12714, '1122316867770069', '981827237661337', '0x2c2C603567566F3c29F645b8D708C151d7cA226f', '1697498747', 1, 0), - (12728, '6735104899327624', '5892016442562226', '0x05fD6563B915522f4E8ff455Bd7c04729eD47311', '1697513999', 1, 0), - (12754, '22640120298315057', '19806070291878641', '0xc1A496b52209b497798995ee7875029C3EdB2427', '1697531171', 1, 0), - (12780, '100000000000000', '87472732791946', '0x9a9B0b60842051a2ED51407b179f35Ac37f262F3', '1697548091', 1, 0), - (12792, '4686488626345328', '4099399673448000', '0xB0DEdFa926f672962177Cc85AdeD16b55745a96e', '1697560763', 1, 0), - (12794, '282365388240849894', '246992721552860189', '0x1724E7471712b8FAfa0AaF0d72B87b7097D5f09E', '1697563007', 1, 0), - (12828, '1000172211001990', '874877965589071', '0x935b702Da05d8701AF3a6101166c7895ff5b3741', '1697585039', 1, 0), - (12837, '10240772154292756', '8957883262356537', '0x5bfa525cd373280129699f27cC9f99D82698F24E', '1697595659', 1, 0), - (12845, '60000000000000000', '52483639675167738', '0x3938087FC1A05d35E3c52cE991E9Fc9aba59155B', '1697604071', 1, 0), - (12856, '3828076526490587', '3348523151088327', '0xAeB8dFF728dEf8600981981a93ba1C3E517C664F', '1697611199', 1, 0), - (12858, '4169664331040985', '3647319338612573', '0x4Af909cF588c5b54eAFe3D617AE7DBc0EE99d355', '1697615483', 1, 0), - (12862, '6237530063457380', '5456138005225388', '0xdCCEBD4d57f28d5f34c43C106B2D5d389831ef33', '1697617007', 1, 0), - (12864, '21192055686003066', '18537270243337909', '0x8727DBeCc5144557e868a78B343A6941F4fe6000', '1697619155', 1, 0), - (12899, '12586394354565295', '11009663101909505', '0x6ead7a7573d1A5a24f4e81758608980479E309a0', '1697630519', 1, 0), - (12920, '206000000000000000', '180171861418889222', '0x67685460273dEB88F2ba528490991868E3c647e8', '1697633579', 1, 0), - (12950, '10058040191159472', '8796970016831079', '0x157674eF32f736647AA83111F6f318388204711E', '1697655107', 1, 0), - (12963, '9340589323654916', '8169472646564610', '0xC4F35056e8FD947EF3c00339c4c386ad124d26ec', '1697669651', 1, 0), - (12964, '9340589323654916', '8169472646564610', '0x02f3946394ac4c16377E34FE6906988a15D34C42', '1697669651', 1, 0), - (13001, '11254389642940269', '9843321995640855', '0xd579aC5097527D377369e0FF4d894999899B865E', '1697696255', 1, 0), - (13002, '9547401110128014', '8350354513225891', '0x9526395bCee03d7aec67e6490De8260AB8786193', '1697696939', 1, 0), - (13003, '3133970822414541', '2741035712169490', '0xC45A17717E31B408cf92D13106f6B34f8D16f5e9', '1697697035', 1, 0), - (13004, '9434959716499494', '8252010944339559', '0xe546C6D3C9A3AE696c521F2827De5Ceb7F9D9e9b', '1697697095', 1, 0), - (13005, '12435405172847261', '10876262609174635', '0x9302B0933938B7779e265D328931a08463D2C819', '1697697215', 1, 0), - (13006, '8306530391289425', '7265063313258203', '0x17B5057E0f599d9F1d2DE39E2A9baa5d3f4c8899', '1697697359', 1, 0), - (13007, '11388480043585975', '9960600233906591', '0x816314652d2d3E83851009af0aad21aC3AddBBca', '1697697419', 1, 0), - (13008, '9537232858954049', '8341461150403619', '0x84f5a145C1314C3E3B4Ce6168F98fdC69e7a6e65', '1697697563', 1, 0), - (13009, '600049272885933', '524815506984997', '0x4F03422f287e157B72D2Cf70a05B8AAecF3EBEdc', '1697697719', 1, 0), - (13010, '983529359809713840', '860215123869148530', '0x50886bD67fD9808a6aB81A670742cf6BD8c44c0a', '1697698607', 1, 0), - (13011, '32999999999999999', '28862482654482253', '0x4db784cCCaf5DaA8F166c3d1B1a0bfF871Ad402B', '1697698679', 1, 0), - (13026, '1000000000000000', '874620686499462', '0xc7b3f0b50E9D63488526d4ECc6800E22e453cF76', '1697710703', 1, 0), - (13029, '492732230530777981', '430953801727240327', '0x893E25f5cD4878072AB84854a01d30157e8C7986', '1697710871', 1, 0), - (13031, '100000000000000', '87462068649946', '0x9a9B0b60842051a2ED51407b179f35Ac37f262F3', '1697712779', 1, 0), - (13042, '717179677177917941', '627200873796179056', '0x777C1c989f24F0683d80d61020bd3E4B164AbA74', '1697725235', 1, 0), - (13053, '30253641539593900', '26457958881121959', '0xBC9d9689d07352890dA08e911b68A0086a1EFe34', '1697737667', 1, 0), - (13055, '91432617324559760', '79961297432594414', '0xB8bE3Fd0B5a4Bc0aEB0d0FE8441B8F0F91A1c68a', '1697739875', 1, 0), - (13085, '46169150455831840', '40376676068501106', '0x8CE40a82b8E4F1aa51C176d22CF746557DB1920E', '1697772623', 1, 0), - (13089, '524600000000000000', '458782629881813943', '0xC74e717A182d9Dd6485D95A49C6DE35eAb12306c', '1697775659', 1, 0), - (13133, '103363513562872183', '90386009863286881', '0x4E70763a067e0052cD9C997d834e1Dad722d122D', '1697814731', 1, 0), - (13136, '8001580539120676', '6996965491995696', '0x0cF6D388c4b5fe3e398197eF911Ec5d5E28dB7c9', '1697818655', 1, 0), - (13168, '35169240333602535', '30753669202080241', '0x3cc36367B4d6a610F957dD7415ef9DE369796329', '1697856659', 1, 0), - (13183, '5411515352700469', '4732088366433057', '0x8725b73af1Fd7B8de3fa445b63560D4521ed1914', '1697872511', 1, 0), - (13185, '6202271746713193', '5423563653650501', '0x7FeBAD278b323419E3b3E7077e2C7A9510622CC6', '1697873723', 1, 0), - (13190, '10245319783249141', '8958998616257498', '0x618f67D64891c9c2C0dE5c026DDdF2b0973B7D60', '1697876843', 1, 0), - (13199, '5079440901737377', '4441706552139963', '0xc38F9552E0a8A8f6E3C18FA859a2b05aD67e4cE4', '1697883251', 1, 0), - (13213, '15003072708284548', '13118069859373253', '0x6Cf4C9292D1e3eBa1cc51AC3CB43A7306514F9d2', '1697891795', 1, 0), - (13240, '50000000000000000', '43717944031990145', '0x08a0Bf0426d6E41cC9076C3ba4248c28D1E1c180', '1697907395', 1, 0), - (13248, '291323954393589145', '254721686667139597', '0x9F098B02634D846E4f466Ae084Af549b9c9ecF49', '1697914271', 1, 0), - (13256, '215059619334395484', '188039288032044151', '0x8bb9185E5146E6270194B7D9f6621a6974865ec4', '1697917079', 1, 0), - (13298, '103912606199845377', '90856910041261447', '0x915AD50a7f2aD4dF47DDD040C67139A1BF568d1C', '1697960879', 1, 0), - (13310, '10000000000000000', '8743588806398029', '0x7c5D147f270552DC6De8FDfA1De2Df0d89BcAb1C', '1697969879', 1, 0), - (13326, '47694906839827297', '41698582686850457', '0xaf26cEe9e8C32557E364b21b31E72DFc7c545F90', '1697978915', 1, 0), - (13335, '41891029446112748', '36624383418175995', '0x5E23102457ac6eff880eD1c07042431402b95362', '1697983895', 1, 0), - (13349, '463379948461652336', '405122650962424631', '0x1ea72060ee08A1AF4c9fC53bF4CCfb679612B76B', '1697995595', 1, 0), - (13361, '11815979922701318', '10330445082691556', '0x4fA0379f4E4933907aC6942F07165062fD4d64e4', '1698007571', 1, 0), - (13425, '10002979790461089', '8745379906248835', '0xd7Ba95987A6bF454AA8603ea07db5f60B3b776fb', '1698045551', 1, 0), - (13429, '5005875414288248', '4376524113649492', '0x00d32BE2Ea031B4aE0afDdF88dbBeC65690a7BFe', '1698049415', 1, 0), - (13448, '12260024170819056', '10717617390945189', '0xB552D312601E2fef41316F0f993d3ec9214F31eB', '1698064511', 1, 0), - (13455, '226580374706122046', '198074794189820663', '0x2E801f8Fb400431c05daCD16eeA8755369864D58', '1698074951', 1, 0), - (13477, '10258199803835081', '8967638161681405', '0x19842Dd788B08080c14f4D0dcB6A0690fbA6f977', '1698096059', 1, 0), - (13534, '2267407724617193177', '1982150126552091411', '0x824E9Ba004914104DB4860AEea9877C213810C6d', '1698131663', 1, 0), - (13568, '100000000000000000', '87419219094648632', '0x68553DecE29C8a25F0a7b1fA7b853fcCb157A9Ab', '1698144395', 1, 0), - (13635, '100000000000000000', '87409155802041436', '0x259e76fA90924E8f04A9f26362D6Bb966677d267', '1698187655', 1, 0), - (13636, '110000000000000000', '96150071382245580', '0x6Fcb971439B2c430CF15a5E26f0FCc2e46a2C466', '1698187835', 1, 0), - (13661, '1000000000000000000', '874091558020414366', '0x8e53cA93B4aD1c91C2b0cc22a4D96a9d29cdA799', '1698203483', 1, 0), - (13687, '39088952674240038', '34167323544412717', '0xAfcdc771e712E414c0eBcbcF6a0248DDb4d68CB3', '1698220823', 1, 0), - (13689, '88259261141986185', '77146675081329320', '0x0a8DBEB0d6d8f3c533beaf0720b723238e8ff362', '1698222023', 1, 0), - (13690, '10266402667045550', '8973775902502782', '0xbFe4fdbC9E0fb5c4259617D706EBBAbF738b6a6c', '1698222779', 1, 0), - (13703, '14999999999999999', '13111373370306214', '0x1B19D1d36FADf75A7562241e81489E63abE2b316', '1698234575', 1, 0), - (13790, '1320839821872371347', '1154419948889989088', '0xD26Db9F8dA62240c35B609de05c35B3D065E5F5B', '1698313787', 1, 0), - (13833, '2000000000000000000', '1747818158568725881', '0x7738769c21aBF9266140EdB365131FB1c2bFed14', '1698345827', 1, 0), - (13839, '23121202700545965', '20205828963981250', '0xADD4823ED15887e177b73350799766d9B06409b9', '1698348203', 1, 0), - (13846, '50052219313507468', '43741088896406319', '0xFf6Db1B0Ef4d5AC95ED4e6B4fdBBB72cEDdab513', '1698361007', 1, 0), - (13854, '54444047774274343944', '47579147662929961352', '0x27600c67951d00c96629eFc2d9E98575F2846Bce', '1698366071', 1, 0), - (13882, '10291471041867628', '8993809982680222', '0x43a85638b48F77cAfef1681537af7aAD9a8339AE', '1698385955', 1, 0), - (13897, '256956108398473728', '224556276107003135', '0x16be5f99194C70a76135c86014B8600e017B8dB1', '1698399323', 1, 0), - (13905, '25032956037764148', '21876527562728400', '0x66130Aa94F31fA464cB4d58D41716bBfbb3444EB', '1698408587', 1, 0), - (13931, '26194524990060052', '22889220749818882', '0x554eF333d0616225c856B055fAa3c2a6D00DaA61', '1698427547', 1, 0), - (13957, '23045405239217944', '20137466435816550', '0xad45d9BBE353B86df243B3BA103dB4a4dD5C09FD', '1698455351', 1, 0), - (13980, '1500000000000000', '1310725471744834', '0x806B704d7C2A4390A9e2B8078e1F1227da95EE9E', '1698481403', 1, 0), - (14003, '43337518469216966', '37864515408091541', '0x0cFf3b21989C0ce2B03F5f208B1fF7686Fe5B706', '1698507419', 1, 0), - (14012, '32256306751440186', '28182726356738306', '0xD591c28C3396008FFb936521C9ceb4cCcc801d27', '1698520271', 1, 0), - (14038, '13036161713073931', '11389852568454631', '0x83C1927d512685E710fbAe4e72320b4F5A162fC2', '1698539351', 1, 0), - (14045, '751047531364138', '656199335542165', '0x821961f62F48F379f687FE79dcf0B26b7db73bAB', '1698545855', 1, 0), - (14051, '1030876461437888', '900689265022863', '0xc9A5a7FdA5F10f701e74902caDe11B104fE30Fbe', '1698556259', 1, 0), - (14052, '40029609495917435', '34974355225592115', '0x587E4c4394c71C396D7ea29e76d1D5CdF0C35689', '1698556571', 1, 0), - (14074, '2057686552289513', '1797825692754686', '0xeFcd62127eAb1a3BBC53CF019C458fb928DD4591', '1698573995', 1, 0), - (14092, '7020036155524354276', '6132917763983223634', '0x587648468b61Cca201332296e04C66E625c7d658', '1698582995', 1, 0), - (14123, '20232943251797857138', '17676116523839615531', '0xAA8432ec8c13d63e7DBe56aE433eC522498bF5b1', '1698603287', 1, 0), - (14127, '31596637974524263', '27603786935429621', '0x2c8714039B7f69Bf16cE5Dae45C32069cB4974d4', '1698608255', 1, 0), - (14153, '20667958666939983', '18056159262655453', '0xDcEE70205aEcB682A41781e626A17E16dACd2865', '1698626123', 1, 0), - (14154, '20667958666939983', '18056159262655453', '0xbAB529eB7B11ED64FdF812E5A61F15F77B101988', '1698626375', 1, 0), - (14156, '50077180897023824', '43748953066555652', '0xc94e22e4b0Dcfb2BB66C2d716B66489c4Bfde927', '1698627995', 1, 0), - (14157, '64773136293751947', '56587788068904287', '0x8d89C0BE58d7A037ad2f39Dd7BE43d3A53C6B17A', '1698628235', 1, 0), - (14170, '10007405472299974', '8742774742570698', '0xa0671052eE1ed47Db861B4aE4Df02C626bC4DF75', '1698644099', 1, 0), - (14189, '2437428070863157', '2129411527669183', '0x42E3Ce7A394665340326ac3CD301ebFB287ffAB4', '1698663731', 1, 0), - (14215, '99999999999999999', '87354742452824267', '0x786F1476582fa1aA66bbb7A64e77eE677D75990D', '1698685643', 1, 0), - (14229, '1000523241280681276', '874004500601388670', '0x0Df444b18cfB7e0FBa4d7d00d83e20c74F3de934', '1698706295', 1, 0), - (14236, '6735713091770542833', '5883964823677324445', '0xCE226082226E3f1DB4Bb1AF042cc246C24639A50', '1698718271', 1, 0), - (14241, '7341343564586383', '6413011763421423', '0x020Bc782925cB2FCFe727B0644b26A4BDCF0A2ED', '1698729467', 1, 0), - (14243, '5836311723680181', '5098295074964810', '0xff652e46fE09A32Ddb2b94D74619232A1B33d4Ea', '1698735167', 1, 0), - (14305, '421306160265579450', '367991363888040163', '0x2F609B56f66EaF3DCE6Fb4f4496e31C02c4b532c', '1698814127', 1, 0), - (14313, '523000000000000000', '456816209836865446', '0xbaB7d229d793AbaeE25609F5eBF1c46ed8e7045D', '1698821615', 1, 0), - (14327, '18000000000000000000', '15722164009681793573', '0xfbDf101342085ABf5Bf78B983D5596317df31741', '1698829895', 1, 0), - (14363, '119619880413635948', '104471379481399923', '0xbc879C91c61AF9e7B19C66B146cF80e29003Efd4', '1698852575', 1, 0), - (14377, '2000000000000000000', '1746722687234701731', '0x693782C8f82Eb471B439452269bF9811482828f0', '1698873875', 1, 0), - (14418, '4822269701256688', '4211583945574782', '0xE1B0343fF0e32E017855F65fa5Ead06e92C3E4a5', '1698909491', 1, 0), - (14420, '5439382006382555', '4750545977542309', '0x160cC809473655Bf5AA7b7EBad37749c920eb4B0', '1698910523', 1, 0), - (14425, '16657576744431359', '14548083606925708', '0xB940cE4222c3263faFac2010191Ff9c1f64B686c', '1698912803', 1, 0), - (14570, '28354793590093616970', '24761322738432748374', '0xb1e34e094834642cDE4Aa969AeaE41d20610aA8E', '1698985007', 1, 0), - (14577, '21067172471034515', '18397279284860033', '0xDE91bD9045b9385D7353c8853c36C2900DD2515B', '1698993383', 1, 0), - (14579, '81289158819039519', '70987189176971491', '0x8e0469fbad765EC63bFD434A2d0ec9cC3EB9AE32', '1698995963', 1, 0), - (14594, '200100000000000000', '174723562301205102', '0x011a34f6052953D18BF2f13dF0e88C05681fee33', '1699015271', 1, 0), - (14614, '2215216516220122539', '1934285462181134947', '0x4587192389FB5e3efaE786d7525F0eeD01d879c2', '1699036547', 1, 0), - (14636, '93929383758088344', '82017373987856828', '0x1585C665ff680637ECd54953650434C290f7bfF7', '1699061207', 1, 0), - (14639, '26213053644449790', '22888746184661940', '0x987b974f334361D7C9cD6Cb6171008af7fed91b7', '1699064087', 1, 0), - (14647, '50000000000000000', '43659061044778886', '0xe2722fea032a8A2c4e870aE720e2781Aef252BDB', '1699073627', 1, 0), - (14648, '488220749165622', '426305189822991', '0xbc7A1458246C57B63D7e47B3EfdD42f8f528D069', '1699073675', 1, 0), - (14650, '655546880712176905', '572411225654546280', '0xe2722fea032a8A2c4e870aE720e2781Aef252BDB', '1699074071', 1, 0), - (14652, '12021247919495548', '10496727935033546', '0x586Dd64D84E29D45464c644860d9Fe6dE508516c', '1699077599', 1, 0), - (14662, '779057699815680755', '680258553473156616', '0x4998efB7D61Cb7a256D7d4554F731227892E6F40', '1699089467', 1, 0), - (14663, '5398175613195046', '4713585572538384', '0x8342610136619Fb9433449410ac4bAA27a951370', '1699090067', 1, 0), - (14669, '31064363473059729', '27124818823750283', '0x8F15295ed30dd7EcBF014C5E767cDF889167a197', '1699095083', 1, 0), - (14674, '65182852568010780', '56916442786792096', '0x34079623AD60962967064bfF6370F42d9aB3654C', '1699098515', 1, 0), - (14720, '878600347847086898', '767100791084022040', '0x2Fdf635cb9e0E1950AeEe29aE845bd7a7517d223', '1699128527', 1, 0), - (14742, '72696391574123952', '63470791494803543', '0xcaF43B095c2Ad696F1a460EDc6B63ccba213B890', '1699142375', 1, 0), - (14770, '10196627613608342', '8902615538401163', '0x2cD3d676F4C53D645aa523cadBf00BA049f4E8eB', '1699170791', 1, 0), - (14781, '100138034823486553', '87429928657466299', '0x62d3234a4160CCdf337cE6dF3f27bad01643C5a2', '1699184735', 1, 0), - (14837, '142927909809523774', '124777730358266835', '0x13754C9c3184ECAcCb212F9b7f6c09494bad205f', '1699229975', 1, 0), - (14852, '21622906277293799', '18877049084576063', '0x7DC683F759311E9f2Dd03263f5ec9f4dA3D84F71', '1699250903', 1, 0), - (14868, '5000000000000000', '4365058249454385', '0x7Bb8c69DdD0E497fbBac39Eb56b7C8Dc20404983', '1699270187', 1, 0), - (14870, '26332897024955105', '22988925878162626', '0x0fA599232f9d4F6d686aE3b4eC7D10350C9c74b5', '1699271039', 1, 0), - (14894, '533739194241264624', '465913179674998153', '0x56cb3B5a6d17594fFf8B89e86D21777AF371F242', '1699289591', 1, 0), - (14906, '2000000000000000', '1745845853937392', '0x26D8b9C87DD440D2A4B5380c591959A3a24B8849', '1699298399', 1, 0), - (14929, '180000000000000000', '157126126854365302', '0x82671D5Ba4c050AD8583Ffd578B5dc66C613d54e', '1699343039', 1, 0), - (14993, '460000000000000000', '401503989830786784', '0x2bDaAdbA981125f502B85D96fCA8400C3619D4d0', '1699382375', 1, 0), - (15001, '99999999999999999', '87283476050171039', '0x3Ab3cfF6E31D325Ea37DC3EE2EE509063a7eb646', '1699392083', 1, 0), - (15014, '601407172231987765', '524929085139117938', '0x0a89a8736eFF5f6B1866426633C7B4a1cA699c27', '1699400303', 1, 0), - (15028, '2991464426857657', '2611054136565689', '0x51dDf3a117c386690c9e8E1fE9ABacb1039Ed29c', '1699413479', 1, 0), - (15032, '50970472146478146', '44488799848630353', '0xce40C763B666D944420643e56C58849B75461Cc8', '1699415867', 1, 0), - (15145, '100000000000000', '87274263266171', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1699530347', 1, 0), - (15154, '324656594426169569', '283311512797289878', '0xE457cAF6FF43f4e9d3cFB58FDa53327B038e9deA', '1699536383', 1, 0), - (15211, '698302787967056748', '609373789555050383', '0xfc4CB318F3Ad81B1FDcCf71F6f19116B25d5489a', '1699573559', 1, 0), - (15326, '15046082118844507', '13128298717181456', '0x12C43Df41c493C74978fF7B3ACE712a2139dA5F2', '1699654307', 1, 0), - (15348, '800000000000000000', '698031480274263954', '0x6C8df37e3C601f0c30d9c11bA006fB0bf5DD7422', '1699682219', 1, 0), - (15389, '18110485153004775380', '15800435057323651938', '0x5D5421f657a46CA82D0585F7eAaA7d7717a8D7BC', '1699710239', 1, 0), - (15411, '58890819779228638', '51379108043379534', '0x35748C44890c00B68066100d718D26d594514056', '1699721735', 1, 0), - (15419, '2000000000578607748', '1744893626913497930', '0x570cf51ac81d5871d7fa72Fe1f02Eb71670daCfA', '1699725239', 1, 0), - (15420, '93904536596024822', '81926713698632808', '0xe137E8A80fA3D119069d210ba3876c51766a50BB', '1699726007', 1, 0), - (15591, '93762696136749989', '81794676755019019', '0x80B4004DFfcCe9BaBc08A801cF7770f70b87211B', '1699863779', 1, 0), - (15601, '97508588830468316', '85062437758764173', '0x44B6e83cA7B2E75eB60E3342eC88c2620d1f644B', '1699874555', 1, 0), - (15611, '13924236953712034776', '12145651781958029272', '0x3f3F0bC9BA04289705bD9e5bC7dBBC407C46764D', '1699883267', 1, 0), - (15631, '180358557698091734', '157320810108249959', '0xb407b0E9a89753910Ea89e5C06d9D0F42c1C7Cd6', '1699907543', 1, 0), - (15649, '40768197703053304', '35560751711231389', '0x592bf543355d1F6F7B013AD9627901994d22bd0C', '1699926923', 1, 0), - (15695, '50032547634520631', '43641738025085520', '0xD50ebc8980317F742325a86EaEC814B0FD7870BB', '1699964039', 1, 0), - (15710, '1519711856921346525', '1325436891483863464', '0xd93df0041E28EF138dAA36Af3CB062e7a55C4b01', '1699976171', 1, 0), - (15739, '217025206767240442', '189281418132741160', '0xABed4F7bf486BA028558cF5548fd38aBFB5D6a56', '1700019431', 1, 0), - (15775, '100000000000000', '87206585479219', '0xe9aec52B195fDE896ac476C09225B82a5BF0A458', '1700058035', 1, 0), - (15810, '5000000000000000', '4360329273960995', '0x5C9EBa3b10E45BF6db77267B40B95F3f91Fc5f67', '1700098379', 1, 0), - (15830, '820000000000000000', '715094000929603228', '0x61DA9C8be516e102Acd1EB6395874F6520FaCfff', '1700112551', 1, 0), - (15831, '1015370017407714540', '885469522161028618', '0x31c8F7Cd4601AFdfEd76b83d1dD60CAe234F9526', '1700113679', 1, 0), - (15877, '10000000000000000', '8719738605714570', '0x0c51E4aa90B19Abf9f7B835De866341DCD154646', '1700168711', 1, 0), - (15897, '74925074925062', '65332706836011', '0x503Cd7DF685676d88363Ed662707D43AD534182e', '1700193287', 1, 0), - (15937, '26042381025523191', '22706038730956373', '0xeb46c99B8Cd4F06B153493F7cA1c1C6fe2e26FdC', '1700236871', 1, 0), - (15953, '161802401515111900', '141073567427004364', '0x36ac62D5935e6aBb45c1d076AADC637a7487Ca9c', '1700247455', 1, 0), - (15993, '28296712721936071', '24671563417850669', '0x2dbb6FE6B973bD8f03b52e00cED3667Ba6a48166', '1700290751', 1, 0), - (16005, '6012987331322220', '5242651319015075', '0x003602847f7e68506522653Cbb40669Caf0AD172', '1700301443', 1, 0), - (16008, '4594657744817316', '4006026814793319', '0x98E1A11849A8E0E120dD8Bc3580B5FDfb842a7a3', '1700303267', 1, 0), - (16009, '4866267878157395', '4242840422631090', '0xD14a2E93C41e18590bc4EE9E8B9066FbE96Abb6E', '1700304347', 1, 0), - (16012, '71868311953799857', '62661116629547920', '0x893F10Fe1bC4415Aae28afDFDe2f27794D063325', '1700308847', 1, 0), - (16020, '33095904057508', '28853000552809', '0xb0219b846e11De2fB807d950e3abc8fca49f1C0c', '1700316203', 1, 0), - (16021, '5688788287833993', '4959484150319106', '0x1CD53b78A2c1a67132eac4b3D584Db8806238f15', '1700318243', 1, 0), - (16037, '5000000000000000000', '4358998700061863703', '0xbaDC58F8749dd34f86F24dfbC5Fc51A18b98083D', '1700335955', 1, 0), - (16084, '1052008427755575238', '917140673808135503', '0x13Bf1a54aCa2Ff5d9f82eC8f77a01a72787D8a4F', '1700383307', 1, 0), - (16092, '17842466188354121', '15555057384186673', '0x7245A15626C45652f75A0fca382BA79D2181BC12', '1700392907', 1, 0), - (16118, '510434368448484014', '444955175924005058', '0x6820a6D6415D879341b4Cd700bBc519D56485d98', '1700408591', 1, 0), - (16126, '10043859734051948', '8755420189485456', '0x63d7730b087bE8d3775Eb5B547B1C916128AC388', '1700415503', 1, 0), - (16143, '389502655616049997', '339536742361811111', '0x5C66223C0f56CDa1fA1eBa9DDC56355A969E3530', '1700435699', 1, 0), - (16160, '10333770127999421', '9008140496570567', '0xDF55bBE2e152E55644C531eCf8697752BcCdb0C0', '1700449859', 1, 0), - (16193, '4059550768874367', '3538444010120951', '0x3c62b54A84EE82df8e19AD0e7E38eBD905a4efE3', '1700488151', 1, 0), - (16202, '104371040106161565', '90973386643011143', '0x04A6439fdF2ba3db29a72098A9Fa7B22D3789435', '1700498795', 1, 0), - (16209, '18282566886306923172', '15935713819493911005', '0x88A117bBAD2fd5B0742CafBc4c008E3EBc1A6CE4', '1700511155', 1, 0), - (16255, '7414254267981708', '6462518908546128', '0x60c610D8b488D8846B174667C8004058296EbB8b', '1700558735', 1, 0), - (16269, '18414926054936388021', '16049513969374079028', '0x327A2bE3130791af92387B3ac85f5791F5d83b79', '1700571035', 1, 0), - (16321, '97504320143351777', '84979811678122564', '0x1a4d76FA257461bFABC2F28640abA9d947be0f8B', '1700636567', 1, 0), - (16330, '22110991913905431', '19270817191460526', '0xd8204C65418EA00B64E525ad919300EF182b851c', '1700645027', 1, 0), - (16339, '303539238265337406', '264549378599692031', '0x33308424ae4fA976dBa116Bd4CCD2607aA35F3C6', '1700650379', 1, 0), - (16353, '106331412615535462', '92662761269618834', '0xA9BB26879479e2E605a1232649ebf232584A08f2', '1700660483', 1, 0), - (16355, '60880605071315226', '53054547427774900', '0x395AA5aA111006B6d21F09cE25024Ab8DB15A787', '1700660639', 1, 0), - (16365, '50555101903740444', '44056363246161910', '0x55bA80b2A2Fca1cB997722c653d6321Ac5533756', '1700671031', 1, 0), - (16382, '40587070047543484', '35369698285183266', '0x98871f66c545e35F7277f679aBf500418D0A72e5', '1700693027', 1, 0), - (16393, '307862647805441027', '268287633312795398', '0xEe7D781b06E6013C8Abc68384cFbDa26894F893A', '1700709299', 1, 0), - (16452, '739792424355193409', '644624319811917678', '0x588EB07C2f539E9Fe8a1ef9335FA8507dbedbe16', '1700758595', 1, 0), - (16524, '31148840216523152', '27141802587404915', '0xa377Dc9dB3142A05e873fA062B8cf3eAA5ebA378', '1700804435', 1, 0), - (16531, '10000000000000', '8713583683609', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1700809187', 1, 0), - (16562, '22581260188347885', '19674458953736101', '0x5249ec491424427665188E863f4da160e53620AF', '1700832779', 1, 0), - (16567, '1010130768379185733', '880100409570464522', '0x5bd42f95866A02d62c07B696a56f7E315B64cAF3', '1700836307', 1, 0), - (16574, '50274723142566657', '43803045916333414', '0x4F3e0677a5a2E5999e8e29c67DBf218380a617Db', '1700837651', 1, 0), - (16598, '46513734024208104', '40526194871821039', '0xd6db1566302D5F479D0ff251fCE4cc838E2F401A', '1700866151', 1, 0), - (16615, '1000000000000000000', '871273737144585177', '0x1b060c5CD4aaE59f95d8debF589d480B1e595fB4', '1700886707', 1, 0), - (16619, '10277256170262017', '8954303391056434', '0x281A0eC0A602eB9C9B92a6711941f9D8E93fBB0f', '1700890031', 1, 0), - (16648, '16951101222753540', '14767620610315920', '0x23c14E77e980e8D90851c72678ec5f4255aF7874', '1700917787', 1, 0), - (16681, '740503413389651245', '645118764018916280', '0x88329757AFe1Eea057303931dF10E99482498199', '1700946575', 1, 0), - (16747, '3181354339765659012', '2771309751288329191', '0x7100ec600A0385F2dE17EEe5616f0157a6D66014', '1701021215', 1, 0), - (16834, '514395475460335718', '448051982938458846', '0xE3b9d8DD229AbB12e5033315DC9Ca6d801Fadb05', '1701127295', 1, 0), - (16867, '1157261141646779797', '1007903642589177476', '0xd6F785923791F8a9790e1021ACE88B3198b8A7E9', '1701174407', 1, 0), - (16870, '1063786161521084299', '926492654551012215', '0x5B3Fc58D53e00BD3E12ee6873d45a5600Be0d6bE', '1701179555', 1, 0), - (16910, '49916842003187476', '43474515017386791', '0xBEe377A1F80f57FCCF64f0Ac86c54a89402AcA05', '1701213335', 1, 0), - (16960, '2000000000000000', '1741686760801463', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1701264083', 1, 0), - (16965, '10001095839807034', '8709388108849251', '0xCb5606dE0c08566349fB9A56660Ad02cbE9a17Eb', '1701271163', 1, 0), - (16967, '100000000000000', '87084338040073', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1701271727', 1, 0), - (16973, '231748750833969021', '201816865579900455', '0xBA611733DE1C51cb2f68704917dAF6374eDfdab7', '1701277811', 1, 0), - (16977, '103235860908003279', '89902266091705319', '0xc9D75160e43b8bD2D995364451B8282D36cBE343', '1701286259', 1, 0), - (17048, '1000', '870', '0xD85A569F3C26f81070544451131c742283360400', '1701385583', 1, 0), - (17049, '2000', '1741', '0xD85A569F3C26f81070544451131c742283360400', '1701385583', 1, 0), - (17110, '20887981542428659', '18186297104043965', '0xE659F38A3af3Ee851dB99C25F24cB7aCa47272F8', '1701456083', 1, 0), - (17147, '1165780687355968911', '1014996776751611412', '0xb93DB512D55FdbeDF438Ce79C98973dac6A9d5Fc', '1701496931', 1, 0), - (17159, '2100000000000000000', '1828382691784579692', '0x79AabF0d33730a82d21a8fCcfE26484015d16ba6', '1701509603', 1, 0), - (17198, '567761138269011510', '494275361563256839', '0xAbb682A9e00D788D9DcB63FcA653B11a1D0308bF', '1701545027', 1, 0), - (17253, '484050363657323599', '421399339237953104', '0x3b72c6887000cB2edF481CE1D8e56e0F374dfe2D', '1701600755', 1, 0), - (17272, '19694370231885841', '17143680396941704', '0x45Ba6c4a9Efc591195CCF3A443bedC14c8505a1D', '1701617519', 1, 0), - (17274, '207268323926788276', '180424246115657184', '0x4178e241895796DaE55681046c52ED29d9Ed532D', '1701618323', 1, 0), - (17277, '325078784561598305', '282976643616019781', '0x1902725ae85fDF1baA829e76845F928f439f43eE', '1701620963', 1, 0), - (17345, '20000000000000000000', '17409726937280294755', '0x4484F60501A8CCBf2d6954fEb809d991Ba1A03a6', '1701681815', 1, 0), - (17362, '31936041384453973', '27799887998051330', '0x6c503a865c1921610B0824d2930bD9f58b47F192', '1701688019', 1, 0), - (17379, '100000000000000', '87039699777537', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1701699083', 1, 0), - (17394, '9999999999999999', '8703969977753732', '0x15A9Ae554278dC33A53e0E60477b5ECB3D113d57', '1701712511', 1, 0), - (17403, '432775982631053348', '376686915991355939', '0x6F7d757E5f82535F80747CDBa20030E747838694', '1701720023', 1, 0), - (17471, '6097285852129553116', '5306476280566274494', '0x660802Fc641b154aBA66a62137e71f331B6d787A', '1701790175', 1, 0), - (17561, '326898921646870359', '284500582050938536', '0x67423b15aC2ba3f57e15B9bAB17E5E76292D2307', '1701846491', 1, 0), - (17563, '11633387840730629198', '10124553471263680074', '0xE280946E9dadCCe9ffEb7b68f4F5a1b34d6c48C5', '1701846683', 1, 0), - (17565, '1043834661552744338', '908450744592853331', '0x9Aed3f94d6B7a1D9ABE44eb5d8b6E6bCE703b860', '1701847607', 1, 0), - (17607, '409527036918300593', '356372003411139311', '0xdB460025D7850632A2fb8Ff0fEaABaA1990083aD', '1701878939', 1, 0), - (17609, '200000000000000', '174040769612109', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1701882527', 1, 0), - (17631, '94009348288703883', '81807296634494418', '0x0e04b647B232E57b305A35912B25aa8C848066b3', '1701886751', 1, 0), - (17689, '200000000000000', '174040769612109', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1701935579', 1, 0), - (17698, '114915603077225', '99999999999999', '0x9a9B0b60842051a2ED51407b179f35Ac37f262F3', '1701948575', 1, 0), - (17707, '400000000000000', '348043078071610', '0xFD9E6005187F448957a0972a7d0C0A6dA2911236', '1701953219', 1, 0), - (17776, '202161437178445599', '175902222157416894', '0xD33aEc714381eC13053cdd783CE88423b7DC437E', '1702000931', 1, 0), - (17786, '30424334925095732', '26472447939029812', '0x536E8F50eedA46504D1b65298DdBA9B5D3Af864B', '1702015607', 1, 0), - (17844, '151763104408291504', '132035549770075978', '0xd05BaDeB4Ae088866d41d25A86d80E00cE8CAD1F', '1702072487', 1, 0), - (17999, '53820660753069904', '46819552619305504', '0x987CA1d6B9B5b833897904987E5ca2AE1ecFC5e2', '1702177643', 1, 0), - (18121, '7401692852879081471', '6438265801196780437', '0xfdd5E4eD638F0864873B65160fC2a0aF5f65A224', '1702256279', 1, 0), - (18124, '162019418697353008', '140930474050027592', '0xf8635aeb380390b01BD179b7678b38b299e21643', '1702259411', 1, 0), - (18131, '113250902412986734', '98509817477307051', '0xE755a170f1B5a04C8A2c08BAF5101a24c09742c3', '1702265123', 1, 0), - (18140, '29704689143725137', '25838235664539422', '0xDFbFeb18BDcB16c401d815e777454892c03794e6', '1702275887', 1, 0), - (18160, '13113732626318770', '11406808951985280', '0x14EfB597BE72FD3e4c8e5A2DE0Bf5A1f3C27cE1F', '1702291439', 1, 0), - (18205, '60721559531038458', '52812393765944687', '0xB46d01834d4028d43E6B815659014E2b1fB6EA62', '1702303847', 1, 0), - (18236, '76423780301714250', '66469353052651321', '0x3484d00705Ca6F94F797E26c091388a5b37A0219', '1702331579', 1, 0), - (18252, '100000000000000000000', '86974699223509044590', '0xa536cdfE5A1F564FB70D86599E345a0A89FB75e9', '1702351547', 1, 0), - (18276, '20003928536182132', '17398356677230104', '0xF98887131a40466D5a7F15a805A7d893BCCb7Bdc', '1702377707', 1, 0), - (18355, '31085285039097872', '27030606412635991', '0xC87D3fBb11f91318cB9Fdd4e3df887c53A9A6e8d', '1702476503', 1, 0), - (18357, '100000000000000', '86956276510374', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1702477331', 1, 0), - (18358, '256533931113446057', '223072354481941544', '0xBBd672Bfe7c8d74215c084C30637632c59B5487f', '1702478471', 1, 0), - (18418, '84331771292760096', '73331768231429010', '0x23Bc3D3B6E16385931d59B63ac0F7f866dF23EB5', '1702512371', 1, 0), - (18422, '251145592815264825', '218386856132060669', '0x39915074310b74f4D29e8e1eBD67aDEc02f20834', '1702515695', 1, 0), - (18425, '318800000000000000', '277216609515073594', '0xc765606A7f0854fAfCe77C69AbC0d5A5d0D90afb', '1702524395', 1, 0), - (18464, '900000000000000000', '782528577826198314', '0x2D1b3bcF508999F41510BfC2c5Bbb58c9f979D8F', '1702581911', 1, 0), - (18503, '7548479633083912', '6563223368919085', '0x2282bc8e090439a0195e0c862AE3FFc47bd2edd8', '1702622099', 1, 0), - (18508, '10000000000000000', '8694761975846647', '0x5c0e02b106811251E8FA980086095a78Fc26D2F1', '1702628675', 1, 0), - (18515, '10135636935169296', '8812695062489685', '0x4FfA3a46109A360Dc029aD77c29e5ad53593C0F6', '1702640027', 1, 0), - (18596, '10299662610143390', '8954303391056434', '0xF4964D4c0BDa1f58802e38Bce29CAb0a4265367E', '1702684847', 1, 0), - (18598, '126278738983077505', '109783998126396818', '0x23fFFcBd196CA4E3daF76D9A2986d703AB0c2788', '1702685759', 1, 0), - (18610, '1001685180040127907', '870843380400731627', '0x5eD74622262f203386ad5235DBb4AeB314cF129d', '1702710743', 1, 0), - (18625, '53083917277772370', '46150006896614154', '0x8d2c9c55bDC1f0dc13DD8eE0C8A5019C8bFFB224', '1702724915', 1, 0), - (18663, '500000000000000000', '434643843778247960', '0x0664718D460ed600c8445ea232A3527762F51cB1', '1702755491', 1, 0), - (18675, '20018866196640509', '17402153903580532', '0x871723C0421aFff82E1236175924B8A6c5e0B3E0', '1702767047', 1, 0), - (18676, '2250712610742636721', '1956516760746710415', '0x52A98cC2f1C17acD12054E891213aE17d05e695d', '1702767347', 1, 0), - (18732, '6563968357413285', '5705976874609805', '0xC52C0Deb56F01c2E1C5edDbfaaC6Cc66C62AfCE4', '1702802459', 1, 0), - (18738, '22858542476634974', '19870649530425953', '0x8E9F8209543ca5A034AfC103ea3591fdC56136F6', '1702805303', 1, 0), - (18746, '8218631846940805', '7144355473105345', '0x7956ac7106d61A2903c0A93812be4a8F41EC53ad', '1702813235', 1, 0), - (18750, '5215227335307358238', '4533532910390759618', '0x718367cB41361EE052F85B92A19d5C84b692143f', '1702813883', 1, 0), - (18849, '1001275779288426', '870301378229284', '0x6820587e343da884230b6611D1802b92359E5a72', '1702885451', 1, 0), - (18914, '11253717150500871', '9780677924302638', '0xebB8D4A7A9D6dBA03ae78960B94AcEBb7FCAE22d', '1702957739', 1, 0), - (18967, '206807574717227282', '179719370889972100', '0xA730a0414FCF07Fc6F0EbC900bbF567DD3C2dA5a', '1702996871', 1, 0), - (19006, '230000000000000000', '199873990888450264', '0xB7AdD736B03696005cc30350D4d2EB0AADC06E42', '1703024231', 1, 0), - (19018, '20299579710040303', '17640687000017240', '0x77E37671A6300eCB5Aad2c386365adCb49eC9Cbc', '1703034851', 1, 0), - (19044, '32673884181761289', '28394172301024500', '0xd0bAD50df39f22581409aA7Ab56627A7B47ad57a', '1703049707', 1, 0), - (19107, '99999999999999999', '86901735168891418', '0x8F8Ca6b95758d907a8ff8DEB75323b0DfEacf67a', '1703073059', 1, 0), - (19110, '500000000000000000', '434464135438965814', '0xC2afaf3dea89eA83127620ECC65bd1370959f839', '1703075315', 1, 0), - (19113, '492555207532033276', '427995144792730439', '0x6eAE463041f256A756740aac9e60818549027bEa', '1703078207', 1, 0), - (19122, '1011424227251664150', '878855104909836702', '0xfB1C148315eaADa8BAa7B0feaa1D39C9afd9db13', '1703085695', 1, 0), - (19150, '621752052206901282', '540257935638948204', '0x47760E4d7F7F91b5071dDa3c85E1aBbF91553aCE', '1703095583', 1, 0), - (19189, '480000000000000000', '417085570021407181', '0x4110683BEBf94e537E1D2b60A47F3022C4678286', '1703122187', 1, 0), - (19202, '1009892312071341995', '877523980501067717', '0x1F2015C6BA51Dd3c3d8376C03A22fa0B37dFbD68', '1703130863', 1, 0), - (19251, '100000000000000', '86892827087793', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1703156831', 1, 0), - (19259, '10000000000000000', '8688278843870790', '0x36C12872c10637d7a8d9f4D12BA2D44B3E65e9ec', '1703164727', 1, 0), - (19261, '20343785868137726', '17675248436237857', '0xEf4f3449e223e353d624A7Ab91Ab204FCC4CBc9a', '1703166011', 1, 0), - (19264, '100000000000000', '86882788438707', '0x80D58e7d3196A242E128CF14E28E99E807b216b9', '1703166719', 1, 0), - (19269, '25000000000000000000', '21720697109676977484', '0x0bEB17348b18dAd08d87AA0EDcc1a33dddcec1AE', '1703170031', 1, 0), - (19457, '8273153412323838', '7187231413198985', '0xbC2439F1e1Bfa774200Cd1618945bED55982D3b2', '1703257967', 1, 0), - (19487, '9999999999999998', '8687414647107541', '0x577945E2749FfDD1ec35321D28E249F285928423', '1703274743', 1, 0), - (19495, '19999999999999999', '17374829294215084', '0xfc5d97cB8D77C5c01246d4cdb491c887d13b98B5', '1703279387', 1, 0), - (19580, '21712931699172253', '18862924087503469', '0x44416AD9a3dc3602B3d8f7daAab2E069fE57C938', '1703324963', 1, 0), - (19610, '27284708687915956', '23701005110252029', '0x108328107a84cdc36E7B31B08985E805b3f273C8', '1703341859', 1, 0), - (19639, '1999999999999999999', '1737310475354197029', '0xB8D8D919244f8015ca3C61CD7211386a477fCE53', '1703352431', 1, 0), - (19643, '48631718122060264', '42244196663963917', '0x13EE0729564f09f8dd585cE40125dda3A6bBc9eC', '1703353895', 1, 0), - (19645, '19999999999999999', '17373104753541969', '0xaADd767eEF3E0064a7fb52924f62bBA488EDBEfE', '1703354879', 1, 0), - (19650, '299999999999999999', '260596571303129553', '0x25783273222f1018A1aA908844C83068D92068C6', '1703358527', 1, 0), - (19708, '49999999999999999', '43432761883854924', '0xCe5bad47F9c47184A70299933bC017bAd27E2BC7', '1703372363', 1, 0), - (19724, '7845520519304168087', '6815052491396715500', '0xC564f537c76d0B7e7Aee683f9bdA538E5b6D7359', '1703379971', 1, 0), - (19741, '14781499999999999', '12840027395724030', '0xe8aB76eBd663E65EE9C805869313d3E97b976568', '1703388575', 1, 0), - (19762, '509999999999999999', '443014171215320241', '0xbc3725E296A5b3949210f817eAaAEaC54d127d3b', '1703399699', 1, 0), - (19773, '80042585592623624', '69529411212249975', '0x61241cffEDc0F8F4dF8d39F224229438dEd9B223', '1703405327', 1, 0), - (19786, '8080601529676468', '7019256842335038', '0xAF4Db207b04E2081c3a11e9B2C23908e195d4D41', '1703410955', 1, 0), - (19847, '109816754509766860', '95383861303105779', '0xf7125120bc41758fB157cbD18c2F012005eD48D2', '1703428763', 1, 0), - (19888, '13999999999999999', '12160021157106000', '0x838161F6ba9FA16181b9Fc08D79f4B1DB1571E56', '1703445431', 1, 0), - (19893, '28532091964355957', '24782202995933040', '0x4C3aA46fB45D8998468aCE61868A948f2B47A3F4', '1703447663', 1, 1), - (19894, '40159145159493414', '34881146770766498', '0x98F518cF66bcd1fbC1cfF409c2e416fBb9Ce9120', '1703447699', 1, 0), - (19926, '55160271506545327', '47910719182235893', '0x85716756c128462e74b9581656D0aaC834cf0A93', '1703462807', 1, 0), - (19938, '338472229590722802', '293987819494002089', '0xE0F201BD5d7808C0eE5782CB3DfcbdD7a8C03dd1', '1703466779', 1, 0), - (19960, '108585722760328636', '94314620437517349', '0x2746049fAca559dbb8619993eb7901D7B0a6dF05', '1703476619', 1, 0), - (19968, '542928613801643186', '471573102187586752', '0x047Aa912135E7DAcd4F761CE2de485eca88C096E', '1703479235', 1, 0), - (19970, '2012707322492551', '1748183116040827', '0x3c34BBFDD6B2e3600fd1976d8566747958380940', '1703480939', 1, 0), - (19973, '1000000000000000', '868572939793285', '0x48ACD164f250c5ae89A6c5b4E1A97bB6a3DbB39b', '1703481383', 1, 0), - (19983, '31307369420670728', '27192733894906393', '0x8dBac40930b3b361d0D7Fa12E066cc21e4a5BD05', '1703486219', 1, 0), - (19988, '574324008469984773', '498842292430638656', '0xe6b3F97B2bf955B9FACd8C3c5981879E885E7692', '1703487407', 1, 0), - (19997, '100103993314780672', '86947619758466478', '0xE95A9657D9F2c24cF629A4DA6A536604a72Cd1E8', '1703490407', 1, 0), - (20010, '129999999999999998', '112914482173127154', '0xeb2169198B91E4bA6A13FDd9332e07CA415F5e93', '1703496479', 1, 0), - (20020, '50405841855313548', '43781150243025140', '0x27d0682eebcE6a3e01035599502A07d72Beb80b2', '1703500187', 1, 0), - (20021, '1e+21', '868572939793285814766', '0x027750420d3F4DD56F558871792b1632A21c6205', '1703501111', 1, 0), - (20023, '2000189501376435435', '1737310475354197029', '0x134dAd7291194BA74048A061ba0C8A5a196cBEB5', '1703501447', 1, 0), - (20055, '10038149657850987', '8717997400123727', '0x194a911a2158af53496C25C4625b9B5e27c0F7fF', '1703515127', 1, 0), - (20076, '100000000000000000', '86848649375388136', '0x647931092D3436D8ecCbe15a539d394Dc26da99b', '1703523851', 1, 0), - (20094, '212412494662954721', '184477382719344583', '0xb1caAd22A44DfC141a352288Ac616BAee6505D7C', '1703533979', 1, 0), - (20145, '120862304831745537', '104967279350335475', '0xcAE6D24788868281401757FDe7270bbd626b1403', '1703553191', 1, 0), - (20146, '40328687258026321', '35024920194420111', '0x1b4978e22fC54C9681403C5580AaD116CBcBF4A7', '1703553611', 1, 0), - (20147, '28230081080618425', '24517444136094078', '0x76839E6ce544fcA9B73419891278899CaD4b690D', '1703553767', 1, 0), - (20163, '4236197946754051', '3679080701623817', '0x9087b18cF18821151de3D3212D3d53191C263A39', '1703559827', 1, 0), - (20182, '500049768211725897', '434286469896642906', '0x3b30aB0D7D0f0c852ea37f2985F1E642a0D569bC', '1703571803', 1, 0), - (20240, '80424937856509930', '69841639108138675', '0xfDE50a5979dcDa473f9B1a16dD6Ec4f81118a6c3', '1703596859', 1, 0), - (20272, '54055168373917083', '46941926995784424', '0x92327ba712bb18b17Bd62c0FE9fD9d5f5fA8b9fe', '1703617595', 1, 0), - (20295, '105537487699825121', '91649571945726760', '0xDe96619936ce1714E3594367aE298A98DAF9628C', '1703627663', 1, 0), - (20311, '516319170750928342', '448375567943082644', '0xDA439C7fb2B7560ddA9F0890Dc9624CF8a507D51', '1703635283', 1, 0), - (20323, '14432413311988575', '12533219531904333', '0xc4f7A9D172f2CF477D4F394b084ed5b2F06F572B', '1703639303', 1, 0), - (20329, '26297423008907608', '22836885874118470', '0x2ba9dc74F0CB1a184B35615c8Cb6de5e45969644', '1703642615', 1, 0), - (20331, '61383780230001542', '53306150308328103', '0xf7f1aE6e7634237C02a2d32b7dE3F653177578a2', '1703646995', 1, 0), - (20337, '27477822139442743', '23861953623943563', '0xEdCf68A92f75f01Dcf71D2138e9162d277a4bF32', '1703648291', 1, 0), - (20339, '435264524682412692', '377987085345119936', '0x44A5a609CBD6E0A1bdA3C980f30fF7151A7E322c', '1703648723', 1, 0), - (20342, '15123230217078586', '13133130284228184', '0x1016e40ff16Da6541Fd91fDEB55bCDB25D318cC9', '1703650103', 1, 0), - (20343, '90756155713393930', '78813348733769987', '0xC3262ed7Ead9b77195336568E1cBE801B21E9Bc3', '1703650991', 1, 0), - (20347, '50373978606808731', '43745153282863939', '0xB703059D96aC9566e56247520b915c9F89d5dF2E', '1703652839', 1, 0), - (20354, '100000000000000000', '86840774726797506', '0xbf811D0571f2d402262D2d73faCc50Ee561533A2', '1703657879', 1, 0), - (20385, '1079092681836249119', '937092444926774854', '0x649f6EA344f2372eF545Fff22e8A71Aa0C258608', '1703676431', 1, 0), - (20416, '1099063781125993867', '954344210712714796', '0xCf05C477bAFBCeD1eb9f00F31c8194be4Ced0Bad', '1703697227', 1, 0), - (20455, '2595705341311849275', '2253915020890907963', '0xae8cF6044696a2264FEE8Ab96e7bd1b7C01BF6e0', '1703718563', 1, 0), - (20477, '350000000000000000', '303913639486186401', '0x391E34377D10AbF089e7E0552034d07841190F8a', '1703733587', 1, 0), - (20479, '370717261625335842', '321902949145453033', '0x1aA60eCC20f97Ac211673EC1a2cAFa52c9BD24B0', '1703734211', 1, 0), - (20510, '1099999999999999999', '955157152670871547', '0x0210798166BC4934Ffba40837cad2fF589056FFE', '1703752931', 1, 0), - (20527, '600000000000000000', '520994810547748117', '0x5dF898515c72Ae74aD4Ee838BD88003488d01dE0', '1703763791', 1, 0), - (20545, '10285460000000000', '8930166753977985', '0xF9a3a7480DA0Ff0f659600Cc5D50CfAd22237343', '1703773091', 1, 0), - (20550, '61396196941794303', '53306150308328103', '0x3C95981A365206c7D08BcfDc20b26EF45A9bf4b3', '1703775851', 1, 0), - (20562, '999999999999999999', '868232121264190988', '0x9487d388acbFA6f3f55fdbCC59e324CcFBB41502', '1703781899', 1, 0), - (20574, '6149809457997852', '5339462111088059', '0x1fd5E9aC034F290C7063e9FDc5771B8eCAD25826', '1703788175', 1, 0), - (20579, '10000000000000000', '8682321212641909', '0xbE08fAe8eE85bEFCa858302E269bD4fBca4394ec', '1703791811', 1, 0), - (20655, '19999999999999999', '17364642425283818', '0x6Dc5351381B082fE5e1CA6E5c3666A7F6A4d9C03', '1703839343', 1, 0), - (20667, '12828820251008608', '11138393819850214', '0xC48e1D16E4b8d22b284eF160cda321919A74bD64', '1703846279', 1, 0), - (20688, '79999999999999999', '69458569701135278', '0xEccf4BF69Adca2dA5ffd69FA7E0F6aD3ddE2e608', '1703851871', 1, 0), - (20731, '37397360763954855', '32466307979677597', '0x5395e0a2fCD95B58Af62404674f7d2268007f4BD', '1703864639', 1, 0), - (20747, '78886872595863594', '68485193846070948', '0x83544B5e6929Ac8Af80D9B71475325b76bB2Cf2c', '1703877203', 1, 0), - (20752, '1500455079545341098', '1302611620901962599', '0xdc5e27Ae9330C9423dE947Fc565d7c9682Dd8350', '1703879183', 1, 0), - (20812, '15240016648211476', '13230534562031024', '0x5C053F74B70fFab7d0804f7466FD58a0356Cd71A', '1703914991', 1, 0), - (20853, '51279398108713466', '44517920462843014', '0xFC87160a815D3250b85038FEBc294838E581033d', '1703932475', 1, 0), - (20888, '29380413426632293', '25504146132934068', '0xde9E3d079790fbF70c56cC659BCF6e889CD91F94', '1703945675', 1, 0), - (20921, '103152300886878571', '89543033910564352', '0xC7c08a2005a0d9f8D63E92175A77af06830c9F4D', '1703961959', 1, 0), - (20926, '6578008383016542', '5710147254498635', '0x87cc018897bEc1e4bFDd54d879f230534aD25D77', '1703967587', 1, 0), - (20963, '3380138081325004', '2934183883793283', '0x63aFe42dB2e873472FeB4f8dB51bECDB6d13d7C5', '1703987315', 1, 0), - (20965, '10193967357344097', '8849039303183983', '0xC154aBDc7AF510eDc8FC5E937570715215FDdbbe', '1703987975', 1, 0), - (20987, '3226976739508253', '2801229687850288', '0xc7Ec579C46B91d550C15D9964C1087Cdd0b50225', '1704003455', 1, 0), - (20991, '300000000000000000', '260419883436515635', '0x40a01Cf27cF6C82944e2B59D7341f6EC75094EEb', '1704006575', 1, 0), - (20995, '4999999999999998', '4340331390608592', '0xC8bf782581FD15631b631710cCe8f0352E652d3b', '1704008495', 1, 0), - (21043, '34789931222051168', '30197293862616779', '0x95e1C64c5Ec46fEf835Dc2A2E4C4f0133dCA7269', '1704031331', 1, 0), - (21091, '865329968705125495', '751097298420500566', '0x1AAFBD54654F566bE2b727980E93a405b67D668A', '1704059231', 1, 0), - (21099, '24999999999999999', '21699736678033870', '0xb012ba1C00692586Af39bE70F479FA77416A7F58', '1704065087', 1, 0), - (21101, '3008916245574678167', '2611707608609152659', '0xA91931cE72ee30F5daC9163f984E42076548Ba20', '1704067487', 1, 0), - (21105, '20490586709949817', '17785613439373257', '0x489A6f8AE2F81E39BACBA70C1Cad9d8990cE3f7D', '1704068999', 1, 0), - (21116, '3633476471132183', '3153819305976004', '0x8c9db5968E3C91b6a22741a13Be4141E25829989', '1704074555', 1, 0), - (21120, '100998913336537', '87665992966816', '0x0571cB8cEca71D4faab0526C1CCe7d7218a6220a', '1704076499', 1, 0), - (21122, '3783328778705817', '3283889530573748', '0xfB2C5084eB3dCe37979acFeC586e10ED24B7474a', '1704077963', 1, 0), - (21129, '3388927740116909', '2941553583256853', '0x636d9ad3E8f791578B80e074a11127955F80dbAd', '1704080303', 1, 0), - (21136, '134317549766176953', '116586218446589997', '0x713f17dDeE976AC2db6c4811A8cA1Dc1E9CDBfA2', '1704083795', 1, 0), - (21161, '3893586640342123', '3379592193141385', '0x3eb53F11f50b9D37Ba1d38252fE676065a1b45Ac', '1704098279', 1, 0), - (21178, '1331048647579374875', '1155336206325021677', '0x19B85Be383c09b13bBdA0484D0eFfcDCc43FDD5C', '1704106151', 1, 0), - (21206, '25999999999999999', '22565774818471281', '0xc6AD14610DC554e49e29806E714d44a77272E401', '1704116627', 1, 0), - (21207, '20639334991027787', '17913176377328001', '0xEC3E421565F9c6bA5d6CCc7E2ABf0A3492eF37E9', '1704117047', 1, 0), - (21213, '499999999999999999', '433957208047524656', '0x7F9964F377B5b50B11e6595C070686B65340618b', '1704118163', 1, 0), - (21229, '1001373422037136', '869106428880462', '0x8D4834652113CE1a1041f61f8dEC33B231818EE6', '1704121859', 1, 0), - (21243, '5030341728993423', '4365906104477887', '0x20196cc4F6968D392390ce89884625a80a0149D6', '1704130895', 1, 0), - (21247, '49999999999999999', '43395720804752464', '0x505fFF13C19522558576ABED01b4Bdc96885A531', '1704133007', 1, 0), - (21249, '200000000000000000', '173582883219009862', '0xb14f16860825Db7829eb1E63715a9Ab31Ca92DB4', '1704133343', 1, 0), - (21251, '26000000000000001', '22565774818471283', '0xB936f0D8832Ea954f465DB481E7DA59dFcc92f8b', '1704133847', 1, 0), - (21260, '6084160593816825080', '5280530689211038241', '0x5EB6ae3A8ad468e582dFdE3EaCd30319B31ED0a9', '1704137843', 1, 0), - (21283, '3752351589294427', '3256720038605802', '0x986C48909D59AC27BCCdAD761F9365c86304Cb74', '1704149807', 1, 0), - (21302, '200170713049192645', '173731047535419702', '0x3150928b200862294d5024232ec0B9525a07d13A', '1704163559', 1, 0), - (21343, '2069949208244510905', '1796538758419944319', '0xB69F3bCaB99e4b3816b1a0b7B61DC2A106f947f9', '1704187343', 1, 0), - (21378, '1400000000000000000', '1214970744861133056', '0xc62EcAA7d6C01bA35cc5ecCa0b2467Ee95e1fDb1', '1704201143', 1, 0), - (21396, '657658613417478373', '570739982434409752', '0xcDCc439B4B3236B355Aa1012933337ab279ba139', '1704205703', 1, 0), - (21411, '471335058310661480', '409041647767764257', '0x7fd90cD662e3A3684E0484E68026B899cC3C4bEa', '1704216227', 1, 0), - (21442, '31025148385634472', '26924748316801067', '0x62B85c1b03D97E9493f831fc79Af4c1891247661', '1704232619', 1, 0), - (21444, '22046427620448345', '19132688991102273', '0x495AB77c8c1d6dFF0D98fC7A2D67d3EF0B343d18', '1704233003', 1, 0), - (21451, '19001202318998089', '16489932096264426', '0xF0F7B119FAb1C774631cBB0731ff5636b0B6A56E', '1704237503', 1, 0), - (21452, '13312314877042554', '11552909372847381', '0x01ba078aa8f989ffa2B0E48b378d5e391F67a77b', '1704239267', 1, 0), - (21497, '27068741304328845', '23491234846409810', '0x13Ed7f006456b6EC74AFF7E59bAFaE72ddeFCCD2', '1704257087', 1, 0), - (21565, '749707488424123390', '650563330177147868', '0x79e6df88388FA3122Aae244B324F0099Af959607', '1704308135', 1, 0), - (21573, '87505273318499914', '75933244494871261', '0xeA39B982a7745236C3b027c7DC6cCb8e6Cee861B', '1704311807', 1, 0), - (21640, '60538340627679996', '52532521136912741', '0x4667762D8b8F97A49F8987d55411da7c17320507', '1704354911', 1, 0), - (21642, '34301939156711090', '29765720782956266', '0xE30dcDd509fd2df72032f916658C2f17D067a710', '1704355355', 1, 0), - (21681, '118302179104108446', '102642615910932790', '0x0fAf86674968dD552952CEfa9ADB1B7318455913', '1704387059', 1, 0), - (21693, '1630453216449854719', '1414631450782764715', '0x1277E47993c91F0753BF437eFFF48ED75E4515Ef', '1704394823', 1, 0), - (21716, '15480610964365335', '13431455086584652', '0x4B94ff66Dc2b1570b9e5A280f61a70b2E5dE8b6F', '1704409811', 1, 0), - (21780, '6049075119319764', '5248363967516772', '0xd807eF8803342a0e048E24e177fe0a48AF87De5E', '1704451859', 1, 0), - (21790, '8058155440074382', '6990835305305858', '0x5f9436b790045495025409895188D1eCAC973E51', '1704458483', 1, 0), - (21791, '7009631063965696', '6081190252975279', '0x73bb646119e551644C8A337Ac2895b018e21FbEa', '1704458795', 1, 0), - (21811, '864082652142440', '749633034038858', '0x74161c164cA28893E7bfd05db5F05135A6eDf3b7', '1704470375', 1, 0), - (21829, '1018034628715230', '883193737992807', '0xc2d7c240749Cc32Dbd79F7d311831C2b1fa3d128', '1704481247', 1, 0), - (21846, '5247979994676034427', '4552873681967770537', '0xB61CfC060038D1b733789E8718eB1DC4e4012e9c', '1704485687', 1, 0), - (21857, '500000000000000000', '433773917448862737', '0x1bF825D6CAb03Ca1E7D5795E854CAfEb138306D7', '1704490535', 1, 0), - (21926, '80729830979061533', '70036990077544158', '0xD3f4D250c3dE6316c485D85482B1Ffe194C1B445', '1704539087', 1, 0), - (21927, '30320795212060348', '26304740238600275', '0xe22e76FC968a69Eb69bB74a18adeA1dAdE938208', '1704539435', 1, 0), - (21950, '104242452624423243', '90427230167760217', '0x971A85c2F62186212737188D02d012AacF545dFf', '1704555107', 1, 0), - (22005, '3223854549460153555', '2796598027309962098', '0x9d16536f8F4A6350D03eB205d131098B68E044Eb', '1704593387', 1, 0), - (22007, '14103914924396928', '12234727109981080', '0x30977a0F5A1f55a770486147d4189c0A57ca1f65', '1704596003', 1, 0), - (22009, '455127489414042311', '394809573305031062', '0x544A99D29FCAC4feCA7168B1423A456f96A0d540', '1704598919', 1, 0), - (22015, '72863382577146146', '63206819306565784', '0x48CB61d81B6bB63D204B2BeC9fd0d6C9812E9fEe', '1704610163', 1, 0), - (22046, '349003569356093653', '302724245581415771', '0x29FF7271bfc84913404433e40cb779015A0F12aa', '1704644387', 1, 0), - (22057, '50932466110342740', '44178609425976412', '0x93a967e0231A79637262a82FD6DF9772675c5036', '1704657107', 1, 0), - (22065, '39803518962521198369', '34525406922473415979', '0x1e3567db9024c6AF8D84e213c374326a9270b610', '1704670835', 1, 0), - (22095, '20322951776046509', '17628043907235626', '0x2b3A68F08058c8aDA93C6ACC18D06d1836D7C8c5', '1704696635', 1, 0), - (22105, '1000000000000000', '867395843944912', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1704703307', 1, 0), - (22144, '1551648769015425974', '1345769197893490693', '0x97D62EBe9F97982334f857FAC5d0a1e76F0D2c17', '1704718775', 1, 0), - (22159, '283381064903242645', '245780821039177244', '0x0Fb7524fAD915552441adafdC25137eD27223Fe1', '1704725807', 1, 0), - (22169, '10002677518463989', '8675478348977252', '0xC0F062C16aa3f81E1dee61b85C8f91CaEE8ae621', '1704731927', 1, 0), - (22177, '5022995569618374267', '4356522464189621850', '0x1b060c5CD4aaE59f95d8debF589d480B1e595fB4', '1704736823', 1, 0), - (22178, '10000000000000000', '8673156095418598', '0x19d1FbC012e92A7B987C0e426DC94eb6b1dc5C20', '1704738287', 1, 0), - (22216, '18611158975396569', '16141748691026531', '0x90eC51E1bAD36A4EfE67E42a6AFc148b2E2C5f4A', '1704758411', 1, 0), - (22224, '130960992275677979', '113584512841786447', '0x53E800b3901E913Aa255A681b6b36EB1F7365cA7', '1704761303', 1, 0), - (22293, '20000000000000', '17346312190837', '0x6ACc853be577d3aA5089584F5DbB7846CE0386FA', '1704793079', 1, 0), - (22351, '51342419242394259', '44525780377073148', '0xFc7BD9959B45259dcBd8F3C67249d34F52D5AF30', '1704827447', 1, 0), - (22413, '10602575147935609', '9194890685606497', '0x9e1708F833162D2b88D9f71a80b9D71625C92559', '1704885983', 1, 0), - (22435, '85570398968969611', '74201150020742999', '0x44a1f574326b5e688567c31F70f01Aa716D1ea81', '1704908027', 1, 0), - (22452, '595473165208577158', '516356055333936722', '0xE067C2A843B512d0d4D687b94D8e97B35AEa1a33', '1704926219', 1, 0), - (22453, '5648406695823605186', '4897935240046753001', '0x7683549950A421dA6689662BF5324FEe2BB7521D', '1704927515', 1, 0), - (22479, '100000000000000', '86713572584429', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1704942395', 1, 0), - (22480, '100000000000000', '86713572584429', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1704942551', 1, 0), - (22520, '51207017287158509', '44403434103621329', '0xE1b84A8CfD690A0b34AF8EE610b7FFbE123D8608', '1704967811', 1, 0), - (22524, '123612046611267143', '107188421761359415', '0x18279b53E9039866f0c5272DDd68B68A5f0e3359', '1704968999', 1, 0), - (22542, '9999999999999999999', '8670417871116313424', '0x8203D1DF374b20535D11087A4Ad965b442b8712C', '1704977663', 1, 0), - (22605, '500000000000000000', '433520893555815671', '0x54D8b82afCd2AF03Bb599CAcb1fEEF7534e20f1C', '1705019687', 1, 0), - (22650, '1000000000000000', '867041787111631', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1705042775', 1, 0), - (22661, '10000000000000000', '8670417871116313', '0x13cbC670dE37bFD3B2D0e5780dAE9c7c3d324153', '1705050275', 1, 0), - (22791, '10156943792905846', '8805687630568458', '0xcFBb967a58278104577C24CC6714750DCe047471', '1705121063', 1, 0), - (22806, '10258955172833062965', '8894127653937468820', '0xDd3DF607047dF35a063aCA7D49a1880591Bd9f7a', '1705135511', 1, 0), - (22834, '41333940645355493', '35831533049426154', '0xc52F219aBcD8f3F7fe742B60578570770432bd4f', '1705154891', 1, 0), - (22854, '101167846737650316', '87700301188842054', '0x50aFDB2a93a30213daF9FF66eD73CeD98F03Ace3', '1705167983', 1, 0), - (22864, '117541263879761020', '101894075803590854', '0x8B4b1d405dbAF050C29bd51Cf2efE27F7d9cf752', '1705177475', 1, 0), - (22865, '148141328097265004', '128420634733250019', '0xAb42eDfcA60ba398264Dc4854f6B39308031F4C6', '1705179467', 1, 0), - (22867, '6948453031277365', '6023469346143174', '0xB488b3961e34864aF78823D01e4e4Ab90E346f1F', '1705181183', 1, 0), - (22877, '10506586225635486', '9107940973027100', '0x56b4a234Cacf114c8706c7938d6b634Ad3B4f4Db', '1705196195', 1, 0), - (22883, '16136550196125882', '13988439588113117', '0x80c88537C2cEEDbDa677D1bc4DE68EF268d1C22E', '1705204907', 1, 0), - (22946, '2044200847155031104', '1771910708628221317', '0xa30ba9855A9d6098686C652AE03A1fA474DDf2d9', '1705264643', 1, 0), - (22948, '800000000000000000', '693438988089350127', '0x5f92820f8D22a478d66EAd555511df395FaB7400', '1705265771', 1, 0), - (22952, '119828461093758538', '103867158506449977', '0xcB12261e495c91632e4F171434c5775980Dd6bCc', '1705273607', 1, 0), - (23009, '511', '442', '0x40DCb46bBF3Ddb8256F2b49425759fD9FAe36923', '1705320779', 1, 0), - (23012, '5000000000000000000', '4333591660314108106', '0xC16Ea2E249F068E42bb06A8DDD64ACdcD782b4D9', '1705327391', 1, 0), - (23028, '9043311489538282', '7838003850537170', '0x10C587453be8D38B9CC5c1822AA0285E766Cd39d', '1705335947', 1, 0), - (23031, '60474881499347394', '52414688424811162', '0x10Ff647D7c432E9f5ace77a4045d98b937e63E4b', '1705338023', 1, 0), - (23033, '103300864328569281', '89532752831505394', '0x38e4E409c6029d1e2ac419C0Fb2aacaD0958278C', '1705339367', 1, 0), - (23150, '99999999999999998', '86663150084793939', '0x03a3E29A7714F7c6E7A5605262C8a46dD4608408', '1705469663', 1, 0), - (23243, '1000098448690467', '866631500847938', '0x2b889DE84038bc834eA5DeA4aeCABa798E7891D7', '1705557647', 1, 0), - (23254, '1000000000000000', '866546190510253', '0x6329584367709fE6B219c6F0069b64Ffe01df3C1', '1705569515', 1, 0), - (23257, '29999999999999999', '25996385715307609', '0x2CFB2E731Ffcea5641c0017D550acfa1ce007781', '1705573679', 1, 0), - (23276, '4096356595661808', '3549343673485578', '0x4782bF0E6731b3487DD93838261fEC3a671c2cC3', '1705594223', 1, 0), - (23290, '950633985161554540', '823689696499291898', '0xe572266C4364ab89a999FBF83677a99b9d8C2096', '1705609055', 1, 0), - (23312, '51692210674103681', '44789416311782693', '0x7dfCa7e46919a9D138DF0d3Ee6C8aCc503618096', '1705632695', 1, 0), - (23345, '50157475265787738', '43459624023252590', '0x8d482F2884778B416D9FE41D5157311725AD8e4e', '1705665587', 1, 0), - (23429, '12999999999999999', '11262618466503263', '0x5582c94E6741Bf040eC06e36a57B6c593CeDfCF2', '1705732043', 1, 0), - (23457, '999999999999999999', '866355266654097262', '0x1DBe623157F7CDf98771020e688f7bc25A2e9A21', '1705752431', 1, 0), - (23487, '3831673623035209015', '3319283291194240761', '0xB7967F655e8c1Bb1f3a0A2f80a437A6871b8D5DF', '1705766291', 1, 0), - (23503, '5432937270832988', '4706418051049299', '0x7F429edeff8afC7Bb3A2CF7DB832Fc86f6FA99DA', '1705775303', 1, 0), - (23547, '5147688445569159', '4459314108312913', '0xb62cfE1F3E9EF4B43022656173Bf50489D74729a', '1705788251', 1, 0), - (23560, '219999999999999999', '190580512826737386', '0xa6F95ffA23cA53d33390F3Ad6d1dA06F8A456CCf', '1705795619', 1, 0), - (23578, '40439210205075467', '35031479178143247', '0x96b3Fa3BcE283Aa760e13849Dd51F96bCf9c169C', '1705807319', 1, 0), - (23579, '40435372872666177', '35028154992786660', '0x2e7312c86dbC5586548D2bdfc0Fc30F9B0096482', '1705807487', 1, 0), - (23594, '3496383245663631', '3028829599988124', '0xA4951f8DE68cFdD7e6cC8f28082e8E64e363f565', '1705814663', 1, 0), - (23619, '26448347056281059', '22911543388207156', '0x9D5db9890C81cB3fFc8B556cf97775EB1Aabe334', '1705826879', 1, 0), - (23629, '32662127184720457', '28294386131255204', '0xCC78E68d225254b598d6449051CA502B664Cc9E6', '1705831403', 1, 0), - (23753, '26999999999999999', '23387386633780321', '0xD182cC118Cc9f5B25EF6abB9FA6BFe929BF605a3', '1705883915', 1, 0), - (23762, '121366162873393352', '105127310199200196', '0x8E230b60bC8ecbDe04e75429BEeE0Cb3A0855DE8', '1705888907', 1, 0), - (23770, '99999999999989', '86619950495473', '0x614966d9cD3C9aD9C81e6B9Fc113841A5c778D6E', '1705891187', 1, 0), - (23804, '4014261928849236', '3477151695528216', '0xC9b7f28d31420aB5093c0e43B6c734a69b839Add', '1705905851', 1, 0), - (23820, '867025722249485714', '751017251395605651', '0xd6CBceA51A243CfF15d52D50BeCb359fad3f03FD', '1705921295', 1, 0), - (23850, '517748758589120967', '448434413895101478', '0xB38d083F0ce71d93e647c83dB0CeE09C5057F92f', '1705931579', 1, 0), - (23860, '200000000000000', '173224718149821', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1705933511', 1, 0), - (23865, '403924195503326', '349848274599784', '0x4e4f303181150fa69d8ca2277CB4Aeb79672025c', '1705936931', 1, 0), - (23903, '2157883980102676653', '1868994221266502666', '0x1B8e1ba31949c0d315683b32f4D0E090855eEEEF', '1705954847', 1, 0), - (23948, '92232569777458097', '79884804519669477', '0x51A2726deb8b7549262a34aeAa37Faef9F6D94B3', '1705975535', 1, 0), - (24059, '34299980494358144', '29704924740843094', '0x0E38a8Ac3759b50E3F78199b6c6D6A7b0eC5dcA7', '1706029895', 1, 0), - (24065, '1000000000000000000', '866033283771958105', '0xaBC840E1210539204ED5730A45B348D2a3C61167', '1706031371', 1, 0), - (24066, '10858903104651265740', '9404171513882646507', '0xaBC840E1210539204ED5730A45B348D2a3C61167', '1706031611', 1, 0), - (24122, '100000000000000000', '86603328377195810', '0x6F635b9DD7099a8011D3d4D9890A2A35B089A34C', '1706063351', 1, 0), - (24123, '444999999999999998', '385384811278521355', '0x6713AAA85838C9CC14C41158e01741F723671496', '1706064455', 1, 0), - (24127, '41759325648585470', '36164965919547028', '0x48c1fC89e3F22DD8b415Fd5AdcC47c766E05e1E3', '1706066903', 1, 0), - (24130, '10243254222470999', '8870999090797534', '0x7CdbAf85d93BAb18B23196a24EE40020dCAA4ff2', '1706070275', 1, 0), - (24139, '999999999999999998', '866033283771958103', '0x8071Ca212e783458C72ce9cDb1C18F60e1bbC0F7', '1706075171', 1, 0), - (24144, '2438263577506438', '2111617412729462', '0x36641Da18D2f6de49f501D679c9cc6D833D06824', '1706075723', 1, 0), - (24154, '4820250667671650', '4174497514327652', '0x3A0166a469a3172356A65Af92E1aaBa2aDEc7527', '1706082575', 1, 0), - (24160, '1029252995915101399', '891367351884481046', '0x5c57ec53cE28d8bE82421480ae455261A6Ee31cE', '1706089187', 1, 0), - (24175, '41368332402441149', '35826352754656004', '0x0cf425c5813847469f0aD138C986eC4978E78071', '1706098235', 1, 0), - (24226, '5000000000000000', '4329778785454435', '0x3d3be777790ba9F279A188C3F249f0B6F94880Cd', '1706126651', 1, 0), - (24237, '3692230000000000', '3197307825003686', '0xaa756086865C72d295c887506bB24897675Af683', '1706132999', 1, 0), - (24238, '40077373770230131', '34705232545414093', '0xE2C6a4a3A83399775BA104f16F94D2eAe905d409', '1706133107', 1, 0), - (24239, '1002132185963506438', '867802135801173873', '0x03F6268F5A87885567CBA566D4706596C901A627', '1706133839', 1, 0), - (24244, '15397547798642674', '13333595161316738', '0x93E77274fA26e4cd16e4cc52928b93eAD927c0AC', '1706140451', 1, 0), - (24262, '999999999999999', '865955757090886', '0x71aCf149b92f21c0570888a7331D362e5D808423', '1706154983', 1, 0), - (24263, '500000000000000', '432977878545443', '0x71aCf149b92f21c0570888a7331D362e5D808423', '1706156075', 1, 0), - (24269, '108308663262591575', '93790510495059436', '0xDCa31671Fa3A9FfE7C7341D7895f87960Cb8EcC0', '1706160179', 1, 0), - (24277, '104717693187922735', '90680889285358861', '0x6D07cbd4299F478028CAEBb842A28D62F5d45F9f', '1706173211', 1, 0), - (24331, '3030007625254832485', '2623609342735110435', '0xfCF69D6F3BaC13bCEF64a2305c995cE804B08f6d', '1706235527', 1, 0), - (24339, '99999999999989', '86587549181965', '0x4DF9a3B1819Bdc019561237cA5591C882f1254D2', '1706247227', 1, 0), - (24341, '239994380161219360', '207805251956071042', '0xa7Ef0D608f1a7E838a47286930F5630e59300e00', '1706249939', 1, 0), - (24342, '10000000000000', '8658754918197', '0xa57eEB0Df6B344554c64cb13e6b398ed7f3cDE4c', '1706250323', 1, 0), - (24350, '100000000000000', '86587549181974', '0x595b133E448C0bCFf778Fd1cC1e43C1ea2F9f0Ba', '1706258555', 1, 0), - (24366, '509073239296111838', '440750467701303472', '0x38dAA36e20C36c4D41FBfd282599e84f6A3c4f95', '1706272115', 1, 0), - (24411, '999999999999999', '865789897561149', '0xe6E6D0E792d4eAaF9B73C072847193eC78402598', '1706304119', 1, 0), - (24430, '66335249789642767', '57432389120068108', '0x2939a58162423751B8eEe1a303Ec3c2Ce503b8d2', '1706320163', 1, 0), - (24508, '8967421599702443', '7763145344245655', '0x5dB72eB97ABF070AD813762028F70967E38CdBaA', '1706393723', 1, 0), - (24536, '100000000000000', '86570540460629', '0x7F429edeff8afC7Bb3A2CF7DB832Fc86f6FA99DA', '1706412479', 1, 0), - (24550, '25846629376578211210', '22375566742159656907', '0x8113618C67dE8463E2B1BfD9D8DA506ff97496d5', '1706425883', 1, 0), - (24587, '63955092334204391', '55361269971303888', '0x90C77f6833D8C48db11c53D2c8fCe83f41643A85', '1706451983', 1, 0), - (24620, '500000000000000000', '432813619297173903', '0x29430f3D57EE8CE302a13A81C6A6c6C041875610', '1706470643', 1, 0), - (24622, '562664597544974759', '487057801827656550', '0x29430f3D57EE8CE302a13A81C6A6c6C041875610', '1706471279', 1, 0), - (24624, '78338624336143313', '67812047059375709', '0x5A272A9e198d7D5F828E029555b4e4c49fFB0A0B', '1706472395', 1, 0), - (24653, '9999999999989', '8656272385933', '0x4771893EbF50E65fdf9aFA45e103F3dee9b182a5', '1706500811', 1, 0), - (24677, '200000000000000', '173125447718869', '0x418629CFB2f5616cA47e3FEBFcf28C43321a1A4E', '1706525747', 1, 0), - (24682, '14145453221730936', '12244689610992470', '0xf6e094CB64eF1FfEEBc1584584C72924e9f9EDdc', '1706530439', 1, 0), - (24684, '192786675616538202942', '166866798542340622687', '0x04B029318112f685c78dBAba0572F11Fc5da0d01', '1706532323', 1, 0), - (24686, '99999999999999999', '86555151183916132', '0x9915582Ec9fC8dd6FFA8E573d5b0009D78966498', '1706532611', 1, 0), - (24705, '27537358947484673', '23835002669053015', '0xd6268C31D94186b1EF25a613cBC7636B14cb2940', '1706542835', 1, 0), - (24766, '100000000000000', '86555151183916', '0x595b133E448C0bCFf778Fd1cC1e43C1ea2F9f0Ba', '1706599259', 1, 0), - (24769, '100000000000000', '86555151183916', '0xa57eEB0Df6B344554c64cb13e6b398ed7f3cDE4c', '1706601155', 1, 0), - (24775, '4698977538003016', '4067207112116770', '0x34ffFEb7372A759A2C1B7933CB340638185b8f7d', '1706608895', 1, 0), - (24816, '505443745424048168', '437447194233789171', '0xA9CF6E9Cc0F5646aD5c2F0775bb97Bff646994f3', '1706636411', 1, 0), - (24867, '68514607155862323', '59297444939628828', '0x5b194b030d233f1a7FA56ee87BBF892090C5229B', '1706687507', 1, 0), - (24879, '308881983192196672', '267328576364981362', '0xC9Bcb812C63C45bb4eEfa2Eff8288F99379f19e6', '1706693927', 1, 0), - (24892, '5383935087118672', '4659642777498416', '0xF30e8102e016a5c426b937079592A962Df4A9B50', '1706700779', 1, 0), - (24946, '67765580713644171', '58643552123407004', '0x520f6C8C215b58216621243860E55BA99c6C5C41', '1706744339', 1, 0), - (24949, '49900000000000000', '43182884587437983', '0x6fDA2b13a299db06dDf41B2F4E43078A9A315C74', '1706746535', 1, 0), - (24962, '59582949673479202', '51562397577735031', '0x7F0929490c5F3C510768909439f21719EB42FCfD', '1706756219', 1, 0), - (24972, '100000000000000', '86538846868613', '0x595b133E448C0bCFf778Fd1cC1e43C1ea2F9f0Ba', '1706765951', 1, 0), - (24990, '50999999999999999', '44134811902992727', '0x30336509C81171F0fB902D43650336EF3a49122B', '1706773391', 1, 0), - (24998, '1000000000000000', '865388468686131', '0x71C97d784B583A2CBcFCD46e574CcF672EfAE0ac', '1706777351', 1, 0), - (25003, '1155550410231650977', '999999999999999999', '0xF83D3292a1da5FAfeb2b46905E3B1C9D544E9ce8', '1706780999', 1, 0), - (25014, '19999999999999999', '17307769373722637', '0x8459CC510f9F7CbADe0b6668a511Fc3eBFD1Afac', '1706787683', 1, 0), - (25020, '19999999999999998', '17306110661749326', '0xE037e8F5BA10969FE5B7E055a2E6b089F75c455B', '1706792855', 1, 0), - (25025, '60562526404134', '52405089195252', '0x418629CFB2f5616cA47e3FEBFcf28C43321a1A4E', '1706795507', 1, 0), - (25063, '59376228454409060', '51378579015465623', '0x7D6fdc9e1007838F75a825374caE817a8a977501', '1706825831', 1, 0), - (25085, '4999999999999999', '4326527665437331', '0x8985df6366cFA0856b452332306D061f259d3fA2', '1706850419', 1, 0), - (25089, '25405963843701631', '21983921087375136', '0xDd187Fe1748D91e1a5638A82078A9eaBD7746Bfc', '1706852375', 1, 0), - (25107, '51637573152175902', '44682277763786612', '0x67bF52e7830ACD73441A8D1425C51F5E3AcA3DcF', '1706874011', 1, 0), - (25142, '46306278547717952', '40065408753299057', '0x7544518EDEB448B96C40fD891dE92F36a9225949', '1706889803', 1, 0), - (25157, '16999999999999999', '14708846622261123', '0x24ddaa9A51647ECEF91c9b2Cb34b5AB6865843BF', '1706904551', 1, 0), - (25237, '1000000000000000', '865226271897713', '0xB8c6a2F5cEbe52e3BA667C7BB9bb192F4de97f1F', '1706938931', 1, 0), - (25254, '46292309087157765', '40053322009018144', '0x8584338407970c4153D77aB9df1d33c7B48e4cCF', '1706947607', 1, 0), - (25270, '51709315113425265', '44740257937973019', '0x2416160f6ca04751AC71361F11bCE8d978ee7B88', '1706957627', 1, 0), - (25293, '1720513236203756816', '1488490215728560428', '0x40c30FA630eaFCe442c1D354FCd031101EAC9a82', '1706977079', 1, 0), - (25306, '41790697791171692', '36154935319115098', '0x04335dD6f0E3c2B33AE26bDED03dB2f87e1dfB42', '1706992547', 1, 0), - (25334, '28890962774707148', '24994818120676629', '0x1ACB4e2f97726C191d32c325c0eB232D32173C67', '1707017819', 1, 0), - (25342, '3000000000000000000', '2595429406308179574', '0xA426AD40828EAa62e9b3504fF19731f8863e40A0', '1707026087', 1, 0), - (25350, '399999999999999998', '346057254174423941', '0xa71e533Ad6f6512597e0De73f7fE25B10D79d12C', '1707032255', 1, 0), - (25355, '1e+21', '865143135436059858324', '0x763C3c6F97850EBa08CDBccFB88a8992538ed9B6', '1707034127', 1, 0), - (25356, '468564656601770987671', '405375496166976836599', '0x763C3c6F97850EBa08CDBccFB88a8992538ed9B6', '1707034127', 1, 0), - (25366, '3000000000000000000', '2595429406308179574', '0x91EbF10fE4980C1Ea589dd2e7093cceC4E84f52C', '1707038879', 1, 0), - (25367, '3000000000000000000', '2595429406308179574', '0x91EbF10fE4980C1Ea589dd2e7093cceC4E84f52C', '1707038951', 1, 0), - (25413, '1000000000000000000', '865069808635177164', '0xbB8a95bd9352109ACF918DE9a3246801C2a734f4', '1707069575', 1, 0), - (25415, '49999999999999999', '43253490431758857', '0x963D29392Ca894818c46BcaAEe1f8EEF06F1f1Af', '1707072143', 1, 0), - (25500, '1000000000000000', '865069808635177', '0xB6c5273e79E2aDD234EBC07d87F3824e0f94B2F7', '1707124055', 1, 0), - (25523, '99868114780586838', '86385618425091616', '0x57A826DC59CB53Cd01A5b682F41ee20c823A7171', '1707137819', 1, 0), - (25534, '591816091877211904', '511919136583839457', '0x67853613cF51E3E902354F8C6689Df7304c48F18', '1707146999', 1, 0), - (25618, '459130206948598403', '397146245846675715', '0xdf643f668Fb250f2Bed3E1553770BaD577078a6B', '1707208523', 1, 0), - (25649, '479999999999999999', '415160763028278028', '0x97433b8Fd6Ba880FEb08F123Add89a1191CBE3fB', '1707226883', 1, 0), - (25656, '99900000000000000', '86405333805260364', '0xd284afCcE376E0EF6eC3cE57CE4aC0704Bf8222b', '1707233915', 1, 0), - (25667, '72122645590399000', '62380192864433584', '0x4A49A981a38a976dDE544A61E876aE94321DFe2D', '1707248219', 1, 0), - (25702, '500000000000000000', '432459128154456280', '0x600DB03AFf8e487845ebb11B7ddb07585e8b5794', '1707292571', 1, 0), - (25703, '500000000000000000', '432459128154456280', '0x600DB03AFf8e487845ebb11B7ddb07585e8b5794', '1707292703', 1, 0), - (25704, '100000000000000', '86491825630891', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1707293447', 1, 0), - (25745, '49999999999999999', '43241835445175874', '0xf8745b7c61Df12661c63c79610A086FE07fD489F', '1707328175', 1, 0), - (25747, '154710941886462094', '133799701812451230', '0xb5d7cD5260a74A73D8584842195b3222cf4b0F28', '1707333515', 1, 0), - (25756, '29999999999999999', '25945101267105524', '0x6713AAA85838C9CC14C41158e01741F723671496', '1707349247', 1, 0), - (25770, '517755617493797041', '447774064249643905', '0x10a025AeC6B72395eeAA4257fe2602E803a5D327', '1707367991', 1, 0), - (25835, '99999999999999999', '86474691764806824', '0x4c7b2371eE6455D3448FFeAeAC963dbD3875c6c2', '1707466451', 1, 0), - (25840, '3260338503077363582', '2819367671025467056', '0xB8ef70c10387Ce680bAE1470702CB9eDC6F38913', '1707476339', 1, 0), - (25843, '509999999999999999', '441020928000514809', '0x8277eB867C59b80248e10CfCa1d033ef7023e9D1', '1707479795', 1, 0), - (25855, '1067763907153813691', '923247453913718522', '0x2ce7F43719aA507Ab9c881898e3B362e50e431dE', '1707496391', 1, 0), - (25860, '98472018547743653', '85144328064324083', '0xFf4C69e79a6892F4619D6635726158b9Fc9f537D', '1707503111', 1, 0), - (25874, '3268436551144428417', '2826070167670445994', '0x0C5A4a2744f3257a347c819666Fcb40dA94944cc', '1707520691', 1, 0), - (25880, '1040657863284417759', '899810076212124827', '0xFf8255555D905264a6C593FE2225A14ab679Eb6E', '1707523211', 1, 0), - (25928, '8148920000000000', '7045302417382796', '0x8204e27f762Bc4666817D5b7e81Bab71B9693135', '1707575063', 1, 0), - (25957, '422197080466663585', '365018445588341037', '0xD15EF038eD68D233724Afb07A5afcA1F7c6E6be5', '1707604499', 1, 0), - (25964, '10067410996597845', '8703969977753732', '0xC169e9BA88D831551460cE0a4746F1bE8Fb5b6E8', '1707611291', 1, 0), - (25999, '2655400000000000', '2295776132189084', '0xbFAe0fd4c404FE373aa9B7975B9DbcE495527832', '1707644699', 1, 0), - (26013, '1998454650283375337', '1727643829369768861', '0x6713AAA85838C9CC14C41158e01741F723671496', '1707657443', 1, 0), - (26021, '7999999999999999', '6915919074269885', '0x5680FA03EFC407218393F7417418244e6b69c993', '1707663575', 1, 0), - (26041, '162065851279043817', '140104289018565726', '0xCbB32136B1C49305E0561541F7724b17616E369a', '1707680651', 1, 0), - (26052, '29998999999999999', '25933832038627789', '0x6713AAA85838C9CC14C41158e01741F723671496', '1707688031', 1, 0), - (26162, '10044210317389420', '8682321212641908', '0x789DEBEC22ADDa4383a7428808784E26Fd50bdE8', '1707803147', 1, 0), - (26169, '75473879115180050', '65240416213468359', '0x9a2aAc875844dB0a51D1Df4a8feC341F65d39d87', '1707806723', 1, 0), - (26214, '100000000000000', '86430935458420', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1707835991', 1, 0), - (26224, '200000000000000', '172861870916840', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1707841583', 1, 0), - (26279, '3627406926186510421', '3135201739186532825', '0x3e4E3126DECB32C50017d0ce39f80d851E0e2E54', '1707902939', 1, 0), - (26288, '575788276658093967', '497659193775508080', '0x5Adad7302614F73Ec7F612D00d3B6fD6F4cDCA69', '1707910559', 1, 0), - (26289, '100000000000000000', '86430935458420363', '0x29a99F7Fe080F72223dAd48D5E1E86670a984326', '1707912575', 1, 0), - (26296, '1000000000000000000', '864225061428094981', '0x0a0b96A730ED5CDa84bcB63c1Ee2edCb6B7764d6', '1707915611', 1, 0), - (26303, '289999999999999999', '250625267814147543', '0x6713AAA85838C9CC14C41158e01741F723671496', '1707922499', 1, 0), - (26312, '15547830644173901', '13436824893534807', '0x20192229F08A48B9deFAFb1567beeB730d68D23d', '1707928247', 1, 0), - (26321, '105398394192897977', '91087933695779823', '0x0D517EB790ad36706D2d9B8c3Fd6108059e27314', '1707933131', 1, 0), - (26339, '98999999999999999', '85558281081381402', '0x6713AAA85838C9CC14C41158e01741F723671496', '1707954731', 1, 0), - (26342, '300000000000000000', '259267518428428494', '0xF01C88bbBC3823E1Ab805AEdA40C55E18F3b6428', '1707959495', 1, 0), - (26366, '302151463914394273', '261126867462006214', '0xf4644b386cEB70ea867410FFAB412A481eD2b972', '1707982931', 1, 0), - (26382, '528466336948034230', '456713852511595222', '0x585Fb5CACC65Fbe445f0F6831AF51D9cD512F850', '1707997547', 1, 0), - (26454, '47992520024687138', '41472614471780772', '0x5F5af2eef27527b0048f2507d29084D6D87324f2', '1708051415', 1, 0), - (26458, '300026938942897472', '259267518428428493', '0xc7AC5f927F6F50E79D91EA213fBD6de533f73af0', '1708053299', 1, 0), - (26468, '24701642387736373', '21345861626758099', '0x3E79B37239d3A895d9A4C4D557da5e174f553EC5', '1708057475', 1, 0), - (26494, '20232477148491138', '17483843818929726', '0x84c9A36721eB21da9244Fe50177180D8f4a7cAF7', '1708075943', 1, 0), - (26540, '209504805526334322', '181024319806492826', '0x981b7B3FF2BBdA337320F12c8d6219396df1530e', '1708118159', 1, 0), - (26572, '174043426714905167', '150383628951635857', '0xA7F66753c35dEa452C5Db94d51fcdaFed2a713e3', '1708137959', 1, 0), - (26575, '1000306736088328455', '864323116805457839', '0x1d04b28F35E72d54438Db517728f1adFeE201fB7', '1708142147', 1, 0), - (26589, '73248830674188810', '63291243922083995', '0xE23920C31caFAccc99E02b06eE0853d63Dfb5a4E', '1708156223', 1, 0), - (26600, '1042394356238889', '900689265022862', '0xE0b47475A041219779C7798b53cd24a53adA54a3', '1708161455', 1, 0), - (26601, '242303600361947338', '209364383466002725', '0x5e9db8cC5Cbd035d8BD78434e4659A827D721FDE', '1708161611', 1, 0), - (26608, '19999999999999998', '17281161580204271', '0x6A606C240ADe59562c2024837C1855f8Fa6D5832', '1708165343', 1, 0), - (26616, '1050837074020042567', '907984263530471667', '0x72Ccc2dD3C3E06F21504069a4732B10A26800f7D', '1708168919', 1, 0), - (26671, '1023108216798893152', '883949242993412733', '0x4C9Be32889a925257F8C64B57AaeDdCa72A8660D', '1708204487', 1, 0), - (26742, '597924551955353664', '516553086897127315', '0x2798B89a716043882A4164A5ce9AE24BB49b285C', '1708275503', 1, 0), - (26766, '207379975920251622', '179157665247130777', '0x1B9b93E7822fAEcab7De887B35A83A917cFf4EbB', '1708295711', 1, 0), - (26854, '1035365578940633646', '894382908000134583', '0x5c96F32e7d374Ec346D970a8a9b1E04053dB0d98', '1708357175', 1, 0), - (26859, '5000000000000000', '4319164777117905', '0x76AaA098BfcFBc412A1f15C8CB19fEB951feEa2E', '1708361975', 1, 0), - (26862, '70749335143782885', '61115607271507397', '0xC5e04709E5A5A7c4631eeD5C8c7C0033bFe98E84', '1708364423', 1, 0), - (26865, '139295579896603763', '120328112459524792', '0xD5AFB7759Dbc992E1D1e7EE3cF8331Be45C8b7b8', '1708367639', 1, 0), - (26880, '59306814578988779', '51231180914526201', '0xEdD3fA59133eb990d6bae0a9bB24910867656A05', '1708379447', 1, 0), - (26910, '804999999999999999', '695385529115982754', '0x6713AAA85838C9CC14C41158e01741F723671496', '1708409855', 1, 0), - (26935, '200000000000000000', '172766591084716212', '0x62a182E9eFB469BE8D9872A301524E1868Aeb2F2', '1708430939', 1, 0), - (26946, '1106960535677109600', '956140943008283371', '0xC6E4d568A8b0B1dfd4B836BE9Fc3fD85429C84Ff', '1708436123', 1, 0), - (27071, '332344220000000000', '287036209470602957', '0xDdC2ae825591a5A15795D74765581DE86c257A5E', '1708529975', 1, 0), - (27079, '3272132909502168851', '2826047726142245078', '0x5Ea7a72c7d78E06B9167d713d9f6eC3aFa1547ac', '1708543415', 1, 0), - (27098, '500000000000000000', '431835717604180024', '0xF1fCfFBA10de3Cd282baf4b6E49393Ba03DD3Be7', '1708569635', 1, 0), - (27111, '5000000000000000', '4318357176041800', '0xe989Ae62c6D39BFBC919253EFa4194454b575b9A', '1708584875', 1, 0), - (27114, '20265677347911804', '17502886640540539', '0x447E660e47a3d6949f3e3682A5b3584c5c8E9c73', '1708589135', 1, 0), - (27163, '8384390350441159', '7240670931208366', '0xEbfEA860bb2115F3F23BBd4ACe9A97B765e1F6B2', '1708618751', 1, 0), - (27187, '474121225030682390', '409446081165332629', '0x04d95038653C3BD239Dc7F818A8889d36c126EcD', '1708640951', 1, 0), - (27199, '109184840806679041', '94290875056400099', '0x0C4923b697eC5c334D376242b8980836bb4d927F', '1708654355', 1, 0), - (27220, '188548412222185188', '162828416908193608', '0x5E823667d12DFC218FF3F9723dfe9Ec1E26B7d9E', '1708667555', 1, 0), - (27242, '514385541191052107', '444217919236067535', '0xe14dD1008c8E86b0AF1CFdFEB5808081247D35ca', '1708687307', 1, 0), - (27297, '4257602342094385898', '3676476631010480687', '0xcf85F3a8007B74b989d8aF931833Ffdb38e3Dd13', '1708733399', 1, 0), - (27354, '100009493199976616', '86350869235992580', '0xf914046Cf7D3eA5554C660041d252225324Cc692', '1708778459', 1, 0), - (27370, '3022708413866837464', '2609887228029777219', '0xca00DF8dEdA7a6da01C213c695aA5e8C3D717e43', '1708792367', 1, 0), - (27385, '3248037528608022644', '2804442407738283123', '0xF430f13d84DC75f18d8321Ebb706E839f88fe113', '1708805795', 1, 0), - (27397, '500000000000000000', '431713362767109648', '0x09af5BFa5CF07602A9817cA049b0422214b656Ef', '1708813835', 1, 0), - (27416, '552965435056809064', '477445134924705644', '0x8B129091245608492AB745F7e0eE9A88E33e8D35', '1708834691', 1, 0), - (27430, '800431087665881270', '691113593039145491', '0xb83F01bDfFe6460CB90f041F87604077E49E7c21', '1708852235', 1, 0), - (27465, '10087872680281549', '8709388108849251', '0x58E867D514fC2471656112eEcA36987dAc7Fa46F', '1708875563', 1, 0), - (27479, '100092101594065914', '86414746403079991', '0x92f129aB99169CBa2d4493E8c1f6FB7b887f8ab1', '1708891247', 1, 0), - (27482, '8880329258374325', '7666852714817654', '0xF4a79D8308434FD4BCEF1C37257D33572fe32C67', '1708894091', 1, 0), - (27484, '400000000000000000', '345340921119007448', '0x7E7d7c06315e0FF42ceD187175B947109Ce808f5', '1708896563', 1, 0), - (27487, '3051471958890134841', '2634495342629852986', '0x477C8B772f17F4231dF0a32E3B9d1fE7Ce1F1159', '1708901315', 1, 0), - (27505, '99999999999999999', '86335230279751861', '0x6713AAA85838C9CC14C41158e01741F723671496', '1708918511', 1, 0), - (27536, '5000000000000000000', '4316761513987593100', '0x8b613feBdbFe282D26D7866622Bbbf4b9A1FcBC8', '1708935887', 1, 0), - (27551, '21848466757292447', '18862924087503468', '0x469438D9290b707560e3cB7B58AcC7944Fc6d857', '1708941971', 1, 0), - (27553, '5001848216595979', '4318357176041800', '0xe989Ae62c6D39BFBC919253EFa4194454b575b9A', '1708945451', 1, 0), - (27561, '14007559852033682101', '12093459054827348628', '0x1834bB7eD1EF69B465F029537EDBa252D6358A44', '1708949207', 1, 0), - (27607, '89083799325841002', '76903833637914777', '0x563409D08f67a71d14E06828675eebbb3C072EeD', '1708980371', 1, 0), - (27609, '200000000000000000', '172655037660942872', '0x7e7324C0E7585b152effF1325dEb437378d980B8', '1708982519', 1, 0), - (27611, '10347920805208981', '8933103281679054', '0x8e0C635EC42CcD9d4A8a31556F0e8EFe966940A0', '1708984079', 1, 0), - (27658, '252340846860225629', '217839592090232369', '0xCa5891d0a2F938913f98765FED7f24cA57B221FE', '1709015651', 1, 0), - (27695, '1000000000000000000', '863275188304714360', '0x1d56d769bf91c7c73947f428530EF06d61b289C7', '1709034011', 1, 0), - (27712, '100000000000000', '86319311513613', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1709040407', 1, 0), - (27722, '1799999999999999999', '1553747607245039995', '0xbA97D7958c65C0c5e52581Df28e22F1271A08EE0', '1709041247', 1, 0), - (27784, '1000000000000000000', '863193115136133331', '0x1Ea79Fce503e96A0D6c3bFcA1fd8f4602E9BE8F1', '1709085179', 1, 0), - (27851, '5000000000000000000', '4315965575680666655', '0xdFC1497EF2Ca6D884EC90d2fC4FB816a5ea735f2', '1709122559', 1, 0), - (27866, '1041046443842557541', '898539819858766576', '0x20210CCBd9070499378B3825A22C27aF003687Ce', '1709129159', 1, 0), - (27869, '10000000000000000', '8631121360370902', '0x78cB2682C284574E0C19302FDB28CCCd5541e95C', '1709129711', 1, 0), - (27870, '888312395100623460', '766713208803522792', '0x2f6a7FE1a8CaeA6824713b6Dd313847717B7f3df', '1709130275', 1, 0), - (27900, '64372122780885598', '55560360394652007', '0xdaF92D1e9E8d09815EA0a00C957D32e6Ff3d1F2C', '1709139515', 1, 0), - (27907, '2623994045269346874', '2264801105361031313', '0x64AbC50584f2C45ab1426D05AC2230acEe68eb22', '1709143079', 1, 0), - (28019, '3516987652391426967', '3035554725071636046', '0x50ABd6bf7757984e465eB6028B27Dc2281046A3a', '1709196563', 1, 0), - (28062, '10054824686963105918', '8677562118855509710', '0x498C5355b098808b194590Fa3eF1cD1fda8E2Fd6', '1709217935', 1, 0), - (28104, '334215225542177183', '288435996747895231', '0x461f43819bA70d60E5A5Fe86629c39600f5Fb609', '1709235167', 1, 0), - (28155, '7200000000000000000', '6213777882847428859', '0xA6724083a78c106c9e6141217dE40344744CF9D7', '1709264879', 1, 0), - (28209, '6006697151895992161', '5183928043251938745', '0xD95b10241ab2219393e782f02906f22cB2143855', '1709293679', 1, 0), - (28274, '333734494457983578', '287994805654168722', '0x7C4306a62eB90a889d4B96c0ACDA3941BBa81853', '1709328983', 1, 0), - (28277, '2163907736561069684', '1867335257197742682', '0xc09a75bC092154f624a0D9E5B1B2C740529a2213', '1709330483', 1, 0), - (28344, '543010423854324448', '468588605861964232', '0x427D84b3Cf8794408ec586a66040986E596078D9', '1709378123', 1, 0), - (28354, '521477080927784310', '449963499147158167', '0x3c80aeC17c75018ABBe9a297De203526DAAF8e44', '1709382803', 1, 0), - (28382, '516202999748100882', '445412687406449725', '0x98188911f0B83989e059b525726E92dFDaDD0F84', '1709400491', 1, 0), - (28404, '1005496982967556691', '867606568697210131', '0x9072102Bf1262fAeE8651Dd75b91229be854a997', '1709416931', 1, 0), - (28406, '1028088438184451735', '887099909079753501', '0x79F99fFB0c9F779bfc5882274e33067e3B3945cb', '1709417747', 1, 0), - (28415, '240679257420853652', '207673327940991937', '0xF1319768Bd0e627A858a16339B0e94F9C6be4A37', '1709420579', 1, 0), - (28424, '3178826288444623320', '2742892932868119918', '0xbC1cD9c3085e86b5ED9BD97a8F99C3D73A0F47EE', '1709426531', 1, 0), - (28451, '30005607473555391', '25890741178530953', '0x230D0B18617eb7Cd98d74726C17f10Af3276D586', '1709444915', 1, 0), - (28459, '2376959775103224029', '2050991648251560630', '0xb29d46fB669F7Ba87A498416f7629abc74E31b89', '1709454335', 1, 0), - (28511, '81090000000000', '69963283867843', '0x4C79366b4e8Ea615d36496C81788688190179112', '1709483207', 1, 0), - (28515, '62212480160376108', '53676031688037421', '0x4a815004713Dd8B7BeAD7EA6758c59083643aFD5', '1709486627', 1, 0), - (28678, '4350000000000000000', '3752762884700976857', '0xf164161838b3b1DD8DBA320611d2a8ab993a56d7', '1709609063', 1, 0), - (28681, '2113552031895082368', '1823370027627632265', '0x50cCEa9C3cf3A1E81ae9E4B1506b2ebC958E37F4', '1709609723', 1, 0), - (28697, '644642904029371521', '556136083707420516', '0x3Ab12efa0807249AaCF563B9b3575E1635cc8135', '1709619143', 1, 0), - (28733, '4756230000000000', '4103219175885362', '0x3aEc430746405F08ffF3cE25CEBEF7c8Ffe814fe', '1709637539', 1, 0), - (28752, '643107819640517979', '554753482831481156', '0xBEd3fB29B378AE2305098968EFF489DF49ccFd3d', '1709642951', 1, 0), - (28770, '5044771568113545805', '4351688024979350756', '0x91A9d32F86Fb28960DD1c71C418367441E1D09b2', '1709646707', 1, 0), - (28826, '1844863796712037496', '1591404404237836365', '0xf4BAa9916ae030C62d19b4892739B38Dbd43eAFd', '1709680643', 1, 0), - (28897, '1111357706248920382', '958672153229018634', '0xDC51893e5f149eBD0213BF7bf4AaFe53b1C7B5C0', '1709707439', 1, 0), - (28960, '44359918825147847', '38265464537701159', '0x8EdfFdf5Fd805466CeBF24F836687BFd5A9B9792', '1709718767', 1, 0), - (29010, '820050340321514047', '707306492823137791', '0xe4eD3a1EECD557E46a1fcE60249798f4e7FaB09e', '1709744243', 1, 0), - (29052, '150541084834569915', '129844085789152170', '0x9a0Bbb50C4508D3D5797A88E71D7D4c7018F0687', '1709770019', 1, 0), - (29090, '279738611458484275', '241279012335194382', '0x93331abAfE12e5aDF3203b58B2CC542Aa66379F1', '1709801399', 1, 0), - (29094, '100021816192794', '86270411142550', '0x205fA46fDd16e216bFE526b05646FeA8DdfCC4Cb', '1709801927', 1, 0), - (29134, '206861940538709483', '178402648018991477', '0x9e9b367D207B6f642267049a36a658472ED36196', '1709824403', 1, 0), - (29239, '20486351934723340920', '17667916214484690899', '0x29A8458b43EFf9ecA4509a50B5767AB272e5c0A1', '1709889899', 1, 0), - (29328, '1000000000000000000', '862340546182290936', '0x9437d2c3d0Dd38d7DbfF7B0541AAA5d002D3944c', '1709947439', 1, 0), - (29329, '1114541971766102123', '961114732675867988', '0x0E2D0c97D27693efCb4F2711ea368806914565A9', '1709948171', 1, 0), - (29340, '1013936877386455869', '874358880639802909', '0x96830ce1074bfFaCA81D338e2C64a76425dbf15e', '1709955323', 1, 0), - (29354, '89059193387238335', '76799353468105378', '0xf3E39Fb95d16898DD50D15a1eAAE15bD6add7544', '1709959607', 1, 0), - (29358, '106987400692661648', '92259573547933457', '0xf5f6264C61C51517812946c696c35345B2248F8e', '1709960435', 1, 0), - (29381, '67470562473586273', '58182601694698769', '0x1810C0de2D1bda06d2fd41d27dCA65E4a3344973', '1709973251', 1, 0), - (29393, '208241211556128888', '179574840110974180', '0xA5E6735F2fEE9FBb14D6Ea01D7d12755Ee5dC3B0', '1709979119', 1, 0), - (29451, '1039262432514578107', '896111740354341842', '0x89aA330936A3b91e52C0e318d1Bd15E4ED760254', '1710017603', 1, 0), - (29494, '419796989577314913', '361973067779840379', '0x33BBb555C7B16673058BD9f17bF0bB5fab2E9601', '1710053327', 1, 0), - (29512, '1642133006856256735', '1415941364402803853', '0x2f5b82947fD293D05fcfc16059f9D7DBE0f78150', '1710063359', 1, 0), - (29525, '1074112906364183729', '926161819907376681', '0x3b2cbBe6B4656548E995b26dF0954d31C081e0e5', '1710068699', 1, 0), - (29548, '3237836332873987689', '2791588206249188604', '0xA0db46BB131008F9f29884B134C90cb526e6061F', '1710080231', 1, 0), - (29611, '1000000000000000000', '862177058767915656', '0x0e8D71ec90808ca5125eCc96531e31D0415979b8', '1710082463', 1, 0), - (29646, '50322067874616514', '43386532471256282', '0x7734E8534Df70F99e36A2Bfeab138E05d365e4F8', '1710097319', 1, 0), - (29669, '194774504006678321', '167930108987457518', '0xc45Cef5Ab1Bb91E4646ABB2b48a444c25b0A0584', '1710110471', 1, 0), - (29686, '103264322685649363', '89032130008774116', '0xE7c914e5dF1Cd381F0F612d40B3937cAB2514373', '1710126719', 1, 0), - (29738, '70055725801020307', '60400439620975270', '0x033FB0e2BB9AEC2eA128995b07b13fb9E5c442C8', '1710152687', 1, 0), - (29758, '1000000000000000000', '862177058767915656', '0xDe733B21762f94E7Ca2c293C4dfC78320C39c1cd', '1710158831', 1, 0), - (29774, '24800465956256224', '21380293368574083', '0xB51ab58ef5a80b36970185C1b5CB27C7c86647A3', '1710165719', 1, 0), - (29832, '105855276148782814', '91257029713245170', '0xb6dcdC766A46D6F811cE3d9dD7581f1e005C339A', '1710189899', 1, 0), - (29837, '10000000000000001', '8620924060977427', '0xD67360166BAF50bd81Bf7972ae5a4bC105E79f2A', '1710191459', 1, 0), - (29864, '206168412108779187', '177736222456208440', '0x51d02eb80a90F971F583d3c69a2470c331EFeC72', '1710206111', 1, 0), - (29869, '155392501572054267', '133962695569799528', '0x397EB800974EC982d5367E5101dAC1a47EDf054A', '1710209219', 1, 0), - (29874, '5970872791346813017', '5147444091195719248', '0xb2a2B3e1A35B9C139b0Fbb051a7DbAF451c8E402', '1710213683', 1, 0), - (29899, '4095691572792993', '3530864602623359', '0x73EB5e2F953FF5b22a057bD32338d06e0b6382C6', '1710235607', 1, 0), - (29905, '1063150940557056365', '916534352389910946', '0xc2b17C3263473295380d500Aa141Cb233c9D604E', '1710239243', 1, 0), - (29936, '1663807502652724543', '1434211414512425057', '0x91058dB36328Ad223D323Ee1e794c99d8305CBd1', '1710255023', 1, 0), - (29967, '100000000000000000', '86200561797308979', '0x6AF4f46f88BB04041D05fa95922766F202ac1E07', '1710275063', 1, 0), - (29968, '1021965567212146772', '880940060311925811', '0x02a60F5426462000023d1B53411A4E49a3702EF7', '1710277055', 1, 0), - (29983, '249340189786977584', '214932644382851104', '0xbCaD9e5Ab341253507Ecab45001E5f589f0F046A', '1710287915', 1, 0), - (29988, '3988300572284335895', '3437937499474386647', '0xeDbA5590DE98524a2D1817C0EB76a07f384cd47F', '1710290195', 1, 0), - (30011, '4000000000000000000', '3448022471892359178', '0x262cC32c29281fa291053ed2fa56B7Ee1aD8A676', '1710297551', 1, 0), - (30014, '1507514127706359789', '1299485647256684077', '0xB25f71F036Bfe7064D638E049c02de80D2e10C5F', '1710298151', 1, 0), - (30020, '28134422914401070', '24252030610644552', '0xC3066CEfbE775328004120d199285fF781E3ae80', '1710304943', 1, 0), - (30043, '981454981973541728', '846019708248870541', '0xCAE6bF5bb09CbE50D75BaD4B41f5B06aB6f20686', '1710323387', 1, 0), - (30052, '5000000000000000000', '4310028089865448972', '0xa6a5bdE274F2B7Bda18c6F60399043d614F4e299', '1710328355', 1, 0), - (30086, '91476607296069496', '78845482649400146', '0xC683be95db0E2E6b86320aB6ec9238171bC3c331', '1710352691', 1, 0), - (30099, '185209447976046929', '159635657120919873', '0x8e059F62e32D34Af93bF857F098779f0494657A3', '1710362063', 1, 0), - (30104, '2109080704818499759', '1817858040796586845', '0xE56E65f82aa23538903B7B6F577E7CAa2315AEcc', '1710365231', 1, 0), - (30177, '1136175894154563870', '979292295562424906', '0x1eF2a3b9c3831417E9728AfBB41Aa9269Adf856e', '1710406451', 1, 0), - (30192, '230200000000000000', '198413896649529332', '0xbBc81C032ba9b567B41c1d69F0D15e426c323938', '1710417419', 1, 0), - (30194, '840428140994508602', '724313324444317311', '0x47378836768b13f04B089AED2F44313A388BA979', '1710419627', 1, 0), - (30200, '3500000000000000000', '3016434733557636827', '0x3B6CF3d6c5dB73302fad63d18e3b6F5080E569E8', '1710424379', 1, 0), - (30227, '119949697505218314', '103377266809849239', '0x513EEC3481a4C60B8C10C61E5b7746BaB4CA9bB3', '1710439955', 1, 0), - (30239, '3975622057805729215', '3426344132189453898', '0x6E3481A70B9efDdc08Df2ff2cFDC836f3d271fc5', '1710444215', 1, 0), - (30253, '550782272659301568', '474685365107808572', '0x0e265Cef49ab9e97E02D0A975d9F3d8fc6B0871d', '1710452087', 1, 0), - (30267, '16191081534642555395', '13954097347131282908', '0x5de802e790EE21EfFB99CFBD428250b556c43fE8', '1710461207', 1, 0), - (30292, '3500000000000000000', '3016434733557636827', '0x3b50A45e5E99b6D2368F480C1B66529d149E4574', '1710479411', 1, 0), - (30315, '197433917189218623', '170156150111971774', '0x6B093b5CcF8d5aF5D87168B1D020E9057788A957', '1710491111', 1, 0), - (30354, '1029094581200833647', '886823702322586560', '0xcdb90B4E62Ff02Ab9396F422d90431283C1F99d2', '1710506099', 1, 0), - (30371, '2000000000000000000', '1723502812127854131', '0x8ED6dfE0E99Aee74Bb76F0b910691591De5C76E6', '1710511667', 1, 0), - (30432, '12041008782179448', '10376356248471233', '0x9F67138774108CFdbF81F7Efd3223cB6a01fc5d4', '1710522311', 1, 0), - (30445, '15837192892754430', '13647723243436762', '0x2ad560F1648B4705D4f304c4555E20bbc9167BfA', '1710527399', 1, 0), - (30504, '654468149702073125', '563988848229818224', '0xD7c592c621F92F9FE861F8fd5a4a3D4e948DB121', '1710553355', 1, 0), - (30515, '35836892151289712971', '30882492200335222220', '0x4E77477CDe828BeFbfeF51C40b05b465DE55C9c0', '1710558359', 1, 0), - (30529, '2000000000000000000', '1723502812127854131', '0xdD39ea736262524343983b9b266F615828272f44', '1710563471', 1, 0), - (30546, '4054085267485577244', '3493613679558748049', '0x1D5b38C6aEEC859D04529e6B5A3503ba6FEf20dB', '1710571799', 1, 0), - (30567, '120961367498504685', '104238628521251820', '0x0115Bcd57c49Ea13A216E10D8af00D0AC2F1CD76', '1710581063', 1, 0), - (30642, '33170143692914816', '28581893854362552', '0x414bDa43eCc9f29A8d55fc90dD84C514699A3b61', '1710602435', 1, 0), - (30687, '106106979452458699', '91429764428937329', '0x11Aa2541e79292A5339B3dD19EBe250663D558ee', '1710626027', 1, 0), - (30717, '124700846626072764', '107451640692677223', '0x3E3272Ed00Fad2890b4374E25B3f4d90F2dD55ed', '1710643079', 1, 0), - (30764, '1439429393133582133', '1240320768769580306', '0xb07Cc75d40B0b965A702491e1132D11B7eB8814a', '1710670487', 1, 0), - (30782, '913794303927637', '787322606695611', '0xB1796eA7d56928dAE2f3DaFc944bE4e6E2A89685', '1710678599', 1, 0), - (30840, '155293459889296463', '133800409038775918', '0xBCec43BBC3C9A4Cc2A133E92e8b200e0e92C221b', '1710707375', 1, 0), - (30844, '525924074066081903', '453134705631163444', '0xf158dC770A237F0bcA0eaC22538e272D945af460', '1710710039', 1, 0), - (30920, '407110014453494466', '350764845451253675', '0x28DD923c583FEf51D39291a397d83d7A21152fcf', '1710738107', 1, 0), - (30921, '320000000000000000', '275711101568156752', '0x47Ebc01E9D06f8036251634d957c3476c3C6214E', '1710738407', 1, 0), - (30924, '5000000000000000000', '4307985962002449259', '0x84E47Bd345d048350747d5de98dC6CC243be2b89', '1710741599', 1, 0), - (30968, '3672081966721686061', '3163584821464996557', '0x4D984410B85b4CEEf39eA5AEad89399AE1322ad0', '1710766943', 1, 0), - (30971, '2875447996231374011', '2477265953818228342', '0x8f3D9a1789E58cd8CE6e5917C3de98e37Cd45Ce4', '1710769223', 1, 0), - (31070, '125000000000000000000', '107690434545546820240', '0x10f7Ce43ad3779A5313b913CeB421417C4993950', '1710821015', 1, 0), - (31086, '10851836761692964', '9349112131872439', '0x09c5395d4DCD5206A47072AC36Bc8f96a35a815C', '1710832199', 1, 0), - (31191, '56396098048121219', '48581302671774663', '0x03e3D61Ee21E70E3b2B64e8E107ce0EFAC761388', '1710886079', 1, 0), - (31223, '1613217613332738380', '1389674389917594709', '0x1a747b68d436C830fC51aB8A8bE69F909376793b', '1710909203', 1, 0), - (31224, '504471142048258421', '434566682611807540', '0xe9b2EB530D3F3ca840d225580379aC2AbE0f3223', '1710909251', 1, 0), - (31262, '65728405728148484', '56615140609025087', '0x43582190dcD7fb89BBF5D51Efa3b0fc4e0E60F7c', '1710939191', 1, 0), - (31267, '199999999999999999', '172269934077465078', '0x4D11Ef08f6Dd7371fe690E517B54dF0884f26f25', '1710942899', 1, 0), - (31270, '182506032607572783', '157201511030231277', '0x978841d9809eFF362c4A80F0B6c16ADab1072867', '1710947579', 1, 0), - (31279, '35164400548621927078', '30288844821923381291', '0xf03c99315B6882c09Cda066e6921D89A0CFFD19B', '1710952919', 1, 0), - (31297, '180346783487703680', '155341642512547903', '0x2240730ae7B8386a5921149929C495eD4c5ff70c', '1710961931', 1, 0), - (31392, '1073691434978109053', '924823763616088652', '0x6Dc5ebaa377D3D3f56528e33dcC2689afdf20DC8', '1711021067', 1, 0), - (31457, '5912979402388315', '5092665604707790', '0xAAcF82D5e687d25229BfDdBa0E64765891472dAf', '1711060091', 1, 0), - (31495, '194046574772764302', '167126291131246802', '0xfCf2Dc549e641B870D224141171c5Bc63B5c46B3', '1711089599', 1, 0), - (31503, '99999999999998', '86126895734673', '0x8d8dC7e30407778532052330dBAC3D3186411e0D', '1711096463', 1, 0), - (31531, '50635840382736988', '43611077450816325', '0xe3ef91257459E0733e7F698536E8b50451DBeC30', '1711107419', 1, 0), - (31542, '38300979608829635', '32984537441584695', '0x932A79f77DE786DE77533aF6d772c5835B266eDE', '1711113479', 1, 0), - (31545, '10046832960949317', '8652262718977131', '0x28DFe3609A2Ef5d875e78382A6c6BAB0ac1F7E09', '1711113683', 1, 0), - (31553, '119732468570747559', '103112769774555257', '0x4F2963C9c1656703FD2391cC706375eFC09E6a0c', '1711120655', 1, 0), - (31568, '200000000000000000', '172238609970073323', '0xA133Bf4F17B183d59b9687978C898Aa2232E3E01', '1711133867', 1, 0), - (31595, '296716949912136461', '255530575037131270', '0x7beF80aE9E96a4A3f0942DC3361d40A2A3b5bc25', '1711151423', 1, 0), - (31602, '49735799362372854', '42832124739627797', '0x8A42376f367e55bb7681D4D21d8d0C2167A3bC42', '1711155551', 1, 0), - (31623, '232235311244803101', '199999435973861124', '0xf0ad4B389fF2819C5267e943223504F30271b96e', '1711171523', 1, 0), - (31641, '104859560000000000', '90304324282367509', '0x503d7FfCfB5A994aeaa25E7f4b8Ed588B8bD6f91', '1711187315', 1, 0), - (31697, '10093812369324868', '8691924804650517', '0xCf24a48c662C096C602eBD45386A4b133B2Bd89E', '1711208471', 1, 0), - (31700, '1161286204860433910', '999999999999999999', '0x3cab5755A654da51b65207710A27acD995c62099', '1711209407', 1, 0), - (31753, '10143295652775928', '8734535560934328', '0x1222E87A319b266aa320bb2d7b0cC663c7Bd524F', '1711242203', 1, 0), - (31764, '43615838512684510', '37558216338173381', '0x71eC1F58656B583F14aA2D7c628Aea8f4e1C1CD4', '1711252571', 1, 0), - (31773, '1115461737842183909', '960539902371648948', '0x52c41bFC8B0FB28d9b22B817a91eF46145D12dFc', '1711258787', 1, 0), - (31789, '35635230167946478', '30686001451493349', '0xC3EaC1cd5BB6F3d04c086021506134FC1ea61986', '1711268219', 1, 0), - (31795, '455176496855943466', '391958928772987224', '0x775B67620292dF5776ab1015bEa79DC6bEecF1eb', '1711271231', 1, 0), - (31799, '23310591533183305', '20073080551219349', '0xd7Af28ADB3df007231AE0118895b8b89CD95E711', '1711273079', 1, 0), - (31805, '30014259847960567', '25845704290931235', '0xdDeB2C9d5A0c507d916B653e5F73D8d7fFc3ACD0', '1711273883', 1, 0), - (31847, '7495501221095226070', '6453949341907663009', '0xBFe89191a487c670BaB3cfC0E9cb66480f4E8391', '1711291607', 1, 0), - (31849, '66046289213252762', '56868699267723121', '0x2aFfD46Aaf17291acBc1f26df95A34F682802322', '1711292087', 1, 0), - (31876, '43267985779400577945', '37255599073310427427', '0x5Ef65ac6495349a385118F9b852a09A003E53B9C', '1711310471', 1, 0), - (31894, '84315924057555331', '72599641642654912', '0x86Eab0E64C74875F9B8A19B9FD5dA8e0f6d439d8', '1711319663', 1, 0), - (31909, '1455462036038558512', '1253215491877418136', '0x0dcFeC69c9164eE34a3441fDc80a38843e5b218d', '1711328495', 1, 0), - (31944, '3611880983535943', '3109985070929581', '0x01b0Af6444823E080D91CfB29b779773F342eB3f', '1711357679', 1, 0), - (31991, '200000000000000', '172193690602604', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1711374491', 1, 0), - (31994, '100000000000000', '86096845301302', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1711376087', 1, 0), - (31995, '100000000000000', '86096845301302', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1711376195', 1, 0), - (32032, '1051724365087497224', '905501499605484792', '0xaC4458c2A5bC2cb3B437EBf989e02AAEa9Ba1630', '1711393403', 1, 0), - (32037, '906964395198353479', '780867732271817119', '0xa9Ad74E607Fd989E722196D147C58ca32C0c3640', '1711396667', 1, 0), - (32041, '10140837444181940689', '8730941126573848904', '0x683F3717E008BF76f74DdaF6f5C4704D8B09416E', '1711398575', 1, 0), - (32058, '500000000000000', '430484226506510', '0x4Dd2a335d53BCD17445EBF4504c5632c13A818A1', '1711411163', 1, 0), - (32095, '100000000000000', '86096845301302', '0x8c951f58F63C0018BFBb47A29e55e84507eD63Bd', '1711428671', 1, 0), - (32106, '32802958180685320', '28242312159075480', '0x53b8a05c6978BC3b67a6eCac6CF9B2c79595542F', '1711434047', 1, 0), - (32115, '499999999999999999', '430484226506510781', '0x5a8Db903438E20CDFe631eF2aD30588732CEa1BB', '1711441715', 1, 0), - (32140, '9968628587239928', '8582674733417343', '0x5Eb77786740b570584CE05C333caA3d8d027484B', '1711448939', 1, 0), - (32197, '604101025127796296', '520062557917831332', '0x9668DAd8926806758BE6eDF7499a403f945bc02d', '1711488143', 1, 0), - (32199, '1994352983635453169', '1716912024509638250', '0x942B10F2c7928Be3A04404dd24d8c1881636D054', '1711491071', 1, 0), - (32254, '200000000000000000', '172177346597885079', '0x3626fDf19e0921523a5f62187ccDeaD53F2CFbe0', '1711521047', 1, 0), - (32268, '5231896457092467', '4504070248285283', '0xE84b0443B8341D9C215a150Ff208c0Ce5D2D9a74', '1711533755', 1, 0), - (32275, '66394133630252042', '57157828790611018', '0x618cf7A501E6c3B0Ae6D4dBB66993Ac95216F374', '1711536875', 1, 0), - (32283, '50911398136472197', '43828947213631469', '0x0942086a607b12Fe0Dd5467620E6231C354bA175', '1711539251', 1, 0), - (32301, '14748069285048950', '12695285501478002', '0x9422c536A1EE8294c1C1966504050434Ac75EA60', '1711556591', 1, 0), - (32320, '1000000000000000000', '860809998658469547', '0xa845Fa3439C229c82339984925a9FB146CbE30cD', '1711569491', 1, 0), - (32361, '10120577768013733', '8711894534906838', '0x10340C24Ceb89a7DFE269dE1E546bb9f700AcE18', '1711587887', 1, 0), - (32389, '180000000000000000', '154945799758524518', '0xb1B04a27cB98C343FBBface59c8A5eB7fB350Fb6', '1711600775', 1, 0), - (32425, '6628715328288048397', '5706064432851011465', '0xb4f715c41933b6460574341de70f1a2bC0731f09', '1711613579', 1, 0), - (32476, '1070624124315888354', '921523547946626424', '0xDb1b49649Eb1E9Eb58fE39a58bc69E19e43cc191', '1711633283', 1, 0), - (32530, '224548505519798690', '193276735310761264', '0x3478d77084cd8CEf3144C5d7A0b2E3D6AEf92B9D', '1711661555', 1, 0), - (32617, '28695562562037191', '24699272155286018', '0xaaAA52aA871F6164614D43eBC27Ef4B83f9A213e', '1711696883', 1, 0), - (32630, '1067305605717975491', '918667183175068901', '0x4Aaf16b79655EF0549E236C305b75FFCA689A6eC', '1711706591', 1, 0), - (32635, '500000000000000000', '430367449703912282', '0xc21d094556EA2468a16679d92A652714c916062f', '1711708991', 1, 0), - (32656, '4700000000000000000', '4045088593137917580', '0xC86aEE16149290F27dB291c0cfA0bffD407A366C', '1711720859', 1, 0), - (32660, '11004932379933170', '9471473710281230', '0xe0C1E41941Cd102aF49d9B99ee374FAB6E60745e', '1711722755', 1, 0), - (32674, '52120661102504436', '44858019509052734', '0x013A3eeA01E164AAb987fD181E7b614B1858D899', '1711730783', 1, 0), - (32696, '270800000000000000', '233065955536542144', '0xf6d02eaB46afC1BE5D16e4b7e9De5494b883ECA3', '1711747163', 1, 0), - (32717, '1360588241998010072', '1170999995247600661', '0xB2aACc96d997eFD035679A3e23f308B29f73aE1a', '1711762931', 1, 0), - (32724, '2323561249302575869', '1999789596810880595', '0x7C3eA55707ea562728D0b18D7b286D3f221bD202', '1711765619', 1, 0), - (32732, '82000000000000000', '70573886093044519', '0xC6a354039009A8E6f71f757811e0AF0114493b61', '1711769639', 1, 0), - (32744, '10000000000000000', '8606571474761526', '0x59eEee7Ce9F7A6D7D68DF191Ad23b3884C16DCb5', '1711776815', 1, 0), - (32792, '15764637223504913', '13567947703778113', '0x6626658ebf27C394bde3Dc91cD136aFaEDe7FFE9', '1711796051', 1, 0), - (32816, '2058542347157289711', '1771547873369522774', '0xf7534e2034CEfB38639302cb668d8B1C0c58C021', '1711814903', 1, 0), - (32822, '10000000000000000', '8605836434775863', '0x6ab1Ec9Cea6cC84976dFaF63F5B578AA92f92f6C', '1711817099', 1, 0), - (32838, '40010521007811326', '34432399946338780', '0x0f09b0e3dA21aBc314795D42b02ec0d6F0002381', '1711829267', 1, 0), - (32845, '104049193345953334', '89543033910564352', '0x1b6D4d5A21610AF38A7Ce4f3A7d4d06FD09312de', '1711833803', 1, 0), - (32883, '1000000000000000001', '860583643477586338', '0x6058b9bDC6F223eba8B1D148ba319dcAe83eB4e9', '1711860839', 1, 0), - (32889, '208098386691906668', '179086067821128705', '0x267c2D469820013f455d98EB2A5F4508D2E8DDd8', '1711868387', 1, 0), - (32909, '55988617906754665', '48182888791469362', '0x8a52C8cF4EAe6aC09809ea42Df8E4Bc31a45355D', '1711881179', 1, 0), - (32915, '495346974126181948', '426287503779107349', '0x6b28941A05eDaFafd071084854B892dBB245f554', '1711882139', 1, 0), - (32930, '21920600106651859', '18862924087503469', '0x6A0EDe65e92c47cCa5397d3cAA78aea4b5F05E1b', '1711890071', 1, 0), - (32974, '70860261682519218', '60976055875969690', '0xc7B9A5a1bB44a431982f00930401a107f58CFEcE', '1711921223', 1, 0), - (32980, '19999999999999999', '17210225993566178', '0xe46c110dEC18cC6d70AA1c7fF9cB1305f767a83f', '1711927079', 1, 0), - (32984, '620961062567834513', '534344010999871021', '0x3c0051fcf7b3693a86bd368a35f72B18973b3951', '1711929779', 1, 0), - (32985, '10208238654367803', '8784304711896390', '0x6463532f9AbBA54401601c5B391D1aa8ad350Ac8', '1711930223', 1, 0), - (33003, '150893879316551553', '129845888204187683', '0x9c2b6939Ed0E604563bD5e63Da35Ea39607F8b5B', '1711946255', 1, 0), - (33026, '100000000000000', '86051129967830', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1711961267', 1, 0), - (33032, '32154043811634635', '27668918030263007', '0x62b6EdA36f4b2023e3E86ADDa78bE5C4dE56800C', '1711964867', 1, 0), - (33038, '5484619786193995944', '4719577300459164606', '0x13FEEb53005798Eb5002adAf6C1A692745EaB8Dc', '1711966235', 1, 0), - (33055, '10853687485345321', '9338921037381417', '0x9C32c5CDF75777C05A9c5D28c6E893aC499e21B6', '1711974311', 1, 0), - (33057, '105052833321057645', '90391409966723834', '0xe0bFe5fB3DC5deE69bF5C289F249527A077E9FC7', '1711974983', 1, 0), - (33063, '19885129150940076', '17109913217005837', '0x35A5B48D079B48fEBE6dA662b66f5d1C80ef0a45', '1711976303', 1, 0), - (33082, '100000000000000', '86043762085382', '0x9EB0cb7841e55D3d9cAf49df9C61d5d857D17C82', '1711982027', 1, 0), - (33175, '249999999999999999', '215109405213455208', '0x4A13A55003EEaf84421ad16799bBbe68D851BbFe', '1712030699', 1, 0), - (33203, '5380267654141261911', '4629384699886075185', '0x1c9674667D8468204452c52D610a0883E97C22aD', '1712051003', 1, 0), - (33242, '359379321810709777', '309193849756686100', '0x208a747D83676d962bd4265fb98ae8e2520B3151', '1712071883', 1, 0), - (33266, '1000000000000000000', '860355148423210945', '0xcfb9B560300a06e27F467A1e4826Cf4b2bc23323', '1712095859', 1, 0), - (33295, '5655801939274058', '4865998316916416', '0x5B26936277006e7357c19127C963e024bcA94c40', '1712111843', 1, 0), - (33301, '12037234263539377500', '10356296471412381430', '0x9D366dEF126d9001586F5aDFCC4A01175eC9E491', '1712118503', 1, 0), - (33328, '16775142209180790', '14432579965200209', '0x3D519d552cB500298f8AcFe3b5341FDe060F0564', '1712135003', 1, 0), - (33332, '285113325961171838', '245298717874759319', '0x619De808cd65EbffDa04CC803b5580a328646c98', '1712140439', 1, 0), - (33369, '87023603525435063', '74864209515684427', '0xc680317D5d5da067f151C35787a33abA34a1a715', '1712157827', 1, 0), - (33393, '7602455898840259', '6540200913171536', '0x1358aEF27747DecD26256319bf8D6F7dEf58D0bC', '1712174303', 1, 0), - (33406, '1000897103102253748', '861046513758625840', '0x88fA043e9BF178d336da6f1c69Dd302140E54Ec2', '1712186627', 1, 0), - (33410, '14009627144890092442', '12052128610200852702', '0x866b0a8C18167e41307dAe5cAbf864A90fe43f02', '1712188439', 1, 0), - (33428, '20331597129366882', '17490759812497671', '0x2Dd9C978Ff18e96d68de9c9C8546c5Ab837b78fA', '1712201855', 1, 0), - (33430, '2376129352460172', '2044124105099295', '0x73EB5e2F953FF5b22a057bD32338d06e0b6382C6', '1712207231', 1, 0), - (33455, '257071817236636879', '221152395517111555', '0x9D0a1cd6De2Db0C2a7b06d10EeE522B08c4fDc53', '1712221511', 1, 0), - (33456, '2010605798331289476', '1729673417807035002', '0xE15c831d83ADA64c99Fc51030b2876c8bCa9B8C4', '1712222087', 1, 0), - (33461, '30029272247617061', '25833424933869311', '0x5c6D20C6945031Acf05bcBdf6d090b5b570e2838', '1712223671', 1, 0), - (33488, '11625270251197235', '9999999999999999', '0x1661638e6C49b47fFB5c9A8B2fB804e417DBBA2C', '1712242487', 1, 0), - (33503, '9000000000000000000', '7741755508069268177', '0x58De6d009315Bf013b6eA70BAE911B4e9aC618b6', '1712256731', 1, 0), - (33511, '1000000000000000000', '860195056452140908', '0xc7F3f687A0467340254d696E1eA2187E793155C5', '1712263427', 1, 0), - (33542, '23250540502394470', '19999999999999999', '0x1661638e6C49b47fFB5c9A8B2fB804e417DBBA2C', '1712278523', 1, 0), - (33614, '17139306185555740', '14743146451834647', '0xaC7A2A3Da53cD1942475a4d95473659a564C8C16', '1712309543', 1, 0), - (33616, '40371591597180181', '34727443512999183', '0x9F37607Cb53C023135FFC4f2fcbD1D35F62890F7', '1712310455', 1, 0), - (33624, '10020048523648549', '8619196205453054', '0x65Fcf13A1D7f60DF1cB2b7877c50a86Ca5a43E1C', '1712314847', 1, 0), - (33650, '249261984836078479', '214393444277503206', '0x850065C31a5387f258c0c18b53Dd5710F23851e4', '1712326763', 1, 0), - (33660, '10217900000000000', '8788547422198102', '0xc93539968335A597879c604af995E05d1b12f9FA', '1712329691', 1, 0), - (33684, '390000000000000000', '335444024178868451', '0x7a13CF8Cb2D20EFF363e063Fd1B3e8769c5B7dB9', '1712340911', 1, 0), - (33685, '186040287827297460', '160015648226111833', '0xfd1e61f7AA96058e7e853630ef5a57AA577231CD', '1712341931', 1, 0), - (33687, '17497205069973621204', '15049571488602182150', '0x9164b88a38B0c5DFC7D740e291d8d06CB89d1482', '1712342795', 1, 0), - (33691, '92612960000000000', '79657599983375837', '0x8329849f8Ae380Fe1a8994FF92414F1eA132D9ab', '1712345867', 1, 0), - (33692, '645618290135054436', '555304608529186940', '0x5086ffD7AE88071843838134813654dF021CAd15', '1712346971', 1, 0), - (33727, '236366535231444703', '203301901946800252', '0xceEB593F57259B70490Eb8EdDcE50a2320640347', '1712371751', 1, 0), - (33730, '269005668743565282', '231375241154536383', '0x2d30B56d3CC7c1aDDD65ab4F24f975b7067F0F1A', '1712373155', 1, 0), - (33741, '17108735879122021', '14715444133092516', '0xf8D0C5Aa8b9e8fec102F8C7F1CB913021Be141c2', '1712380283', 1, 0), - (33746, '54304435172800848', '46707944269550774', '0xB967e8532ceA5C6D13AdA530064C01bbe4d429EA', '1712382311', 1, 0), - (33776, '10413270595979837', '8956588188664000', '0xd89979b759A1b79753DC1Cb833D3c82DAc3732Eb', '1712402951', 1, 0), - (33785, '9063379560617987654', '7794815049245254464', '0xfE92FBa1DAd7C8A0D623391791D3c4d2A24851C9', '1712406983', 1, 0), - (33801, '100814820645040801', '86704178711163134', '0xa029230C4DE60512BfAf1671B949175a6B2E9863', '1712414843', 1, 0), - (33820, '9007664092586545', '7746897849509483', '0xd8E057CB619ba88809BDDD2eb808438A7caB77Fe', '1712429219', 1, 0), - (33840, '3000000000000000', '2580102156302200', '0x5991f7500aA148fD76A3F128D20B1A96E3Ec5249', '1712436203', 1, 0), - (33887, '269912773109144828', '232134175970803751', '0xA8A94a24D36Bf5D69bA2Da73B4a69dF5C98500a4', '1712460923', 1, 0), - (33900, '310575059372531226', '267105126793583953', '0x435c06294e913B35EF1105C84d2Ac31b984d6452', '1712471015', 1, 0), - (33906, '20945432633110868', '18013785300457278', '0x3907dc71a5AF27cF2e9f012053F746bf8e4Fa7Bd', '1712474147', 1, 0), - (33969, '459153409304717155', '394854689794956576', '0x942fEB8FAEdC8Acb3d637d396969e8f92832006A', '1712498735', 1, 0), - (33975, '2573802802285769564', '2213373758084162542', '0x91C46fa14994d8BBEbF35e02A7dD2c8b4502B64c', '1712501183', 1, 0), - (34055, '1066709599130356', '917330197991392', '0x6C004091AAc7F8E81eF8c384A8285CE7Dce0b6D6', '1712543723', 1, 0), - (34061, '1314053525930849090', '1130036686738511792', '0xDA2C02f33B65EAFa5bfd5Ba8e072ED752910Cf93', '1712549291', 1, 0), - (34064, '21971561017839146', '18894717395536731', '0xB82c2A8b321b00a0d15725718639CF9FB9FD701c', '1712549915', 1, 0), - (34070, '1500000000000000000', '1289943671744288190', '0x82018FE5AF01bBc9B984d1761bd073676d5b0dEB', '1712551271', 1, 0), - (34084, '20019711345096132', '17216199973169391', '0x20224547fE6342E1815C167C401D8C35A14Efae1', '1712558663', 1, 0), - (34097, '17788080206203819', '15297080996314966', '0x6EfE1a2451E2e50808570c81a3423934aA6c98a1', '1712565611', 1, 0), - (34131, '5003721778126072655', '4303012828575203127', '0x6aD746A1545Aff2594Cf4Ea70e51C589213304ba', '1712578655', 1, 0), - (34137, '256894950000000', '220900967802041', '0x4Dd2a335d53BCD17445EBF4504c5632c13A818A1', '1712584535', 1, 0), - (34170, '7350700000000000000', '6320781097574959215', '0xfC8743057CCC1d1c6c53066e24A0d4c1D465893A', '1712603939', 1, 0), - (34182, '2316788847551150840', '1992179677401307095', '0x23AeFFda2Dc18ca6cdBE19AF8831eec238dc79bd', '1712610395', 1, 0), - (34183, '38961287512189842349', '33502356189782315137', '0xBa134cf41C547b033f0DF37708FE4B198102AA3B', '1712610983', 1, 0), - (34194, '13562623198763041332', '11662341320999776976', '0xea26Dd84bBcA5BC9075F8222A344faCB4a9bEfdc', '1712618063', 1, 0), - (34208, '1000000000000000', '859888323231115', '0x20740ABeB6224D656BF6D78aa673d8b6Bc611fD6', '1712628731', 1, 0), - (34209, '1000000000000000000', '859888323231115297', '0xDCD21d9aa09E8C9cf532EDB9fC755b6bAD9E66b2', '1712629727', 1, 0), - (34220, '1000000000000000', '859888323231115', '0x436f795B64E23E6cE7792af4923A68AFD3967952', '1712636207', 1, 0), - (34226, '11629417134569303371', '9999999999999999800', '0xfd6db5011b171B05E1Ea3b92f9EAcaEEb055e971', '1712641055', 1, 0), - (34239, '10000000000000000', '8598883232311152', '0x6053c9C262852681ffd1878FbD88F875180A2F82', '1712655911', 1, 0), - (34256, '22565047776281011', '19401710510609051', '0x907dbc8ef6003A6791fD11552b814E253E82DB1b', '1712669351', 1, 0), - (34264, '200000000000000', '171962503274670', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1712673299', 1, 0), - (34267, '200000000000000', '171962503274670', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1712675615', 1, 0), - (34358, '10270790073138205', '8830953857927387', '0x6b9d1fA78978682F951eD8fBa633f4FfC60AE755', '1712719403', 1, 0), - (34361, '92279244643746164', '79342849546171407', '0x0D67123c5EA513e2Bd498538E6B4026EfAAE6845', '1712720507', 1, 0), - (34367, '100516149406637651', '86425043357480772', '0xc32F1db0BF75b2443Ad0a903A9a1011915f69946', '1712724575', 1, 0), - (34372, '42952115185368242', '36930766241089464', '0x8542d8783C4d9D99735C422DC3a8f10E39F93d06', '1712728271', 1, 0), - (34382, '100648507925460380', '86538846868613192', '0x119386f08efF2a980e9B9007624Eb8D26827b1a5', '1712734103', 1, 0), - (34400, '39999999999999999', '34392500654934015', '0x26784bb8A51E640F2832D943F8EB2ad84311312c', '1712749079', 1, 0), - (34409, '100000000000000', '85973341709703', '0x9EB0cb7841e55D3d9cAf49df9C61d5d857D17C82', '1712754623', 1, 0), - (34421, '156671343489461875', '134695589499378820', '0x8791C9057566AF6F55f18FDbeA4465E1B1ee2f8E', '1712760539', 1, 0), - (34436, '31016738353859192', '26666126452168117', '0xbA497a8562A499094F5BBd1521e1ABA0A41075fD', '1712765795', 1, 0), - (34443, '499999999999999999', '429866708548518953', '0x73f7ACC8C6f255Dec4D083E4CDBa01Ae79Ae4383', '1712766659', 1, 0), - (34496, '3242279618207573671', '2787496135345676759', '0x432bDcCD97d43566135c8E1e0105FdE6E9B3068A', '1712793623', 1, 0), - (34518, '600000000000000000', '515840050258222744', '0xD3bBe6c9df8fE6ddCddB0E89BA291F93c5838756', '1712806295', 1, 0), - (34533, '2575292552597150', '2214065066268900', '0x898395C29305a45bAA67D60cDE6f808F00452c77', '1712820047', 1, 0), - (34546, '200053279476622158', '171992489565905091', '0x8E024D74Ae17Ce27Fd4a79726F952b0B2c23ab6C', '1712826767', 1, 0), - (34555, '1009530065951852712', '867926733262984375', '0xE7483E7C7D04Fda9f3f3f502D31Dedc555Cf91A1', '1712831543', 1, 0), - (34563, '1000000000000000', '859733417097037', '0x316BDE155acd07609872a56Bc32CcfB0B13201fA', '1712831987', 1, 0), - (34564, '150135719264681661', '129076694951746347', '0xd5B4f28450d555D296038DdE1c51100e7C88C359', '1712832815', 1, 0), - (34600, '904466183629956', '777526347142693', '0x57092D307d93CDe91fE8940E13268931D2Ce8A67', '1712844923', 1, 0), - (34614, '114067397275733817', '98058289339164121', '0x4FAC583600110524a4c65eb0B913869BbB167b42', '1712852723', 1, 0), - (34645, '39108752807393574', '33619925500808051', '0xb7A2b8641fcD13dfa4Cb4EdE866cb237859607e5', '1712874551', 1, 0), - (34649, '5688100739610188026', '4889788330724591296', '0xE4B867d583E0E006133389FC67f7Aa5A566B6794', '1712875379', 1, 0), - (34653, '790827083888179664', '679836244722062829', '0x93b2d3AEF21D391280e6C68C14F16Bd3cf9a9AAc', '1712876279', 1, 0), - (34660, '50116397574531815', '43082671572848061', '0x6713AAA85838C9CC14C41158e01741F723671496', '1712878943', 1, 0), - (34678, '10056274868346243115', '8644898842837358101', '0xdA661AEc1ca8D28d44caC070c30dd92752A656EE', '1712887391', 1, 0), - (34702, '3297057447147270540', '2834322697297057248', '0xE6BbB04E6771b2D43AE02E52d92193CcDF6e181F', '1712905595', 1, 0), - (34709, '5070214150665265', '4358620763439001', '0x1eb0CCA66d2a1255FD00B5998CDa7E71F6d434f2', '1712911199', 1, 0), - (34745, '10194747754389301335', '8763182510919574431', '0x7112bA622F8551b88e5AfBbB6fa8E9c84A46CeA4', '1712945543', 1, 0), - (34763, '5137196005167969', '4415821486929039', '0x1273843cd557DE9a8a691de3ABe06Fa229c3a1fb', '1712965871', 1, 0), - (34811, '489999999999999998', '421193298137449957', '0x6713AAA85838C9CC14C41158e01741F723671496', '1713001271', 1, 0), - (34851, '218526457075867453', '187818405375834912', '0x364B3ADf0c345d256b05Ec267604Fdd930A893d3', '1713027407', 1, 0), - (34854, '2353779569947608157', '2023018774702858768', '0xa0493D5a2BC8E6010cFaC822C9cD1C2622da1127', '1713032867', 1, 0), - (34881, '120748358970034009', '103780405068422100', '0xE38CD6c819Ab3bBd4A395f1233C3E94834e6DF28', '1713059471', 1, 0), - (34885, '187386892996866144', '161054674577846643', '0xe21c7E7bff8ECd36F2B7BfdA2F5c926d688bA938', '1713061979', 1, 0), - (34905, '303782601904119653', '261094078190931732', '0x8DE24F68fcD05Dc61fD84F06f2694A9Ac49958AF', '1713075035', 1, 0), - (34917, '20000000000000000', '17189534657639061', '0xD14dB07B3Bafa5cc41De3049e88FB7b7C95BeD35', '1713083351', 1, 0), - (34921, '485945738432939844', '417659055626251270', '0x2cD2a182C196aeE75230345F1013599897518A2c', '1713084143', 1, 0), - (34942, '18416361695582377', '15826511772934369', '0xC5492384195bD95E73e2A1a7D0011bAb122F6C42', '1713098819', 1, 0), - (34985, '500000000000000000', '429686168053778837', '0xC9bA70F8ec1850A6EcF50dE37384C92F99A1E9Bb', '1713124595', 1, 0), - (35002, '46044630735272973', '39569481880181385', '0x1C1D482116e406555e130cfaE045C07c742B8149', '1713139895', 1, 0), - (35007, '1006676849268375700', '865110235661159737', '0x2a9135cb333dAf6eb2Fe9A8f165a982381BB8e29', '1713140879', 1, 0), - (35008, '104376382592550356', '89698175743016216', '0x2a9135cb333dAf6eb2Fe9A8f165a982381BB8e29', '1713140927', 1, 0), - (35016, '61971964976751438', '53256992315246629', '0xa8b88AcE86Ec14e69600E1e18c2211e4526ac58c', '1713142847', 1, 0), - (35054, '15060935526474666', '12942951347351842', '0xBa4C24dcDA735302a0423A27d60433673Abb4905', '1713164999', 1, 0), - (35084, '100000000000000', '85929935734808', '0x9EB0cb7841e55D3d9cAf49df9C61d5d857D17C82', '1713185075', 1, 0), - (35085, '1045925451415786157', '898763068235592543', '0x43ba2d3E1F57F5c8acf033FeCE350E27551048A4', '1713185555', 1, 0), - (35087, '239999999999999999', '206231845763540811', '0x6feA887f35999E815d02d206BE18Be1446f7D834', '1713188087', 1, 0), - (35092, '2513568588296545019', '2159907872573558704', '0xD193ACD7754419e859169fce23819535238bB247', '1713194579', 1, 0), - (35094, '994360000000000000', '854452908972643510', '0x1BC3606e006fd82C113E60cbC1baaf91798753C8', '1713195767', 1, 0), - (35098, '100000000000000000', '85929935734808671', '0x3d3be777790ba9F279A188C3F249f0B6F94880Cd', '1713201539', 1, 0), - (35140, '16557934881593509', '14228222802764770', '0xf6bA80b50FBb1930be1eBeaCEb0B53fE17D71b9e', '1713237215', 1, 0), - (35142, '100000000000000', '85929935734808', '0x9EB0cb7841e55D3d9cAf49df9C61d5d857D17C82', '1713240071', 1, 0), - (35160, '52957921188439555', '45506707643716734', '0x54bB766E58B8D541c15B271E0D97783f39a52b3D', '1713256391', 1, 0), - (35168, '11666926419722654', '10025382374695090', '0x7e79334E893387502d393E9C82497A74A792C7a8', '1713266039', 1, 0), - (35176, '113539883411559454', '97555262895353719', '0x5Da28eb1Ab7D7f918890c70476d1d6b80e658011', '1713272711', 1, 0), - (35212, '21051971408264508', '18088186666128145', '0xEC614808204B5c184FdCaEE0dF72E133eDDF1DF7', '1713310331', 1, 0), - (35236, '47563720282395552', '40867500450134863', '0x49BDb2EE04c4FE01FEA5635243B5B86BAA4C6C6a', '1713331799', 1, 0), - (35240, '15280878433324640', '13129572340948479', '0xdfD1A1306120e2CcCD1806786cad27A4F570F5E0', '1713338627', 1, 0), - (35241, '628001250116997766', '539588602814587296', '0x61b72dCcD194930bF376a00F7633fbd64b864855', '1713339251', 1, 0), - (35253, '9757540000000000', '8383832634929561', '0x2fd390e0259a11F7cBfC2050320B50c271507218', '1713349811', 1, 0), - (35305, '18297956660767249', '15720520121417410', '0x19cC7145C0ea2e429264f73eA36a7343dCD819B9', '1713398255', 1, 0), - (35340, '52145195840846177', '44800062414012788', '0xB6A58409237029e9a60171b12367f8888bc50266', '1713412283', 1, 0), - (35344, '1611723921709744744', '1384697691176267844', '0xe6c4A8d4fcE7E5a702Ed1ceb4CB1400Cb3771790', '1713417503', 1, 0), - (35345, '22546468394115778', '19370589658055114', '0x781ad22C61a944923E003c788912dFFF2A5b7b36', '1713418943', 1, 0), - (35347, '398371394944778720', '342257097124631593', '0x6bC85B88aA5625ac63BB69041Ee88431832A1A36', '1713422447', 1, 0), - (35354, '50000000000000000', '42957037260679126', '0x7872c6a21d268004B85223A5661f92cc2aD92f51', '1713429827', 1, 0), - (35356, '511847286269272011', '439748858960932263', '0x05aB93526aaB8B2E2B707c2780d453015EBe85a7', '1713431123', 1, 0), - (35357, '10000000000000000', '8591407452135825', '0x7872c6a21d268004B85223A5661f92cc2aD92f51', '1713432731', 1, 0), - (35359, '10000000000000000', '8591407452135825', '0x7872c6a21d268004B85223A5661f92cc2aD92f51', '1713434783', 1, 0), - (35375, '9126643011114879', '7840375810882237', '0xCb194d02a20A2Cdd45Bb2fF2d4D035126FDf0F4d', '1713446507', 1, 0), - (35408, '30014392829813594', '25784301986458588', '0x7139157394b1CbD8B50dC7941D4664cFFf39B5C9', '1713468791', 1, 0), - (35445, '701816959988800027', '602906097024049956', '0x3De55aecb985DE0464B851223f956c7f11752E8e', '1713515351', 1, 0), - (35448, '3003420000000000', '2580131762493841', '0x93a8eFe18b76DF906DA6Af455465a3Ff12d764Df', '1713517667', 1, 0), - (35449, '100000000000000000', '85906458720187020', '0xbAefB03570d091341431A974279E4B6FfD366784', '1713519359', 1, 0), - (35516, '1023783181573229', '879416521073871', '0x000000000000000000000000000000000000dEaD', '1713552179', 1, 0), - (35524, '176636632560100919', '151728584426932950', '0x5C962B346EA1fbAee4ADa5a5fDa17464546625De', '1713559031', 1, 0), - (35535, '50228473708595485', '43145609737196055', '0x437f5C1A9AD2129b07DC4A33C45D3Ea5E1340259', '1713565727', 1, 0), - (35543, '1844656130133789', '1584535774505506', '0x0be18441E896f8dC6d785D550DEd0DC435cf192f', '1713577667', 1, 0), - (35550, '18367047797880919', '15777056673258715', '0xD61Adc53896c054234ABE2cc5A91b1eb0D3fF747', '1713581867', 1, 0), - (35553, '10478058608973473', '9000516921318933', '0x141812B7adF3D13b82Fec84D813202a24E28b498', '1713583655', 1, 0), - (35565, '20000000000000000', '17179741509769445', '0xbB79E21c9343266F4D632b7FE8550fca91004B26', '1713594443', 1, 0), - (35568, '1429347811312620091', '1227791296295276244', '0xC9d535f40eB683F587AbFEd591e8f7941e72C218', '1713598271', 1, 0), - (35582, '11576792765328937', '9944315361026007', '0x111fa8b271E7138307a1F9776Ce710859cdA01cC', '1713608087', 1, 0), - (35585, '8945074540065278', '7683703419197064', '0x751F4bCDc83c3Ca66c5C13b175Bc030E72737e78', '1713613487', 1, 0), - (35600, '10657002366221721', '9153431874896477', '0x18B1EEc5441210a94c2d6383489eA08f463bd5cb', '1713618707', 1, 0), - (35606, '2000000000000000000', '1717824874264654648', '0x37d86C42080E8e0bD08A9272e52e72c80602336A', '1713620975', 1, 0), - (35609, '10107483913084302', '8681443641063030', '0xe92Ec5732b563D4eBA6bB317e39914d44224F105', '1713621755', 1, 0), - (35625, '706000419363962', '606392540812345', '0x5AAD6Df07A42F63eC930169282d36333D110f897', '1713629939', 1, 0), - (35633, '100000000000000000', '85891243713232732', '0x9D011e6C577119227b60D592BcFDE99C64514c8C', '1713632567', 1, 0), - (35636, '1199608498756514728', '1030358659271610517', '0x2376d40A8A84738f974bF1FDa6A8E82d51Fcf640', '1713634991', 1, 0), - (35639, '3366490320173743', '2891520405482818', '0x81C47E9e9150dcF83D9CBa2Aae0Adf317CE36039', '1713639083', 1, 0), - (35643, '118851562087726707', '102083084849753462', '0x531C03bdDB9B27Ca08f12cfB87E7e6ed8d0eBBAe', '1713640571', 1, 0), - (35644, '1000000000000000000', '858912437132327324', '0x992Aa2ccbcA844218d7Be2e8FDe52D1d1a88c23a', '1713641015', 1, 0), - (35682, '9488855924343986', '8150096367575815', '0xEa69D679A2eFE92831C6cdb7826224925337833A', '1713667115', 1, 0), - (35686, '3000000000000000', '2576737311396981', '0xcf15D742aBeD8df35e8B57Ba2d4B3EAE4B9556B6', '1713669299', 1, 0), - (35688, '21047875443162965', '18078281993344766', '0xa70f9174AFdFd565dCf4723Ec5e3d5FE335Db5b0', '1713671795', 1, 0), - (35697, '7714671026695708', '6626226893213364', '0xFb62Eefd26fe8e655E6E7cB9BbCB4f388cf21bCa', '1713675695', 1, 0), - (35703, '32168186211557078', '27629655217095017', '0x0cf69779F9Fe8a0fceC126A4242Eb71FBB3665de', '1713680255', 1, 0), - (35707, '999999999999999', '858912437132326', '0x3b1510693A287BC3Dc3b09b2d087D7832D6aDf4B', '1713681971', 1, 0), - (35715, '117234696038662', '100694338491034', '0xdB36e1fa10690F5Dcd1A74C2957Efc65Cf834A1a', '1713685259', 1, 0), - (35721, '11715938828943873', '10062965572861446', '0x12b1c89124aF9B720C1e3E8e31492d66662bf040', '1713687335', 1, 0), - (35747, '2804274012853109085', '2408431899785065070', '0x3b6e9d6Ea492F2AD3AcBcB8B67cfFDA085ddE7ed', '1713706427', 1, 0), - (35752, '10008556583296519', '8595781594641834', '0x950404FbC270B20dC0CBb8bee01899C2eb496F6c', '1713710651', 1, 0), - (35762, '103134229051581186', '88576139874024056', '0x144B34dE3Aa02700A2A06f545a5A52783B0594ae', '1713716867', 1, 0), - (35774, '6762874560566926', '5808249390487600', '0x11BF5ef00bD90fAC3021af206455c59bB56eccb3', '1713721847', 1, 0), - (35777, '392691091292579915', '337260106072237497', '0x0d16f51A0df7150Fd3295Bcde2714290C18c2342', '1713722855', 1, 0), - (35779, '1006266310139585176', '864225061428094980', '0x455063efB7193ADb24DcA4A7C3df5C68a47FA4ee', '1713726107', 1, 0), - (35808, '3700457369630066503', '3178112956138791469', '0x14Aa7E2D05657e8d26EE0CCE93F725087EC7aF3E', '1713751499', 1, 0), - (35810, '104886894667509302', '90081404965705674', '0x142970fe32951F656Ace3F788B5Fee6078F75CBE', '1713752315', 1, 0), - (35824, '100000000000000', '85884328305517', '0x01D03f08E1C4930DCd4788B9eB532F919244E281', '1713771599', 1, 0), - (35849, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713790391', 1, 0), - (35850, '730700701243307132', '627504845769503885', '0x8D14CebBABb345B4695DB2f3caE5261bf83Ffc8E', '1713791999', 1, 0), - (35852, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713794771', 1, 0), - (35856, '21074304101179413', '18098009105792326', '0xe2903d810b3f6e7aBCE238cbe2bf9c29b292a244', '1713795971', 1, 0), - (35866, '211421717539580', '181562919032730', '0xa57bfeff4Dd1c5a4683f0ebC09716A13645E230e', '1713799007', 1, 0), - (35867, '7477450062592201', '6421420070204242', '0x568fDD48aBC5B59BdF5dA6cd76D2DCE9A9a9aC97', '1713800303', 1, 0), - (35869, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713801155', 1, 0), - (35885, '1500645172447458', '1288711117820372', '0x81BA368f90BCc20874Caa62aAf73A0B897f921F3', '1713810539', 1, 0), - (35898, '5000000000000000000', '4293856873968967805', '0xbB3ECe8BE476b3C461264BE33EfcbeC677Fbe45b', '1713817619', 1, 0), - (35910, '108038633594827241', '92780485903072720', '0xeB0fe82e86Bf3aEA3EcEdB2B6D4D8ee4095e876E', '1713828659', 1, 0), - (35918, '47177718280048322', '40514873986991383', '0xB94a693f3150c9c7ECD2f51966BA2Bc0E9D7787C', '1713836351', 1, 0), - (35923, '22017890606076421', '18908334185839600', '0xaEAAC4b78eDB9A049Dfa837b660a0b4882cD1AC8', '1713838091', 1, 0), - (35924, '3461820000000000', '2972911920688650', '0x7d110d9176116F3377590Ef846b5497D973145Ac', '1713838463', 1, 0), - (35928, '269441704627282859', '231388823109554948', '0x2Cc001B119f7A107504D5c416FF2ADE2fBB327B1', '1713841091', 1, 0), - (35929, '20006828648850738', '17181291744037403', '0xa444dD3E7D126614C2aFD82c8cAe6d8A399A02B6', '1713842903', 1, 0), - (35930, '11237705978743871', '9650620212894307', '0x5A3aaDC425196c9e6C6D8Efe4574159C2a15C1b6', '1713843491', 1, 0), - (35931, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713844535', 1, 0), - (35933, '10426876877686478', '8954303391056434', '0x0556ce61B4D4837F140163362747Cb6e1a3Bd8De', '1713845387', 1, 0), - (35937, '3267271175005991', '2805838958784028', '0x4914BbB6F3e2E18D492d8B9d7a6e5Fd51A90D8d4', '1713847247', 1, 0), - (35940, '9999999999999999', '8587713747937934', '0x5469320Cb552Def96DD5d9100e5B07C71947281F', '1713848555', 1, 0), - (35946, '99999999999999999', '85877137479379355', '0x7919d60b092C9fBFD21E1C81E5AE8e4531B1aDb8', '1713855167', 1, 0), - (35950, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713859139', 1, 0), - (35952, '1000000000000000', '858771374793793', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713860051', 1, 0), - (35978, '7380956668477645610', '6338016590151087676', '0xB92456352b5938a631C0c85b480D792835eDd05b', '1713879887', 1, 0), - (35985, '23291061370673048', '19999999999999999', '0x99cB62e28EA987f96A03426880C2EE43f7519376', '1713890159', 1, 0), - (35988, '99999999999999999', '85869852308160631', '0x1Dd413ba685982Ff940CF5BC0c33b6719bbE87C6', '1713893087', 1, 0), - (36038, '1000000000000000', '858698523081606', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713955487', 1, 0), - (36040, '1000000000000000', '858698523081606', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713957947', 1, 0), - (36052, '1000000000000000', '858610553438953', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1713967619', 1, 0), - (36063, '10000000000000', '8586105534389', '0x9c46d494Bc1bBfdC63CC470f84904996483e86b9', '1713971615', 1, 0), - (36072, '102142118842564998', '87700301188842054', '0x7Eb47dF291FF8f31f6402F9196229b013E3BEe37', '1713975395', 1, 0), - (36076, '10000000000000000', '8586105534389531', '0x39032febEdD5f95C0B617e013020Fdef1aaf47AF', '1713976631', 1, 0), - (36077, '12000000000000000', '10303326641267437', '0x39032febEdD5f95C0B617e013020Fdef1aaf47AF', '1713976631', 1, 0), - (36085, '2699200860995489', '2317562345102235', '0x32e9B5AbeBA7b4874033f2dC634F2Fdb93709b3E', '1713981767', 1, 0), - (36094, '7377973488987101650', '6334805900637139218', '0x4625b719F598df4Ba474219b93CD1FC9CF49F758', '1713986723', 1, 0), - (36119, '3825554876357946298', '3284661789600782134', '0x3Af78E01cB7fe0128d081c6a47221311B3d914d9', '1713999347', 1, 0), - (36132, '1000000000000000', '858610553438953', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1714011815', 1, 0), - (36161, '100000000000000', '85861055343895', '0xfE2756c25a5b6b09ebC7d9580395097e7073F085', '1714031207', 1, 0), - (36173, '1000000000000000', '858610553438953', '0x52B4b119c8d0cb913933AE2F49d7Dca620E612A6', '1714043555', 1, 0), - (36219, '13855571574982720', '11895467476188623', '0xef618E297dB4069A7F81Cc1258017D726DfD0c57', '1714075931', 1, 0), - (36230, '102140169413931278', '87690721144236221', '0x2A125ECF6751a57Caa904249B943b1fEbC3c8286', '1714086983', 1, 0), - (36236, '1007030253150688', '864568852974724', '0xFE2D4f837c1def75221Be77BE602370907126a75', '1714092191', 1, 0), - (36256, '1043393989772719762', '895788326235653891', '0x876aF25CA4606CcFf9cF0335D74D7B93bB747580', '1714104635', 1, 0), - (36265, '7717393610269352', '6625638227560415', '0xF8219bD4D474a8ed9e4041d6caE01467F3eE1E56', '1714109111', 1, 0), - (36276, '3418249720713996', '2934680692037412', '0x8d8c34eb0eA94c7c5A3D1e2f476a3290B27dCa85', '1714116791', 1, 0), - (36277, '1009333411207003789', '866546190510253690', '0xaebb8FDBD5E52F99630cEBB80D0a1c19892EB4C2', '1714116995', 1, 0), - (36280, '23825259990572072', '20454775452303317', '0x00f9991De857E967850Ba8C55716D3371A65C7E0', '1714118747', 1, 0), - (36301, '13675293445909545', '11740692726590409', '0x05EA36f3bd174aAB40602a766Ece2D4d888a642f', '1714123367', 1, 0), - (36320, '1000000000000000', '858533147608777', '0x3432963cE642772584Be312DD7153f94681d8691', '1714131263', 1, 0), - (36340, '11062671966686911', '9496875330772703', '0x4E3d53a840f888C2d4D342435B843940c951EbBf', '1714152191', 1, 0), - (36358, '20292229848263426', '17420093231785192', '0xAEFF4F831AB6073fe9B160F8d8D9bBaD0a82E922', '1714163579', 1, 0), - (36365, '1047121037157414455', '898912846377343567', '0xe38E70455e81cc0533546f93A9f7584fe1aF170C', '1714171727', 1, 0), - (36394, '189696709655747', '162847276651008', '0xbeB4e0f45f7AE82d137C2F0716bD90d923e4024d', '1714199675', 1, 0), - (36397, '2097776412840005', '1800859785463159', '0x45049f48D6F3a1cf5E655D705A954bA477baBC05', '1714202123', 1, 0), - (36402, '37697183538774566', '32361571731229392', '0xca0084DF3e7C2160102F48E1458987B96cD57cD6', '1714204667', 1, 0), - (36410, '527304651348983', '452670616129422', '0x6Ed6C5D30469fe5477c4B24dF16256Bc58a6e061', '1714209107', 1, 0), - (36418, '350000000000000000', '300461441483553419', '0xb884411f22CfE34025E3884C70aEe520C8240d3e', '1714218503', 1, 0), - (36433, '100805562937577485', '86530553308746639', '0xf79E941e8D5624c4239caDC03fD3d2Db6e0dd45C', '1714234715', 1, 0), - (36439, '1010692760504614067', '867569221807378433', '0x19160D8DabD011583D684510b65af387028d71D1', '1714238807', 1, 0), - (36478, '108937051598479862', '93510547195466866', '0x88Cf20204c34A1Df15a0F7C82bB49df71D3Dc6B1', '1714268699', 1, 0), - (36485, '88745154247274619', '76178011180215944', '0x5483128B2ad2003bd33324c79b65E3378575D684', '1714271147', 1, 0), - (36495, '102482126923139663', '87969700168310808', '0xAE0A65186636531eD21CCcfA70cEB6d51184800d', '1714278011', 1, 0), - (36497, '2384900000000000000', '2047175875738323367', '0x384494435f661375A4fFfa503821E82677192F36', '1714280075', 1, 0), - (36527, '35339552459648731', '30335141622198754', '0xa22147329D8DA45aC772a13959382903AA60f9B8', '1714303607', 1, 0), - (36535, '631462060104679122', '541997468299265705', '0x27cc46Cb38b67002D5Df22f6FabAD8442395934f', '1714307603', 1, 0), - (36548, '1006683474618400377', '864058079010213645', '0x00Ab14f5ED7914156630E69335aC948Cfd8de8d1', '1714316159', 1, 0), - (36550, '17217958814007655871', '14778544390974450551', '0x758242FE3500D99eeb22181290f74759555F20F5', '1714316615', 1, 0), - (36562, '217694119904086874', '186851545494423555', '0x3a359F9D73c2b84c0B1A2F4138F5e8d3dF4e4383', '1714331975', 1, 0), - (36564, '2006851710267294571', '1722523988276687366', '0x2AdCb327911E08266Fa4083D63026535c47242EA', '1714333739', 1, 0), - (36580, '10000000000000000', '8583215089904488', '0x3eeB455da20cf2C5c89d9139Ff1eE04D22003a18', '1714346255', 1, 0), - (36581, '25054494457092365', '21504811489404355', '0x65db15A50e67c5A5E99d6956224D7f0223F61cd8', '1714346675', 1, 0), - (36582, '421999999999999998', '362211676793969421', '0xB754EA7AEe014A86ae290e546068B9E39948efBb', '1714346867', 1, 0), - (36590, '123405926387198416', '105921960955024396', '0x41628c17feaA977a4955C8902A747BE862c145A8', '1714352267', 1, 0), - (36592, '134313059624319163', '115283788013869755', '0x24B94E6c7046db68b342281DEacB762bA3bb1BE8', '1714352807', 1, 0), - (36593, '90867024276394116', '77993121394386347', '0x769a617D57B4BC4D5e56473a503fa7D300E07003', '1714353011', 1, 0), - (36595, '74848186947598327', '64243808766061815', '0x4B0467d56006eC02214D11523f31310739Ca1232', '1714353443', 1, 0), - (36597, '77075820770044802', '66155834790022235', '0x084fD32D62496e68Fa6fDE9Ad4a50fDE66cba212', '1714354091', 1, 0), - (36602, '121436444386332967', '104231512192112035', '0xd5e7e33613dD637c7df49a0A6A795a7EEc896DC1', '1714359011', 1, 0), - (36606, '63529446310628686', '54528690222666518', '0x154eb23E1407dd4c9a4E58d53bfE90E933f0E8Cf', '1714360439', 1, 0), - (36610, '45988894733085510', '39473257524104861', '0xB0498853b990DCb6417632b1B585424ec148dC98', '1714362611', 1, 0), - (36613, '620143457724505', '532282468424651', '0x81e1CeBD9BeA2396716689824216FB33C7448c9D', '1714366427', 1, 0), - (36666, '99999999999999997', '85825026558057397', '0x3A710A7Db1008509bD3B21574C582f79C37eb192', '1714408823', 1, 0), - (36671, '5039305096168899', '4324984937128497', '0x5267A70B1FcAcD6f5cC5e96E2632F407f406E174', '1714418159', 1, 0), - (36703, '8606201743597519', '7386274932082569', '0x018da26C191B345cAF808EA0acd161377Bf16e3B', '1714451879', 1, 0), - (36717, '20008395869429422', '17172211068779061', '0x8E208D6dcD7d9b0bba54aBd8f80dFd9848a22518', '1714465067', 1, 0), - (36733, '10002458441429835', '8584612613815810', '0x6225AdD8fF0586AC9c084D143090d1f4766B4318', '1714472855', 1, 0), - (36738, '11012472511362653', '9451457457575767', '0x6195100E65bC8dC01Ced1CEe5D1990D3aF239EC4', '1714474739', 1, 0), - (36758, '54908899875058786', '47121647830611484', '0xC0AfC8FB125C293B2DF655146365E278fF959982', '1714485803', 1, 0), - (36765, '18455333919657073', '15837974309032506', '0x3E9395B6FDDaeEec6cbE22eE642BE0E9EDdc0f6c', '1714489703', 1, 0), - (36776, '541203154551528800', '464449014852272813', '0x106a8e5b8E23e216b2946d68d6B52c151ef30E23', '1714493735', 1, 0), - (36783, '32802585257443586', '28150479684568802', '0x6125B5b71fF0eCb882E23E4C931cc8cd54D4C81e', '1714496687', 1, 0), - (36785, '929646358231343697', '797802694996007946', '0x9a3330F9C995d13275Ec4DC69ec3Ea81d1Ce3300', '1714497467', 1, 0), - (36832, '10206216900713539', '8758757862069504', '0xbD2325Da89389bFd1DC7915b469049b1A2525ef2', '1714537391', 1, 0), - (36836, '10206216900713539', '8758757862069504', '0x6ee7Bd03F23e819F1df0d3800d04a99Ec86dd1Fa', '1714539071', 1, 0), - (36839, '109009389259274920', '93549535004230413', '0x6d9fB2C0F8624c80B9355910Ba18008689aAA117', '1714540943', 1, 0), - (36840, '10197693568831558', '8751443320270269', '0x97Be92489A7b10Bb0709d2b77c6fE716e950588D', '1714541207', 1, 0), - (36841, '52269560332168097', '44856622876032224', '0x22e227becEDf2a84BAa6F1F8ef01013aFd317744', '1714541303', 1, 0), - (36850, '155007458631662781', '133024097976457080', '0xbddD2381BA7217c6E921aA7485bBB8919C5f6f07', '1714547651', 1, 0), - (36940, '51200576711087739', '43935261622103357', '0x1E510e363ca6672d9d822b2897F49E5aEF0A1D0B', '1714582439', 1, 0), - (36956, '113524833457516419', '97415763238494456', '0xB7f9A6F1Af9f36f51E7737e69319BF04Db8107d0', '1714597427', 1, 0), - (36961, '154633837698394056', '132691437310266932', '0x6bc7BEA2fc41c0DF284a02c9Bd108A3a45B260Ad', '1714612331', 1, 0), - (36967, '85243457753602018', '73147488925963198', '0x3E5858Fad8464EAf14A22f304aE5EBff3Bf5fe60', '1714619663', 1, 0), - (36991, '1009044474014367012', '865861984413125490', '0x02164f332c2D43EC069c68B2613465EBbbF4cFb7', '1714643195', 1, 0), - (36993, '22440558113288873936', '19256263405327080521', '0x1b7767c74359F52e2006857b622C57B68475d6bA', '1714644731', 1, 0), - (37016, '9489335045279289', '8142115240035858', '0x2999db76c22c28023337522A7Ec71879F7E1c0C7', '1714659143', 1, 0), - (37051, '12000000000000000', '10296336088273785', '0xdC0773a69D61a2D10aD4AbA7f3d8cfb250156744', '1714675427', 1, 0), - (37052, '353068928457438330', '302943029143706467', '0x93440Fd08b5fA7dA4504101f29006C9f2E1B4cB8', '1714676855', 1, 0), - (37056, '399999999999999', '343211202942458', '0xD5cf7607505B7724caEa3C41a125dD2E6bB7FcAC', '1714680635', 1, 0), - (37085, '24671685829532405', '21168997430430622', '0xcb31EaA144B47e7fA1fc185d42bD0647F69D007f', '1714701155', 1, 0), - (37105, '10000849688436559', '8581009130037582', '0x0Aa63841964E29FA14Bc2FAd239028d0A041c8E2', '1714725575', 1, 0), - (37129, '10014647976384813', '8592158100227681', '0x93C632Ef44E18c491C72134DEb8D9969B4f7ccC3', '1714745639', 1, 0), - (37142, '58950506679569904', '50577122098927568', '0xddFC0cE252006E34f3AD2409B6D08BCcF84E23B0', '1714753871', 1, 0), - (37169, '4306560000000000', '3694852227993550', '0x437b4766E6dB19e66aA5f21462A29ADB65a99d54', '1714769111', 1, 0), - (37182, '16379107878619797', '14052604221899860', '0x6a6605C9bB1cF8de3a703A4D285677E3b822aaCd', '1714786139', 1, 0), - (37207, '42142527655855550', '36156563986689533', '0xD331A43075bEa7d8f78F4D8509dD71eE9F443EC7', '1714808759', 1, 0), - (37222, '50493500855734', '43321357216897', '0xBD33C1A9f63F69b1bAA93fE51B65e2d6E6053b60', '1714817303', 1, 0), - (37234, '15451362345779860', '13255548033308321', '0x30e7D9457307828a1D9fCfF732aE2A3e54FA9000', '1714827731', 1, 0), - (37271, '102259117752695403', '87726934161556672', '0xCa5E80F6bD9a0bF41D63Fe43a3E9A43B406366Bf', '1714852043', 1, 0), - (37280, '10085531435280231', '8652262718977131', '0x79960Bc7A54e627Fd1356D1A44F3737E61013df6', '1714858967', 1, 0), - (37302, '5270336223505725', '4521361508388009', '0x8eFaAe7b67C141eCc1c1ba0c85679dAcC323f486', '1714888343', 1, 0), - (37303, '11487386781747754', '9854898477883246', '0x6f810224AA0DC673F33372cDfd350ba12ca221fA', '1714888499', 1, 0), - (37304, '11485956655211559', '9853671588592191', '0xb1DED04D768b13366EcaAe2DF47CD1dBF10D328B', '1714889807', 1, 0), - (37305, '10443078892497959', '8958998616257497', '0x15a201E1A1893Fc8E4D177f4DD2b818673e76BBA', '1714889915', 1, 0), - (37311, '108285386429507255', '92896801524670996', '0xfE08945f392CF1873f2c5b1bd7C7401E452153a8', '1714893539', 1, 0), - (37321, '10011934064197407', '8589124371323272', '0x8ff8ee837d39AbC02B3c1cF3555DEeB2a7e182b0', '1714901135', 1, 0), - (37326, '1001193406419740', '858912437132326', '0x23542338D5961A72eAA0FE1665FAd00C0DC5559a', '1714902635', 1, 0), - (37356, '7396836155861740', '6345170128428606', '0x8C56Bd89f515A46B23345B624c3f5b2F26ca41ea', '1714933535', 1, 0), - (37357, '204611014901921606', '175519867190012261', '0x55F7e9A62a5229e9316547E54809dD910767dCec', '1714933583', 1, 0), - (37360, '100817713439596236', '86483670890351749', '0x657901938e3e90f4fe0ED63367FDD135A0258A66', '1714935635', 1, 0), - (37365, '62648947619078979', '53741656923825301', '0x56244B407F4a277ce57Aa7281D2c2fea3cFAF08D', '1714938695', 1, 0), - (37414, '999999999998', '857822181634', '0x44a1671C5a8dcB7562A6C609D3656B45E2b137F8', '1714966955', 1, 0), - (37415, '1301194750340115', '1116193719470638', '0xBA5fc5e3b0061da8122818e8536Fe9890c632309', '1714967315', 1, 0), - (37416, '3716521353950283', '3188114455944042', '0xCda80918d1220Bf3A0686D4133E6e12AfFC7dff6', '1714967507', 1, 0), - (37425, '5221943899356108', '4479499308128748', '0x71EF6cB6B7dcC5A07E25D94f6438bCD6829b43e0', '1714973963', 1, 0), - (37426, '51433908335546563', '44121147458487162', '0x3f782f4977d1593Bdd564f8847BdA6885fBd0B6a', '1714974023', 1, 0), - (37460, '18886897991551601', '16200319209621601', '0xed8135aaff69ff8BB73B821B06d600bC8D622b9e', '1715006207', 1, 0), - (37472, '43216118606407319', '37068814409747865', '0x5F56c725Fd56A7aF3f6e2b2E8AE66092970dFD94', '1715016887', 1, 0), - (37487, '10000000000000000', '8577543658502445', '0x9682e6B7B65b0ba062da88872722221afEdEb175', '1715027819', 1, 0), - (37491, '13050124832372220', '11193801549857962', '0x3eDF9c1F4342d833949f258890A9BFec773D989D', '1715033735', 1, 0), - (37495, '339999999999999', '291636484389082', '0x32A6AF1Fb40A0A12E9F6fEB0654843a9c2B16f1A', '1715037395', 1, 0), - (37499, '10890838127503390', '9341663951634335', '0x3C47F81B6B02A10d5c0C51557647C55dD7F5c71f', '1715041151', 1, 0), - (37502, '11979921940253729', '10275830346797768', '0x980E4bD9624Da0b52a92004597861856A13850D6', '1715042471', 1, 0), - (37504, '5214447793800953', '4472715360630943', '0x9D0c2d3d9551d9a5FFC1790F9d515aDBED03ab24', '1715044847', 1, 0), - (37515, '109999999999999999', '94352980243526903', '0x509c76c59E86E18CDCAE958B8fB7776dce03E6f8', '1715057507', 1, 0), - (37516, '2069100000000000', '1774779558380741', '0x832C596F4ac9C6bffE4D470480a00f6850fC95A5', '1715058227', 1, 0), - (37532, '214665793635834046', '184130521689844301', '0x5Fff9D5fD8d250d72246139053F376fF54910dd1', '1715068031', 1, 0), - (37536, '10890838009993836', '9341663850840002', '0x3d7ac3F7C3a11db55838315D9dE9229Feb5CC2Af', '1715069219', 1, 0), - (37537, '54551749833133750', '46792001584140825', '0x597A13C52147551e6bEf9198B85173cc037fb092', '1715069735', 1, 0), - (37538, '107313645480128830', '92048747925885870', '0x8167069754571Abd652F3Dc48Eb378E2E20Fbf2d', '1715069735', 1, 0), - (37541, '14715244447082753', '12622065169038799', '0x3F47C14fA62B665F9B681D62081a2435fd0cEBb4', '1715072675', 1, 0), - (37559, '168686357944632920', '144691459986385977', '0x9d4108CA3A12575556CA60Fa068bd63521ea20C9', '1715078495', 1, 0), - (37568, '6999999999999999998', '6003800107597178647', '0x9012919B2F5FCAE40036CA481Ac192Efed2e55E6', '1715085083', 1, 0), - (37607, '388813627271085653', '333479899606484765', '0x5A8e9552fE014B06Dd6dDA6d639131F393e9042a', '1715105027', 1, 0), - (37608, '30000000000000000', '25730571889702194', '0xeD924397330c63689b690531bCDe1Ba1422E5F6C', '1715105435', 1, 0), - (37665, '19622193159618058', '16829675057572502', '0x0839f5C6cd90FdF95de496d0196C1e6016954c94', '1715147231', 1, 0), - (37672, '22544296046087163', '19335921003885822', '0xB22A9100CbEfd063c4dd830A3510035Dc569Dca7', '1715152403', 1, 0), - (37691, '2700216067163128691', '2315936787795660372', '0xc8F20C9105410069C11EDEd2C05E1B2608103b25', '1715158139', 1, 0), - (37696, '2003969555279789', '1718776090230038', '0x390D9a55eEF37581F183aFFf7b0d4f8EBB8D23fD', '1715162963', 1, 0), - (37703, '7502830744910848101', '6435070861939881409', '0x328Fe119Cb54000b7d8b07050d5f5168e32d9815', '1715166467', 1, 0), - (37711, '649886495612700', '557398373183640', '0x89120042B3923F625DfbD95d01c2b5F3934CfA39', '1715169575', 1, 0), - (37723, '794432103324430460', '681317955411334829', '0x8B6d9DDe87C9242CB0f9ac92204E5a403592ece6', '1715174231', 1, 0), - (37725, '39999999999999998', '34304653729890768', '0xDa5935A810Db02b60fBb0Fdf0Afa404bDba8d19d', '1715174267', 1, 0), - (37727, '2113207453846486', '1812321249090695', '0xBa01aB52040650407e389e8A5F87ee3944B83e27', '1715174879', 1, 0), - (37729, '3901903393133705322', '3346336119723440421', '0x340675000668c6e4C915E2707b8e39F1cE625e80', '1715175815', 1, 0), - (37730, '60894151887057900', '52223819866522396', '0x1d17e9a93E0396D0eB5D5E48b9B54782f6D1A836', '1715176295', 1, 0), - (37746, '1321212699406806787', '1133093603917119188', '0xA65893dfcE29887aCe9505dB7A3cD93912efE17A', '1715181695', 1, 0), - (37795, '449275081717257423', '385305652694472386', '0x94bAf4F1Da2dFb80BfD7D652a40D78d15A84EEAf', '1715195795', 1, 0), - (37807, '77591788620729387', '66543986022925014', '0x4377fd96C7E7bbF77817e67e1b8f3dF368C9F1E2', '1715199959', 1, 0), - (37819, '2899999999999999997', '2487087395417080842', '0x09C2b2bf117C7827f4a3c90cDf9A9962c73E7F41', '1715206283', 1, 0), - (37841, '4038895778557771274', '3463823028363548372', '0xfB1054fbe0592d9F5fC9Bd9e6B5d5F872474C65E', '1715220815', 1, 0), - (37843, '300000000000000001', '257284902974180777', '0x2D317673C5F0aD1849A8D0d9dB09D3ABFF1ACc0e', '1715222123', 1, 0), - (37852, '15000010002400120', '12864253726930853', '0xd84E7b62c63E563ae80E5Ae49519bB5CE8C03B24', '1715224331', 1, 0), - (37873, '10014306394899807', '8588432830551716', '0xE886c52195909ad05892b7B761A2242A58bbefE7', '1715236091', 1, 0), - (37880, '1055827167675010662', '905494634642564055', '0xC9DE307d28202cDad6186884dD76BBF0CCcA0504', '1715238671', 1, 0), - (37942, '21934496990242459', '18809883973792723', '0x56e3Dfe51274A3cC78bce719b63796A250B175C0', '1715267555', 1, 0), - (37952, '4286265795074298415', '3675678650030112653', '0xEE36CDe9D42c6ED810559fBa46EB377060B51515', '1715271587', 1, 0), - (37974, '99699999999999999', '85497535367297467', '0x850db8b32D5dD815F1E3eaec65D9898D56C1C185', '1715281739', 1, 0), - (37987, '10000000000000001', '8575479976659726', '0x7766652Fc4f13741CA3588F358C4899De7baD1F6', '1715287895', 1, 0), - (37990, '10724223731933542857', '9196536587841513789', '0xD589A7B56aD666e014d7e9261473668B3d5E5B3c', '1715288747', 1, 0), - (37992, '142011317235385702', '121781520741112232', '0x362d64d695F695b7C7Ddfb2b085393D52a326C72', '1715289659', 1, 0), - (37996, '91841160545783355', '78758203329355639', '0xcdf7C6f8d99533dEed39a6A750B00f9601F42bcE', '1715291639', 1, 0), - (37998, '250000000000000000', '214386999416493150', '0x10A6ADe209FfE5f8bdF333A5f88A99B16bD5Bb03', '1715292179', 1, 0), - (38006, '7970904605116776', '6835433283704371', '0xCFCd369524a821ed94aE2804DD591c9eb8909469', '1715295203', 1, 0), - (38017, '10012390627415287', '8586105534389530', '0x951FBE16d0881B30562A5429976eA007bAEE897A', '1715302091', 1, 0), - (38018, '13070844527257659', '11208876552153041', '0x69429958637316d5F5e4B3a7BDC272A0b18DD05B', '1715302415', 1, 0), - (38019, '6267710000000000', '5374862160450993', '0x2c7D56F6AF2D430ac4577319d153304941A01fAa', '1715302727', 1, 0), - (38020, '11982804898111783', '10275830346797768', '0xD7c970e2d0245306e0e18195f6eF4699bf70B785', '1715302847', 1, 0), - (38022, '21771760077998189', '18670329260551306', '0x5943e9F2C7AFc1563Ed45925170D88a65F6459B4', '1715303411', 1, 0), - (38024, '10893336048360082', '9341558516173746', '0xf96175D8701A296f741C920599B8cfA62736ec5A', '1715303771', 1, 0), - (38025, '21771760077998189', '18670329260551306', '0xDAfad5d959249358CB3430903d7524D6390e2122', '1715304731', 1, 0), - (38026, '21771760024714940', '18670329214858362', '0xE2Bcc84381BFFD68B345FCc27f0Ed0FC999CEBFa', '1715305247', 1, 0), - (38028, '21771760024714940', '18670329214858362', '0x2808014bca94137E0aAC2895fdF138CaeF37841D', '1715305595', 1, 0), - (38032, '100000000000000000', '85754799766597260', '0x3CF99aD6044d86Be00F447Af2614C795C3108B81', '1715306435', 1, 0), - (38044, '10791942513677652', '9254608693530553', '0xe43DAaeD9cc7BcD356C67D5cd2045c64B805C44E', '1715308307', 1, 0), - (38046, '13483233217708337', '11562519647909113', '0x1D0aDc2842193Ca163f3b731036154B1b4EBaAc6', '1715308463', 1, 0), - (38047, '457860602885304', '392637443214427', '0x16E868c6d41a1a9D4F4D48a1961130C1538524e4', '1715308487', 1, 0), - (38058, '602175376645022126', '516394288485691606', '0xb46b2642F0611883f49C2856B3957319cD8736F3', '1715311871', 1, 0), - (38067, '5168740174724149721', '4432442787290363960', '0xe07295c04D02f2eFC8D3701C5582a7651c7a9c2e', '1715316143', 1, 0), - (38092, '1301610781563987', '1116193719470638', '0x151C27bED5d9E1585258a81Fd7Ba4060F737B115', '1715327771', 1, 0), - (38097, '384734390352928562', '329928206080392574', '0x8b6C42CE7B17839C101a49b66d2b3248033FABAF', '1715328791', 1, 0), - (38098, '50429728636939267', '43245912815445626', '0x0418fdaf18b1B58aB23B344A7a6799cE3A92350E', '1715329163', 1, 0), - (38100, '52567103065456529', '45078813976883056', '0x619EFF59a7650f9c43fe7E300C8b3e0CDf6Ccc6c', '1715329847', 1, 0), - (38115, '10270222738547618', '8807208945025051', '0x41462a34310E9247a170e2A5fDdAF691a6514c6F', '1715337539', 1, 0), - (38124, '267703999961615600', '229569029134255063', '0xF36e3c8F00f5c88f65BB374ab0fE7Ff5FbE28927', '1715341367', 1, 0), - (38132, '16999999999999998', '14577144975211956', '0x631D7122754bdfB91886fdcF52AB9edb9EeD685A', '1715344547', 1, 0), - (38151, '61809085491852223', '52999999999999999', '0xa4919101d7e29B5e356f92e87D8A8E3CC88AC8dF', '1715351411', 1, 0), - (38159, '50032006095358310', '42901400367807438', '0xdb468Fa943693d3EBA6d015a4198B4FA112Fd0dE', '1715352335', 1, 0), - (38167, '9453070588966278943', '8105810613898455350', '0x660802Fc641b154aBA66a62137e71f331B6d787A', '1715358227', 1, 0), - (38172, '91654828430935064', '78592101277407012', '0x113d4702BAbc6a65c21ace75BFd3207cC05E7FEE', '1715366435', 1, 0), - (38177, '2447256963168702685', '2098471737865125353', '0x17F0c2861C4718098F9195D596FFfFF6cf7c32f5', '1715371979', 1, 0), - (38183, '51793219329436181', '44411603935184794', '0x716D4213Aaf597A80411d9529A279C27ddB768c0', '1715376671', 1, 0), - (38204, '10893068501978633', '9340578751662204', '0xA4803D8C45fC2f82a9c14B7191b29ae896aB3540', '1715389811', 1, 0), - (38205, '5389437238100395', '4621329879682081', '0x4BfCBA297f33Bf2C99a53cccD3794ED6B2e83E69', '1715389979', 1, 0), - (38210, '50602373385185750', '43390478407391752', '0xE7927C9B9308264f6a0bbCc5c39E792a24ce1900', '1715393255', 1, 0), - (38227, '104380654931693589', '89504231738051207', '0x90592fa8541f84A84a90D9141F761B6716910d8A', '1715406455', 1, 0), - (38229, '10999999999999999', '9432270278078325', '0xc64583965088A96b090f6f08d3a6124B436A2fE5', '1715407487', 1, 0), - (38249, '4706329734887726', '4035579461565249', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1715418527', 1, 0), - (38266, '10453095895698268', '8963311430081573', '0x05aaC5CD703405FEA7c5331705Fb6396D4b1238c', '1715424695', 1, 0), - (38303, '1008555687227647985', '864746917648068255', '0x8867cE5cA5b91aa1FE5f5B64B1e287c0E49A8E5F', '1715449391', 1, 0), - (38339, '5076085772572279', '4352292670735097', '0x3AF2F135ECCcB8Be6718B3b9f01019806Ce8b15f', '1715482295', 1, 0), - (38352, '1300000000000000', '1114634528543136', '0xFeEd18F7B20795D267DB012948Ab011c09287FcC', '1715491067', 1, 0), - (38353, '16022381376317708', '13737768855023248', '0xa61027533A584E08cC17b17c31d75e61eD0c2740', '1715491139', 1, 0), - (38356, '89612095644987539', '76834412293087051', '0xEA5d262a60493fAd83A79E69489CAA6543492A90', '1715495867', 1, 0), - (38372, '25026543075648157', '21458037724761221', '0x68886B269006e24f45027bC09572717955855434', '1715508179', 1, 0), - (38378, '2499999999999999999', '2143527939506032275', '0x26728Ca3A828fC8F2C730E190355675E2d4c6915', '1715512391', 1, 0), - (38380, '1018392628342411', '873181220895576', '0x796b2169cc6F807A2b8f60112aA952b3061c352f', '1715515187', 1, 0), - (38395, '126338531603665029', '108315728952478138', '0x1eF349FeA86A5A0ae4929C317da3916d9eD7067f', '1715521367', 1, 0), - (38401, '5184900647670721', '4445249490159011', '0x75652f74f604dd518ac995e11df588f463a62D1D', '1715524979', 1, 0), - (38402, '1521052122479411711', '1304066679656518162', '0x75652f74f604dd518ac995e11df588f463a62D1D', '1715525063', 1, 0), - (38404, '10507017344780539', '9008140496570567', '0x69553b2e3DCbcE595a384b4E61D1decD9310a600', '1715526827', 1, 0), - (38406, '15293765168874603', '13112035589359474', '0x618006A1d48284b58BFce3231273Ce6874254D68', '1715527259', 1, 0), - (38412, '200000000000000', '171469032570797', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1715532203', 1, 0), - (38416, '208354371849094240', '178631612864302461', '0x7AF9347DFDb482da2Fa4643102CEd13aAa309B68', '1715535971', 1, 0), - (38431, '800917081346851037', '686662385539858245', '0x7Cc903ea639AA82b70113526661a484f26b01919', '1715548295', 1, 0), - (38453, '10307737072926456', '8837288519444241', '0x6dFcF0F05501D95A6d931ffD64b14AE109B5996a', '1715563151', 1, 0), - (38472, '6469712429664284', '5546776656629007', '0x905272e589418183A7177b0689eB9d0ffc7f7dcE', '1715576783', 1, 0), - (38474, '2228341214879201', '1910457561764866', '0x0d5BB4942A5992334707626ddDADC9f260D15808', '1715577071', 1, 0), - (38483, '10897101713474383', '9342577443175186', '0x7b955b7ab53a7a2e8a78D898Dda64bae85F68818', '1715583539', 1, 0), - (38487, '999999999999998', '857345162853988', '0x1a4E244d4bA74d0978F8Fb8f2eed4E91337934D0', '1715584475', 1, 0), - (38488, '10896036403088795', '9341664104469164', '0xA03452AA81DB3FfEda7981E96e6c288Df3df886f', '1715584799', 1, 0), - (38490, '10897101713474383', '9342577443175186', '0x6523a1b0CeAD2D4bA47dE948C736a0AD07E84815', '1715585699', 1, 0), - (38491, '9999999999999999', '8573451628539897', '0x82D16fF1C724ab72F218A3f7f6DD3E5385ee87E8', '1715586275', 1, 0), - (38503, '15054971655076148', '12907307125383461', '0xC21FF549Cc6E7d7f4F9B69B06059EE1639CfaAAD', '1715591783', 1, 0), - (38508, '230083335414245086', '197260834670715125', '0x562fD911f9477FaaEb085292D1B80f2d4a43607E', '1715594723', 1, 0), - (38510, '19737776784286569', '16922087451499868', '0xB524f622dF1ECa8f947910C83167246e723d11F1', '1715596703', 1, 0), - (38560, '616242294083651401', '528290569383127806', '0x748d47be167Bc97E4Ba80C8C421Fa24C79a49Fbe', '1715622959', 1, 0), - (38569, '249999999999999999', '214319340969891037', '0x959B8EDD9Cd5ff0Da9e21adfdFAa0C7Cc43f7848', '1715629139', 1, 0), - (38583, '108588414893598287', '93090390067844342', '0x65A2aa121Eec30d429f243F6FB0E44857d36F1dF', '1715633783', 1, 0), - (38593, '27310899216205004', '23413015685248680', '0x7AFBF91297a75bF945a4dcE5E7Ea17724311C4B7', '1715639231', 1, 0), - (38599, '80000000000000000', '68582189110365132', '0xfAbCEaF3B59ed7B2fa2eF3aa645e6A58e9f16648', '1715641499', 1, 0), - (38633, '2634507468784332', '2258503617960455', '0xfFD07Bf98AcafE1946E17703005fE79AeF466064', '1715656499', 1, 0), - (38638, '4359319796315813', '3737146183293618', '0xA8a1D1973588Ca135350088c4ad48380607Bf637', '1715657879', 1, 0), - (38648, '29843602190296973', '25584244614368175', '0x33E9723f025170174D5D144574E5BF4b00BF14cC', '1715666759', 1, 0), - (38650, '10072687425831029', '8635086923599257', '0x90b5089E872a2bb48A3d777e837A3035d3Cb7B88', '1715667143', 1, 0), - (38654, '36353038323098257', '31164636862638445', '0x6CE742Bbf0b44F3c6b1a9A8286B82583c8aF425E', '1715669627', 1, 0), - (38658, '2577832466620390011', '2209917421507482503', '0x9205C1EA2a89D1213FE74002c50A99E56cc82C45', '1715672747', 1, 0), - (38661, '16958770000000002', '14538369640239837', '0xe8d0e8995df6C010647180c78069aCEF629052a6', '1715674211', 1, 0), - (38664, '5000000000000000', '4286386819397820', '0x3eeB455da20cf2C5c89d9139Ff1eE04D22003a18', '1715676863', 1, 0), - (38666, '8051748937312221', '6902582103599102', '0x3161Cdef5Ce728c9c97640cDb10e09BCF6912929', '1715678303', 1, 0), - (38678, '999999999999999', '857277363879563', '0x93030475D433Bb03314861cf805e602865021E9F', '1715684783', 1, 0), - (38686, '11344428422325145', '9724499538344080', '0x6B066f3380Aa4FBF75f7A42f9542099565ef1e6d', '1715690819', 1, 0), - (38693, '49856364102715', '42737119196437', '0x452120f27D5Decb5461f37cf19D29B1B7A4C0c4a', '1715701259', 1, 0), - (38699, '42920902231548840', '36792007353549977', '0x5acA4435223E8562936a8491eaea15DA4103dc9E', '1715705651', 1, 0), - (38724, '6500000000000000000', '5571831796729799992', '0x32C7c281058D15fc54544D8CCBaf9229cE6c6E17', '1715723627', 1, 0), - (38740, '10000000000000000', '8572048918045846', '0xb8d7dCF45A6D96080A97eeC5F5E3AbC8499f0858', '1715730227', 1, 0), - (38745, '99999999999999999', '85720489180458460', '0xc502C07f7f537f47470071Fd59cd8287238761aa', '1715731979', 1, 0), - (38772, '4999999999999998', '4286024459022921', '0xA9DC57De96c85ee8272371b61DC10ccB2Ac10032', '1715750363', 1, 0), - (38792, '3000327275429120', '2571895217512562', '0x1a4E244d4bA74d0978F8Fb8f2eed4E91337934D0', '1715758967', 1, 0), - (38804, '8398130000000000', '7198918118010836', '0xa93829128AEF5CfE6A953Cb6c4792d9c314C5385', '1715769575', 1, 0), - (38808, '231906226218416029', '198791151554366835', '0x9e1CE8c027d0508A5EC89Cd46CBd6FFb8CE0BDf4', '1715771903', 1, 0), - (38811, '1000000000000000', '857204891804584', '0xdF7Aa11E0cd04bb3872C988ec2B499661CfD62C0', '1715772527', 1, 0), - (38817, '20868536824162596', '17887143868164551', '0x420c44A78408105A639dB060Ee932B675b48c7e0', '1715778527', 1, 0), - (38822, '96139022246469025', '82404077332157152', '0x457267D1BdE8223442963875e0fa5bCcdEFB5c29', '1715784839', 1, 0), - (38829, '1070535997281109485', '917593387632466014', '0x7d3F87141B3FFD356A2E75323185Bf2c7ECe6679', '1715789855', 1, 0), - (38834, '50000000000000000000', '42856727375955643036', '0x29ECDd4696F5c0b42dB760391C291Ad1FBECF0F4', '1715794079', 1, 0), - (38837, '46401657461686958', '39772463672559917', '0x3530C8bD972aefb908f22bf734F1b13619Cb9D46', '1715794955', 1, 0), - (38875, '5000833103512537', '4286386819397819', '0x56F2b78C4d606be651B43F4241A8bfcFE4fe18bf', '1715811335', 1, 0), - (38880, '5000000000000000000', '4285672737595564303', '0x8F18413178D972E110EF5553B7fa80b18cA68fc0', '1715815319', 1, 0), - (38901, '10205251094490006', '8747273279194622', '0xB387E8A1A42C178d9AB53B97E91E882A3B9023c2', '1715823779', 1, 0), - (38924, '6892786144610324', '5908045133206580', '0x22D94aa4e34Cd4EeD08A0daa202B115c9D97a1eA', '1715836523', 1, 0), - (38939, '6111718039025251', '5238564675944308', '0xCB1cF84D4d1D8934c68a1109d8088d528311Fe5e', '1715844791', 1, 0), - (38941, '10740576490221338', '9206119170040287', '0x4d9883713112750a76a680D6bB019c0FD298168f', '1715846615', 1, 0), - (38950, '1018931445646666307', '873361343617350864', '0xeaFD2E7C72Af57Fd7AE89b5Ae1bd1faF64e22A70', '1715853239', 1, 0), - (38962, '10431565569010563', '8941255233909825', '0x234f4e9F4D172aE7528b5eDb4B8893001b1afbef', '1715856983', 1, 0), - (38982, '2294123154190206', '1966372211719942', '0x9304FBFe74c72Fc3e2ec416483988f01cCDF516b', '1715861435', 1, 0), - (38995, '2000330799459748', '1714409783609168', '0xD284716852D7A1596fF0b806d308d69C98107D2f', '1715864519', 1, 0), - (39044, '160272776928089410', '137363888455818128', '0x6713AAA85838C9CC14C41158e01741F723671496', '1715891279', 1, 0), - (39053, '7106220916692744', '6090479968291519', '0x1886a7892a0aE7E23E270050d383B7013D145250', '1715896631', 1, 0), - (39067, '10338604553282700', '8860836817491009', '0x01eb13FFf64d7949906264443eAced70eFAB53de', '1715906435', 1, 0), - (39072, '2026858712143101', '1737145879586570', '0x9D9142EbA415360997A062693bb70bC3CA43730d', '1715911151', 1, 0), - (39077, '943826200689248805', '808918641319395149', '0x956B43bCDB63234605648E14cc275941C5cbEC9E', '1715911763', 1, 0), - (39082, '11109297117376200', '9521369001664540', '0x462a24696595297CCc6F7e6B40a653287b81b3f6', '1715912903', 1, 0), - (39135, '9245390000000000', '7923882926545582', '0xE5a54E77Ac5C20Fc378912dE64b5D8D27E6281a2', '1715947067', 1, 0), - (39149, '205299023040948056', '175940224789969383', '0xA68E60452e9F3F814e52A3b7553A23cb319737d6', '1715955527', 1, 0), - (39170, '30953771625288448', '26527225785991135', '0x979e9fC5722aF334dc743599A991a2551D224B3a', '1715965391', 1, 0), - (39182, '10000000000000000', '8569949441740748', '0x426d19844E61574673f24cdEFE47FF718Dd874Ba', '1715973623', 1, 0), - (39185, '8100644503124882', '6942211383729534', '0x9cA752736456CF8E87290Ae4B8F9cd6EcD38CD22', '1715974775', 1, 0), - (39190, '900000000000000', '771295449756667', '0x95aD8F183e6871fa43BbE565088Ce0aA632EAB1F', '1715976971', 1, 0), - (39195, '25567252856514168', '21911006434452814', '0x90c97e47E106bfFCB8c6395Fb975c37C13D54Be6', '1715979923', 1, 0), - (39199, '733492112479008220', '628599031986071871', '0x5563CcfFC4F16cc5b01e35630B18e25fA08d86FD', '1715984519', 1, 0), - (39202, '3495381027159533', '2995523868237704', '0x9F4F49B5a3d19d0376bA17D36DbefBbbBc86C8aF', '1715986799', 1, 0), - (39215, '13325161604624045', '11419596125465308', '0x8fBFD3faBD443334B6f413b5931477d4DeBEAFa9', '1715995643', 1, 0), - (39223, '10676800185711798', '9149963779111834', '0x72C968B59aF0404770ff4950d95eF31CAe03aD66', '1716004379', 1, 0), - (39230, '32243591297122643', '27632594723649304', '0x8Ff846049066443Db5c238490099b6E7889aF791', '1716011675', 1, 0), - (39236, '10227364884274557', '8764799998046767', '0xad528A3B79Cc5100b3FD26A4C0e11ac100a764Dc', '1716019919', 1, 0), - (39240, '1000000000000000000', '856994944174074838', '0xaca4995f400EEE9fE7b9e7ff347ABF9518da6D0A', '1716021455', 1, 0), - (39252, '5228832866045464', '4481083330132200', '0xBfb4F9383d2bDeacfc6214b750951c35f4cBe086', '1716031499', 1, 0), - (39253, '22005001475772419', '18858175011280018', '0x449833c57904F9d88cD3c26932060A329B93FE94', '1716031667', 1, 0), - (39262, '4841099709580997', '4148482596224208', '0xdAed957ED3D5870B3C28Aa31082e5e5eE15a4E0f', '1716035939', 1, 0), - (39266, '49159530000000000', '42126266112625247', '0x1c052BFCa135D0863C74D8Daa8DfAE08Db785c28', '1716036827', 1, 0), - (39279, '50003801138391836', '42849747208703740', '0x23Fbb3F5840a21091dd7aF458Ba0Aa8670147da4', '1716040571', 1, 0), - (39290, '2000000000000000', '1713859595997978', '0xBa198Fd43a2bC0Fd8eC345BcF3116E653eAd074a', '1716045251', 1, 0), - (39294, '4009603015296173', '3435948301953887', '0x6266fD368992dEfdeAD10B64e128A8D443DA2010', '1716050663', 1, 0), - (39300, '21581671710039746', '18493977578964858', '0xC9B836047170d30324AfA40DAF76372E99A7c6c5', '1716054431', 1, 0), - (39305, '20019005691959190', '17154882503751202', '0x9125dB7696FE5a9ceCBA8C4b2D2351e30981d8Ef', '1716059519', 1, 0), - (39310, '100064103056193432', '85747911618893871', '0xF657761FBd513ED69e8994754a9d7632e21406B6', '1716064403', 1, 0), - (39317, '386531185203694077', '331230090456911432', '0x287d7663911bB6907683C5c745DA6264A574A251', '1716067511', 1, 0), - (39319, '4141285941057731', '3548791324926655', '0x516B7fF40B1d493f1f4fc37FDc9A4f5586F26B49', '1716068039', 1, 0), - (39368, '10000000000000', '8569297979989', '0xddCFB66dF0858aDD215dC8Dd019c1380095715Ba', '1716108047', 1, 0), - (39375, '200096942563081', '171469032570796', '0x582689B1E8FD3bB5d43ACf0Cdf850BEF25125ab4', '1716111203', 1, 0), - (39393, '250000000000000000', '214232449499747289', '0x0Eb7811dbb71350A90825Db6672C4C0e9F8BF9c4', '1716116411', 1, 0), - (39396, '20408857905215783', '17488958482106633', '0x2a049afe9f52BA530Bb1cf5fBae6a8Df836A690B', '1716117839', 1, 0), - (39398, '25273724917194509', '21657807987973509', '0x8175CaA12C1f150FCCF91159558B0eB09F7706f2', '1716119615', 1, 0), - (39399, '10436956776364590', '8943739262094289', '0x3bC291c64dD4b08a9224EAd3770378C4B773B65A', '1716119759', 1, 0), - (39417, '11095264729338147', '9507120291733333', '0x7Fef0c06A743875A1b470b7e00EF54dBEc40dBc1', '1716124487', 1, 0), - (39425, '6169291376759487', '5286236666216463', '0x3A71AC6117078580DE7d49767714C68567F5e972', '1716130175', 1, 0), - (39470, '86864023065380998', '74430555417287292', '0x83D69Bf8773124ABac771679C44ad16AEeBe8c88', '1716147611', 1, 0), - (39476, '1050989608780860', '900553964216897', '0x6f3d305026cB005cA24C0B0BB79562a4Cff5B96d', '1716151031', 1, 0), - (39506, '15603293925868607', '13369883091500945', '0xC665a28F7525e18066Cc08fa296487702664292e', '1716171719', 1, 0), - (39508, '86920851902780876', '74479249937551544', '0xB05D4937a396e62319103b4eCF1A8B2e70C938a3', '1716172595', 1, 0), - (39510, '10626848976565718', '9105752229160215', '0x07cc676e40e5f381890b3A1e362ee946136eB608', '1716174167', 1, 0), - (39514, '10217994706914757', '8755420189485455', '0xF9Ae4FC3d30e82f775B6FD03508E4E79B6fFf55A', '1716175787', 1, 0), - (39536, '10020396394996968', '8586105534389530', '0xfe89DE2866994F5eAb87BcEb034242316c5Db4Df', '1716191495', 1, 0), - (39552, '25484053362786341', '21836338902335823', '0x8A51B27401239c12Cf0624309531AE5B2515aFf5', '1716201287', 1, 0), - (39579, '21154864343450162', '18125388225246536', '0xa5291A0A77DfDF765346889DC43a0F9e3746F5c0', '1716211931', 1, 0), - (39590, '10266222558535977', '8796051180439787', '0x5cde0Ccb7e21AC91DCD4EB4b73fc0aC32612b453', '1716215735', 1, 0), - (39594, '274351922922425552', '235063436596865012', '0x52D53C31dA362383757AB4AA9287395167379f3B', '1716217523', 1, 0), - (39650, '10095725233071441', '8649969874256997', '0x65F36cE82c68d3A79D2C33F9aef2ca9D696e2AAf', '1716248171', 1, 0), - (39668, '100737263798948461', '86311213603709026', '0x86740FfcB53804C95C2b004C2a5D4A6dE28e4084', '1716253991', 1, 0), - (39685, '7140598861228007', '6118031504209719', '0x4b138a3c97a41d46695abbb3c14ca9cBBB88bE58', '1716258311', 1, 0), - (39690, '999999999999999998', '856795294499650488', '0x775a4966397450e57eb75E24c85962E7DBb10Db6', '1716260495', 1, 0), - (39702, '255542226752016192565', '218947377427090177683', '0x114Da7372465EDb6a1F68bf37e7D5FeB76785C77', '1716265055', 1, 0), - (39720, '100000000000000000', '85679529449965049', '0x55B62175D19E07B761249820C6e1f58dCdB5E74c', '1716269963', 1, 0), - (39730, '1117588850732636173', '957544868492994942', '0x5C4476AbAC598308C6898E90d3D919C4395B7ff6', '1716273035', 1, 0), - (39766, '1000000000000000000', '856795294499650490', '0x5D345042C6F0a609aBfCfE9a25a38Ed262D67DB8', '1716282923', 1, 0), - (39768, '98177962200386649', '84118416036855832', '0x4105f34Fca26b5Ff74B64c80dCb0b0Fa3cBC0303', '1716283487', 1, 0), - (39771, '199999999999999998', '171359058899930096', '0xb2A9C55fAc7EF4C0c697Fd0D4FFdA0534D5fb371', '1716285167', 1, 0), - (39777, '2536173126897951199', '2172981201162629551', '0x78500de72028d2009a7DA6aBb4bA29B34df4687a', '1716285743', 1, 0), - (39799, '100342920020248618', '85973341709703789', '0x7FE1dB003Cfe0D079730ea6a800D985FD963a066', '1716291191', 1, 0), - (39846, '23345314445686921976', '19999999999999999999', '0x212D72267398D5a67a575Df4F6575Cfdb7ed4Da1', '1716302183', 1, 0), - (39848, '2062727057645215172', '1767144377039056546', '0x89870D85b766928291dfb0f89e0C21Ac7Ea38939', '1716302951', 1, 0), - (39871, '1153735434893942437', '988408562735891183', '0xc50f82f4725188096F011cCBC65aaF22BEC9E09c', '1716311555', 1, 0), - (39886, '44269730832848946', '37926009466133224', '0x5Fc4A2F78cb8F008bf39D542E2AF3BfF2e4Ac824', '1716318719', 1, 0), - (39909, '15400000000000000', '13193225592080359', '0x25F270C44Bf9BdeF9243E55dd8748F308f690e85', '1716329531', 1, 0), - (39912, '8550960183532946', '7325632904561495', '0x9DcD1873Da1cD90C61852027188eeD17920249D9', '1716330395', 1, 0), - (39973, '8023928641164581388', '6874123421924619157', '0x8Cdb4DCD317fF1a091F3EA5941e0d23AfDd13F28', '1716348707', 1, 0), - (39988, '6120999551642779466', '5243878437262722163', '0x6e26B0EBac74921DA03111cB10d3B46CB4fCCD64', '1716354347', 1, 0), - (39989, '9633048474716505390', '8252661147167562749', '0xda46f9CB6564BF2dead61399eE75DfAd683fF53f', '1716354599', 1, 0), - (39990, '100000000000000', '85670296052469', '0x1f639dAAAdB4724BdDC74A286746201036468e05', '1716354731', 1, 0), - (39991, '8027540395597087825', '6877217622639635624', '0x6cC2BDe903A69478b8f3Cf73cD3Adc5c7895b141', '1716354743', 1, 0), - (39993, '6723065081312561053', '5759669758960694835', '0xB04E4E3A214Bac1259F08328337F46A3172b49f4', '1716354863', 1, 0), - (39994, '99899999999999999', '85584625756417393', '0x1f639dAAAdB4724BdDC74A286746201036468e05', '1716354875', 1, 0), - (39995, '1003442549449635978', '859652202829954452', '0xf6442544DA9211D877A1E75E3aA705569F005b41', '1716355091', 1, 0), - (40000, '123207948412633503', '105552614165277466', '0x219a5DFCb05cD94ace18176cC86085A0b953D954', '1716357119', 1, 0), - (40009, '19586470246148328', '16779787046104195', '0x1216C7E8E1B8769899479d02041D1b1F59b61D75', '1716362135', 1, 0), - (40019, '1145430750085201811', '981293914674018598', '0x341062203444a9e7568f6D806c3b0DDC2fAa541B', '1716364991', 1, 0), - (40054, '1113580000000000', '953924144793577', '0xB580e8326226d43565ac68Bbe5a7274E0C13311d', '1716381275', 1, 0), - (40073, '514515068639632069', '440748169718807487', '0xcb12E628422E928F684A134df1e6Ca79c4eF0be4', '1716391799', 1, 0), - (40099, '199999999999999998', '171325660445334343', '0x0000000dc77BdDBCe0887128264B9f4757b8C5cA', '1716408011', 1, 0), - (40100, '262540025990375863', '224899216730681944', '0x499c80BF9bD4C11BB8FB09Bda77A7b3eCbe9366A', '1716408935', 1, 0), - (40101, '133291299794503696', '114181099844552018', '0x2F00F547DDC237465A12117abB9d1335818ee609', '1716410687', 1, 0), - (40102, '1007936258106200938', '863426725534219295', '0xe0254D5e1e6DB9E3A4ADaD54CC9Dce046cE65C9B', '1716412091', 1, 0), - (40106, '21140478839456197092', '18109532496502241521', '0xC8A8de25A446c3a6e96bb327C916B125Ed151D4a', '1716418079', 1, 0), - (40111, '515558909016137623', '441642352928329089', '0x481b0472B9707743C3c03804baF104FbC9E81803', '1716422507', 1, 0), - (40117, '56129757088821997', '48082338519393079', '0x5f259387E848C4b90ad4BD7d425C91acB2839ef0', '1716427223', 1, 0), - (40133, '250288351732609485', '214404085811817313', '0x780D2B2a13f00B4C76a47Dc809d7D0263e706670', '1716430067', 1, 0), - (40144, '3916674076444289', '3355133864479688', '0xdDeB2C9d5A0c507d916B653e5F73D8d7fFc3ACD0', '1716439487', 1, 0), - (40161, '17798826748723549', '15246978739385725', '0xb8fCC6Ba7f3523AC8E8911a632De337324f122b7', '1716451379', 1, 0), - (40169, '7000000000000000000', '5996398115586702074', '0x4658fadb190bc974436B634d8B454EeC2E1Cb9E5', '1716457943', 1, 0), - (40181, '52002147245046445', '44546511106665530', '0x654D7B790010cd5E41b8F9FC3ca72A05D3e19a67', '1716463499', 1, 0), - (40184, '28958755958169990', '24806889951043672', '0x654D7B790010cd5E41b8F9FC3ca72A05D3e19a67', '1716463991', 1, 0), - (40192, '1055285938176015751', '903908819175036626', '0x4C48Cd2958Aea449272f3C7627F430583962ef78', '1716467759', 1, 0), - (40205, '38551010000000000', '33021000912164919', '0x94a38618ec02909f91e3BF497384ccCf96bD1728', '1716470171', 1, 0), - (40210, '192651116932633477', '165015980332605567', '0x1aEa19F826d52070D73a5af617510f737Dbc6768', '1716473747', 1, 0), - (40226, '1707480185214177421', '1462548056547957575', '0xD0662A8B29f787E6954b3245B41C066A47680Ee2', '1716480563', 1, 0), - (40236, '2000000000000000000', '1713106915339697678', '0x4E209fe12F160d667c03F692A0367c462Da98253', '1716485891', 1, 0), - (40240, '98941071762099557746', '84748317123387019841', '0x4cE9a151350e0460581141440B2c885a200B2936', '1716486383', 1, 0), - (40248, '500462145810661', '428672581426993', '0x225f784C28ce6944EccE3b8Da3F1D80ccb2D9920', '1716489659', 1, 0), - (40254, '62497070828784587', '53532082112632883', '0xaf115D889101D76b2AfB18fBa65C695EC2f8dc39', '1716494039', 1, 0), - (40255, '100559943185627208', '86134967038732538', '0xa6451faCE02835AbF2018d608Ce4f969a109A1F1', '1716494327', 1, 0), - (40264, '113753232624625592781', '97435724725745705664', '0xF154Ca7EAfE1f7404181DB47503DAc8082E1F596', '1716503291', 1, 0), - (40292, '23122982126251275', '19806070291878642', '0xb0c1b62abb019bA4243eae73F5de90E4e8EC7d71', '1716522119', 1, 0), - (40307, '95240513675', '81578591298', '0xaeBEF3E9bBB764c11E7D112615D73d8F9069F93f', '1716530411', 1, 0), - (40324, '100000000000000000', '85655345766984883', '0xe25dda0b94FC40d000F60CD3f2F13da61b427849', '1716541319', 1, 0), - (40331, '6310216234339686', '5405037534168071', '0x90dc2D3056A697b0A4c29A3e4B71fDB0a1d7E9D9', '1716543407', 1, 0), - (40362, '30247111808493606', '25905260770797773', '0xe76fb041CE764aCa94AC858B496484D903dc87EA', '1716554831', 1, 0), - (40374, '13846999174568969301', '11859318231154298049', '0x87e392F1DFA8719ef1134a90D5F3c7a7e2114b5c', '1716562439', 1, 0), - (40393, '75619244532947558748', '64764406642178875774', '0x813A2626709281260E3C00e4D1a161caE50D77e6', '1716577043', 1, 0), - (40404, '994238992875030789', '851519991131534976', '0x3bB018FcC112031F7d5141A3C5fBF0E7Ee097Cc6', '1716584939', 1, 0), - (40419, '22024444338078522', '18862924087503469', '0xf6934d7F21E914436847703716C34de0A4De326C', '1716591155', 1, 0), - (40438, '15318172201759294', '13119310297491932', '0x3250175A3507294F04C449Ed1B69a9da688569FF', '1716608543', 1, 0), - (40440, '113507395749920580', '97213866399308222', '0x9eCC509DaC3d92466AD65Eb4d5D559c882b5f7Fa', '1716610139', 1, 0), - (40442, '11566404351178056', '9906093606385886', '0x98E90a3F5B18b2e34Db06605a637203a61Faf224', '1716610403', 1, 0), - (40445, '181390746807718948', '155352835907599196', '0xC33f625Df2F59FFB01cC196b71E2202D37a83130', '1716614255', 1, 0), - (40449, '15152181662682040', '12977147031540897', '0x3b154889f12949d545A61916287D882681d32Ee2', '1716618659', 1, 0), - (40470, '23916876576887274', '20483705302840501', '0x7416a7FBAE5eEfC83A95Ee14EE21066965F218C6', '1716637643', 1, 0), - (40493, '12188640975356992', '10438146749437468', '0xAEc2e770042682BD086e27A87A1eD2D75A5c8d15', '1716650747', 1, 0), - (40494, '100000000000', '85638314973', '0x1c986d9Af390eF15Ecc6F6C19Bef1487B4209009', '1716652715', 1, 0), - (40501, '11677016301781597', '9999999999999998', '0x42D48065CD4fBb5616edC10e027c3A2A92d3e5b1', '1716658655', 1, 0), - (40503, '8701312418129940', '7451657335446516', '0xD057524fa8218D0c3E1aD9D1562402218a725F78', '1716660107', 1, 0), - (40505, '519677168265138016', '445042770203077699', '0x572c9EE7Df1Ca5fc7362a4c5839aC45Db8f04177', '1716660731', 1, 0), - (40523, '490622982556555201', '420161255133042276', '0x9360784593d8DDE36C8b68bCdDf90f07DB27f97d', '1716682835', 1, 0), - (40526, '15146495781437822', '12971203764721022', '0x927fA38518Ef463cC6338f5157f79cA826929258', '1716688427', 1, 0), - (40527, '10436448244165521', '8937598419360945', '0xCCcc947DFB8c65B03c1dA50529AD8Ca3329139C4', '1716688871', 1, 0), - (40536, '10908487606301953', '9341844975105165', '0x9f30F3D57E6d1EF4e2F143408AA19464A8E7D9c8', '1716698807', 1, 0), - (40555, '8548523806925341', '7320811743339834', '0x25bC703B09685c1faa58C3D7E2E99946bA2119e1', '1716712823', 1, 0), - (40560, '33307832712069583', '28524266688732552', '0x5894afefC5301E66610e53D584F5586d9b5A59bf', '1716715079', 1, 0), - (40562, '608813311731690713', '521377461499991380', '0xdD6C4979DB010cF9a27FA2924fba2c88ABAea69A', '1716715595', 1, 0), - (40563, '105143345360381198', '90042989273158034', '0xe626E8ca82603e3B44751f8562B5ED126d345140', '1716716315', 1, 0), - (40565, '2237695075305645651', '1916324356731636643', '0x2c2Dae91fa7A99820Eed36E7830b598745bc456B', '1716718859', 1, 0), - (40570, '3800000000000000000', '3254255968984321987', '0x5f945b4Cd4605B67E34aed2e842125d8a45081f0', '1716721223', 1, 0), - (40574, '5248415844898503', '4494654892361275', '0x658FfAB79563b3Bc99E5e8Ac05EA8ca093c92F42', '1716725447', 1, 0), - (40587, '50001051663533682', '42816589002451995', '0xE859fc404E8E1D90B779506d403eD580F51305AF', '1716733919', 1, 0), - (40588, '1000000000000', '856313768969', '0x63412CC6FeCbd2CD4c4207Cf375ce573fddfaEb1', '1716733979', 1, 0), - (40589, '1000000000000', '856313768969', '0x63412CC6FeCbd2CD4c4207Cf375ce573fddfaEb1', '1716734051', 1, 0), - (40612, '1035297870876260105', '886539821816413665', '0x55887C90f14A0C326fA58dA9895008c82B27B681', '1716743351', 1, 0), - (40632, '4000324090376564', '3425532598930864', '0x8D98E46Fc0489E62E6a40e95833df7767DD22232', '1716765275', 1, 0), - (40642, '3065679196874069', '2625183307527407', '0xc162F6A6E4eC65d6f0Efa2Ed3fF8946269d5a741', '1716773315', 1, 0), - (40654, '2092300000000000000', '1791665298815419653', '0x8A5E1769D5185f8e45F3964C3a99D11ECbA5ea8c', '1716779843', 1, 0), - (40660, '292191754362671138', '250207822440183952', '0xbA22B710F3D4DEb8392241Dc61487caF170bb9B5', '1716781427', 1, 0), - (40678, '150417736032912301', '128804778462240947', '0x16beA20e070D93bbd9274715cf403A65d725e556', '1716790463', 1, 0), - (40683, '27649013791068554', '23676231207726664', '0x73EB5e2F953FF5b22a057bD32338d06e0b6382C6', '1716793607', 1, 0), - (40696, '1000000000000', '856313768969', '0x8eEB994fdF66F7F6019c26E04A3E6d911Bc4CaCa', '1716805619', 1, 0), - (40748, '10137209594186741', '8679894671213547', '0x84C73fe3eFBd58fe463EB6aC2EB2685bb3d5A0BD', '1716849095', 1, 0), - (40751, '1322494347510896037', '1132373907534934176', '0xB40C5eb88EDE9915358257A6BB41adD5B3024f3D', '1716854951', 1, 0), - (40755, '360537057405011615', '308706617365331460', '0x143561d370eb2f254C14f7BBc52FFDA2320A3296', '1716857027', 1, 0), - (40756, '2585990654229776000', '2214231272512010461', '0xab67e67a06BFC8861fA1Fe6b4526882ab928CAf4', '1716857663', 1, 0), - (40772, '9999999999999999', '8562410188491217', '0x03b46Da88C7e5dE0da6380BADAaC7F5385cACF2F', '1716872819', 1, 0), - (40785, '15000000000000000000', '12843615282736827081', '0x44A55c706B0C6936645cD9438F11B3C0524F4fF5', '1716891107', 1, 0), - (40787, '997520000000000', '854117541122375', '0x44A92cf455a9F3F16cD7D0243C9F1e63E1BFAf73', '1716898031', 1, 0), - (40793, '1000000000000000', '856165488428812', '0x4Dd2a335d53BCD17445EBF4504c5632c13A818A1', '1716900227', 1, 0), - (40812, '1421160998518592654', '1216749000432649059', '0xbcef41bCA513fECfbDc9B1923608676C92E56349', '1716915995', 1, 0), - (40814, '25842932586063261', '22125826999979713', '0xe682A7B007fD328177402FCfE4F0C88f05eddeb3', '1716917435', 1, 0), - (40815, '864300621234627388', '739984363528670405', '0xBbfdd0a973a1dB00469BB8D7a45F1A560eE8225d', '1716917543', 1, 0), - (40830, '19592623842829342', '16774528361997971', '0x022d489D25370C08FAedDe5E9D09BA5a75d5266B', '1716930803', 1, 0), - (40877, '204564161170922762', '175140774963933306', '0x6266c6e79dD11f5BF3727beCD8253F579A683dd3', '1716965555', 1, 0), - (40890, '103211832735061559', '88366409185246827', '0xD86c38aFEE38E306600FDcc81A2D3166AA68bB10', '1716974351', 1, 0), - (40895, '103211832735061559', '88366409185246827', '0x69572FE09fB4cAeff0b387E6c6aC4E5eBb39F912', '1716976391', 1, 0), - (40897, '350000000000000000', '299657920950084203', '0xE52b6a9B56149341C31080cf4aC7eCB96BB8d448', '1716977903', 1, 0), - (40924, '1000000000000000', '856091613783483', '0x7F429edeff8afC7Bb3A2CF7DB832Fc86f6FA99DA', '1716994019', 1, 0), - (40933, '2800488655860016001', '2397474852777541054', '0xe0D066e3c80f3f43f8c05741a2e5A0425CcD7015', '1717001771', 1, 0), - (40937, '34175594140006841', '29257439539327835', '0xfCeF9c6D40009a203070eb8f10c6d031c36Ad319', '1717005827', 1, 0), - (40940, '2318748314692373135', '1985060986682727520', '0x3D5f1ad033C4E7C6A6d433d50d694c488dcAebCF', '1717008383', 1, 0), - (40955, '115415475858938995', '98806220983667823', '0xA49F7d6944a7b861c5B15f45a6B55829F792Ad04', '1717022411', 1, 0), - (40957, '208890320903235669', '178829251925800864', '0x22791447518C4d8c0386f5608e86c14BD21F6747', '1717024415', 1, 0), - (40969, '5144185809241462', '4403894331035620', '0x0D584Fc9463166d5572A3583a31932b6fe655346', '1717034699', 1, 0), - (40976, '28858287351536576', '24705337789804451', '0x46762bdE09C1a1c566c3efD959368455Bf20c354', '1717042031', 1, 0), - (40987, '2000000000000000', '1712183227566967', '0x0CbFbBD8818d16cA154c10a72d7E7d0f5e5689A2', '1717052915', 1, 0), - (40988, '1127397792410401168', '965155795480557625', '0x3c81350bAB30C07908e5cd06bf8a4E0Cc43f9d13', '1717053347', 1, 0), - (40991, '2000000000000000', '1712183227566967', '0xec766119A2021956773F16Cf77A3B248FF79b1c7', '1717054955', 1, 0), - (40995, '500000000000000000', '428045806891741999', '0xae15e6c9a14aBDc87D8dCCcFe9d1F1e40d719485', '1717056083', 1, 0), - (41000, '1000000000000000', '856091613783483', '0x0CbFbBD8818d16cA154c10a72d7E7d0f5e5689A2', '1717059683', 1, 0), - (41017, '1002118192563048', '857828942306883', '0x3F6b8942256478Cedd6B37Cc830BB0A70a57239c', '1717072079', 1, 0), - (41019, '528410213357014403', '452327457771089065', '0xA96f32C28a32AB1d9B5a42935Ef248788C764487', '1717072547', 1, 0), - (41024, '10000000000000000', '8560157361407379', '0xec766119A2021956773F16Cf77A3B248FF79b1c7', '1717074371', 1, 0), - (41025, '100000000000000', '85601573614073', '0x1c986d9Af390eF15Ecc6F6C19Bef1487B4209009', '1717074647', 1, 0), - (41030, '1022717619557132598', '875462375969301997', '0x59d4389999A15F1C8330044442F912988673eF0D', '1717079615', 1, 0), - (41061, '1000000000000', '856015736140', '0xA5b6F3d1A132Da286133b0BA2E02BCc6676E4c70', '1717116059', 1, 0), - (41073, '983100000000000000', '841549070199959441', '0x8c324F6640d90fb027a64e85909F57d06881974a', '1717127831', 1, 0), - (41079, '35760702443965692', '30611724027481177', '0x38d3e0fa75C340F4806A66e4FBD11308FB40c3B5', '1717137971', 1, 0), - (41089, '10215325340252429', '8744479241053316', '0xD490d7aC76D1fE8Ec0572C7F69ca4E99514C6164', '1717150535', 1, 0), - (41092, '10000000000000000', '8560157361407379', '0x71370d87947714339DC95DEA5490eA3620ca1D0C', '1717153715', 1, 0), - (41118, '8425643054865791312', '7211836250783488991', '0x96BdF14d64Fe5F06f07B0513f56B324ac9fa06Dc', '1717176191', 1, 0), - (41133, '10000000000000000', '8559389715208346', '0xbc4473873DAb616c86ca13E397cf356086fE1050', '1717193627', 1, 0), - (41176, '4000000000000000', '3423755886083338', '0x892B1ac09F9082b43E43b080e0c281f664d96585', '1717229555', 1, 0), - (41187, '5225842950838120', '4473002640669784', '0xB7c2003b8fdE55DfB361ABA9D593bd2B474dc90c', '1717239887', 1, 0), - (41210, '282681245576696907', '241937151855304740', '0x65Bc1E462B20335e31A79A52a8A52CC3D93a297f', '1717250543', 1, 0), - (41227, '22728541375585854', '19452576540818797', '0x7819048e077C492be6776582FE1E7396a3146F6D', '1717264259', 1, 0), - (41247, '20845460595899219', '17840912492779779', '0x696D181A7961EE66C42f1EBeDDc0B48B106C45ad', '1717278695', 1, 0), - (41258, '100000000000000000', '85586559292863486', '0x47dE4B4023D80C88E012B25a6302A275dc338a05', '1717284647', 1, 0), - (41261, '6033590937084795', '5163942884856915', '0xE324932Cd2f28F964e6c69dE839909a386A23FC1', '1717285427', 1, 0), - (41274, '3080930569192098', '2636862468373551', '0x8A2eDe1066bD759294C38ad7577DE359c9799e0F', '1717292351', 1, 0), - (41276, '1000000000000000', '855865592928634', '0xCd247301BE5c0d9fB08CA7551BF5c4691D87185b', '1717294079', 1, 0), - (41287, '6448953285706631', '5519437227640373', '0x8B4cBFFc71AA2DA8B912265164D1bd6B76EF8944', '1717306211', 1, 0), - (41292, '10000000000', '8558655929', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717309295', 1, 0), - (41295, '100000000', '85586559', '0x44b130dDf3c859b8b2dfB53010C77c680d853028', '1717309715', 1, 0), - (41296, '2000000000000000', '1711731185857269', '0xCd247301BE5c0d9fB08CA7551BF5c4691D87185b', '1717310231', 1, 0), - (41328, '79999999999999999', '68469247434290788', '0xbC8b9EfcB4cBA978E838846765B9C9f275d7385D', '1717324307', 1, 0), - (41349, '1000000000000', '855791784215', '0x2ff446b6146A4F845F1EC1007eDdf157c46DD634', '1717336715', 1, 0), - (41350, '3343593775985340740', '2861420083240857174', '0xB846F93a80f90cd6CeDb3cf44E86095e5D17b683', '1717337603', 1, 0), - (41358, '30891215735775812', '26436448631091852', '0xBC7cbb360612556482d0C661C9af6887e71F031d', '1717342583', 1, 0), - (41367, '24650374585188205', '21095588047827730', '0x749A0251A89A25300267dCEada27e110f0e3a469', '1717346759', 1, 0), - (41392, '253677471673106', '217095096098292', '0xD7d53AcB50f736Ee6C1F6E74f9C7b0057b917898', '1717374443', 1, 0), - (41399, '1582444220553112', '1354242762927954', '0xF6907629c3B7c5cA83C2F5C110DA33FfaeCF51EB', '1717385651', 1, 0), - (41411, '1000000000000000', '855791784215057', '0x3432963cE642772584Be312DD7153f94681d8691', '1717402211', 1, 0), - (41420, '80000000000000', '68463342737204', '0x3432963cE642772584Be312DD7153f94681d8691', '1717410443', 1, 0), - (41426, '7000000000000000000', '5990542489505404899', '0xc134c9EF7bBB25729E51A4dcBFABf825bE9Cb514', '1717414739', 1, 0), - (41449, '100873872897922567', '86319311513613332', '0xb104606B9Ab63eC44580c9c274a7F8cdF8db3b61', '1717424123', 1, 0), - (41453, '536627534868250757', '459200365945589621', '0x48ACAe7BE9b3c69c16Fc61DAa73249111b244ADB', '1717427771', 1, 0), - (41473, '515531846404747282', '441148463587106892', '0x1C90297F8CB24fE0f17DA087fd8A82D67e40Eaae', '1717442795', 1, 0), - (41475, '516109011928411468', '441642352928329089', '0x3A852E304Ca378490a2C0c38b58ba6e6D04407EA', '1717444175', 1, 0), - (41478, '536740615657735877', '459297130901800323', '0x5749abE1B05E12efcE7bd3567351E95daB8068a3', '1717444607', 1, 0), - (41485, '1245730000000000', '1065990160213904', '0xDa7Db6A9B001573537a12d7A05b5Ec3827866789', '1717452947', 1, 0), - (41487, '80278903208172127', '68695881846528504', '0xEB9A20bd8a36af6C480b73E83D94d23328561C12', '1717455251', 1, 0), - (41498, '2932864500019762517', '2509696883162274467', '0xc66463Cf95c3a3210DefC8BC40546dc687B86796', '1717467803', 1, 0), - (41514, '100000000000000', '85571525147014', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717480499', 1, 0), - (41515, '1272707621832856413', '1089075322664673928', '0xE7155C1Fe5cF3319684E953Fc40A3856870F6085', '1717481147', 1, 0), - (41520, '210836497784695920', '180416006720915903', '0x2a9a47Ab432929197ca70a5a136FDaBBD73145aa', '1717484087', 1, 0), - (41527, '1000000000000000', '855715251470145', '0x9364ac6978155009ac99F4A3F5c1a879D4d61D22', '1717490207', 1, 0), - (41529, '73947557975706205', '63278053168784619', '0x00d85696A6517415fbE5076EF252d88995697EF9', '1717491203', 1, 0), - (41533, '1000000000000000', '855715251470145', '0x34A979cC9cDa90b0A412bB40D675dD06e99FeFDA', '1717493867', 1, 0), - (41537, '10000000000000', '8557152514701', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717497827', 1, 0), - (41539, '17463231061072273', '14943553158906720', '0xB378f56324F5Ce7b70df5eF0ca5A1c435A3c1De9', '1717499843', 1, 0), - (41542, '100000000000000', '85571525147014', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1717502471', 1, 0), - (41547, '1000000000000000', '855640758604447', '0xFf852cDb817770258630b24A2597860343e70D68', '1717504871', 1, 0), - (41553, '5932238690100981140', '5075865213020658465', '0x25986b46b61d36a8B2c5abE6647896a1ee6d402D', '1717514783', 1, 0), - (41554, '5580025793990299641', '4774497503402245430', '0xBfE137d104B5B2dfD0af806941c6D0eD94d16a62', '1717515071', 1, 0), - (41555, '1000000000000000000', '855640758604447672', '0xbB435145d36a358CE2A2a9EB34b7EAc9aFC20f28', '1717515227', 1, 0), - (41582, '64279070000000000', '54999792217188394', '0x562ae249d7231b5ee144B60b4B9C85b8Cbd38D3f', '1717536275', 1, 0), - (41598, '100086764348332293', '85638314973271630', '0x6205a12FdB9d8A1282807e887BB7093F8ddf3Aa1', '1717552595', 1, 0), - (41602, '643057769510902', '550226437730792', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717554863', 1, 0), - (41604, '1999999999999999', '1711281517208894', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717555151', 1, 0), - (41605, '55495882927091852', '47484539367160488', '0xbbf8573a33d2c141E1FAb72EFC2f0B85F7b47966', '1717557347', 1, 0), - (41612, '20112123276062651853', '17208752417076416781', '0x6Bc316335CD7C225a0b3561e6c4Bb713B660418C', '1717559939', 1, 0), - (41624, '4000000000000000', '3422563034417790', '0xbC6433537D8125a72b849b1d777a7E0FfE3DdE02', '1717570703', 1, 0), - (41625, '500000000000000', '427820379302223', '0x34A979cC9cDa90b0A412bB40D675dD06e99FeFDA', '1717570931', 1, 0), - (41629, '2000000000000000', '1711281517208895', '0xbC6433537D8125a72b849b1d777a7E0FfE3DdE02', '1717572719', 1, 0), - (41632, '100000000000', '85564075860', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717577915', 1, 0), - (41633, '100000000000', '85564075860', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717577939', 1, 0), - (41638, '100000000000', '85564075860', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717579463', 1, 0), - (41640, '1000000000000', '855640758604', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717580315', 1, 0), - (41641, '100000000000', '85564075860', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717580351', 1, 0), - (41642, '794026317935252487', '679401281030015792', '0x6a18D163e613E84231a0206E289369d66edc0405', '1717581359', 1, 0), - (41651, '2000000000000', '1711281517208', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717586855', 1, 0), - (41656, '18152251707764914', '15530421022862100', '0x5a161064c5D0D47455cc2d81BF388Fc1143ed1be', '1717590815', 1, 0), - (41663, '27295188877707076377', '23352792920340639132', '0x068Cf1f0EFdAccCC015b5EbB335A1B25e3E695A1', '1717595147', 1, 0), - (41676, '44374518149949036', '37965259663105452', '0xe7bb143fe85f555d1c0cBD63B46756F36f0F13c8', '1717614935', 1, 0), - (41698, '34903621267979703', '29862297099062951', '0x7c3AC0B576E56149b49609E5E1c5Aba9Aaa247E3', '1717636619', 1, 0), - (41702, '1000702519692358822', '856165488428812007', '0xc517B0F8e563bd75eA2dB7F9fF3E84dB9F0C8aa7', '1717640003', 1, 0), - (41705, '216101578758874296', '184888825687386511', '0x51D19ba9e58Ab5E9b31818BBD9abDFcF2087E421', '1717641611', 1, 0), - (41712, '270866820684536654', '231744019093536175', '0xF5001c20e864F33eA6d3515944aebd4DB90C4415', '1717647899', 1, 0), - (41720, '76238290066241447', '65226769761314776', '0x4f125DeE81c11ACAE2d1da6de766a9aBadb099d1', '1717652027', 1, 0), - (41722, '533411078259310945', '456367549160983097', '0x28f39b928DBbB44F25C7d850797Bd6220486E24E', '1717653851', 1, 0), - (41726, '10000000000000', '8555644375633', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1717656407', 1, 0), - (41739, '15500000000000000', '13261248782231798', '0x7b7974459994daC203e33484A3d220cd80467bf1', '1717664039', 1, 0), - (41744, '7064825313546519337', '6044413295867688125', '0x72df6D34240a5284945eb407BF150705F92E15df', '1717671275', 1, 0), - (41746, '6000000000000000', '5133386625380051', '0xf2A94112833d5e0e37B2874565F018d74F14c114', '1717674947', 1, 0), - (41770, '275618213661959671593', '235786551093793377030', '0x50e447a6Aa7d9addeE7E28F95009A111c1d93A77', '1717705403', 1, 0), - (41801, '2000000000000000', '1710964946481954', '0x9aa4d525e124425603e88391277ecB7F51504A26', '1717749683', 1, 0), - (41810, '482181546000624936', '412497861523772683', '0x74f0AE401C40828779a1A059885231Cec11AaC91', '1717755803', 1, 0), - (41816, '2025583267937860926', '1732850983811022448', '0x95913b24997cF1d3aF955305447C619E2a56cfAB', '1717761443', 1, 0), - (41866, '1011769983352504779', '865471574619619707', '0xD6000e5b5994669AabCAfc3aFBbe1dC3847b1Ed5', '1717766483', 1, 0), - (41877, '2465917938159551426', '2109354809825540491', '0x89AdDBD584635A48b0544816655171C6c31D1127', '1717776551', 1, 0), - (41878, '375070047127855957', '320836227227057559', '0x8E342f0427ad726791454Ff520d1300e2822DDB3', '1717776719', 1, 0), - (41882, '1000000000000000000', '855403489785173720', '0xc679CDc8e2dd5249a2347E99FA269ffE068816E4', '1717781531', 1, 0), - (41884, '3064366780345222502', '2621270037889060219', '0x262cC32c29281fa291053ed2fa56B7Ee1aD8A676', '1717782527', 1, 0), - (41888, '10047617798447400', '8594767328819530', '0x9F5744d604e62C360d0dd53ecb4E36F0cF08aD80', '1717789163', 1, 0), - (41889, '5856895121534998426', '5010008526266796824', '0xC86550912897a22FE5A14B47773a56e61639F08B', '1717793003', 1, 0), - (41890, '1000000000000000000', '855403489785173720', '0x8A24de92c00608F34e9E4E1A1065005b7331B42A', '1717793495', 1, 0), - (41892, '146044062462841170', '124926600693118229', '0xeD316dd1995ca77D763cd04ef7D65d49e3D4c5E5', '1717796207', 1, 0), - (41905, '11047079620395019', '9449710459220571', '0x994153bc17a5Ebd5E59dB9aF7C7DB418795e8924', '1717803563', 1, 0), - (41915, '4765201388775459545', '4076169897487684437', '0x4f3cB18261E16ad782176a2e2F11858CFB830CF7', '1717822691', 1, 0), - (41922, '116301871399530420', '99485026663704807', '0x02B65Dd4904a79076E5f3C76364D72362b4CDBC8', '1717830971', 1, 0), - (41928, '2210131190999550148', '1890553933664077524', '0xEd6F9c045Ad1e5568Ce4A5Bf39E7D18d3f9edb22', '1717835495', 1, 0), - (41941, '30411168552503279', '26013819708256434', '0xf2A94112833d5e0e37B2874565F018d74F14c114', '1717847207', 1, 0), - (41946, '3076436380651272', '2631355251333702', '0x5ddD6438aA2791240b55a568e5841833532e66d6', '1717852115', 1, 0), - (41948, '32886850744801510', '28128970243435205', '0x5a2D7733a7A4889E893b7c5eed40D13913660dEd', '1717853459', 1, 0), - (41950, '1504165483839517598', '1286551468988323069', '0x94D506157f08f1a9A23813739b1581adf04cfe0C', '1717855667', 1, 0), - (41954, '100152287393727338', '85662830222667171', '0x28D5fe6b4587eD66EeB9DB445Fd610562e91CF7f', '1717862531', 1, 0), - (41959, '541137230727470642', '462848607148985428', '0x359Eb820bE79a68F3Ff349d5ce60Fc4FAc2D54D2', '1717867475', 1, 0), - (41971, '8307149999999999', '7105319295271520', '0xEB25b594bF402ef0E2adB41861a3a6Ac8efe6e73', '1717885247', 1, 0), - (41977, '1016289194940840003', '869258316798072862', '0x74093F0bF49274D7c029791D5b2275B4C56c57B8', '1717891475', 1, 0), - (41981, '822208659406909344', '703256237388664385', '0x25b77c2Cd0C2F9DE246644cC41766DCD72Bd408b', '1717900607', 1, 0), - (41983, '1439210000000000', '1230993371125804', '0xe3D3d56707F6f72613C482053f8f785D94D752bA', '1717904831', 1, 0), - (41988, '80339152244088530', '68716145562037349', '0xC519ee565Af6466f028f84058dB1522773a0f2E9', '1717908299', 1, 0), - (41991, '2465313989370512', '2108646534320086', '0xd8f0D102e2Ed61576D31442B4bA0c614Cc6bF667', '1717911371', 1, 0), - (42002, '101926048771141555', '87179974001237273', '0x7b7A7bB315464585c04726182eEAdf7FeCaCF96F', '1717924595', 1, 0), - (42010, '1374550459767223', '1175688401450363', '0x88EDd828166C8f412463872eC8Edcb63928145B1', '1717932983', 1, 0), - (42026, '5329126562113566', '4557759218336800', '0xF98e1D60abE4AB087f6998afC3f186046592e009', '1717963055', 1, 0), - (42035, '200000000000000000', '171050890430688666', '0xbbc49E3869ff6A5B929a1A8ABDFF0f7670CA3352', '1717967543', 1, 0), - (42038, '710000000000000000', '607230661028944766', '0xeDc4A044e54d5aA9E0934f483f22e0f7B660C583', '1717972175', 1, 0), - (42045, '500000000000000000', '427627226076721666', '0x04fd2f81eaab70f9a4E0E11261D71215B8249ecD', '1717978943', 1, 0), - (42047, '120000000000000000', '102630534258413199', '0xA6319f4d30A53c50eA5929995A9C198AC631A7c3', '1717981631', 1, 0), - (42056, '10796500623783882', '9233755226168593', '0xc85FE2D3648A1C481D55084327bcb2671a71e6ea', '1717991843', 1, 0), - (42061, '60925533828733061', '52106834056849172', '0x64E7f3E6716cb7FfEf97BDAb0ef45b3F3e590316', '1717995251', 1, 0), - (42064, '5519855976477901', '4720881399128517', '0x22838701da0805988d926de54b7582dcA455B8dE', '1717996715', 1, 0), - (42071, '1000000000000000000', '855254452153443333', '0xA0e608faBE839A583728979FFAF9c7FbFEA160AA', '1718003399', 1, 0), - (42080, '8065618864513101', '6898156443247629', '0xa62c69F91d0A7229a8f925868d8Eb0C6943810fB', '1718008751', 1, 0), - (42093, '50529368915178457', '43215467729210180', '0x7A7d62372d6dFD4643f782C4254E046601a83b84', '1718012783', 1, 0), - (42103, '200000000000000', '171050890430688', '0x5c3c4faF96DA5cD480d92fEBf2AC3ec39ecB1f79', '1718021603', 1, 0), - (42104, '1000000000000000000', '855178533461867356', '0x74afFA1E00110041e45b521eDAe09BFCa83d2E16', '1718022215', 1, 0), - (42114, '200000000000000', '171035706692373', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1718029211', 1, 0), - (42115, '10107098834767457775', '8643373959070582952', '0xf24DD30557aEED59684Fd892E5E520be8b9EdFaa', '1718031875', 1, 0), - (42132, '1001889064380794752', '856794020768650462', '0x1D659c0945aD8619178056F998051Ae1bbA8737b', '1718056451', 1, 0), - (42135, '10000000000000000', '8551785334618673', '0x835719d3AE6A7104c95763Ee08141a5F37Bf0546', '1718059751', 1, 0), - (42152, '102324961194568533', '87506110250913604', '0x0660A4fd82d1b253dE89F32B9c3477C9c86aF044', '1718090903', 1, 0), - (42156, '100045125559912304', '85556443756334185', '0x1a2a20347525a8a829b2b2B6e8Ad22714E80DAa1', '1718093579', 1, 0), - (42158, '1464357568063040277', '1252287157519937393', '0x19FB64ead5b049acefeB34Fcf97Fafc7d5481eb3', '1718096927', 1, 0), - (42180, '6809331901809352', '5822624120531750', '0x7F42e17EedD460Abb7Fa62Bd511C08e1F4dd2d75', '1718110487', 1, 0), - (42227, '11481281838534233', '9817584093662564', '0xB661d0c7898FC533986f950EA458D8F192dc4e8A', '1718154119', 1, 0), - (42234, '100060585319823027', '85561283544266112', '0x49A7de07D0051961ABf7e3d30aabcc4D42716586', '1718161283', 1, 0), - (42235, '16131064060283555', '13793588569576467', '0xF054FDF38bEeeB1f9E8eDA941bB11A8dFdc0155C', '1718161823', 1, 0), - (42242, '10414092165129757', '8905035781559260', '0xbbE6Abdd599cd2c85e2B591Fa92F36c971d0e5d0', '1718172563', 1, 0), - (42246, '1008678768687125', '862515943284439', '0xe8C23C792588A812dBd264F321157e5f543de2d7', '1718175107', 1, 0), - (42341, '10668712899029014', '9121945540974577', '0x7a6bB288F9cbb38962e57Da082Ed82606D1a82ad', '1718234735', 1, 0), - (42353, '100000000000000', '85501837262907', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1718250827', 1, 0), - (42371, '1117194391610339920', '955221730624999079', '0x2472aE35716DA6D76Ede37Ab6fC0068B33B9B074', '1718267435', 1, 0), - (42372, '445803901066491516', '381170526001563420', '0x7c5D7D37931f255A72214AD863B25413B19b62aD', '1718268203', 1, 0), - (42378, '1000000000000000000', '855018372629072064', '0x2f963226be6c17D0c5F9840C97B2c687eDcE9ce3', '1718272715', 1, 0), - (42380, '200000000000000', '171003674525814', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1718275187', 1, 0), - (42382, '335230179938829106', '286627962907448663', '0xFed57E63cb860bFb50eC8d72083E099243986377', '1718276147', 1, 0), - (42388, '203609452423845342', '174072312145654469', '0xBC5aec133A2eE669EaBB289C56947c573D1951cd', '1718281751', 1, 0), - (42402, '876684297738442630', '749505786261069697', '0x534340038F4a22b75Cf75a348B2AEEC69A6FA81f', '1718292467', 1, 0), - (42417, '10004601262439696', '8553257489357385', '0x97C002bB595EA1fAC610a91C6BcE9D9EB3843632', '1718308427', 1, 0), - (42427, '8983556951645266', '7680333654695879', '0xcFA8FE20492D05E7D911807bA4c728369C8d9f29', '1718324795', 1, 0), - (42441, '10000000000000000', '8549323721145095', '0x9110d0A40A5d59e4B11404683DAAEA53fB1A62AC', '1718336591', 1, 0), - (42445, '49999999999999999', '42746618605725475', '0xc8fB199F3d4F3ebCD112023CEB9536cA12A4D198', '1718344223', 1, 0), - (42449, '1000915720799879', '855715251470144', '0xE2448D1de45447B8A4CAd8586f712FF3CA4Fb1BB', '1718346659', 1, 0), - (42462, '8449208001607354', '7223501439303069', '0xa39Ad5C3908408a9C7C6D4f5D415af673F061f54', '1718354567', 1, 0), - (42468, '20781728818534983013', '17766972715470576524', '0x78154a4920e6152738B13Bb9ECED7Fc048b1173E', '1718361167', 1, 0), - (42471, '883776640899297390', '755569260023429375', '0xa42edA6992a2767c8BB1De35917072e2fA54D46d', '1718361659', 1, 0), - (42499, '11110000000000000000', '9497499326937792610', '0x7a16C1b3ed3A72776F65A16DE2E58576E3Acb1Cc', '1718387411', 1, 0), - (42500, '11110000000000000000', '9497499326937792610', '0x7a16C1b3ed3A72776F65A16DE2E58576E3Acb1Cc', '1718387447', 1, 0), - (42511, '14329988926223328', '12250140430407927', '0xD651816e6c826Bb6bbcAAfD7F4E1d50cDa286835', '1718403239', 1, 0), - (42512, '742460932047145266', '634700468262409391', '0x1d7545A753864c3bfF372F2d43661b53f7A1a282', '1718403419', 1, 0), - (42513, '7528539991690786230', '6435850900441718900', '0x75165F6B90206a9dcD8318cbC8Af942a07351003', '1718404463', 1, 0), - (42516, '10045441432261771', '8587450336786605', '0x3C79d607a08EB41345e53df4e0a9f38A6680e299', '1718406251', 1, 0), - (42531, '199741619696146894', '170751205996905460', '0x7B4BF96Edc616F68129392007738706C175E660B', '1718416571', 1, 0), - (42533, '10228089341744932', '8743588806398028', '0x3eCBE7B89fE9c98dE967de2727c08DC1F093D836', '1718418455', 1, 0), - (42542, '119052515950897526', '101773284438694875', '0x30934E243D45E2C2aC42B21b1f9bd9d1230E038A', '1718428403', 1, 0), - (42543, '1083787120698701169', '926486719116090238', '0xA5842b12Dcee21d18Ced2AfB16129FE686b5cE5B', '1718430443', 1, 0), - (42551, '2003964026393977654', '1713109540223614008', '0x9DdcE23Dbb38170a2B784C5Dcb89dC19731A9f30', '1718435783', 1, 0), - (42554, '10033049888679178', '8576857296567397', '0x9c4fA92b326dA00A055c3f24090791294037475f', '1718437259', 1, 0), - (42557, '8452808940063844', '7225971846893799', '0x7D2B48C0f326021639fff670f9A4fc08eed5Bea2', '1718439167', 1, 0), - (42562, '20310442246934376', '17362593300636196', '0x8179c42DDb788E51128f2f6672B5466458291E05', '1718442731', 1, 0), - (42567, '22383978361165335', '19135177265468756', '0xFA68c97A6d477c78Ca6ff3caC41a26ECf995Bd81', '1718446919', 1, 0), - (42579, '120077454783185003', '102640677406893832', '0x45A68D90B5c81Fa07F77EeB0C5A4A90489db8349', '1718458259', 1, 0), - (42580, '33900000000000000', '28977287787923315', '0x18822e6D715cda0aae282Dc9dDC1B8A547e9367E', '1718458439', 1, 0), - (42590, '23166210266893897', '19802181175791393', '0x0CDb4CD0e1976edd0f74bCBa16b241529F415fc4', '1718463671', 1, 0), - (42599, '5019837923578216', '4290893456054789', '0x8aeEBA042414f5835E35849C386b5d6Cc93b9dF6', '1718471291', 1, 0), - (42659, '1000054387328552', '854833739976247', '0x776f013A773BEC54BfD022b3c64870806697cEEb', '1718481923', 1, 0), - (42684, '7700000000000000000', '6581861827935384379', '0x88AF0381792A7369Af665e78b3Fe133AEc31Ade6', '1718507351', 1, 0), - (42685, '3870000000000000000', '3308026658975316564', '0x88AF0381792A7369Af665e78b3Fe133AEc31Ade6', '1718508023', 1, 0), - (42691, '3061992597260888', '2617352232900280', '0xd6e0208Fdc4fFD0FA9bf7Bb20f9D911D0414b106', '1718516963', 1, 0), - (42695, '5083318166151696888', '4345155558057708265', '0xEed950A0775F8a871AD3d604E996E210f2cec427', '1718520443', 1, 0), - (42700, '17150235412501169', '14659802571642481', '0x8cdE8cc0E96EC19d32Fb8dc9596DC6Ee991CbeC2', '1718526527', 1, 0), - (42704, '10538459122492886', '9008140496570565', '0x086d110ca93F27051DE3Af341bb8071de1d7968E', '1718529371', 1, 0), - (42706, '49999999999999999', '42739362519060936', '0x9878A002856395Fd0f3b0f940273A78C4e880d0A', '1718534279', 1, 0), - (42707, '1045049112824308973', '893294657664423117', '0x422740dCF0882323e35381cF2b8C5253a8DD039F', '1718535167', 1, 0), - (42709, '2385341882867256432', '2038959829275261292', '0xee96e9E6543C00BE552869439b5566896A9D4f2d', '1718535443', 1, 0), - (42710, '419623977940480635', '358689226297772634', '0x92f5b0Bc45D934Fc201771eB9d613ef174E02d8e', '1718535659', 1, 0), - (42718, '4086190339402413', '3492540675113116', '0x0097495DA85482aD44275B640dc9b95d0A462128', '1718545355', 1, 0), - (42719, '999999999999999', '854718058881192', '0xE5Cb6B7Ffe05DAaD0D1dFb96Bd1D33FBcC7F2aBF', '1718546543', 1, 0), - (42722, '4364897002234124553', '3730756292965892674', '0x9591a4303AD8fd0839D55d5E2849339282458674', '1718547887', 1, 0), - (42724, '1066049780537145680', '911171999091431784', '0x6f636A3B9b8956B62663cED04ec57eAf7A1EEe5A', '1718548859', 1, 0), - (42738, '99456816982115666', '85007537553456050', '0xCdD6F51b5E5926B04dbCdD0336F733A28c0e17CC', '1718555915', 1, 0), - (42740, '1044388670000000000', '892657856739911656', '0xaA72a0bc4dA4E17789EeA470cf5D30f92eA12FE4', '1718557127', 1, 0), - (42745, '6286734680517697146', '5373385662833168016', '0x5eB8168B9bB13CCadFc0653aaa7C01D7Ea95164B', '1718562707', 1, 0), - (42748, '2637773782557388886', '2254552887195155544', '0x41B08Ae1937e1D86d64d5709bbbD36Fe88679Aef', '1718564087', 1, 0), - (42754, '79999999999999998', '68377444710495500', '0x199Ec812a9E5D59B6B02722b985a1fb9Ad106AB6', '1718569919', 1, 0), - (42759, '202367716445717504', '172967341780703499', '0x5cDBCB70166a456047c5aa3d0e2be8058b9a47be', '1718573351', 1, 0), - (42764, '10121113034250541', '8650698086351771', '0x0F499E76aF57ec5d6FBA297c25A2FECc22A42A77', '1718582267', 1, 0), - (42766, '118229637637715386', '101053006383935023', '0xD919bb2e37688b574d528AA03AE949d4b7A95bCa', '1718584451', 1, 0), - (42770, '1132925151576409046', '968331586413070571', '0x349Fa0bc6F6000284eFD8033b1578eFDD8e8A8E9', '1718585663', 1, 0), - (42773, '1000000000000000', '854718058881193', '0x9308258e0799d0a21Ba88F83667C8755B76A5B0D', '1718590703', 1, 0), - (42776, '1029333003248215', '879789506478663', '0xD047bA96589765E2F97425A47B6418C4c36760fA', '1718598059', 1, 0), - (42777, '10018669432241206', '8563137689697555', '0xe7D2AB98F45469B80B004D78a2d3549D8459566b', '1718598491', 1, 0), - (42785, '47085382730166', '40244726928805', '0x023cf99655a01fa7C65158ac29132834eE62aA9d', '1718601191', 1, 0), - (42795, '419298074365120364', '358381636213978114', '0x81bf07b48F2ca68927D6cCe81F1ED7Af16AfC52d', '1718613995', 1, 0), - (42796, '46086743681597829', '39391172099690418', '0x005b78eBFcCC60497f4f9F56668030ceA326B1D6', '1718614067', 1, 0), - (42798, '10286792187666985', '8792307050756954', '0x4f961a7167291ff1e0aEC9409B4EA133E83C44dE', '1718616095', 1, 0), - (42799, '10390194437156130', '8880686820724265', '0x140f38c70E4f2306419165C41385b77D6D5f1B8D', '1718616239', 1, 0), - (42808, '10039586174189373', '8581015606773611', '0x600F9Faa8A2D39A710b28e2D0EC8a5daCC12B00f', '1718621591', 1, 0), - (42813, '105488864936902120', '90163237872449403', '0xB596eEebD137A9a842691455A388758312bD5B00', '1718624471', 1, 0), - (42833, '10203788077790234', '8720658547921989', '0x5c965920C386bD61d271d5C16f49149AC4c7DbF4', '1718651771', 1, 0), - (42842, '1618904212816501081', '1383595068236909205', '0x0847aCa886dd64E9d28f1B53cCA9Ed75CE9D88aA', '1718658983', 1, 0), - (42851, '13605160162768756', '11627638222665972', '0x45233Ff6BBC10f0Eb41F430561ac97d78dDfb4cd', '1718667635', 1, 0), - (42864, '3306000000000000000', '2825470005809227285', '0x88AF0381792A7369Af665e78b3Fe133AEc31Ade6', '1718685563', 1, 0), - (42865, '1337358646977208192', '1142972396867426730', '0x2dbDf369F002CeD963BCBe6C56F210bE57B080B1', '1718685935', 1, 0), - (42868, '525724754371479398', '449310201085311095', '0xEEbCb6BA915d7825cD32dE05aae026A93BBaB10A', '1718692103', 1, 0), - (42875, '10457623090550095', '8937598419360945', '0x9B92E5b9A41F8A7B7CAfC528562B6c56A60A2B53', '1718696015', 1, 0), - (42891, '7340306481742754507', '6273386508654328273', '0x3b73Cab32614e4748691fD7c2597E50B72eDE16b', '1718704667', 1, 0), - (42894, '3551519858689665', '3035303338101474', '0x85d75f6ce99C468A7A778A44085A99E67EFBE1c2', '1718707367', 1, 0), - (42896, '10968200000000000', '9373962528044999', '0x9747D9A97619bee9f3aB529B303886E967cEAd6D', '1718708831', 1, 0), - (42910, '16819473983848156', '14373488063600453', '0xeEF5704993a9c774e7CF91eD15a333521e46ea54', '1718727431', 1, 0), - (42914, '52323843833473533', '44714605552132565', '0x9d33E7cedf375B062a0D1011c465B2acD432A775', '1718730119', 1, 0), - (42933, '11000000000000000', '9400315898787169', '0x514BCb1F9AAbb904e6106Bd1052B66d2706dBbb7', '1718748647', 1, 0), - (42934, '1013692065664123745', '866275058303351758', '0xe097D67E58733113abeC4282Be3493EAE02e7bbd', '1718748875', 1, 0), - (42961, '5796929983792966469', '4953906644618642604', '0xa5E98667C0685f988FA197D040Cc36ca7D8D6361', '1718782631', 1, 0), - (42962, '5796929983792966469', '4953906644618642604', '0x4F371084c17e4629Ebb5af7D78f2266122BaF3b1', '1718782823', 1, 0), - (42970, '9764552953251504', '8344534760999937', '0xBCcE0F715cb848381483A49f466A4322621B705B', '1718791511', 1, 0), - (42972, '21142957166914052', '18068225127592571', '0x75B8D04a477C7B41b5178DFF3cC043fb8383D74C', '1718792675', 1, 0), - (42975, '99999999999999999', '85457417261701535', '0xd265f5E07430a07F11169288AF58e5Ca7490bB14', '1718796239', 1, 0), - (42980, '10014810928547394682', '8557694475007712915', '0xAFFB00A35cd862df090ebcC91E52FB0Fe1701090', '1718802395', 1, 0), - (42982, '10474179511608244', '8950226696863861', '0x65049a4B1e74eC408C731aAc91bfA452081aC64F', '1718805119', 1, 0), - (42987, '10477747179903670', '8953275283150538', '0x56E134B242848b6f4d0d949Bd22e84b679a1c4e4', '1718809787', 1, 0), - (43007, '10023985962351534', '8565534576698487', '0xb6D005b55aACD530Aa27f6e19092b4c37d985fF2', '1718828567', 1, 0), - (43012, '70811056651053441', '60508320386241470', '0xa5633Cb820C7067253De5Cb5c78E37CcE674b6aC', '1718834831', 1, 0), - (43013, '100000000000000000', '85450384795721448', '0x04805A02955D1653735B6A4376726c98628508BC', '1718834939', 1, 0), - (43029, '3007212901719201', '2569674996145637', '0xd5c1ce0F711C7C0EFf5AB0C24fe7D5bEce43D646', '1718852711', 1, 0), - (43049, '1010550473864246', '863519268471984', '0xFbd9275BF42f21B7CB857E6C00FFCB99443718B5', '1718871563', 1, 0), - (43050, '2348945938495136808', '2007183343087564858', '0xf0A1F0510735Bcf981DdC784320E974DEBF76c81', '1718871803', 1, 0), - (43052, '1000000000000000', '854503847957214', '0xFbd9275BF42f21B7CB857E6C00FFCB99443718B5', '1718872871', 1, 0), - (43054, '100000000000000', '85450384795721', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1718873459', 1, 0), - (43059, '2002660984265784412', '1711281517208895343', '0xd109b56edB8160A1Cea1800d403092c631D1aa62', '1718879303', 1, 0), - (43062, '3087795729263194', '2638533332361252', '0x3d236B449A3960b295a1a7407DE3407A6286910a', '1718881235', 1, 0), - (43063, '558209232848479450', '476991937434270418', '0xff0F3D2b74914c87F1810Eb0235e7d5427A7Ff4F', '1718882867', 1, 0), - (43078, '4999999999999999999', '4272156995659113719', '0xF0aA926edE618Fa4771AEe8F60E96859CCDCcb16', '1718891039', 1, 0), - (43079, '200000000000000', '170886279826364', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1718893043', 1, 0), - (43086, '490102777403202443', '418759201815010543', '0xb9A0Ae8ad7fb963102b6d8A108F238eb04EB5Dd5', '1718896007', 1, 0), - (43093, '1000000000000000', '854431399131822', '0x626A7976D5256D12b4E503C053b043ECcc674Ddf', '1718898887', 1, 0), - (43098, '107832774165723766', '92135708102685227', '0x949fBcA240b7D2B2F649e874AF2498f01a28C1d8', '1718901731', 1, 0), - (43100, '3145208593033401', '2687364978706960', '0xE9B98814baD2D85fD5880b91a2a05DD30f1CDc4D', '1718905715', 1, 0), - (43107, '400000000000000000', '341772559652729097', '0x07D8fc594408C18fA354A884FCd6e10723413793', '1718915267', 1, 0), - (43111, '25231330437329348', '21558440967524659', '0xDEE9Fb57DabE0C676e9c899cB9480dD9C3F96D82', '1718918627', 1, 0), - (43113, '2289511494658906', '1956230509709799', '0x15d6c5Fa161837C0B30f3aA8C9C3ebeeEA8FD0D0', '1718921279', 1, 0), - (43121, '9323726388267368', '7966484583049583', '0x5d3def61252919833790910dD0aC76db797a2829', '1718931635', 1, 0), - (43122, '2300000000000000000', '1965192218003192311', '0xDd8f34567d07b168704cd8421da0D31CB9054633', '1718933255', 1, 0), - (43131, '21963722708991480', '18766494324386978', '0x0359F194b3b801a1cce464Eb8367A5A7b796a69D', '1718940263', 1, 0), - (43135, '1004128680745592', '857959073597847', '0xB377384FAE25Df75E130dED84624D0eB504D3fAa', '1718946131', 1, 0), - (43140, '23182120620925025', '19807531756979648', '0x1c89FDcdF656C4f05D4D862B00158EDc3c72A9f5', '1718951027', 1, 0), - (43145, '10542848151090454', '9008140496570567', '0xbb9440BBD13829819a3529733bBF2c1daf19C436', '1718954147', 1, 0), - (43147, '10818479053302550', '9243648193991614', '0xbb9440BBD13829819a3529733bBF2c1daf19C436', '1718954231', 1, 0), - (43153, '15950043818325850', '13628218255906036', '0x2f624e125739E6F6e6B4887eF5d07c7eC159b669', '1718957039', 1, 0), - (43154, '1073912389018750860', '917584465094289612', '0xA94c1c2A942D8484d4dE6ebC49255aBc91a6A10b', '1718957207', 1, 0), - (43166, '4787974122033', '4090995428095', '0x6291a2710471c6689b22aCf546Cc8c7379011aD0', '1718968895', 1, 0), - (43175, '12963823919009757', '11075791594153092', '0xD5E96f8F1006e2360103964e99157c9ceF63874B', '1718977943', 1, 0), - (43176, '15850573794984874', '13542119446991589', '0x68A3C0D773B5F91f3300380B6fE63cBCBe6a001D', '1718978279', 1, 0), - (43203, '4000000000000000000', '3417445859600696502', '0xc795954BBd35C4A05F137747ccc389d8d8269620', '1719008159', 1, 0), - (43208, '1317153313507729', '1125325034426581', '0x4e38dcBBc2E8438a46e2B96625A2D8EC5ebA80Ea', '1719011531', 1, 0), - (43209, '10821692278435658', '9245636867703191', '0x5A5e833A813Ce62e6fCbA8bcF333C90ef43Ad135', '1719012863', 1, 0), - (43233, '2890110992706659', '2469199461452957', '0xDF84F391Dd2e3A212d88b491065B25f3aB19A441', '1719038927', 1, 0), - (43247, '10543711141774287', '9008140496570567', '0x4E005f8C58DEFdE5A6B6d42A03f059D15169cdf2', '1719048047', 1, 0), - (43252, '1601338928083337', '1368122272398954', '0x2252186d0A29819931644b377Be2A499e16127F1', '1719050375', 1, 0), - (43254, '3158107067497467', '2698164980498728', '0x6De2435678c4AfEfca31B0acECb7fD421c78edb2', '1719051131', 1, 0), - (43258, '10480696706168366', '8954303391056434', '0x17Ea898ebDc0E6FE15E7077461d3B4D58983E720', '1719053099', 1, 0), - (43261, '2118980574334866', '1810375347583748', '0x1634Fb9Ced0809AF7173ECAfDEb7a95CB4de8208', '1719056087', 1, 0), - (43263, '5241685490643302', '4478294094331999', '0x1dC87a873176cE0918E62D637ce1B3D1187F5a67', '1719058559', 1, 0), - (43267, '1577780820669092', '1347888840331022', '0x44d5c56556FaD706Ad8aBB1488468a788EC8dC7D', '1719061715', 1, 0), - (43273, '278806190440113019', '238182482501003012', '0x74B8F7a3b78018EEd7883ed37EE73d54D0Aae063', '1719064415', 1, 0), - (43278, '1373836847051410', '1173660707696311', '0x1FF8AAfe0972B63fb706aC8F321cc933B09D4Ec7', '1719066263', 1, 0), - (43284, '33500000000000000', '28618852225583913', '0x8191544815E29d7066d838bEC63bFf57da037ED9', '1719068375', 1, 0), - (43294, '10671793446510134', '9116850138138160', '0xfEBF4aB9EA77a41f4b228Af62EC9C8B733739eDf', '1719071555', 1, 0), - (43295, '6026224536161218', '5148168044136891', '0x6c40a42B24c82d10bF0fc65DECb9AE6D73346D9f', '1719072323', 1, 0), - (43300, '532510000000000', '454920149213304', '0xDF01fEF0658A123FAaFC86eC3483bB9b6C6f860C', '1719077639', 1, 0), - (43301, '541099302066292442', '462257939259755695', '0xdEFBe9e6ceda51d9eafdf43bF311f7420FA89539', '1719078563', 1, 0), - (43305, '14512542459553197', '12397979345297464', '0x0BF0ec1CE95653f13fAEceec7126531eD1ab8A46', '1719082535', 1, 0), - (43313, '5001639226655936', '4272870863085075', '0x64D96BbB93F479B754a53D854CbE5Fb887a3701a', '1719089219', 1, 0), - (43314, '2748859096969856', '2348334098063652', '0xc5255Cf0D389a882f053Db8ab37b59DB0A543140', '1719091775', 1, 0), - (43315, '4195282407664921', '3584004993121022', '0xA3c56b60E018fa19100eE08e9128C3b80B25bA8e', '1719091967', 1, 0), - (43325, '10459528716186131', '8935513632172606', '0xd7Fb4f8C17948758B42928d2e89206Eccb1C74aE', '1719096755', 1, 0), - (43335, '8059872762781739', '6885501718061472', '0x97FeCFcdC8E5A0aCDDE30B073c56a6d89F62bd5f', '1719103247', 1, 0), - (43337, '862365210715171', '736713508356477', '0x3e02fC6AE384BB3434228357Fe398ED7279d06B9', '1719105311', 1, 0), - (43338, '10968630634040520', '9370436395003535', '0xC06b8E8Bf9c95c94133B71618c8e428DD62ebCc9', '1719107279', 1, 0), - (43341, '5447774539482535', '4654001626977585', '0x4e70Bd663B20bB64DB6172F5c871bd41C1Cc7298', '1719109451', 1, 0), - (43345, '2069651227650961', '1768090825153468', '0x3aF04E9E92A210b782a62c112509706520Fbe98d', '1719111263', 1, 0), - (43352, '20928306895088223', '17878929025737276', '0x402d8775ff33bCe06b5B1A5cf0C8118CE7520bf4', '1719113555', 1, 0), - (43355, '326390174814687350', '278833199429971274', '0x7FF4F8FE1dBbBA8Dc27103359BF96e97a4d44114', '1719114239', 1, 0), - (43356, '12628672244808268', '10788600142671668', '0x14070e52D7dD660b4886bD90692d6ABd10e768Fd', '1719117827', 1, 0), - (43358, '110806448206738711584', '94661294533446950135', '0xB94410735bcb5F0e6cAeA433f26a73Db0a727D1b', '1719119579', 1, 0), - (43359, '200000000000000000', '170858819257217394', '0xB272913EAc8C047Edb27b31a6c723B6F4eC11e3B', '1719122447', 1, 0), - (43369, '70467536017994622', '60199999999999999', '0xdb8dDe8d04118985b9aD288de337dDe5A0517e25', '1719129083', 1, 0), - (43370, '10137413889864221', '8660332837719580', '0xcb27C4A254eE60c9FF0948433Da6Ae5d82d2Ec08', '1719129299', 1, 0), - (43374, '150583331953648965', '128642451487090386', '0x6b91B0549776d04728Ee14d8ba300309F30dE56F', '1719129899', 1, 0), - (43384, '242699655421706940', '207336882797431838', '0x614dAB7eBD49F62eE7474c007f9C2B495Bb93FdF', '1719137315', 1, 0), - (43389, '6548127256592488', '5594026457036973', '0x11De2Db353A4924635f182f96B2Ef7E8C7E16F35', '1719139067', 1, 0), - (43391, '9484694884879264', '8102718845227202', '0xeEDdB97B3b49344f763b9af86b0c86e007937C52', '1719140207', 1, 0), - (43393, '1097370579077703', '937477207144126', '0x17A4199329820f7e6cf677b5d51716ac584CeDf9', '1719140855', 1, 0), - (43397, '50000000000000000', '42714704814304348', '0x0a39BfcDea5a517fBA694e727c3fF2fE5eae3F77', '1719144491', 1, 0), - (43399, '6920571005766882', '5912202953155314', '0x5b7024980B0f1154ad70059c34d20465cc87798E', '1719145331', 1, 0), - (43400, '5131316439005813', '4383299648340892', '0x6fC2b03148aF66C0aDfbf1a3E3587eD8E2d562b3', '1719146939', 1, 0), - (43403, '10000000000000000', '8542251682280097', '0x0a39BfcDea5a517fBA694e727c3fF2fE5eae3F77', '1719149771', 1, 0), - (43406, '10269766968296653', '8772693416155666', '0xd9D6869fbB93e7918b933160d472047B2bc4b6d2', '1719151115', 1, 0), - (43410, '7162277443077790', '6118197653708804', '0x6a738C309BeAC3c68Ef8f50f3c5880C97dbC7726', '1719153431', 1, 0), - (43426, '2011880214512064', '1718598714696172', '0xBf4b5A359ecBEA7B1d9dAbcbf1f582964254C815', '1719168203', 1, 0), - (43427, '12109697621690272', '10344408488078702', '0x1bD8F4C8255C3Ad4BCbFB3BAaBb81Ff191f11E91', '1719168263', 1, 0), - (43443, '10000806907366358510', '8542940962860869734', '0x22bbc7926A4292bC1b2E374810Fbaf3A314a7A41', '1719179615', 1, 0), - (43457, '10000000000000000', '8542251682280097', '0xb40194A540360e4f658583528736b43B45C3DC65', '1719188807', 1, 0), - (43458, '6421005925942020', '5484984867280869', '0xd6e34fA48bB95dCa31dAA0B0860AAf094bcD598f', '1719189983', 1, 0), - (43460, '2097311949011901', '1791576652471306', '0x1C81fFfB51ccA8822E12304bEacDff88DDA7D66E', '1719195215', 1, 0), - (43461, '56289274388762292', '48083714884173070', '0x70119Ff6b53c6BBbBc2a18cb22E63335F1160144', '1719196019', 1, 0), - (43468, '88380532304183318', '75496875075622046', '0x754EAF809753736954be648F73456E102661e5fb', '1719203699', 1, 0), - (43480, '6835544137511782', '5839093840795987', '0xcC3b090d85AE22fcE8c1044380600a08D6105f81', '1719212771', 1, 0), - (43487, '1046281326257449105', '893759841936094639', '0x4AC0C71912aA8EE9420A9fAC4835fF9b84B9495B', '1719220619', 1, 1), - (43488, '2000000000000000', '1708450336456019', '0x8B36585356d8cA330d7DaDc6fc701AbD32472f4B', '1719220715', 1, 0), - (43494, '12357823689619493', '10556364020197295', '0xaf0695c1F2d91Fd36b781D9257d4B16FEB669B9a', '1719226103', 1, 0), - (43500, '3145513099518032', '2686976456599199', '0xa93510Ba4140B0F95563dA226000A83804218004', '1719229919', 1, 0), - (43503, '136049995546800120', '116217330333385312', '0x33b817Cbcf83Ce8b176438D9c6aD057fbaDbEBD6', '1719231443', 1, 0), - (43515, '10000000000000000', '8541548295811485', '0x78129EfB86903cB4203Da686F9a918A2b5eC55F9', '1719234719', 1, 0), - (43517, '20000000000000000000', '17083096591622971954', '0x11b255D7f605dB3d68b6d1842C723564B69aC86B', '1719235547', 1, 0), - (43531, '1110138657014473914', '948230295393643140', '0x0247e3fd3F7dc39185f7fac3F0A844758bF99deA', '1719250667', 1, 0), - (43535, '275660948693417888', '235457130653404103', '0x8241dA13fCe96D084EE911bF2138F4183bb1FAE6', '1719256343', 1, 0), - (43551, '11707479316020133', '9999999999999998', '0x1F9Df21F6876Ba3D855FCc972c83A9506465C728', '1719270095', 1, 0), - (43561, '9999999999999997', '8541548295811483', '0xe4Eb310389c6D68483Bc3373f455A452aD193c75', '1719274595', 1, 0), - (43564, '45710243864588642', '39043625558270454', '0x58c1F7d3930E360AE284Bb0F314E1F5ed359Df50', '1719275303', 1, 0), - (43565, '5400000000000000', '4612436079738202', '0xfF98ca2E95b8E92CE2306049Ad909D2Dd6fd0210', '1719277571', 1, 0), - (43569, '10980590733012964', '9379124606257027', '0x721C7ffFe9aC426A028e616677811F755Fa99EbA', '1719278843', 1, 0), - (43572, '8021730912877377', '6851800200834607', '0x03f195B273ed8c435Ab25E07b14dF693756f97B9', '1719281039', 1, 0), - (43573, '100000000000000', '85415482958114', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1719284339', 1, 0), - (43574, '999999999999999', '854154829581147', '0xD1A9651A7acbdF54850054334EfA05ceF25517C9', '1719284591', 1, 0), - (43577, '100000000000000', '85415482958114', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1719287903', 1, 0), - (43578, '200000000000000', '170830965916229', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1719288251', 1, 0), - (43579, '89007043228599601', '76025795840446418', '0xC8d0F8d34378663E83219c4D760444CeE10858FC', '1719288791', 1, 0), - (43581, '600000000000000000', '512492897748689158', '0xaFc0a435c0840E130635A7425fDAe1c3A5A6eE16', '1719291407', 1, 0), - (43583, '10594103363360386', '9049004552896163', '0xEF3F281f1c0FAc7Fd303d793e2099D53317Cf247', '1719293231', 1, 0), - (43585, '6243336537526276', '5332776056228514', '0x806a60559341F08db3D8A9da353D06ff476C081D', '1719296507', 1, 0), - (43587, '17214221412834154', '14703610357251515', '0xf57416BaD80B82B8Bb978e05FB4BF7897Ac39A85', '1719297983', 1, 0), - (43593, '100000000000000', '85415482958114', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1719302195', 1, 0), - (43595, '10387958514198868', '8872924934391575', '0x2a78E0e42dcE56b6d883728205823f541d069ef5', '1719303359', 1, 0), - (43596, '10003237932293958', '8544313991318226', '0xE43430445595cB710D4da190FEbB3020Ff62F3bA', '1719303671', 1, 0), - (43600, '10415613878202729', '8896546897119298', '0xe4870CaEEec09937C9501e0751F93fC09653362d', '1719306059', 1, 0), - (43601, '100000000000000', '85415482958114', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1719308051', 1, 0), - (43606, '111100000000000', '94896601566465', '0x82Fe3A608413896099498b7d90D145074CFc6632', '1719315899', 1, 0), - (43607, '1387099765997216637', '1184797964237403674', '0xA8b5D8D924f6B464aDb648d69AaC2B179225CaA5', '1719315935', 1, 0), - (43608, '329061455615693165', '281069431543147088', '0x9020D2115A4D6151B5307aA9a58b9e8601E2187D', '1719316343', 1, 0), - (43609, '444000000000000', '379244744334029', '0x82Fe3A608413896099498b7d90D145074CFc6632', '1719316835', 1, 0), - (43611, '21335964347987533', '18224216991604753', '0x5c1f51b6AF7cd8aDd0A1D512815EC98666BD2F9C', '1719317531', 1, 0), - (43614, '52906093399755069', '45186228878123337', '0x7Ac9E406497AC382E0c679BcAeBcD60b80BACE6D', '1719319751', 1, 0), - (43615, '8398311208718317', '7172860214785984', '0xcc8b618df326Bef17ed8B5FB3388E95c64E87172', '1719320075', 1, 0), - (43616, '20981580850958194', '17920024965605113', '0x98a264C144dd4E2fD1e5C59311444403DcE5C9FB', '1719320327', 1, 0), - (43617, '4613606011707505513', '3940405420285033720', '0x6aE19Ae7e79B3AF6408F4170A418aaBa449Aa2b1', '1719320963', 1, 0), - (43618, '27179368270814688923', '23213453810851994304', '0xb446B257397fA58a50d913Cb2294E7f3000912d4', '1719320999', 1, 0), - (43620, '105949863915755154', '90490045528961642', '0x04f51DA4fb85D566388e1635a395E514d2d2e675', '1719321671', 1, 0), - (43633, '101436817793755673', '86635526665409725', '0xcFEb03618a6922C0A6C56eDa3414aeD4866f6250', '1719337775', 1, 0), - (43646, '25509444732916033', '21787199435532657', '0x4CEf3B9B2A03c31FFA5a9979b631e2E9DD191526', '1719352511', 1, 0), - (43650, '1003225825519018584', '856838765731972725', '0x18b8f5B788676f994f3Dc03CDDC74B56422c6DB3', '1719354227', 1, 0), - (43655, '2987465652996733', '2551545542057874', '0x6886b76810a4d652d0C13115f52f056914Ca68Dc', '1719358787', 1, 0), - (43657, '7005766725808421', '5983510752668530', '0xC457367B896176C5CCcdcC0A07332CD0cC9DA673', '1719358967', 1, 0), - (43660, '64200000000000000', '54832169747557818', '0x7E879412C6EEEA007Fd44FaeB2c0EAB3D83122B0', '1719360443', 1, 0), - (43682, '15097585197480369', '12894600534680059', '0x07980FF4d543034DA9E37c85f7470735CB6716eD', '1719374267', 1, 0), - (43686, '105440956958117', '90055396421688', '0xb25D582D85615Da01C8eD9C57a7d3A3EeE6284e0', '1719379223', 1, 0), - (43687, '6519750265882171', '5568412045023931', '0xC11f47aa9131c0C50795df7E19f55D0aaAC2C309', '1719379583', 1, 0), - (43689, '3130491181042443', '2673701305796759', '0xF068699A9C7e27221a06BE8262d5730045269586', '1719381263', 1, 0), - (43690, '2281468169836006', '1948564641154173', '0x21520f4b9E041e4535E1581339f4A06740eAD465', '1719381503', 1, 0), - (43691, '10813611673134809', '9235728829369167', '0x2e7caed2701104221A25F616e8b62C0139A42c68', '1719381599', 1, 0), - (43701, '54484863320276170', '46534630440029121', '0xE42aCe1D1e686e9245F74795DA3433aec452Fd75', '1719385235', 1, 0), - (43704, '11132170688380306', '9507804872960381', '0x0ad65AFA08E18ae282088BbAE83526d6F14554B5', '1719388571', 1, 0), - (43705, '900000000000000', '768675276834922', '0x9537D60F397e1DF1204a57835645AC94f7D68C5d', '1719389195', 1, 0), - (43707, '40507429824012069', '34596733148715200', '0x59E50B2AF185c39ba01d4664C2BF1E6026860b29', '1719389927', 1, 0), - (43709, '104867811060465', '89565881886639', '0x264cbdDdF3Fc4C83695eF04090A3ed30D47914d3', '1719391211', 1, 0), - (43718, '57162442026090990', '48821506609961900', '0x9a39C247c02e354753E32adEa8E7122E804ceB16', '1719395891', 1, 0), - (43720, '10059210878695647', '8591407452135824', '0xDc5e294173983BcD118Ea3F84D9e39be4a41Ae95', '1719398759', 1, 0), - (43725, '109892750930401904', '93857600826197656', '0xcf15D742aBeD8df35e8B57Ba2d4B3EAE4B9556B6', '1719402155', 1, 0), - (43731, '1000000000000000000', '854014277588547067', '0x3058B6269968bbD196072DFC0907c7B3bAa2A36A', '1719406763', 1, 0), - (43739, '86744475244534556375', '74081020360758783851', '0x22463ad5F36b0A2b78cF2DD70758D5960848C745', '1719410579', 1, 0), - (43741, '50000000000000000', '42700713879427353', '0x98F518cF66bcd1fbC1cfF409c2e416fBb9Ce9120', '1719413339', 1, 0), - (43752, '750608669991732074', '641030521054689194', '0x04B3B56c548C88863D921630b905FC6AA742E771', '1719421943', 1, 0), - (43756, '500000000000000000', '427007138794273533', '0xE746Ce983f7690241951F32D85e6C6F7b7881501', '1719427091', 1, 0), - (43765, '58451147555248193', '49918114553616854', '0x511cF56Ae40169A916eeEE328A81776C4C63B1dd', '1719432647', 1, 0), - (43768, '198342888239752395', '169387658414898069', '0x8e8e842c927877644220F9B1334B4c24799221f6', '1719436415', 1, 0), - (43769, '50625690077925268', '43235062139321022', '0x46932C0997c062971BED7a8e4ee5Dc39c78C2287', '1719436535', 1, 0), - (43771, '550000000000000000', '469707852673700886', '0x7F15006a2789892055bAa650be837a01467f72f8', '1719437195', 1, 0), - (43772, '1646866705234290025', '1406447679555292880', '0xa4f15E9075082073e06a420bC01D3e63c5E6CC87', '1719440435', 1, 0), - (43773, '2683051050937756296', '2291363904999799941', '0xc6b44635cbF214ee4c914a735F8f93305AC56b9A', '1719441179', 1, 0), - (43790, '22970653061743182', '19617265680261750', '0xAC6E453b964714200F353D2B435dF5BFd2393D71', '1719463703', 1, 0), - (43797, '2109599507400874', '1801628099314112', '0x122b8fB0823E1c217A5AEDc49F7AD038B9A7b8b8', '1719467099', 1, 0), - (43816, '9843603184374050', '8406577662371525', '0xa22DEc4522FF13dbdfe040F2C332CccE672cbd18', '1719477515', 1, 0), - (43821, '100999999999999999', '86255442036443252', '0xd4B55182f943c84FB3156b2e8B4711EC7c796DB1', '1719482615', 1, 0), - (43823, '5245227656822516', '4479499308128748', '0x31B21904EbF825C6aD81c324177653DC83AD6023', '1719483539', 1, 0), - (43825, '10301887804280125', '8797959270970554', '0x4aa8D4d19C7CA3cd4cDbd655b11072A5e36c0782', '1719484595', 1, 0), - (43827, '149996430906566559', '128099093581531853', '0x39b111A79aBb91E4d6d88Ff077fED651C94A27ab', '1719486359', 1, 0), - (43829, '114382479512148623', '97684270609354391', '0xC19eB7400b215C8dC283dDa8443935Fe2858B784', '1719487079', 1, 0), - (43831, '521903926533455908', '445713404789095488', '0xED4416ab8d1402E1619Cf0298729E0E63aff6607', '1719488915', 1, 0), - (43838, '444134217037448714', '379266020060487294', '0xDF23de58856FF5CAa50FaDB350F9e4d98c08E195', '1719495191', 1, 0), - (43839, '20118098223327046', '17179741509769444', '0xd1047D3457395997E005A808aaAE97d66F2B448e', '1719496883', 1, 0), - (43846, '5065140057625577', '4325349043175885', '0x59FD51f8B0a09e0854f8aA85a954D470237d641D', '1719506243', 1, 0), - (43854, '66994950135234419', '57209976460333663', '0x828F8EA2e2a558d955F6427D648493244FdfAF73', '1719512399', 1, 0), - (43860, '253414623898903744', '216402051776971040', '0x36C9b4ef975fC652485DCfc70a6E7eb4AB71AA77', '1719520403', 1, 0), - (43862, '36276833980138336817', '30978406788419123527', '0xaA7f0EE720F80D76FF0394edD0bF2Cf25668802F', '1719522011', 1, 0), - (43870, '1171036142', '999999999', '0xEEF2A83C0e27525b11416a920cB663f9198D27bC', '1719532799', 1, 0), - (43871, '1171036142', '999999999', '0xEEF2A83C0e27525b11416a920cB663f9198D27bC', '1719532883', 1, 0), - (43873, '540000000000000000', '461130088554727162', '0x03905Ab84D6FB67175Ec37BCf1317a332613E32c', '1719534767', 1, 0), - (43879, '10931696864386848', '9335063598385445', '0xdCff5E8b27Fb1C76295d9E68E5984ec2af2483e8', '1719543539', 1, 0), - (43882, '6581878324796325379', '5620559508832905174', '0x27c41eFc2f6ED34b02c56B18B9848FE6Fd8D637A', '1719545747', 1, 0), - (43883, '3367856680857841', '2875963054599269', '0x1bAf812e927710f768f1745C1f7E42C784f3afe7', '1719546299', 1, 0), - (43892, '20321361884562069', '17353317417371785', '0x76f6988610B1c294d8B0De3e725005Af9D557b00', '1719554087', 1, 0), - (43893, '10973812392243562501', '9371027926330067239', '0x4018953CF89504f662bE8A0D9115D8CDF7224FF2', '1719554843', 1, 0), - (43894, '14999999999999998', '12809169126520197', '0xd873d4dbB5A9FC6fCfF9EaCB8Ec31b528E378c85', '1719555011', 1, 0), - (43898, '2145673612867954', '1832286413169149', '0xFEC001c5fB294492729A505cf9606fd04D693b6F', '1719558611', 1, 0), - (43900, '6322612907002913', '5399161203154655', '0x8cAC67Ef4Cdf7D5795bB12EC9c768E2E5e36326d', '1719560003', 1, 0), - (43903, '15361733922554162', '13118069859373253', '0x7A8E4f750c7c21052dec1ee60205AA634FCfEcE0', '1719562043', 1, 0), - (43905, '100000000000000000', '85394460843467993', '0xa3Ed8c3bE542595faB8F015164f1076d2A5b97c8', '1719562451', 1, 0), - (43906, '10519989937797790', '8983488688169506', '0x13D90C6f458569bc4D39C4939f21f1B86339c510', '1719563339', 1, 0), - (43907, '7466150817878358', '6375679236687399', '0x8cCf37508F360b5F734D9c7c31318667D3994Ee0', '1719563483', 1, 0), - (43909, '1820105326970807148', '1554269130749960996', '0x49d147E1d42cC317371F386FCc74425C6e44f631', '1719564875', 1, 0), - (43910, '29000000000000000', '24764393644605718', '0x6778E35A6a011b34e60E945965a8776eA3d85D29', '1719565259', 1, 0), - (43914, '2000000000000000', '1707889216869359', '0x90752cEC7491F9648b87A6FCa1df00F2dD9Ac7d4', '1719568715', 1, 0), - (43916, '3222487517117923', '2751825840990908', '0x5fcB0438B8679966090FD7DcF7D5f1B3136F6be0', '1719571283', 1, 0), - (43917, '493000000000000000', '420994691958297206', '0x594c90A884f8F1407BB50e8E4B66717f3Aa09634', '1719573503', 1, 0), - (43920, '2324737844565041162', '1985197348390375892', '0xec05ccc683cD5FF381168af4c3A215Aee14BCfed', '1719575519', 1, 0), - (43933, '25335100000000000000', '21632916122118074437', '0x0Df30e662857deb72077D97db04639716d14D7cf', '1719578795', 1, 0), - (43935, '1667946474283807351', '1424211713171220018', '0x5436f539a9d716a16ffc8f74297390e4C0703903', '1719579575', 1, 0), - (43936, '1005801104941544105', '858824750592423267', '0x5436f539a9d716a16ffc8f74297390e4C0703903', '1719579803', 1, 0), - (43940, '11638197934818610', '9937523820175913', '0x390F8E93D55C0cF882286ec40CC2D13Ca0938708', '1719583019', 1, 0), - (43944, '1e+21', '853871353265551524848', '0x0D00E1f909443f94EC48b3AA38d8ff79B1022d21', '1719586235', 1, 0), - (43945, '584225844059405552686', '498853712079713695393', '0x0D00E1f909443f94EC48b3AA38d8ff79B1022d21', '1719586235', 1, 0), - (43952, '1079675424038408294', '921903915411233869', '0x80b751265Ebc76579467355c612A82214C1c728E', '1719591263', 1, 0), - (43954, '21000000000000000000', '17931298418576582021', '0x0EB789Be88a001a2ae611717ABaBD85DC6F2357d', '1719592199', 1, 0), - (43956, '18530711301611669996', '15822843536080406382', '0xd84F483aAbf6801e926f4132672d48BBbaefd11B', '1719593531', 1, 0), - (43959, '3043861103926729150', '2599065799962291789', '0x084FDbb5C6Cc9BD92041B90AA6cFEc58c93D834a', '1719594503', 1, 0), - (43962, '23640336051839480100', '20185805736236582298', '0xab8c266E083F7FbDF1716a5F0Ce84622A3F17d89', '1719595295', 1, 0), - (43965, '109638036024005558', '93616778189194913', '0x53E5bd70538A7d40D84Dc0Ab6CfAe772447b78E7', '1719598403', 1, 0), - (43968, '23844197116774715', '20359876859630987', '0xc7D46b70F3e0ce07915Df817723e96C671b4Cd65', '1719599195', 1, 0), - (43970, '361537393088259165', '308706423092371507', '0x82a42eC5da85c159a991ff98Cf52aBe130834B8B', '1719600131', 1, 0), - (43976, '253981551920902718', '216867571443186141', '0x660BFbA0a767656c94C40Dc8a2A8886aBEa62AcE', '1719603047', 1, 0), - (43978, '259755449627920709582', '221797737291894458603', '0x8075ddC91c6d521BaDFbF8C1B7Bf37ad47716FB9', '1719604607', 1, 0), - (43979, '41435809134554402', '35380850419375068', '0x0E4Ad322a15c4C87a349D0a4C7211D82a2B5fabf', '1719604919', 1, 0), - (43980, '5148496326250784542', '4396153525378477864', '0x01eb60F53B5C831b9E6BA8F86D79511BB01f5e5e', '1719609167', 1, 0), - (43981, '7898650307979580', '6744431227445889', '0xD0c56F96a0D33f00BD380C4efb2a17eA8C0E7B3A', '1719611663', 1, 0), - (43982, '13000000000000000000', '11100327592452169823', '0x7A68eC1D98Bd8F97f342254dCF57e1139ce1a3F3', '1719611855', 1, 0), - (43983, '500000000000000000', '426935676632775762', '0xd531aA33A79980752Db6d2F8F8Bd12B6498FdCc3', '1719612443', 1, 0), - (43984, '2028396758205138225', '1731989884888079079', '0xd531aA33A79980752Db6d2F8F8Bd12B6498FdCc3', '1719612635', 1, 0), - (43985, '1014024246552246779', '865846255647648227', '0x25d0f6b9fF8c9B1fDAc077f6468345f84798919F', '1719614063', 1, 0), - (43987, '36644460000000000', '31289654649885372', '0xA66B4dAD8a2cc4fbEc29CF83D7DA4dd2c7564582', '1719615539', 1, 0), - (43991, '982549309578169809', '838970708619645181', '0x466aFFE18FD1385f374dD4f72F17032bADFC836C', '1719617363', 1, 0), - (43992, '962199832932945338', '821594873458341626', '0x206677Aa45ABfEBe97a137a42101267A077A844c', '1719617615', 1, 0), - (43993, '962199832932945338', '821594873458341626', '0x37fab2828fCAEB9f0C0419049fe264007fDF6230', '1719618047', 1, 0), - (43994, '962199832932945338', '821594873458341626', '0xb1b0dd86CaF31Ad04dA4fBf7D25791466c367661', '1719618203', 1, 0), - (43995, '962199832932945338', '821594873458341626', '0x1CC82a67dF613A17c998c6A5605eD9a61Af3963f', '1719618287', 1, 0), - (43996, '962199832932945338', '821594873458341626', '0xAaAa69de5618404AfA7384c8b40a57DE62DF4062', '1719618323', 1, 0), - (43997, '962199832932945205', '821594873458341513', '0xb8C60a23905824c027b8c51Afc6C37e109e454Ee', '1719618383', 1, 0), - (43998, '962199832932945338', '821594873458341626', '0x9515F8C6D754C487113a6847DBA7b27D8a1A3b51', '1719618455', 1, 0), - (43999, '962199832932945338', '821594873458341626', '0x7D7cB2e33C9deA08259E63A7752fAf1A738B16e7', '1719618539', 1, 0), - (44000, '962199832932945338', '821594873458341626', '0x54F44DA30ffd42a7da6683C9D0Eb1A68944ac3C8', '1719618611', 1, 0), - (44020, '962199832932945338', '821594873458341626', '0xFFFB6A7cad62c1E4873275148d2366F07387f384', '1719618875', 1, 0), - (44025, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618923', 1, 0), - (44026, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618935', 1, 0), - (44027, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618947', 1, 0), - (44028, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618959', 1, 0), - (44029, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618971', 1, 0), - (44030, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618983', 1, 0), - (44031, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719618995', 1, 0), - (44032, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619007', 1, 0), - (44033, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619019', 1, 0), - (44034, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619031', 1, 0), - (44035, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619043', 1, 0), - (44036, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619055', 1, 0), - (44037, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619067', 1, 0), - (44038, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619091', 1, 0), - (44039, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619103', 1, 0), - (44040, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619115', 1, 0), - (44041, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619127', 1, 0), - (44042, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619139', 1, 0), - (44043, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619151', 1, 0), - (44044, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619163', 1, 0), - (44045, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619175', 1, 0), - (44046, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619187', 1, 0), - (44047, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619199', 1, 0), - (44048, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619211', 1, 0), - (44049, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619223', 1, 0), - (44050, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619235', 1, 0), - (44051, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619247', 1, 0), - (44052, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619259', 1, 0), - (44053, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619271', 1, 0), - (44054, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619283', 1, 0), - (44055, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619295', 1, 0), - (44056, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619307', 1, 0), - (44057, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619319', 1, 0), - (44058, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619331', 1, 0), - (44059, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619343', 1, 0), - (44060, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619355', 1, 0), - (44061, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619367', 1, 0), - (44062, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619379', 1, 0), - (44063, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619391', 1, 0), - (44064, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619403', 1, 0), - (44065, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619415', 1, 0), - (44066, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619427', 1, 0), - (44067, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619439', 1, 0), - (44068, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619451', 1, 0), - (44069, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619463', 1, 0), - (44070, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619475', 1, 0), - (44071, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619487', 1, 0), - (44072, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619499', 1, 0), - (44073, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619511', 1, 0), - (44074, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619523', 1, 0), - (44075, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619535', 1, 0), - (44076, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619547', 1, 0), - (44077, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619559', 1, 0), - (44078, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619571', 1, 0), - (44079, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619583', 1, 0), - (44080, '1e+21', '853871353265551524848', '0x98078db053902644191f93988341E31289E1C8FE', '1719619595', 1, 0), - (44081, '425770479093792302744', '363553215164338647403', '0x98078db053902644191f93988341E31289E1C8FE', '1719619607', 1, 0), - (44082, '192189499900000000000', '164105108363042579458', '0x98078db053902644191f93988341E31289E1C8FE', '1719619835', 1, 0), - (44083, '19524774500000000000', '16671645624519732140', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1719620531', 1, 0), - (44084, '2983207535686814', '2547275455568890', '0x65C724c095E989797AfA686148b4dD44db1E4cCE', '1719622103', 1, 0), - (44085, '890000000000000000', '759945504406340857', '0x831995b03d8F658943E37529E9d39cc9E7F1CA52', '1719622475', 1, 0), - (44086, '13013057310716698017', '11111476856023845547', '0x7254BDDc06FD9CdB0261B5323219E06fC580F50a', '1719624047', 1, 0), - (44087, '6693854755506383218', '5715690818647282975', '0xa1a71b50cb67271bB4Cae57F3b5FD5ab06D35d58', '1719624227', 1, 0), - (44088, '46520920457831956009', '39722881306488053088', '0x0312f3A9db6526cFAAcFABc18581bfdB520B4685', '1719624587', 1, 1), - (44089, '5334048650217886790', '4554591339345835490', '0x6095FCBe5646718FF0866dC9D4E16e2CE1187836', '1719624911', 1, 0), - (44090, '132018923400963432', '112727176781041833', '0xdC259876c2bD38b4272e082B8D9bE9F09ac39Ddd', '1719625427', 1, 0), - (44091, '517450644846785873', '441836282363457338', '0xd99B882d0547C0962c7f45B1094f871BB60bB90C', '1719626387', 1, 0), - (44092, '1374784373649640182', '1173888993576551896', '0x5b0389022dC98751e364D2bdfb302A9ec2ECbEc2', '1719626399', 1, 0), - (44093, '159474877092102657221', '136171029114491198322', '0x98078db053902644191f93988341E31289E1C8FE', '1719626411', 1, 0), - (44094, '5246100000000000', '4479494506366409', '0xB18E3444B9754A56b10261cCfa0824CCb2b46367', '1719626903', 1, 0), - (44095, '3029780000000000', '2587042348696902', '0x5e8dcF783deB6bA717c47eB1904762A5B47837Cc', '1719629039', 1, 0), - (44096, '65430113086111050065', '55868899205155714128', '0x55A8c1535C9f1F735Fc68424cC510Ca84504B1dD', '1719629807', 1, 0), - (44097, '1657100000000000', '1414950219496345', '0x7eF2e8D6223CF5AeBA7035C62725461E3fd71Cfa', '1719629891', 1, 0), - (44098, '30550626265309224880', '26086304592269690201', '0x31717fdE116B5c868E2B3400928592052429093C', '1719630839', 1, 0), - (44099, '6676170062360717033', '5700590365778906967', '0x8e0262AEe357F546eE387AD6547673e045EE8d6E', '1719631007', 1, 0), - (44100, '21684433146380124', '18515716275495977', '0xE9fBC77427074635331ABCf9E57b47dbfdC3EdF2', '1719631775', 1, 0), - (44101, '402106674523685098924', '343347370332649666535', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1719632435', 1, 1), - (44102, '33250548906273641127', '28391691191422278101', '0x51A7622545480E4E865eA78d045C17Dd044f40ba', '1719633695', 1, 0), - (44103, '25056053182471700540', '21394646038410739953', '0x726d554CA2f1D05b2988bB19980A1633d00b0105', '1719633827', 1, 0), - (44104, '100000000000000000', '85387135326555152', '0x9e34357e365D534e8AC2A51689Df33A48163aa46', '1719634259', 1, 0), - (44105, '3513754588444094029', '3000294385477799622', '0xF39D60Ad8502B59afd392CC4DE3cF9a2C715d4f3', '1719636059', 1, 0), - (44106, '999697600359746', '853613142875500', '0x48f6fA980099d4A9096E92eb85104ad363B5D352', '1719637235', 1, 0), - (44107, '16670000000000000000', '14234035458936743919', '0x8C9892C699F3871D0ec39001C4075965D11c9a0B', '1719638003', 1, 0), - (44108, '145365303401508861', '124123268333303851', '0x372c39FCa64107c42053bF7Cb0dfEC8af88aC504', '1719640211', 1, 0), - (44109, '10536693609875957', '8996980831609272', '0x028BB0B9de526A4A3202e68Bf0C89f107096e5ad', '1719641447', 1, 0), - (44110, '156731657114713456396', '133828672160092785758', '0xDB5A9CA87Cfa8073EA8cED3f43c255f85678bb91', '1719642179', 1, 0), - (44111, '1000000000000000000', '853871353265551524', '0x9085b66333D1AC414b643C702FA58Ce064C0A306', '1719642575', 1, 0), - (44112, '10112866406133865', '8635086923599257', '0x0D626f36A6cEcfFd69B8C34f30dAD2CE8Fa59847', '1719642587', 1, 0), - (44113, '99999999999999999', '85387135326555151', '0x5Aa567Af508B2bC0c6c8AB791Ca08AdA83D0114C', '1719643739', 1, 0), - (44114, '253267587789309863', '216257937923959885', '0xcab87f5f75C9fCF4e6e5E8f5B015770112584acc', '1719646739', 1, 0), - (44115, '500000000000000000', '426935676632775762', '0x4B2024558bEf4c23B84BF8704b206C12Bcb093B9', '1719647255', 1, 0), - (44116, '406217922639403526', '346857847324828608', '0x45071646691dAff6195BED6F0e057b63BE20DCA4', '1719647363', 1, 0), - (44117, '1018660453969303557', '869804980348870285', '0x0E606bc5e86e6F3665Bc4315cA0CCBADE57007FA', '1719647975', 1, 0), - (44118, '7009403214563806476', '5985128608403504452', '0x20331F0C7F87F8D93873894014244D3Af89B464c', '1719650807', 1, 0), - (44119, '21099526204081616', '18016280993141134', '0xD8E7f213956d19d5eE7df4c9B00eE3F5D3DC79B2', '1719652463', 1, 0), - (44120, '31795502092404672131', '27149268399399252479', '0xf0c88f525E225afddef7bA20b9a2FF3b41cbd33c', '1719652571', 1, 0), - (44121, '15001623332898714963', '12809456416442299108', '0x0706EBeF2C2a85728d4C74926e435bEf74294a81', '1719652595', 1, 0), - (44122, '2569984037290988742', '2194435747792522191', '0xb4AA3f0ddE37488996601b74215Bc622538Cf718', '1719653351', 1, 0), - (44123, '2952701819229953856', '2521227498175536587', '0x4a808dB54896A328ac9B05d71F83Ccc8F43563F1', '1719653879', 1, 0), - (44124, '11842906716949265', '10112318784999158', '0x7B096c7eF9Abe39CE0D3AC6d0CF12894B7Ef3d6e', '1719653963', 1, 0), - (44125, '10438597474858465', '8913219352051766', '0xBADFBB38D16282AB50C8CeEe5c73Ac9280CCfa41', '1719654059', 1, 0), - (44126, '21222739981588427', '18121489708081836', '0xAB71Aa370FE93b3b13E3e58b97f5B6f33f80f075', '1719654791', 1, 0), - (44127, '5149029863788624', '4396609097797930', '0x82F96CB3688E4b64a716B51EB20f07235A3dD5f9', '1719655775', 1, 0), - (44128, '19171720556490581', '16370182975999604', '0x999299bD474DCd2ad291c51c0E7fdC1Eb381b590', '1719656015', 1, 0), - (44129, '5000000000000000', '4269356766327757', '0x50C91fD6a89093Cb1AF6Dd5Ac067D371D4e554DB', '1719656411', 1, 0), - (44130, '1066345091974708244', '910521526732523135', '0x1737Bff5e445B43a0d1cd53a481FB060E60Fd855', '1719656555', 1, 0), - (44131, '10940385350108464', '9341681644143728', '0x99183da291D488DdDdea91B34020A88FBbc9fE82', '1719658055', 1, 0), - (44132, '3618836702498014', '3090020992409025', '0x482b4a4b4eE32c37E898cA8406cc955849526434', '1719658811', 1, 0), - (44133, '29999999999999999', '25616140597966544', '0xc2Ae08cd714D1E4F4B5376F0d3496953abc629F7', '1719660491', 1, 0), - (44134, '68993074026308617439', '58911209484794512779', '0x0001d6C5706B5259319b2072b1361DbD9B9FF55a', '1719661451', 1, 0), - (44135, '8591900000000000000', '7336377280122292146', '0x740632983F641612f0bE6D2F050F354147f0AD06', '1719663383', 1, 0), - (44136, '20003594659883640550', '17080496442410404043', '0x472e9743065D0274B3e6FD4e26895e002fDEF216', '1719663587', 1, 0), - (44137, '292568639418233609', '249796678794382592', '0xDa227278950AF027bf94ccD631f22dFEc4Cc564a', '1719664319', 1, 0), - (44138, '27610070666134391', '23573626918431590', '0x198D1D7cF7EC2309c390D26F535Dcd0f092e42c3', '1719664391', 1, 0), - (44139, '33151208634530120768', '28304680335500055855', '0x20a0EF5b56A6F13ba451794BeDf4e2b180551a3F', '1719665723', 1, 0), - (44140, '21510026817498655944', '18365376653060376865', '0x60719761d71076890bde77D566360bcFd4A9A70b', '1719665831', 1, 0), - (44141, '11757419178317125956', '10038547767037118309', '0x7257121789C1B0aC572c7e694B08C627062aDC89', '1719666899', 1, 0), - (44142, '2110777330309422276', '1802193043773326178', '0x30015180A1538F87ad41f89bb6a644a5b2e2211e', '1719668951', 1, 0), - (44143, '1155098874041644923', '986229634825144039', '0xca7a3C9183932Ec2Ae5E1ADb554039171f628a06', '1719669575', 1, 0), - (44144, '206442713255116085', '176261899549358097', '0x9FD9FFC26Ca8E4f5419C31E73537a4F87f92BE24', '1719671747', 1, 0), - (44145, '1592544217317925245', '1359722823027984955', '0xF46fdDBF1355b6678748d9FD5EC909258DcD7720', '1719672275', 1, 0), - (44146, '1172802189082331621', '1001344820477330426', '0x76aA8313d0d6F04422a54D911298f41a9A24EfB0', '1719672335', 1, 0), - (44147, '81241849428567426', '69364728245390619', '0x3Ba4eD30Fc88581BB4914BA0Ad30E4ced96679d3', '1719672347', 1, 0), - (44148, '25964464924026392346', '22168599879987070759', '0xC4db2b122b2AF88E39b4012647c62A29C3a54547', '1719672479', 1, 0), - (44149, '900000000000000000', '768424843352958408', '0x86E883E4Ddb6dc1d9215Ad9b72CAeD398876cd54', '1719672587', 1, 0), - (44150, '1680261051608788', '1434615928193955', '0x3007C3A47E9DC335Bc14DeB8b953a1Aca85d67A2', '1719674003', 1, 0), - (44151, '450377618257827981808', '384534834177166630904', '0x681aefa75C0F3B26bF052B2869CE3Bb12d7930d2', '1719674363', 1, 0), - (44152, '5000000000000000000', '4269026907516435602', '0x729a19cB8aC7F9acb5CC0221354ca2B92C6733E7', '1719674807', 1, 0), - (44153, '1000000000000000000', '853805381503287120', '0xA51c91a5C70FFC85bb68A78092701aa28020175f', '1719674963', 1, 0), - (44154, '9999999999999998', '8538053815032869', '0x64aA03Ab71f8CAa953DA0d4aB6c38EAA378FcC5a', '1719675215', 1, 0), - (44155, '36719084522358570', '31350951969063804', '0x6B692287c8136Ad93BaCc50F28AfF1475a841f6f', '1719675275', 1, 0), - (44156, '455198221431375676', '388650691108833476', '0x744d17684Cb717daAA3530c9840c7501BB29fAD0', '1719676847', 1, 0), - (44157, '2000000000000000000', '1707610763006574241', '0x155B9352D7Fd3C9D3D99ab6EC09C5E30dDB4c9eb', '1719677447', 1, 0), - (44158, '10000000000000000000', '8538053815032871205', '0x729a19cB8aC7F9acb5CC0221354ca2B92C6733E7', '1719677603', 1, 0), - (44159, '6720166240594364799', '5737714100816182420', '0x729a19cB8aC7F9acb5CC0221354ca2B92C6733E7', '1719677759', 1, 0), - (44160, '5100000000000000000', '4354407445666764314', '0x81837bf6f2ba023Dd1ef9cC2F9AF40EFe210c600', '1719678047', 1, 0), - (44161, '1008652637365756702', '861193049850366618', '0x11D1058F451c3Cc617016FC034542f24E667f9d8', '1719678911', 1, 0), - (44162, '200000000000000000000', '170761076300657424115', '0x74cb7B8081cd6F4653C583d38c1101Cf9a03981A', '1719679007', 1, 0), - (44163, '1000000000000000000', '853805381503287120', '0x8739F3cfBD994Cdf47Daf0520d8053273B12A3F6', '1719679343', 1, 0), - (44164, '56649481695148344', '48367632330689612', '0x6233d21dFB1AcEbf471493e2E06C50634ec700d2', '1719679463', 1, 0), - (44165, '1000000000000000000', '853805381503287120', '0xAB5bC23FEc98fC100661FC73139Fe651A0D270E8', '1719680663', 1, 0), - (44166, '200956481634389391', '171577725467408145', '0x3c0b07638bfeb4Faf7dD2a67a7194604605dA011', '1719684695', 1, 0), - (44167, '9225798757461582', '7877036627787038', '0xD3AAC196555627B21b2a40a019727C1BC16FdbFA', '1719686303', 1, 0), - (44168, '15085964700228941', '12880477846224093', '0xf5105f6b6ca2FFf60D5fd040093d30CE73d0898a', '1719688379', 1, 0), - (44169, '38736139862760105', '33073124673488579', '0xa3085917575ff0d3AF9cF96b16B2B60c1f34cE18', '1719690167', 1, 0), - (44170, '71928872961383862', '61413258819895821', '0x407136f7d07232c971C923930eb430b92019f1C7', '1719690179', 1, 0), - (44171, '1929022157637173', '1647009499229700', '0x2891E8105c69C53CA9a0294BA54f65320A045EE0', '1719691019', 1, 0), - (44172, '1000000000000000000', '853805381503287120', '0xF17ab6072B3e689f1F35d8A4903C6ed620936e03', '1719691283', 1, 0), - (44173, '3040407867530411', '2595916599262398', '0x8e2140b3100597Ab28874C0c276F65Ce7629332d', '1719691943', 1, 0), - (44174, '16744470000000000', '14296518596420346', '0x10459Ad7D8AC8025F30145278c8e0572F2E6F97e', '1719694451', 1, 0), - (44175, '5397200000000000000', '4608158405049541247', '0x4B2024558bEf4c23B84BF8704b206C12Bcb093B9', '1719695003', 1, 0), - (44176, '2000000000000000000', '1707610763006574241', '0x790A4a687E6140BF03C6BBE4FCdf13fD0280e3b0', '1719697547', 1, 0), - (44177, '200000000000000000', '170761076300657424', '0x519c98E59Cf9BDfe21E769a23F0BE62A198CFC5E', '1719697595', 1, 0), - (44178, '3718880733895548990', '3175200383768913595', '0x8208a3727A44eb5D474e28a6eE15dDEE6427F5b0', '1719697667', 1, 0), - (44179, '3738890000000000', '3192284402848825', '0x1c48896AA7E90f3424f4df69193325Db65F76d3e', '1719698999', 1, 0), - (44180, '4253743686573636', '3631869251132202', '0x4dAc02248cbee78f043b3A506E2f4d9ac4aC5a72', '1719702263', 1, 0), - (44181, '109423005529847653', '93425950981647871', '0x8ad46300B504fbEd12603Ff31946c82d146d1898', '1719702851', 1, 0), - (44182, '10000000000000000000', '8538053815032871205', '0x6042df5e7d9421df3C81dE23C95C5Df4Bbaa08bf', '1719703679', 1, 0), - (44183, '101802178727741535', '86919248046505181', '0x932E5f44D1a5D4Edf48EF98bDFCA9276F30fEe9e', '1719705527', 1, 0), - (44184, '34963367120000000000', '29851911002531085083', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1719706931', 1, 0), - (44185, '133199937030148479', '113726823052239743', '0xE6a5df5bA2A1eFe146CFa9BA257F3a0CB605DEf0', '1719708143', 1, 0), - (44186, '2580000000000000', '2202817884278480', '0x42234bAa70F86F4F4844B9a7929b76AA69cEebEe', '1719709883', 1, 0), - (44187, '250000000000000000', '213451345375821780', '0x8F6bd914EACEb352B7197f5392165ab4DD816D66', '1719710219', 1, 0), - (44188, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712811', 1, 0), - (44189, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712823', 1, 1), - (44190, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712835', 1, 1), - (44191, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712847', 1, 1), - (44192, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712859', 1, 1), - (44193, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712871', 1, 1), - (44194, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712883', 1, 1), - (44195, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712895', 1, 1), - (44196, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712907', 1, 1), - (44197, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712919', 1, 1), - (44198, '1e+21', '853805381503287120575', '0x98078db053902644191f93988341E31289E1C8FE', '1719712931', 1, 1), - (44199, '411181499714141656232', '351068977230526460912', '0x98078db053902644191f93988341E31289E1C8FE', '1719712943', 1, 1), - (44200, '1222020102546919100', '1043367339859758311', '0x42d5dA8f539997e7ab00a8eFaB456d790e5b2BBF', '1719715379', 1, 0), - (44201, '1078135117610834', '920517565403809', '0x3C13dc60dc6d5fe9f465552e2177786973a2dbb9', '1719715427', 1, 0), - (44202, '18832853257365552', '16079591460200418', '0xb101dE7739aEe2C2AcFd06b5Ead125b032AE3e0C', '1719715727', 1, 1), - (44203, '61985039154957598777', '52923160003194762537', '0x6042df5e7d9421df3C81dE23C95C5Df4Bbaa08bf', '1719716159', 1, 1), - (44204, '202566556709534062', '172952416231190975', '0x9Ce8f365D8B7aEb689Dc1Ca16556f17CC4A0027e', '1719716231', 1, 1), - (44205, '3038502559634358760', '2594289837127328105', '0x067091ba354E502D2Af3C61C31c7F458813b0839', '1719718727', 1, 0), - (44206, '16059999999999999997', '13712114426942791153', '0x0ccBCaA60D8b59bDf751B70Ee623d58c609170ac', '1719718859', 1, 1), - (44207, '7349782582281207', '6275283921630820', '0x66Ed7441465dACF123909Ae15064A412c2Ad2d08', '1719719279', 1, 0), - (44208, '3448500301249630257', '2944348115322641124', '0xb9f874CbFeB8e8b7e46E75FFDd626ECa49cebA38', '1719720287', 1, 1), - (44209, '23199988575840664', '19808275096867540', '0x097Ce179B4d72d68811592845B4D20620cC22D12', '1719721283', 1, 0), - (44210, '5031244612799823', '4295703726067910', '0x590039c1e26cDAA845B7E2736b93BACD2C531980', '1719721859', 1, 0), - (44211, '11712270988961', '9999999999999', '0xb5e7b8BE5ab788044E70FE709E5BD24602e8C35d', '1719723407', 1, 0), - (44212, '1e+21', '853805381503287120575', '0xF2CaA1b2703ECBdc08BdDCDAAE12E219d9C0Cc26', '1719726851', 1, 1), - (44213, '43703098926718034833', '37313941052002389629', '0xF2CaA1b2703ECBdc08BdDCDAAE12E219d9C0Cc26', '1719726851', 1, 1), - (44214, '391134148433486041346', '333952440822215882013', '0xaa8ab79138cd63c96568758b38b9d3cbBdfBc9aB', '1719726983', 1, 1), - (44215, '5202086630685456843', '4441569560325545972', '0x57eff077A9cAa022371Cad16DCDF06516D1ee188', '1719727055', 1, 1), - (44216, '249891844648596508', '213359001754755099', '0x563003dB7BC2F2Bc7070a22a15e1741149961586', '1719727691', 1, 1), - (44217, '300000000000000000', '256141614450986136', '0x45eB627E626dF60735274997672D0570353320eB', '1719729875', 1, 1), - (44218, '4565031448442775', '3897648417412186', '0xbF59DE93524257ECEB95f224D706FFC6dd06b285', '1719731219', 1, 0), - (44219, '3819236318402308751', '3260884521884692983', '0x222A5bDCd0F704b75f740f064A28131A1F51408b', '1719731639', 1, 1), - (44220, '3047886257910879', '2602301689214224', '0xf3186A3372C3FC7fdB7aB3C59bbcB62b9ea85a39', '1719732491', 1, 0), - (44221, '1049019880021629825', '895658818866400135', '0x394B7103a71c2647A6e7b6661301597E217a0B6E', '1719732731', 1, 1), - (44222, '157352982003244473', '134348822829960019', '0x3FfC70C089650536d6981b4Fe1A6fbBcF6F46fcA', '1719732911', 1, 1), - (44223, '104901988002162981', '89565881886640012', '0x162Bb7943D56be77ca292D8ab87ff856821defE3', '1719733127', 1, 1), - (44224, '52450994001081490', '44782940943320005', '0x59Cb9a0a97fcEC356b13e359dA71B2F06b0D236d', '1719733331', 1, 1), - (44225, '1766975520259785966', '1508653208182375797', '0xE60a2Caa6aEe3d68202ade414BdD06a773Bd7b36', '1719735635', 1, 1), - (44226, '2700497339195213578', '2305699160940181092', '0xeC20E0cD8484229ecdd33225f6cbC3B6d71bB6F1', '1719735803', 1, 1), - (44227, '10475427646482978897', '8943976498115480924', '0xa5BD4E11e19b4A6aFbae66237c9421E56Bc5e999', '1719736727', 1, 1), - (44228, '153777109226359826', '131295723409484804', '0x7fDE4163Db6FBC4df8D5c5d84AEB6A91cc870574', '1719737735', 1, 1), - (44229, '9651983314223928', '8240915295864322', '0x70b857f106457D4C87960B65C0e80FceCDA59351', '1719739043', 1, 0), - (44230, '2322185230400724292', '1982694246563589104', '0x1Ff163f1044f0159fB76e31129463954d2472A15', '1719742943', 1, 1), - (44231, '25940824147497330693', '22148415257763641319', '0x894395Be5b2dF34E708e61c635090E8dD9Ed5e9f', '1719743207', 1, 1), - (44232, '382061080024722219', '326205806188065864', '0xfC536Cf2a847B5ac81342567130f805fbe0125C7', '1719743903', 1, 1), - (44233, '102883685818358176', '87842644620607633', '0xA4cdB34AE777f41dB1Ac9FB4e892d54E4F8aECc5', '1719744683', 1, 1), - (44234, '10904193311314513', '9310058930152479', '0x886C981dEaa0bF00eF42BDa0919387c2c2dd9A99', '1719747851', 1, 1), - (44235, '11540351680026309791', '9853214368846963888', '0xb21B863a4eB10b49e75A4FB9934A110f02eb82F6', '1719748055', 1, 1), - (44236, '1073321512264714858', '916407683254859935', '0x0dD34525A936A1a9162873e341d51cD0E0ed2115', '1719748067', 1, 1), - (44237, '1830000000000000000', '1562463848151015430', '0x9Bfd730a14744861Fdf3eD942984Fc5914b0FB7D', '1719748523', 1, 1), - (44238, '9241864382310670', '7890753544740402', '0x98f4eEeE50cD3994BBaE565e7518deF09BE8DE59', '1719749507', 1, 0), - (44239, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44240, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44241, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44242, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44243, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44244, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44245, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44246, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44247, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44248, '1e+21', '853740202988941765965', '0x87D004f22BDD5F9c85AD6D3F74F1fB6e7A256982', '1719751055', 1, 1), - (44249, '10026942818614390', '8560404197322361', '0xD3e0f44F99E95C5DEa13c2F6974184C6c6F94f23', '1719751175', 1, 0), - (44250, '7730689004563003', '6599999999999998', '0x2Bf474eB39BC17AD9c7b00F9c7CCeB8CCEc6dCb7', '1719752039', 1, 0), - (44251, '5541960662304548729', '4731394620792615581', '0x642BCFc33B0C4A0f2b1666f76044f2F9B50916e6', '1719752099', 1, 1), - (44252, '13175600000000000', '11248539418501101', '0xd25C091Daf067E330935477C59cCB5431aba6f73', '1719752867', 1, 1), - (44253, '1256900000000000000', '1073066061136800905', '0x4Eb5Efc0d4fCe7613595092d6b64b4dF06d8ec6C', '1719753083', 1, 1), - (44254, '20000000000000000000', '17074804059778835319', '0x0aAdd259211F712B57b6648b305F336F637b6713', '1719753875', 1, 1), - (44255, '5707373504610654', '4872614214360007', '0xFc1b9f2E1CC45fB16075dA13613D9166C2F3A0C0', '1719753899', 1, 0), - (44256, '85715485201773448128', '73178755735457697669', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1719754835', 1, 1), - (44257, '20987646089271823', '17917997232514995', '0x727Ff925148941847b5b20506744ffbEf5Abf835', '1719755939', 1, 0), - (44258, '133200000000000000', '113718195038127043', '0x760e2B089c095c4c2a9a5E2b6389DE14A0eDd985', '1719759311', 1, 1), - (44259, '20263705150521154', '17299939748513994', '0x24BEf566CbeB4db139383F372088E35d8d624DF9', '1719759743', 1, 1), - (44260, '22139611031004629067', '18901476015706106313', '0xC782b734eC6F2822Ed8a2B72763FB98181Ed7c27', '1719759887', 1, 0), - (44261, '34113511071116477527', '29124075866520493771', '0xb3bfeB6f50bA27883a567168e4315BdAA55F71CE', '1719761447', 1, 1), - (44262, '20722284814492015316', '17691447643919078622', '0x8C9892C699F3871D0ec39001C4075965D11c9a0B', '1719763007', 1, 1), - (44263, '40854441225156447', '34879078944564855', '0xBDcDC3CD20fd99dA08587a40A85e1B05F4E83379', '1719763223', 1, 1), - (44264, '19733084887365064185', '16846927897337068961', '0x61afE8Ef978e00A825ecE53C2fAdf8cb57217b22', '1719763463', 1, 1), - (44265, '20893443983417445808', '17837573107540894224', '0xD7586d172F619Ae99D5561F8f1813e195AF1668b', '1719763991', 1, 1), - (44266, '1880384806886152340', '1605360106728305761', '0x3F1B563b75DdC5f0fC2518D847a7db1D8C61d4D3', '1719764219', 1, 1), - (44267, '29023478674277458151', '24778510574822859580', '0xcaf187c45e18c0DaD3aaA98603D96BFe605c3AC7', '1719764267', 1, 1), - (44268, '1004859117953652', '857888627337039', '0xA865eA5B8BDc0C5d20012B1Ed7238141a59d71a5', '1719764591', 1, 0), - (44269, '1000000000000000000', '853740202988941765', '0x86C7482D037a379F6E6346038e4e85E8E3C90D37', '1719764675', 1, 1), - (44270, '300000000000000000000', '256122060896682529789', '0x86C7482D037a379F6E6346038e4e85E8E3C90D37', '1719765575', 1, 1), - (44271, '158270756109992758', '135122107448558512', '0xe32a3C83973102f02784385b436e6fAC662ABaBB', '1719766019', 1, 1), - (44272, '1000000000000000000', '853740202988941765', '0x06a3a2Ee25871710e81Da8CDEbc684D172E890E5', '1719766127', 1, 1), - (44273, '10000000000000000000', '8537402029889417659', '0xdf3471e9ab28363DdC3AAF761D0A55C18d614023', '1719767399', 1, 1), - (44274, '1013185257526057761', '864996987425699790', '0x09563a2f81579473b325d2e795852BF00fcA6ddC', '1719767483', 1, 0), - (44275, '110000000000000000', '93911422328783594', '0x649b240a19B5C029b4998B4Ea8d88514C59BbCF8', '1719767483', 1, 1), - (44276, '90046754629801888', '76876534576142495', '0xB4D079e80d8E0fDE0fFB232f34301D20B118BcDb', '1719768491', 1, 1), - (44277, '228634716615297392371', '195194649373463172463', '0x7f3F85D39282a5e517d9784ED8D19Bc5943d2837', '1719769463', 1, 1), - (44278, '15434388538477744255', '13176958003850185610', '0x924e71D3fd234caF74300e5BE73ae5886f228406', '1719770123', 1, 1), - (44279, '14570000000000000000', '12438994757548881530', '0xFF4606bd3884554CDbDabd9B6e25E2faD4f6fc54', '1719770183', 1, 1), - (44280, '570800000000000000', '487314907866087960', '0xf3Bd8F329505aD60760C696E707dCC76d5d67776', '1719772415', 1, 1), - (44281, '254104295676699772', '216939052971387740', '0x173a3c256E5662b3eDf8909793F5FFD9466cA23e', '1719772499', 1, 0), - (44282, '39038698111298266', '33328906049963799', '0x4098816B8b366a287EdF8fD6A9778079c14A0135', '1719772583', 1, 0), - (44283, '46374980697849659', '39592185434590424', '0x27A45873644c0181aa7C48C913CDd36169b3fea5', '1719772799', 1, 0), - (44284, '20699031990815736067', '17671595773513625905', '0x83cec5e8b50585583193CF7c880C2E7708913413', '1719773291', 1, 1), - (44285, '1000000000000000000', '853740202988941765', '0xb9C24aD2bF4e1bcdB56d3309654AaCB5A6e6F09f', '1719774515', 1, 1), - (44286, '3000000000000000000', '2561220608966825297', '0x76DDF4582cC6C4F15f6EE90c8377b520bde7040e', '1719774527', 1, 1), - (44287, '12277110913599220361', '10481463163493950685', '0xD3d5d41b955F2B4c22478d4649e4783F3D5bf445', '1719774623', 1, 1), - (44288, '42307028993559419601', '36119211520820463554', '0xb9C24aD2bF4e1bcdB56d3309654AaCB5A6e6F09f', '1719774671', 1, 1), - (44289, '500793315428767575', '427547386769661171', '0x8AdB0BfD83B997A998ED04A13C07737289161Bf4', '1719775451', 1, 1), - (44290, '5898000000000000000', '5035359717228778535', '0x120497c1Bf9566BC4E7B31C6d4Bc87b542b107A7', '1719775895', 1, 0), - (44291, '106356688741488047', '90800981035389702', '0x0a7f988B6cEa3081EBa2896C4f0793c19d2A775E', '1719776375', 1, 1), - (44292, '3220020913772856380', '2749061308553076156', '0x764cbfcD4ccf913cDC570D0beBe17FD169473d53', '1719776519', 1, 1), - (44293, '29898488420456458', '25525541573143021', '0x47513678E7Fb596a4D1a4D5177A52f43D9f8d4aE', '1719776843', 1, 1), - (44294, '8424208391594250', '7192085382260821', '0xDD7dF859620FfA7867562f6A99afe52Da500a029', '1719776915', 1, 0), - (44295, '5574767993950684940', '4759403558771713443', '0x561BD59EC870Efe1C99ffAB6070DF0CdAa762f7A', '1719777071', 1, 1), - (44296, '3048519321898312509', '2602643504693176426', '0x59Eb15ff1Cb6E281404d38605470DDEFDDE0D190', '1719778259', 1, 1), - (44297, '2000000000000000000', '1707480405977883531', '0xa9A6f4C3daD840fE425b9E28Ff01eC7B9441a872', '1719778295', 1, 1), - (44298, '8949242271024451872', '7640327913061633743', '0x8A2C65bAb551624d52C0B4284748f4C400B1e75f', '1719778751', 1, 1), - (44299, '200000000000000000', '170748040597788353', '0x234910aCfcbaAd2B18DCEEd49bbF0694aC689827', '1719783887', 1, 1), - (44300, '986479103156448421', '842196869773135498', '0xA8f687f15D3EcA58F870c9c7920cc7EF0bEaFb65', '1719786083', 1, 0), - (44301, '999999999999999998', '853740202988941764', '0x5AafD35eE89c9aaFd31D094159Cb6d1ABEda7fEb', '1719786779', 1, 1), - (44302, '235049106567387449941', '200670871953210766662', '0xF1104Ef28D611fCcA6CCB2a91C411Ea0671B317B', '1719786863', 1, 0), - (44303, '36079792993942188', '30802769794447202', '0xF11A62306E52C5a7C147cDaF17f3f108AB69DA57', '1719786911', 1, 1), - (44304, '1519672977969236588', '1297405916688265672', '0xEf9D61614022581D84d40903BF69d776b7f7E8fA', '1719787271', 1, 1), - (44305, '2004369547974199705', '1711210864752346707', '0x63A4Ad52C25856E6330e65e6637Ee5E8E892B913', '1719787391', 1, 1), - (44306, '5000000000000000000', '4268701014944708829', '0x4Eb5Efc0d4fCe7613595092d6b64b4dF06d8ec6C', '1719787691', 1, 1), - (44307, '993712716881472010', '848372496623080732', '0xda603487d8A7F1c410743871507051880538863F', '1719788279', 1, 1), - (44308, '1554103371640951022', '1326800527970544329', '0x5Bb967A3B3E2EB96487d23F3bf281c38f91aBc8a', '1719788375', 1, 1), - (44309, '6426240400000000000', '5486339783551738329', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1719793331', 1, 1), - (44310, '6565153201146586', '5604935226600387', '0x1768ffAD305e87D1Eb9eF610482e471e70C55E8A', '1719795011', 1, 0), - (44311, '2410000000000000000', '2057513889203349655', '0x8bF3c2D4a765d8De430D498FE745334010AeAFB8', '1719795011', 1, 1), - (44312, '400000000000000000', '341496081195576706', '0x001fF1c258209a6E33eaf850da4F9080386c0C3b', '1719797687', 1, 1), - (44313, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799211', 1, 1), - (44314, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799223', 1, 1), - (44315, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799235', 1, 1), - (44316, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799247', 1, 1), - (44317, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799259', 1, 1), - (44318, '1e+21', '853740202988941765965', '0x98078db053902644191f93988341E31289E1C8FE', '1719799271', 1, 1), - (44319, '130214568103075054935', '111169411804436679155', '0x98078db053902644191f93988341E31289E1C8FE', '1719799283', 1, 1), - (44320, '73277599329303103', '62560032525941574', '0x00afc5C93B47b993b60e6552B4BD876DE777A51F', '1719799775', 1, 1), - (44321, '777657973241483748', '663917875931153379', '0xD661D99a6c0925F3436d1c77221Fd996a599EdD7', '1719800807', 1, 1), - (44322, '491048589835061733', '419227922763219210', '0xF97E97F4e19004eaC7C7d3C7C9a20dC5932327f1', '1719801107', 1, 1), - (44323, '159738436739218804024', '136375125406876894791', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1719801635', 1, 1), - (44324, '196530420000000000', '167785920664301980', '0xcabFfCaa01aaac7B479e4A733e6d990f16FdC694', '1719802535', 1, 1), - (44325, '33864049316939600099', '28911100337871548944', '0xFe28B9768AdC04F0356472CE364C0E9263c99Fb6', '1719802535', 1, 1), - (44326, '1360790286381240580', '1161761375320500530', '0x49e9E36EEb5Dffa1ffda6dD6ecDFC88E985f9fB6', '1719803159', 1, 1), - (44327, '1584046779771956', '1352364419306489', '0x4798e504cC7E10f19f5efB1e2089580d700D3073', '1719803639', 1, 0), - (44328, '1030840881038150101', '880070303026809838', '0x6c904b3Bb57865516a0d054CCfE7449e01B85421', '1719803963', 1, 0), - (44329, '20000000000000000000', '17074804059778835319', '0x9a8bBCD21CCA9619aE6B1ca39dEc339348395D7B', '1719804323', 1, 1), - (44330, '11870891131205681', '10134657004015166', '0x36fB50766Dd6978Eb7232e65fDE670B6Af291DCD', '1719805643', 1, 1), - (44331, '350000000000000001', '298809071046129618', '0x2cbA0634FD187cBC1809B0312367c9F3388904F5', '1719807371', 1, 0), - (44332, '1105679484820340542', '943963027811226090', '0x89C9477556b51F66bE99F3A1B4467C46f4666666', '1719808391', 1, 1), - (44333, '11279878939690809', '9630086135662320', '0xe5f600b872c545c9c561CAFd70B7C0aF099b8997', '1719810227', 1, 0), - (44334, '1734010596227026471', '1480394558407837518', '0x86E9bd23f4914e89A8cFEd58303fc765E3E1C3d5', '1719812843', 1, 1), - (44335, '7000000000000000000', '5976181420922592361', '0x459B59d3abbDcb1D23cCDe44D4A52fDe9Bb31777', '1719813983', 1, 1), - (44336, '102291496007425224', '87330362565421736', '0xf3EC1e9456B0BeD5807f6d3C680468AE03a7Ab66', '1719814523', 1, 0), - (44337, '107149217720395', '91477594886716', '0x73EB5e2F953FF5b22a057bD32338d06e0b6382C6', '1719814583', 1, 0), - (44338, '5000000000000000000', '4268701014944708829', '0xbD95aa0f68B95e6C01d02F1a36D8fde29C6C8e7b', '1719817007', 1, 1), - (44339, '11019876007650986', '9408111179684921', '0xaD2d781Ac380E8295B1DFD4392eF3b1c206d8168', '1719818507', 1, 0), - (44340, '9815692283641092853', '8380051122712735968', '0xcF8078b2D2B5AAf482c989Bd8cB146880F30A977', '1719818867', 1, 1), - (44341, '107357051603337157', '91655031028127360', '0xF97C58ED3e83cb8aa59D0B502717417f4C20c07e', '1719819935', 1, 1), - (44342, '1128415533207562961', '963373706376499760', '0xed49f334f767277495A99b6Ca8284d42D1b0c717', '1719823979', 1, 1), - (44343, '58565825792143975', '49999999999999998', '0x52cB10De83b326772f05C8fc36895186D0aa4EDF', '1719824171', 1, 0), - (44344, '2500000000000000000', '2134350507472354414', '0x269aC113B3061AB2bd0752e9171290B56D2e0085', '1719824543', 1, 1), - (44345, '1e+21', '853740202988941765965', '0x556Bd626535022cB854e297ADa4F46807da54B2c', '1719825491', 1, 1), - (44346, '500000000000000000000', '426870101494470882982', '0x556Bd626535022cB854e297ADa4F46807da54B2c', '1719825491', 1, 1), - (44347, '150000000000000000', '128061030448341264', '0x64DF58866E6fE868BeEAe34ee7703Da29124e271', '1719825611', 1, 1), - (44348, '5900000000000000000', '5037067197634756419', '0xaFBe28A3E5A057120737EAE5a204680fc0CE60F5', '1719825611', 1, 1), - (44349, '153500000000000000000', '131049121158802561075', '0x1Cb7F3EaB52BbE5F6635378b09d4856FB43FF7bE', '1719825707', 1, 1), - (44350, '34219339500000000', '29214425850877513', '0x435F138460909c7340fea70ADD39116efa5B52ab', '1719825875', 1, 1), - (44351, '5400749307391847193', '4610836809985102273', '0x5f3D8F09de7cA8b3a7a72122f715be5cAaf30190', '1719825923', 1, 1), - (44352, '10000000000000000', '8537402029889417', '0x78cCDb9032B5D898359bbbdA19dEA549dFE70bb4', '1719826115', 1, 1), - (44353, '1004540187102302', '857616343247268', '0xF508a100BaCe2ED5eD8Ef8F0bE69B2FBb08cA2f3', '1719827183', 1, 0), - (44354, '25000000000000000000', '21343505074723544149', '0x0E8721a8fcA1589DE2F586b0C580ec34AD1f846c', '1719827423', 1, 1), - (44355, '5020291236160092', '4286024459022922', '0x94d7f6b55441c8eA8D4214ae7C64a2DbB0602994', '1719827615', 1, 0), - (44356, '4016232988928073', '3428819567218337', '0x60Af9f69da37c78CCbB14bcaf569d806b17601c9', '1719828539', 1, 0), - (44357, '35622651216674083', '30412489480727604', '0x9A8477B59d5f77726E67FbDc85370295962e6B39', '1719828839', 1, 1), - (44358, '5020291236160092', '4286024459022922', '0x80Dc84AB91d962Fc7711708ECf3c0d8a845e7C9A', '1719829079', 1, 0), - (44359, '33153739552624392068', '28304680335500055855', '0x5f7bDa7a3Df14a58De3eef1aCf72128E6029C6d0', '1719829199', 1, 1), - (44360, '1000000000000000000', '853740202988941765', '0xfba2a83201137ad76409A3550C9ae26b79748251', '1719829439', 1, 1), - (44361, '4016232988928072', '3428819567218336', '0x6CfFCA851D0C16d4D315C40AC3249017dbfD14Cd', '1719829751', 1, 0), - (44362, '1000000000000000', '853740202988941', '0xadE9E6F309764879785fD95bfA82BCE27d96A57b', '1719835871', 1, 0), - (44363, '1330810708877405931', '1136166604736854025', '0x968480901069AdA9076BEA88697684394d5837a1', '1719835907', 1, 1), - (44364, '9999999999999999998', '8536701335157605598', '0xb6e88bb62Dd0F989dFF0852E882c473FdFE13e5f', '1719839063', 1, 1), - (44365, '2414903800000000000', '2061531249373717536', '0x016D4F590FAF4D556Afae32aa5B992eDfdC22FbC', '1719840083', 1, 1), - (44366, '13713721600624476268', '11706994549803066271', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1719841235', 1, 1), - (44367, '213829491897600431', '182539850897831800', '0x8135719a9bbb796F8bb8a36af6DB4aDb0Df737d7', '1719841379', 1, 1), - (44368, '32960399498427996835', '28137308640555835453', '0x3e90A35975Bd45ae6D31a27b27d37Bd35caE6EE5', '1719841871', 1, 1), - (44369, '15122000000000000000', '12909199759025331188', '0xb6A20dD8Fb393D89d25Fbe144BE49544edC2D04A', '1719842567', 1, 1), - (44370, '1084977223731012036', '926212651444012261', '0xAA68d5bC6Ab7b9451481b70feBC12218BbC66Db2', '1719842699', 1, 1), - (44371, '324444706765839604', '276968756143276078', '0x6470391988c46F79B0a332f00212c0b6548977cE', '1719844187', 1, 0), - (44372, '1130092750702626403', '964726429377504194', '0x255A58F68445a229438be4d59Fc295fB6C5Dee86', '1719844235', 1, 1), - (44373, '2238569363510932878', '1910999807432669205', '0x56d6657D1EEdd18900133b5028c8b6399262d68C', '1719844499', 1, 1), - (44374, '146426582227023917618', '124999999999999999999', '0xba15E9b644685cB845aF18a738Abd40C6Bcd78eD', '1719845231', 1, 1), - (44375, '5000000000000000000', '4268350667578802800', '0x3623C9b442b76dF4A8BEd9E46f23650278154eA0', '1719845903', 1, 1), - (44376, '1e+21', '853670133515760560031', '0xeb8FFC68f50E5D4b640090E6e4D540057D3a8aF7', '1719846875', 1, 1), - (44377, '1e+21', '853670133515760560031', '0xeb8FFC68f50E5D4b640090E6e4D540057D3a8aF7', '1719846875', 1, 1), - (44378, '58777721513957179381', '50176785372572017243', '0xeb8FFC68f50E5D4b640090E6e4D540057D3a8aF7', '1719846875', 1, 1), - (44379, '50000000000000000', '42683506675788028', '0x9246BeBa29f352F2b66dd7Ef849c0c4Df67F3012', '1719848747', 1, 1), - (44380, '259000000000000000', '221100564580581985', '0x0738Ce993C807F15a58649cC1BC41D33FC350846', '1719849491', 1, 1), - (44381, '73000000000000000', '62317919746650520', '0x36e05B62711231871C4672C8393be5103F144D1b', '1719851447', 1, 1), - (44382, '330000000000000000', '281711144060200984', '0x7C8f7065f187853E912A53311A0c553F004126e8', '1719851615', 1, 1), - (44383, '8629511341679900644', '7366756099227650828', '0x341A258993b8F0f3B1A36e2674b1b1C977B24865', '1719853631', 1, 1), - (44384, '102155410068479329', '87207022552516019', '0xEa348b66E0940E29dD761F212Fcc04015c3F0B9D', '1719855143', 1, 1), - (44385, '3020023615627753153', '2578103963173693983', '0x702964588E6F7215B2aD6Fd590683B61934aAcFc', '1719859031', 1, 1), - (44386, '1409689030930164945', '1203409423249857026', '0xE44169fdb11bfbCe7340DeCAAD82f92D3586955f', '1719860267', 1, 0), - (44387, '8152529765664835135', '6959571173546311960', '0xa6F72546E8D8eEb08Ace9344580B2e2d4E3687C0', '1719860639', 1, 1), - (44388, '20336152166758087903', '17360365735393200309', '0xF0B2170362293219E94768f454b359fC2bB23baf', '1719861935', 1, 1), - (44389, '450000000000000000', '384151560082092252', '0xb6aF05297CFd14a1d9EAf8FDbA64520cBF332582', '1719868511', 1, 1), - (44390, '332962191255684742', '284239878264940596', '0xDF329bd67a7fc479f27D026340A6215b47E26881', '1719870143', 1, 1), - (44391, '501082067505850126119', '427758795470072423200', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1719873035', 1, 1), - (44392, '30895752296784724559', '26374780988266081793', '0x6F295Da57176a11218f24dD4D95014a89345444F', '1719873719', 1, 1), - (44393, '22087544499128865', '18855477061606640', '0xfDe6d11fe82B7715616e06368618EB62ad8Fc5e3', '1719873887', 1, 1), - (44394, '63649928247053061906', '54336042744930366853', '0x1EA36DA265F1Cb5172978E3A2Ea14C445C773615', '1719875111', 1, 1), - (44395, '1017736570113406687', '868811313692584094', '0x3693a63BfdEF6b95a36CC405ca1deeb736fC5c99', '1719875219', 1, 1), - (44396, '1000730917887165', '854294096286085', '0x88612c0Dd608Fb56827D02974ba6190aB54e8F77', '1719876167', 1, 1), - (44397, '31073808249228468454', '26526782036962008557', '0x263962Dc4408BC364189057cA77b50B81a37248e', '1719878495', 1, 1), - (44398, '50764027440000000000', '43335734082502532741', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1719879731', 1, 1), - (44399, '2284752010609468671', '1950424553947387507', '0x9771d40a546334cbD6Bd214E7daE9b3e4a61259b', '1719882011', 1, 0), - (44400, '600000000000000000', '512202080109456336', '0x06a3a2Ee25871710e81Da8CDEbc684D172E890E5', '1719882011', 1, 1), - (44401, '9908649885524520', '8458718470736642', '0x117885dCECD5929dE68dee13E62AF72D0170602F', '1719882455', 1, 1), - (44402, '2000000000000000000', '1707340267031521120', '0x4655BCFa6bD368373E9cC0804859Bf3913f032A4', '1719884015', 1, 1), - (44403, '69420728865081572', '59262402879015598', '0x0A8FE27a138B1fd9AeCEA221ca569A367d09099B', '1719884351', 1, 1), - (44404, '100000000', '85367013', '0xD372f9FE2B2920790bf6570CbDcd05B8FA161707', '1719885167', 1, 0), - (44405, '4190000000000000000', '3576877859431036746', '0x7602616Ce8eC3a71F9BE8627f08703aeC89EF1D4', '1719885335', 1, 1), - (44406, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885611', 1, 1), - (44407, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885623', 1, 1), - (44408, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885635', 1, 1), - (44409, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885647', 1, 1), - (44410, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885659', 1, 1), - (44411, '1e+21', '853670133515760560031', '0x98078db053902644191f93988341E31289E1C8FE', '1719885671', 1, 1), - (44412, '270218006247491041152', '230677041471658298249', '0x98078db053902644191f93988341E31289E1C8FE', '1719885683', 1, 1), - (44413, '108573334879887545773', '92685813283164984227', '0x5bA26A833dCcf5f95248255201671e8bC3A3dEaf', '1719885827', 1, 1), - (44414, '10073710553726886326', '8599625833399157292', '0x75Ce1b942a7e94b2Dd2595AB477BdB85607d3093', '1719885923', 1, 1), - (44415, '5150000000000000000', '4396401187606166884', '0x6Eeeb56c5EEE8C52b7A65D7Bfe856d6A720a3497', '1719885983', 1, 1), - (44416, '2110449960213879', '1801628099314113', '0xEC3d3b8C12FF13854D11a5d105F678fa4B2F80D9', '1719886355', 1, 0), - (44417, '13010397339668525', '11106587634047925', '0xfe253Ac7e42900D1ae4195a1147F2dB5CEAbB0BB', '1719888851', 1, 0), - (44418, '91255098886954576678', '77901752450820446345', '0xB32c06dE7d9416D6e7187Cda6221574a83d62b35', '1719889463', 1, 1), - (44419, '1055078805806943', '900689265022862', '0x8ad5875935ca1a9b7015454B0a9E883C2F5a210A', '1719889487', 1, 0), - (44420, '20826977044967079', '17779368274706726', '0x7F429edeff8afC7Bb3A2CF7DB832Fc86f6FA99DA', '1719890207', 1, 1), - (44421, '1000235711361907742', '853871353265551523', '0x8770E288017373EdCf8B00CD5D262A975A7d6E52', '1719891107', 1, 1), - (44422, '21675447868250916579', '18503682475703667564', '0x239CD1FF90fB4C54EC8B76CF11AB03B634cC974F', '1719891671', 1, 1), - (44423, '50000000000000000000', '42683506675788028001', '0x4119A23954de12fA45640CA5e1EE4Ca0F46B6d51', '1719892631', 1, 1), - (44424, '10005677791061892', '8541548295811485', '0x4EF880525383ab4E3d94b7689e3146bF899A296e', '1719893363', 1, 1), - (44425, '999999999999999999', '853670133515760559', '0x2Fd9324DF460881aF8F47A5973C3EEa5551Fc30D', '1719895223', 1, 1), - (44426, '2000000000000000000', '1707340267031521120', '0xbc48EBF56a312194D4426527BA41C86dB1107e8a', '1719895331', 1, 1), - (44427, '1437936610971187444', '1227523538674973836', '0x78d21F1F0B5e25e9ecDcBD662A0a5F8097e099C9', '1719897443', 1, 1), - (44428, '1e+21', '853670133515760560031', '0x7427b4Fd78974Ba1C3B5d69e2F1B8ACF654fEB44', '1719899435', 1, 1), - (44429, '150447351431782798789', '128432410583862572498', '0x7427b4Fd78974Ba1C3B5d69e2F1B8ACF654fEB44', '1719899435', 1, 1), - (44430, '150156274234852540', '128183926674295725', '0x35CeFdbdA2E814e08d043F4E008Aae59239A6052', '1719901487', 1, 1), - (44431, '9752720221834337793', '8325605973915177091', '0x13be9884bEc628c2D1522dC7a33844365a0FcEA3', '1719902423', 1, 1), - (44432, '2099785946297806484', '1792524549130566094', '0x148996c84b2a82BD89024d640F4d669C037B0d3F', '1719902831', 1, 1), - (44433, '518625103184941735', '442734761080514308', '0x74eBDA48fCE641a5EA9a87F16AC94e40Ca08103b', '1719903071', 1, 1), - (44434, '1105934958841835913', '944103643974257223', '0x572A771c70748552216863B7d03b2F1720Db2fD8', '1719903959', 1, 1), - (44435, '1215866461162973292', '1037948884238330711', '0x3D4b688814722EC3823EDB4AFCac10bDE71559B3', '1719904835', 1, 1), - (44436, '110997770165222321', '94755481276897042', '0xFBF2A8DB970B4DD1892E91169F17FEC54C14F7f5', '1719904943', 1, 0), - (44437, '1000000000000000', '853670133515760', '0x4EF880525383ab4E3d94b7689e3146bF899A296e', '1719905063', 1, 1), - (44438, '1000000000000000000', '853670133515760560', '0x812a9De3f7e0884E65B41BD66BAa02b6e067494E', '1719905291', 1, 1), - (44439, '7305911790641467', '6236838693771270', '0x7fA48877D340BAfDb33fE8Dce184A0635f08Cc0f', '1719908279', 1, 0), - (44440, '1000000000000000000', '853670133515760560', '0x7B2DDbF44547250F005a03Fe66Da1d9d1b946CBe', '1719911915', 1, 1), - (44441, '3600000000000000000', '3073212480656738016', '0xb50e8a0B235F7e6C593690CD0C5CA98DbFC455C2', '1719912491', 1, 1), - (44442, '5000000000000000000', '4268350667578802800', '0xE4563D233935E9F5c4cF57f9041004e898a81d88', '1719913439', 1, 1), - (44443, '2066317308378704045', '1763953372529575268', '0xfdA8B3b97DFc5E592b9d94b333674DD5a5741f83', '1719913835', 1, 1), - (44444, '10278386051265082', '8774351192709993', '0xEa32d3706A5207F4cA4ba0238aC939Ef59A217E6', '1719914435', 1, 0), - (44445, '10550788058069447', '9006892650228636', '0x2F1689161eD466eE3a4Acbac68B278c295EAD606', '1719915467', 1, 1), - (44446, '100000000000000000', '85367013351576056', '0xA49B2a68896D150cEb6105bBD4d7893F1D0C2182', '1719915935', 1, 1), - (44447, '10478339095097388', '8945045134335200', '0x462FAD8feF1c0Ac7419e9d279cb3F115c22Bb0a3', '1719917339', 1, 1), - (44448, '2000000000000000000', '1707340267031521120', '0xaFc0a435c0840E130635A7425fDAe1c3A5A6eE16', '1719918623', 1, 1), - (44449, '10000000000000000', '8536701335157605', '0x25440Cf20F8Ef4E8f990C5DB1C1E1cF86d5C710D', '1719918911', 1, 0), - (44450, '500000000000000000', '426835066757880280', '0x006c03a1b9eaa18c21040402C1f5170eEc9dF287', '1719919691', 1, 1), - (44451, '41670834353880009', '35573146726589889', '0x3329f18205682eBc3F171F0b3D1080f6ae4b5B4d', '1719920423', 1, 0), - (44452, '999999999999999', '853670133515759', '0x76480ee839dC512c07F5Ecc1FD484930F8654241', '1719922583', 1, 0), - (44453, '101454422575873868', '86608610466110637', '0x0004d6EBdC34C8a7C4b1D90b3B43766b4e34C1C2', '1719923027', 1, 0), - (44454, '1880508443865565934', '1605203116515708010', '0x37F6Ad5acC67A5B2ae1FDd19f4EA5cC1b48cFc92', '1719923339', 1, 1), - (44455, '1300000000000000000', '1109680766538264643', '0xaFc0a435c0840E130635A7425fDAe1c3A5A6eE16', '1719924155', 1, 1), - (44456, '29851648177116228363', '25481384485856097482', '0x3Afa381F49A4AF847489b9D3d08dC9A7123891A6', '1719924203', 1, 1), - (44457, '4780148899563493945', '4080337919257430900', '0x25986b46b61d36a8B2c5abE6647896a1ee6d402D', '1719924407', 1, 0), - (44458, '261509023300475311', '223224256486726424', '0x3cE5E11F6Ef92e4D6E11727a04D1dC2DdDe9B62F', '1719924467', 1, 0), - (44459, '4780148899563493945', '4080337919257430900', '0xBfE137d104B5B2dfD0af806941c6D0eD94d16a62', '1719924935', 1, 0), - (44460, '40016120831875439', '34157784337387197', '0x3DeE19C1CF1CDE4373C6e266e6ae7A02fC7CA870', '1719926099', 1, 1), - (44461, '1530115968448833880', '1306107892892877798', '0xbc4F0B1c273D5Ed570d00E720a458710d77A171D', '1719926219', 1, 1), - (44462, '200000000000000', '170720117928963', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1719927011', 1, 0), - (44463, '2015547254042992541', '1720472324508094141', '0x84dE7bb2987E75c13AB4c2c2307d4033b1dA5211', '1719927167', 1, 1), - (44464, '500051760921361197583', '426844477975403955661', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1719928403', 1, 1), - (44465, '5747755672659001215', '4906287631316076448', '0xec18F05db1010363E8fa608635D9517E7671a77b', '1719930011', 1, 1), - (44466, '190000000000000000', '162184112032515601', '0x81D7d732586413892B647caFAaeCa2A585382Bb1', '1719931475', 1, 1), - (44467, '20000000000000000000', '17072011792896379131', '0x33279db2E6f355FB3c212FA26Ae65abE8d356d68', '1719933971', 1, 1), - (44468, '218300000000000000', '186341008719463978', '0x55199F064Ba8f1D28D934c9a08953Ad9F6445EE6', '1719934355', 1, 1), - (44469, '6547027244672966912', '5588546316473538945', '0x4E76D8d05c6CB51885837793FF0a124a6fe9A0F0', '1719936023', 1, 1), - (44470, '60352152788194683', '51516633206337185', '0xC2e926417df0866877Cc67Da49f728f4928C2C65', '1719937175', 1, 1), - (44471, '6052694541800300302', '5166583629820713637', '0xc21b8703d5335EEC0D0ADc0D88b38b1ec97abBf1', '1719937775', 1, 1), - (44472, '2724885814726773587', '2325964138165576835', '0x2d2b9b9FA111EE640a63C63635113D0101A52E1F', '1719938699', 1, 1), - (44473, '1350000000000000000', '1152360796020505591', '0xbE24cB75EAa8363a45F1E870D99fC3dc127eD1FB', '1719939791', 1, 1), - (44474, '790000000000000000', '674344465819406975', '0x31b6B0367139dC39F6565ec7575eccC62d8e4db5', '1719941543', 1, 1), - (44475, '5200000000000000000', '4438723066153058574', '0x7c401479b4d8E37B9D6f5Ad770aef67837Bf38AB', '1719942179', 1, 0), - (44476, '2582974434459954919', '2204828500292510295', '0x6C75B333EcFa387b8F08DA5c5171115b00ce155b', '1719943103', 1, 1), - (44477, '3391923790993489865', '2895348148022332603', '0x35DDeaA4cF705C8cf9ba8A3788b72615465B4b2a', '1719946379', 1, 1), - (44478, '857152387258858082', '731665783179625462', '0x892B1ac09F9082b43E43b080e0c281f664d96585', '1719947543', 1, 1), - (44479, '570310603959096086', '486817467820177239', '0xD00d293292F3eFb73932c7284226e7A5ef08FFB0', '1719947663', 1, 0), - (44480, '4396226087006720', '3752621180080871', '0x0e0c15b72BbA5eD84A8c248c12861d8B0D0258a9', '1719947723', 1, 1), - (44481, '1559291101925278913', '1331011804031337575', '0x6Df4A95B0Da59b325F47D6c1Af1FAA6E04871B6e', '1719948467', 1, 1), - (44482, '162946703132492041', '139091401874574474', '0xe7603d11259f98a853ba13DB716511F50dfb9d33', '1719950399', 1, 0), - (44483, '1000000000000000000', '853600589644818956', '0xC815d3B4BB790218aeB861dF30c843a8D82922F5', '1719950399', 1, 1), - (44484, '183126545314520632', '156316927060093469', '0xb9A746186475Ef00c65775B58bcf5173fcAe62BD', '1719950579', 1, 1), - (44485, '259763807556165002290', '221734539298325723886', '0x8075ddC91c6d521BaDFbF8C1B7Bf37ad47716FB9', '1719950927', 1, 1), - (44486, '1500000000000000000', '1280400884467228434', '0x973eA6B78E89Db718234b5830790469871A266bD', '1719953375', 1, 1), - (44487, '19787872133020839124', '16890939320562869687', '0xE609c24Af802d5102CAccA3437cCc636499AC629', '1719955799', 1, 1), - (44488, '1205927143099753470', '1029380120418641529', '0xee2498405FfD1502F5A546E41812fBe6D6bc10fa', '1719956711', 1, 1), - (44489, '5136548195175305002', '4384560568140670955', '0x6Ee2A72F443B1aEaa5ac5708396cF98F2034603c', '1719957167', 1, 1), - (44490, '9000000000000000000', '7682405306803370609', '0x831995b03d8F658943E37529E9d39cc9E7F1CA52', '1719958979', 1, 0), - (44491, '161716140408646965', '138040992807905382', '0x9142A918Df6208Ae1bE65e2Be0ea9DAd6067155e', '1719961643', 1, 1), - (44492, '39045359921088577327', '33329142251535391371', '0xCE20033F9AAB85e831Dc906eF6Fa4Ed4BB2E6Bf3', '1719962867', 1, 1), - (44493, '3976227079361432014', '3394109779504614707', '0x02b375095df256c0C8699b9744f6774aF0eDb80C', '1719963179', 1, 1), - (44494, '13157199380000000000', '11230993148842446395', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1719966131', 1, 1), - (44495, '1000000000000000000', '853600589644818956', '0x5127e8cBa6cDCD24A46913059187566DA2Ac5851', '1719967763', 1, 1), - (44496, '62905227461603227654', '53695939252965973146', '0xf6e7DAA5e51931A1C86a0d9d910E7141b4d57a9e', '1719969095', 1, 1), - (44497, '416847179571659446', '355820998274148234', '0x62a84eA194247A6E6dE1D11597077B1876d30E07', '1719969887', 1, 1), - (44498, '3500000000000000000', '2987602063756866348', '0x979DA90Cd7742b39917Bd2dF9935b6a8D408363a', '1719969971', 1, 1), - (44499, '99999999999999999', '85360058964481894', '0xa668d722de03a7a6C4d71e4039CEDcd4667327c1', '1719970091', 1, 0), - (44500, '500000000000000000', '426800294822409478', '0xef143a0415b56d5523c1d6c922b6Bd598891B5f0', '1719970295', 1, 1), - (44501, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972011', 1, 1), - (44502, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972023', 1, 1), - (44503, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972035', 1, 1), - (44504, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972047', 1, 1), - (44505, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972059', 1, 1), - (44506, '1e+21', '853600589644818956598', '0x98078db053902644191f93988341E31289E1C8FE', '1719972071', 1, 1), - (44507, '686172903497161258327', '585717595023474305615', '0x98078db053902644191f93988341E31289E1C8FE', '1719972083', 1, 1), - (44508, '47910752237643570', '40896646360379380', '0x656A41EeBec46A6f3709783c8C93c2E522d2AfEB', '1719974303', 1, 1), - (44509, '56530433151173600', '48254411070718805', '0x378a3A3194f493E523BCF5254C5b39dE6Fe2cC9C', '1719974903', 1, 0), - (44510, '253522329147679333', '216406809648586950', '0xf74e0Dfe3371A37cEb30d8759FdBb48b4428c419', '1719975227', 1, 1), - (44511, '717813615812060226', '612726125712254148', '0x679D4C1cC6855C57726BEA1784F578315d6431f6', '1719976811', 1, 1), - (44512, '940654241069954225', '802943014829212602', '0xEa6D3b9E4526b3d25b5F12512479f01fA5Ec7736', '1719976907', 1, 1), - (44513, '2500000000000000000', '2134001474112047391', '0xd00E8DB01B5754b1151dff2b7DEf571106992bC7', '1719978203', 1, 1), - (44514, '1420769372592056545', '1212769574193878947', '0x1Fc4992d51317C260913d8af60249488366ED9a0', '1719981347', 1, 1), - (44515, '49216546951821562822', '42011273498356803100', '0x2c6820974935Ca221cd6a1Ee3942DA636A4edb90', '1719981491', 1, 1), - (44516, '4646308897083617512', '3966092014222544345', '0xf19feDA3443deC19c71aDA86D485E30Ba1A0228C', '1719981743', 1, 0), - (44517, '402174367718166163', '343296277424258878', '0x0FD68ed7D1907DC358480d5c2D103e0b2E41b3f5', '1719982055', 1, 0), - (44518, '20000000000000000', '17072011792896379', '0xB67B3E076b976375281aD4c5c427E79059B20B97', '1719982151', 1, 0), - (44519, '300000000000000000', '256080176893445686', '0x065DBA6a0833E29F536c0920A12863E715411270', '1719984887', 1, 1), - (44520, '5393736657286737', '4604096791048833', '0x64E8Ec719565bb84A113d8028E79911eDF8B29f4', '1719987107', 1, 1), - (44521, '1137812622901656513', '971237525814172036', '0x227A67b3857e4CaBBE50B63aa47dab9C8F6e710F', '1719989135', 1, 1), - (44522, '14999999999999999', '12804008844672283', '0xCBf18D0B0bE161E474C0E72a6C56F51a6eAca252', '1719991859', 1, 1), - (44523, '6212758405191533', '5303214237992297', '0x7346a8eC1CcE583e120972854418Be39DE09E959', '1719995807', 1, 0), - (44524, '10000000000000', '8536005896448', '0xDeE03FB58F9f3C2980081C20fbaD9cBFe1B45caB', '1719996503', 1, 0), - (44525, '36005620058153736', '30734418512167349', '0x4b4b0B8a1D0f554908da4ee35985B4f437202cBE', '1719996875', 1, 1), - (44526, '66479537954534732', '56746972797305968', '0x6A58450407d44456d812BBD3d41dbA31d02507b0', '1719997355', 1, 1), - (44527, '1000000000000000000', '853600589644818956', '0x25187091091e10A184C8F7D39f3427720d374d81', '1719997787', 1, 1), - (44528, '35088353933847769637', '29951439607598558970', '0x2BAc1D670E906668f1cdf06f7E6146d13ADc60aE', '1719997823', 1, 1), - (44529, '19280433270636574337', '16457789208422965123', '0x25187091091e10A184C8F7D39f3427720d374d81', '1719998519', 1, 1), - (44530, '10943866567634209', '9341690955126781', '0xa1f1a7F3e6e5566681f7A976C46ad4f2e62C6855', '1719998663', 1, 0), - (44531, '484491313249422653512', '413562070667499864038', '0x135aF28FB1539A1a5061A56f0e524D578E5D369f', '1719998771', 1, 1), - (44532, '3000000000000000000', '2560801768934456869', '0xaFc0a435c0840E130635A7425fDAe1c3A5A6eE16', '1719999179', 1, 1), - (44533, '6085748098218317677', '5194798165068991558', '0xC9b3aC5588711D0C9B5D32e7db459cb5E1168f45', '1720000235', 1, 1), - (44534, '468107450083081211', '399576795408050778', '0xfF32A35835e70BA4a6e8936ea5796c5B531a2e29', '1720001651', 1, 1), - (44535, '1281986668506621713', '1094304576154049350', '0x73C9671A05eFcE444277515dbb60D84D3876834F', '1720002407', 1, 1), - (44536, '53710212227928172', '45847068827707852', '0x45AaeF9d5cEEe2aB6ADc2f4B874783393dC97EFE', '1720003307', 1, 1), - (44537, '3205631710132580473', '2736329117953300054', '0xbF2e12424d5CECeE82469039fE6a1AC89D8d801D', '1720006007', 1, 1), - (44538, '4258159518437859130', '3634767475740254890', '0xcc05bBfAE122cA72f8912aFE49ec08B7f474A136', '1720008047', 1, 1), - (44539, '2000000000000000000', '1707201179289637913', '0x99B713E73b20Bf7065FCD1b91c467E894067bC07', '1720008719', 1, 1), - (44540, '351481685922263690', '300000000000000000', '0xC644CDEffC2B498acb96a00A8DEe8A25e9613226', '1720010507', 1, 1), - (44541, '75514607677355231333', '64453947988109347822', '0x0E8721a8fcA1589DE2F586b0C580ec34AD1f846c', '1720012403', 1, 1), - (44542, '230382857659993978', '196638573405739696', '0x5dbD0388a0BB941E2F44203b04ae613b625A0685', '1720018175', 1, 1), - (44543, '290159087190756217220', '247659350810326400343', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720019675', 1, 1), - (44544, '22000000000000000000', '18777649773364593501', '0x9548D5Be2A83F6271465E8F57f0A8bAd618A7282', '1720022855', 1, 1), - (44545, '99999999999999999', '85352953515293605', '0xb7eCC4bf42f1c6093bf0219d129A7f14F1c977b9', '1720023383', 1, 1), - (44546, '2343211239481757928', '1999999999999999999', '0xb6cE22A5fA72e44574cCbD53f79Bc0172622836E', '1720023935', 1, 1), - (44547, '404203938810603242718', '344999999999999999998', '0x75734747A07fd1F8DF6CbbC7bCF9eA44b21d2c0f', '1720024559', 1, 1), - (44548, '252178869492416741', '215242113253255391', '0x21aE49c55C7542b5A2ED20e766d5d01114DDa356', '1720024631', 1, 0), - (44549, '800059576238714240', '682874478201684780', '0xAe7e7C6F2246086A4fbe6d3ff8e9B5f462e636Dc', '1720024703', 1, 1), - (44550, '1362776460398685481', '1163169958761453606', '0x41813982fC6d87ac1798B13633246Ed5b40b3910', '1720025279', 1, 1), - (44551, '12000000000000000', '10242354421835232', '0x6DF23e8a028a674456D21c659d206D8a5A1444cE', '1720026563', 1, 0), - (44552, '963614567547', '822473493904', '0x0Fd19Aa1E9dA882d9f157CE36d0ebbDA860b293e', '1720028135', 1, 0), - (44553, '62108194926578408057', '53011178744870410907', '0xc8D61657419dA272934c0803f36D46b18Fa6e702', '1720028471', 1, 1), - (44554, '1060961257139644615', '905561768621675541', '0xa7304D65643E771c60c957A80Ef38Da3adC20cEd', '1720029059', 1, 1), - (44555, '32716845181453818897', '27924793659396854334', '0x40b3A482c6a39e7Fd6a4DD851943A84eC6cD72E3', '1720029083', 1, 0), - (44556, '114074008052118363', '97365535065756872', '0x992C7416893CbdA21f9d511175e52E591f11A4Bb', '1720029539', 1, 1), - (44557, '1045649821697994208', '892493006246639479', '0x4eb8bc604F25279361c859528643c43F7989708B', '1720029695', 1, 1), - (44558, '1177000000000000000', '1004604262875005752', '0x3C5D069e9c4E9e472273d3b05A59C8cc5503cB80', '1720031303', 1, 1), - (44559, '55459738630657700', '47336524933128597', '0x39936be2cdF69f0B1cBdCaD99be341B44b8eCCAf', '1720031795', 1, 1), - (44560, '55600000000000000', '47456242154503245', '0x740CD1B9ced08954267aEA8Cc81419b76242c513', '1720032527', 1, 0), - (44561, '582692485978141731', '497345246694032029', '0x6Ae09a6b23a550cd7F51C8bE415CD43C92D27a18', '1720033787', 1, 1), - (44562, '370000000000000000', '315805928006586345', '0xd0a185613598B2F59081712A77bf04FcB6847dbe', '1720035455', 1, 1), - (44563, '4911913857294965840', '4192463551328237344', '0x3d87b66bE721016485f7452bdEE3861292FCcbeE', '1720036079', 1, 1), - (44564, '172535065495866284793', '147263774250268129033', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1720039283', 1, 1), - (44565, '70000000000000000000', '59747067460705524777', '0x7cB92A861F92063865E5c63274E74ce4Ca03da8F', '1720044695', 1, 1), - (44566, '5001269839484350310', '4268731521269476705', '0x4Eb5Efc0d4fCe7613595092d6b64b4dF06d8ec6C', '1720046915', 1, 0), - (44567, '300029155761662242489', '256083745849579424100', '0xbEF4E5d4d18233741Eea8da62185bF590000e179', '1720048091', 1, 1), - (44568, '5230009051342956749', '4463967194438402020', '0xB5efF7FcA212488115CB20c3897b8eA532235658', '1720048799', 1, 1), - (44569, '19380335499879739', '16541688750320298', '0x5078DFfD995dF3323d4436033f08412E2447251f', '1720049243', 1, 0), - (44570, '20625436385533027086', '17604419130470458482', '0xA546262813E9D61d9C3E2FcDD667540eA0C54A65', '1720049495', 1, 1), - (44571, '10232898510000000000', '8734081108507472114', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720052531', 1, 1), - (44572, '50368337552945114666', '42990863737991417110', '0x092908E24A28052737b19cb5D665ebC25f483bB1', '1720053827', 1, 1), - (44573, '40734031789974752', '34767699218602070', '0xc2679E020F7d9BD662e558f339baD869783581Eb', '1720054019', 1, 1), - (44574, '10129465769746483572', '8645798209799293859', '0x839c92fC98A8EeAB03047Cf851b98822fA58b8d4', '1720055303', 1, 1), - (44575, '11000000000000000000', '9388824886682296750', '0x5Ac3780160ebE27463944ba154b6EE58beEc1884', '1720056503', 1, 1), - (44576, '4000000000000000000', '3414118140611744272', '0x1D8b6943f91944378b3E0f421d5DA031F2bbfaEc', '1720057367', 1, 1), - (44577, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058411', 1, 1), - (44578, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058423', 1, 1), - (44579, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058435', 1, 1), - (44580, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058447', 1, 1), - (44581, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058459', 1, 1), - (44582, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058471', 1, 1), - (44583, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058483', 1, 1), - (44584, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058495', 1, 1), - (44585, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058507', 1, 1), - (44586, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058531', 1, 1), - (44587, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058543', 1, 1), - (44588, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058555', 1, 1), - (44589, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058567', 1, 1), - (44590, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058579', 1, 1), - (44591, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058591', 1, 1), - (44592, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058603', 1, 1), - (44593, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058615', 1, 1), - (44594, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058627', 1, 1), - (44595, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058639', 1, 1), - (44596, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058651', 1, 1), - (44597, '1e+21', '853529535152936068248', '0x98078db053902644191f93988341E31289E1C8FE', '1720058663', 1, 1), - (44598, '52090145353064000000', '44460477549249588770', '0x98078db053902644191f93988341E31289E1C8FE', '1720058675', 1, 1), - (44599, '17656788760518242070', '15070590703058721363', '0x8a31806e1f80b47D415Cd4b3f8862a306b297e0C', '1720060499', 1, 1), - (44600, '1386753435815081981', '1183635015442983887', '0x6867bA3cD9d6512bC4460b8270250867E93f0caD', '1720061603', 1, 1), - (44601, '3600000000000000000', '3072706326550569845', '0xB7a88Af5b73e23452253Cc06E48f969b9Adf95D0', '1720064267', 1, 1), - (44602, '31265658969860250572', '26686163366795045639', '0x0CAEd2df763925990a83C5af2f33739A136b9802', '1720064399', 1, 1), - (44603, '40565250686521950', '34623639561829400', '0x015548748ffE68aD7AE394B7f24f3E85C0d725D0', '1720064483', 1, 0), - (44604, '152839438025912103558', '130452974491292738425', '0x869C98f94C1A15118Ca10cd86F74B1A3550Cdd29', '1720065107', 1, 1), - (44605, '33344951549173482531', '28460900995463217964', '0x6AfCCAede8Ca32033392DCa648eb704B65B5fE7B', '1720069031', 1, 1), - (44606, '1257600000000000000', '1073398743408332399', '0x699d2974b3Cc6F455A79c6bf3827D4d868dD50Eb', '1720069127', 1, 1), - (44607, '10386264547115789', '8864983550875159', '0x7deFad05B632Ba2CeF7EA20731021657e20a7596', '1720071755', 1, 1), - (44608, '29505653256557395016', '25183946508453147668', '0x86Fad577C5998d29664aDF4E93268d5b8EF124E7', '1720072319', 1, 1), - (44609, '298', '254', '0x3DeE19C1CF1CDE4373C6e266e6ae7A02fC7CA870', '1720072787', 1, 0), - (44610, '52578041050178823', '44876910936811121', '0xC2a1B5Dc337089B7C600f3a4BFec012F30893d6B', '1720072955', 1, 1), - (44611, '24679000000000000000', '21064255398039309228', '0x0d18D7C855668EB1Ba06005b199838F38E00D7e3', '1720074143', 1, 1), - (44612, '11260660033334763603', '9611305923767466348', '0x223d3c5FA95Cd1695914910368f7Ad9a06Fca586', '1720074443', 1, 1), - (44613, '10072536428538103638', '8597207335661142446', '0xAe3ac7f82eda878478005d147448db8b96d622c9', '1720078139', 1, 1), - (44614, '10025792529834768696', '8557310037529649042', '0x074e92b8527587725A0e2b4B41EC85d797481AB5', '1720079207', 1, 1), - (44615, '4143399839161474970', '3536514138672243801', '0xCc06A04A2CCf64De7909Fd59e1C605F004Bfc379', '1720080647', 1, 0), - (44616, '51853719333753692209', '44258680958889602674', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720080947', 1, 1), - (44617, '14062139468733623698', '12002451364003965195', '0x0529f7d3eAC1a07dE0CB83843201E88CfD1C923c', '1720081775', 1, 1), - (44618, '2183705465640857378', '1863857110999366802', '0x83eB96E6311824EE610c761D66b2b6b328a72541', '1720083935', 1, 1), - (44619, '165974692426552040', '141664302073986501', '0x06619134D2bC4a54710E4645D4222647facE1789', '1720084343', 1, 1), - (44620, '51419622732330742', '43888166688465602', '0x30fb22Be3D4A290e0Cb44587684438FbfAd00138', '1720085087', 1, 1), - (44621, '2043329948660994309', '1744042461244691193', '0x405a3eb49B32AbCB6045B5B82FbBC8978f2bB2d4', '1720085543', 1, 1), - (44622, '530000000000000000', '452370653631056116', '0xbBD42e41e04630508e97dC77ECE95F58D10FbE7D', '1720087307', 1, 0), - (44623, '3743462260777643', '3195155603304100', '0x436f795B64E23E6cE7792af4923A68AFD3967952', '1720087331', 1, 0), - (44624, '150261649553088262', '128252755894360807', '0x58c02c546ab555F94E099e26B3e1Be39537A9B36', '1720087427', 1, 1), - (44625, '1000000000000000000', '853529535152936068', '0x59d16071768C996B03Dd4c958a72837babE0bb56', '1720088615', 1, 1), - (44626, '944892398064137050', '806493569289225924', '0xa4369Cb7021d403dCBcFA0074B06C082263C3A19', '1720088999', 1, 1), - (44627, '2121000265145254602', '1810336370368683309', '0xa9A6f4C3daD840fE425b9E28Ff01eC7B9441a872', '1720089683', 1, 1), - (44628, '200000000000000000', '170705907030587213', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720091603', 1, 1), - (44629, '5655975286890831', '4827541957456425', '0xbE988fC9F6F8ad1EBb3A58B6c25BD6be9D1F56fe', '1720092215', 1, 0), - (44630, '5985432748752878', '5108743631732204', '0x76eA51dD3daf3b7160C6Bbc929342deeEeB6effD', '1720092371', 1, 0), - (44631, '103055029945316489110', '87960511804397889470', '0x027ED7f31cD5F54013E3a2A430512b52fED2Ac3D', '1720093907', 1, 1), - (44632, '544018970102809013', '464336258666229601', '0x5b6638A65bDD166f8c0BF394fD53CC2B954eF8c7', '1720094879', 1, 1), - (44633, '2500000000000000000', '2133625128992846728', '0x006c03a1b9eaa18c21040402C1f5170eEc9dF287', '1720096667', 1, 1), - (44634, '290094586014496001849', '247581239402122200992', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720097771', 1, 1), - (44635, '102694660696345433396', '87644763470046660947', '0x11D25D8524767B9c0688Cf7f3b28f15838232212', '1720098659', 1, 1), - (44636, '974206873874903446', '831436906774823531', '0x269aC113B3061AB2bd0752e9171290B56D2e0085', '1720099127', 1, 1), - (44637, '11578144416292023159', '9881367949483550401', '0x1B4aeF6C2CaF05d908d612CDcBE37f4BeECf1235', '1720101131', 1, 1), - (44638, '5898299032182240102', '5033903613351286021', '0x45C96415957110d63B97DF601716aFE640aF27F0', '1720103375', 1, 1), - (44639, '1000000000000000000', '853450051597138691', '0xFC10014e77bFd9508Ea48Aa1782F84814d8e0431', '1720104371', 1, 1), - (44640, '3770000000000000000', '3217506694521212866', '0xbc48EBF56a312194D4426527BA41C86dB1107e8a', '1720104671', 1, 1), - (44641, '271112710810166189038', '231381157029576474708', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720105139', 1, 1), - (44642, '50012893661334369207', '42683506675788028001', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720105223', 1, 1), - (44643, '58349999999999999997', '49798810510693042640', '0xFafB1e97BED43823272018f671Cd8466AFBe206A', '1720106003', 1, 1), - (44644, '500329881472010503361', '427006563157877649856', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720106039', 1, 1), - (44645, '500356523478679982683', '427029300779844368297', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720106987', 1, 1), - (44646, '10000000000000000000', '8534500515971386914', '0x22F2Ce07bB8B7032002342ba59E261F6523230F4', '1720107743', 1, 1), - (44647, '7657501852978118863', '6535295351529360681', '0xb6cE22A5fA72e44574cCbD53f79Bc0172622836E', '1720108019', 1, 1), - (44648, '988373892594136337', '843527749631730471', '0xCbEf1EbFe898F07AD6aF415CcE31c3626218cA0c', '1720108199', 1, 0), - (44649, '300000000000000000', '256035015479141607', '0x2097189de6C6bb1c1db2AFB3EEb41Ba4FB5CE3c5', '1720109363', 1, 1), - (44650, '1813252161481100211', '1547520150774668233', '0x6F1707a13D2D04d2aeb5a7a2a8964940CFC9C920', '1720110095', 1, 1), - (44651, '100000000000000000000', '85345005159713869140', '0x14F7171f76694516CBdF31bC3D63F8A7a7899069', '1720110251', 1, 1), - (44652, '370000000000000000', '315776519090941315', '0x835AFa0cE84964D8dB16545657bAf01305505EB2', '1720110755', 1, 1), - (44653, '15164078899638851207', '12941783919319859674', '0x2DE1887A55153Bd769490786811e827C33eE71AA', '1720111355', 1, 0), - (44654, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44655, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44656, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44657, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44658, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44659, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44660, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44661, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44662, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44663, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44664, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44665, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44666, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44667, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44668, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44669, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44670, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44671, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44672, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44673, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44674, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44675, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44676, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44677, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44678, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44679, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44680, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44681, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44682, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44683, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44684, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44685, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44686, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44687, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44688, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44689, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44690, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44691, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44692, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44693, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44694, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44695, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44696, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44697, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44698, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44699, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44700, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44701, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44702, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44703, '1e+21', '853450051597138691400', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720111391', 1, 1), - (44704, '250023283013355213', '213382383788234016', '0x2b9Da9514d37a1057D7d3A7f996a5EfF19D32b05', '1720112051', 1, 1), - (44705, '926647700720196352', '790847527992021508', '0x677328E15c92e59DfDdA3Ace5f3E8e721DEaf5b8', '1720112387', 1, 1), - (44706, '49999999999998', '42672502579855', '0xEC113A201B2Bf05FEc4c5f13b925F282B78Fe902', '1720114475', 1, 0), - (44707, '133881677477922529', '114261324551444463', '0xAff0c306B8f339283Fa34AA2dcE26Cd617F04A6D', '1720114787', 1, 0), - (44708, '40288714768734411', '34384405698158786', '0xb40194A540360e4f658583528736b43B45C3DC65', '1720115063', 1, 1), - (44709, '399490278554096187', '340944998844548699', '0xF7F7980140cD449Fcb7BBF66940DcDE1c394814B', '1720118255', 1, 1), - (44710, '95076902983549340', '81143387757006333', '0x19A4cA721Ff4eC257A1B0989B34B2ac2fDEd167F', '1720118639', 1, 1), - (44711, '10000000000000000000', '8534500515971386914', '0x2786D631317dC40f7A9AE2f15F0145fd4B037dFA', '1720119863', 1, 1), - (44712, '10080908036892728740', '8603551484232109457', '0xb83dEB729d18d108eF34d583c449Db6500fF2B06', '1720120523', 1, 1), - (44713, '253057179014143991', '215971662486647551', '0x82ac09bebb0b36Df8Fdd3f80128d7f727Bf0dF39', '1720121963', 1, 1), - (44714, '40000000000000000000', '34138002063885547656', '0xD4F0CD7e0DfbfA45f4876008d14B89A0040f84de', '1720125527', 1, 1), - (44715, '9284888269071097954', '7924188372312396302', '0x851111cE2237AA1A7f011C242B0534A28516F3e2', '1720127039', 1, 1), - (44716, '117000000000000000', '99853656036865226', '0x85ADe7F0a3E7A73001964C59e0E8b4D408789Fdd', '1720127171', 1, 1), - (44717, '198580246649331092', '169478321749044148', '0x353e6BEee77961d785E96486391935123295be9C', '1720128119', 1, 1), - (44718, '10000000000000000000', '8534500515971386914', '0x9683b0B1b741D2020B59D18b1D4FafDa497B6bD3', '1720128527', 1, 1), - (44719, '4391059064757706469', '3747549585383548152', '0x59a3AB6d1ae99E3085569bA5D8dcD5f392ED4115', '1720133639', 1, 1), - (44720, '25000000000000000000', '21336251289928467285', '0x11b255D7f605dB3d68b6d1842C723564B69aC86B', '1720135991', 1, 1), - (44721, '75679561140000000000', '64588725359781812244', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720138931', 1, 1), - (44722, '3119064105241310415', '2661965421552979599', '0xF593645787CE06586740Cec9e815AC986D39DbE2', '1720139291', 1, 1), - (44723, '1107152838407398899', '944899647064713146', '0xfd6Ee7C962cc135211E624B647b8d6D999bB70d0', '1720140683', 1, 1), - (44724, '9000000000000000000', '7681050464374248222', '0x1D8b6943f91944378b3E0f421d5DA031F2bbfaEc', '1720140779', 1, 1), - (44725, '20228683726800000000', '17264171170379659796', '0x064b1411A3dD51EAA41f9c694Ff468706890E335', '1720141343', 1, 1), - (44726, '4000000000000000000', '3413800206388554765', '0x760A3B0f719603b86D4c3CFC25374292153dCce4', '1720141379', 1, 1), - (44727, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144811', 1, 1), - (44728, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144823', 1, 1), - (44729, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144835', 1, 1), - (44730, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144847', 1, 1), - (44731, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144859', 1, 1), - (44732, '1e+21', '853450051597138691400', '0x98078db053902644191f93988341E31289E1C8FE', '1720144871', 1, 1), - (44733, '261521142771888697319', '223195232792411083061', '0x98078db053902644191f93988341E31289E1C8FE', '1720144883', 1, 1), - (44734, '10000000000000000', '8534500515971386', '0xcfdD230c125Fc516E3bE303B5D8dF06139fCE3B7', '1720147559', 1, 1), - (44735, '116842098165928403', '99718894708429539', '0xcfdD230c125Fc516E3bE303B5D8dF06139fCE3B7', '1720147703', 1, 1), - (44736, '259447533475582626313', '221425510831486360308', '0x8075ddC91c6d521BaDFbF8C1B7Bf37ad47716FB9', '1720147991', 1, 1), - (44737, '5599999999999999999', '4779320288943976670', '0x80708D0471323Ff42f7f8592794bDA1b5eB90328', '1720148675', 1, 1), - (44738, '1024603367121869433', '874447796536761504', '0x7Ad1E23f14997F51d69cCc9C7bCd6c2971bA295b', '1720149683', 1, 0), - (44739, '50154757866696587163', '42804580689174199995', '0xCeCE6D1495479Ea5f4A2C473E9B353aeAc457924', '1720150427', 1, 1), - (44740, '200139497894532776123', '170809064804714428273', '0xadbe9081596C1160D6999772C73A221E05421A11', '1720150787', 1, 1), - (44741, '39053040665479275832', '33329819570978443496', '0x0b997aA36087672430D1f37A0139827748feA657', '1720150991', 1, 1), - (44742, '30000000000000000000', '25603501547914160742', '0x11b255D7f605dB3d68b6d1842C723564B69aC86B', '1720151183', 1, 0), - (44743, '61800000000000000000', '52743213188703171128', '0x9c0E6E43ce338F3091fFA726C026Ea28Ab01abc0', '1720151879', 1, 1), - (44744, '20325198121597251671', '17346541385599240848', '0x27C7F1319ddCD6741cca71A195419436D818d496', '1720151999', 1, 1), - (44745, '978790086559634891', '835348449877088243', '0x5A987AFbd84E519dfA028e23Ab80533ed2483a51', '1720152623', 1, 0), - (44746, '39999999999999999998', '34138002063885547654', '0xBe29E320Ce5a172c9098c5800335e818853DC2B2', '1720153007', 1, 0), - (44747, '22392228642939667544', '19110648690691786164', '0x93422625B55fd1ED027810C95abBAdd9E383e177', '1720154051', 1, 1), - (44748, '8000000000000000000', '6827600412777109531', '0xBaA9FE08A2F00100FdF6674Fd2e4a32051677D51', '1720154531', 1, 1), - (44749, '460763491825304238', '393238625872383693', '0x40f87a2f57f39a9161ab2F7442c0a0bE0E2081Bd', '1720155611', 1, 1), - (44750, '418253351888136126', '356958344749605982', '0xa221BfB5485E25F02bCdA8bEe2c78c5fa6D3A534', '1720155923', 1, 1), - (44751, '1961775639652047771', '1674277520883049930', '0x2d3095F3E727b7756f9C917245980f2EbA84b2B4', '1720156559', 1, 1), - (44752, '10000000007624934481', '8534500522478887640', '0x1E2E55EC32cb277bfA9bD3Be203e6E9622372624', '1720158587', 1, 1), - (44753, '1000000000000000000', '853450051597138691', '0x14D4c1209938EB40a340CAd9c6bd7588D601881D', '1720158719', 1, 1), - (44754, '99999999999999999', '85345005159713868', '0xbEb6e40413d6Da905052Ee0c7D465672F4D92f0d', '1720159415', 1, 0), - (44755, '5369693417012104917', '4582765123809796909', '0x1D8b6943f91944378b3E0f421d5DA031F2bbfaEc', '1720162955', 1, 1), - (44756, '70302884026682690807', '59999999999999999999', '0x527296E482B3d1dab2d4cf55097E36d0Ef2E0f2A', '1720163195', 1, 1), - (44757, '7278219350885158973', '6211596680548232199', '0xD302F86F653966b50853CfA7584D122107195E32', '1720163675', 1, 1), - (44758, '10000000000000000000', '8534500515971386914', '0x66F779AA94981BBC31881A46d8Cfb1eD9F59716e', '1720163999', 1, 1), - (44759, '40451317911211494383', '34523179358495710395', '0xEdDa2eA84ab7d745d0d765563FD746519cD5BB78', '1720164443', 1, 1), - (44760, '177068872759303336', '151119438592674617', '0xC2837C7c1e480253cd50281875f65872D4bC0092', '1720164527', 1, 0), - (44761, '300370000000000000000', '256350791998232548736', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720166159', 1, 1), - (44762, '12000000000000000000', '10241400619165664296', '0x6b31482dBD7B91f0E0668b45a8FD3AD4E1B7F116', '1720166651', 1, 1), - (44763, '587098261844659000', '501059041863914665', '0xa7088165074Ff89690D283A1d8795753DeD50692', '1720168871', 1, 1), - (44764, '1081361999056470817', '922888453889930059', '0xd0B3bf7A691dd65f6672300Cf8db255aCC6499A5', '1720169075', 1, 1), - (44765, '995781059754288304', '849849396826750799', '0x3Cb9399dd8C93680eCE5c6Fe42e5a318C618569c', '1720169471', 1, 0), - (44766, '1067921985843077788', '911418073919493553', '0xE351748CcEa54045E770757F20Be14a9ac43eA5c', '1720170311', 1, 1), - (44767, '1000000000000000', '853450051597138', '0xBE2dC53d9C766Dd841C4f8ed6d756bD9A7937F32', '1720173347', 1, 0), - (44768, '101834480794045969217', '86910642888046361525', '0x2BAc1D670E906668f1cdf06f7E6146d13ADc60aE', '1720173431', 1, 1), - (44769, '16815706585024826072', '14351365652631782672', '0x23BeeB430fFAaC3c06be7E0C1d41e8a21F94abb3', '1720175447', 1, 1), - (44770, '100000000000000000', '85345005159713869', '0xE6192444dA03807AE6f9E6277EeBb077f0284797', '1720181195', 1, 1), - (44771, '2600000000000000000', '2218970134152560597', '0xE6192444dA03807AE6f9E6277EeBb077f0284797', '1720181411', 1, 1), - (44772, '580832605308345091', '495656168168105196', '0x3A5c30CeDa833f5E40Aa7676B6A7E6bD956CCA89', '1720182215', 1, 1), - (44773, '10066912395274989', '8590645872018701', '0x8C0E3669516b6FfD317Bb60BB3A352ba1b04788F', '1720183715', 1, 0), - (44774, '1105001520075343717', '942958116081861364', '0x8Dc36E6CdE787fd7c9b2D4b340995bA66Ba183C6', '1720185659', 1, 1), - (44775, '7238057473102890031', '6176629547499598813', '0xaE61E63Cf004B2950399a6E78C15d068395e901f', '1720187099', 1, 1), - (44776, '1488973786954998518', '1270622611402947911', '0x28a83E129bDa2F751dbeb2c64CDd9b20658F1f6F', '1720189559', 1, 1), - (44777, '1017639982530265390', '868407747267975065', '0xc0764955485238E92ef4D4B1E557017DfaF9c9f6', '1720190663', 1, 1), - (44778, '386740095676525262', '330026434721636998', '0xDAcCce559a0571083556f39d05b177579613D83b', '1720191755', 1, 1), - (44779, '3829954778544335662', '3268309479256320585', '0xD1AaE781eB38ada2eBfAf56071244d912Cf75482', '1720192331', 1, 1), - (44780, '71566120152509486', '61071276924304267', '0xCFC8E30463fE25830c8a02c3ffe7c5448C5A683C', '1720194647', 1, 1), - (44781, '999999999999999999998', '853354587256645997849', '0x4B2cf5C94A88934870B523983B22e6d2dd1b6577', '1720195247', 1, 1), - (44782, '999999999999999999998', '853354587256645997849', '0x4B2cf5C94A88934870B523983B22e6d2dd1b6577', '1720195247', 1, 1), - (44783, '999999999999999999998', '853354587256645997849', '0x4B2cf5C94A88934870B523983B22e6d2dd1b6577', '1720195247', 1, 1), - (44784, '515537438715087595892', '439936238230062006449', '0x4B2cf5C94A88934870B523983B22e6d2dd1b6577', '1720195247', 1, 1), - (44785, '89984049555893957', '76788301468451467', '0xD5046FB1EB9EC66b5ab9f2Ecc8a51256D571BE7C', '1720195475', 1, 1), - (44786, '1357508648637139937', '1158436232555073825', '0xDb239756063890Bad109094939a6F55688fE3d8e', '1720196951', 1, 1), - (44787, '1388490000000000', '1184874310859980', '0xc69C8aa8B19180b58117012E2ff7718ce8C5bAFC', '1720200059', 1, 0), - (44788, '22189015705388377', '18935098338902934', '0x21D0a62D69c517f67b80CeEd1429b1883eFa7F96', '1720200227', 1, 0), - (44789, '1734872267740125158', '1480461207980375951', '0xd283d3493B02a6FD4Ec3809a325C5BB14C46856D', '1720200551', 1, 1), - (44790, '267338877949678200000', '228134857850402500239', '0x000000000000C35e4364DEFfA9059DbAdAeFd4F8', '1720201595', 1, 1), - (44791, '67242891889393', '57382030254216', '0x89523f09D24605dcf00D551fdB394712c653Fba7', '1720202255', 1, 0), - (44792, '17216094984952765', '14691433630055579', '0x2442946C3AF78d13465d16Fe92bA0d541318784d', '1720202327', 1, 0), - (44793, '71274818434808846351', '60822693267228686400', '0x1f57cb97e3d3F56CE48875C350054da24bc81e34', '1720202927', 1, 1), - (44794, '346702661245444133272', '295860306387886734432', '0x99d81f0D142Ee756a39Ddb7a404B8656D5b807aB', '1720203275', 1, 1), - (44795, '20000000009251000220', '17067091753027303431', '0x98942BBfF33CCF8F87eEd92b582c1dAF5a40C70C', '1720208255', 1, 1), - (44796, '800211805912518253', '682864415352372329', '0xA6E3bf2c1B752640256c7f8196ad5199B3402A73', '1720208939', 1, 1), - (44797, '201548678748917805', '171992489565905091', '0x8d94e6411835c1229771A131DC776c33794194Df', '1720210259', 1, 0), - (44798, '59609329853462481', '50867895073746741', '0x36250e7C5c6dDD516dD191B36538f90d344dD963', '1720210427', 1, 1), - (44799, '3566973529958643507', '3043893224413239837', '0xF73cE702A2cFac58FeBa448b91b9489D258393d9', '1720210715', 1, 1), - (44800, '1040283360063228479', '887730577356713193', '0x3BF90dB300ca9Aa81252828ba6813F0431E6Aa6A', '1720211219', 1, 1), - (44801, '4112263093977760967', '3509218575252130262', '0x17Ae6346c9c23d2c9c09b7eDef9AB88Aaf29b0Cb', '1720212371', 1, 1), - (44802, '278326114611099041', '237510866656700371', '0x3B64Cec119abb653f4Ec4EB719F407544eB3039C', '1720213343', 1, 1), - (44803, '70000000000000000', '59734821107965219', '0x1d308Ea162C521e866aAb18494966595F7087898', '1720213607', 1, 1), - (44804, '20292068655735071', '17316329872298324', '0x3C6d05Eb3cD72A4b7FB73D8c8a87564399BD3a45', '1720214003', 1, 0), - (44805, '3107608251295911948', '2651891756639970375', '0xe7697CeAe1cb5e6D9a8806e2334497e394ed214C', '1720214027', 1, 1), - (44806, '15001678042315321', '12801750773957079', '0x338f766990366f721C4269F738aBaa5D32DfDDd3', '1720214891', 1, 1), - (44807, '10551649996120269', '9004298927315802', '0x8877F36a82d761fF80F219802bcfcFe397874b25', '1720215443', 1, 0), - (44808, '1058101240772204262', '902935547594909377', '0x1f5e783e7584715cA6B339CcAb6dA3F9A57c3EE8', '1720215743', 1, 1), - (44809, '91559820426756336', '78132992769567278', '0xE43B743fd2Cb2f2B761034Df6030b1f1599efA9D', '1720216595', 1, 0), - (44810, '10118029930675746', '8634267255342191', '0xb3334C3c7d2f7da1585dCa8dD20FF04076e4D943', '1720221371', 1, 0), - (44811, '24305858973391750592', '20741516252156962745', '0xAbAd8B6cF7Ea0a8789851Af5E97fA4f1B83432FD', '1720221707', 1, 1), - (44812, '11001020186666086', '9387771040794468', '0xFD64CeB90bcE9EeBFCdcF3e937DC1e6d010c1aB6', '1720224431', 1, 0), - (44813, '155489687100000000000', '132687837757885533601', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720225331', 1, 1), - (44814, '12659937704085889355', '10803415914165064667', '0x436bab35A8e54e69E5D30e552B82036bDc7A0827', '1720227023', 1, 1), - (44815, '100000000000000000', '85335458725664599', '0xaEE31A6ED7123D4b7c53CDe19A97D60595fc5c14', '1720227155', 1, 1), - (44816, '7541306600809301501', '6435408581709441505', '0xB75B58580e234F8b7707BB0E4316739Cb164063B', '1720230371', 1, 1), - (44817, '1e+21', '853354587256645997850', '0x98078db053902644191f93988341E31289E1C8FE', '1720231211', 1, 1), - (44818, '1e+21', '853354587256645997850', '0x98078db053902644191f93988341E31289E1C8FE', '1720231223', 1, 1), - (44819, '1e+21', '853354587256645997850', '0x98078db053902644191f93988341E31289E1C8FE', '1720231235', 1, 1), - (44820, '1e+21', '853354587256645997850', '0x98078db053902644191f93988341E31289E1C8FE', '1720231247', 1, 1), - (44821, '299433195257000301991', '255522690749476182750', '0x98078db053902644191f93988341E31289E1C8FE', '1720231259', 1, 1), - (44822, '1e+21', '853354587256645997850', '0x3c9Ea5C4Fec2A77E23Dd82539f4414266Fe8f757', '1720232159', 1, 1), - (44823, '1e+21', '853354587256645997850', '0x3c9Ea5C4Fec2A77E23Dd82539f4414266Fe8f757', '1720232159', 1, 1), - (44824, '343691625810058397259', '293290825486708004297', '0x3c9Ea5C4Fec2A77E23Dd82539f4414266Fe8f757', '1720232159', 1, 1), - (44825, '24292114436150944387', '20729787288252800966', '0x16ac81234e54FE86D574538979825c992b350e99', '1720232483', 1, 1), - (44826, '64625362808297730', '55148349805585910', '0x97f7b2a3b4769c3a42cabbcaA3e1cd25e5CB0B71', '1720234967', 1, 0), - (44827, '9135130452495499296', '7795505476824914591', '0x5624843a2B52050535e6B0D6aFB104A063396322', '1720236095', 1, 1), - (44828, '100000000000000000', '85335458725664599', '0xF4cd08EE5feDc8973c0318f884C76a22bd787682', '1720236563', 1, 1), - (44829, '1000854338491798148', '854083640927691871', '0x57e8A9229e14d948A74d51d6056B2B6d56833e7F', '1720237391', 1, 1), - (44830, '43925828608576439917', '37484307342177920657', '0x9e87f40DdD1174ABE55E14e4B28026fce4A3c1af', '1720238831', 1, 1), - (44831, '1e+21', '853354587256645997850', '0xBBE3188a1e6Bfe7874F069a9164A923725B8Bd68', '1720239479', 1, 1), - (44832, '1e+21', '853354587256645997850', '0xBBE3188a1e6Bfe7874F069a9164A923725B8Bd68', '1720239479', 1, 1), - (44833, '63812668045137492278', '54454833001403667947', '0xBBE3188a1e6Bfe7874F069a9164A923725B8Bd68', '1720239479', 1, 1), - (44834, '1030764434442628795', '879607558512619637', '0xc274CBf973755143d01c05C09fe505Dd04f6aad7', '1720240931', 1, 1), - (44835, '1207911139156649842', '1030776511597728013', '0xEccac5cee263d355FAE4700C9E184B3292149364', '1720241243', 1, 1), - (44836, '200000000000000000000', '170670917451329199570', '0x0A5e1Db3671faCcD146404925bDa5c59929f66c3', '1720241699', 1, 1), - (44837, '18283399461063964', '15602222800744622', '0xd5beAF1907C816411c149013d2B0e5f07707ea0c', '1720241951', 1, 0), - (44838, '21250000000000000000', '18133784979203727454', '0x4d0Dabc94fE8361b0e74C5078f05051D69f24117', '1720243055', 1, 1), - (44839, '5227146179435034717', '4460609170481938091', '0x1B276A8763ADf994CFEB55dAA5083d05e62BB838', '1720246919', 1, 1), - (44840, '2136459355183188025', '1823157391232949469', '0x41F23C83b7944c7124D844ac9f3aCB2d09385cb4', '1720247291', 1, 1), - (44841, '21002679885545649545', '17922733225013268773', '0x839c92fC98A8EeAB03047Cf851b98822fA58b8d4', '1720247507', 1, 1), - (44842, '89000000000000000', '75948558265841493', '0x79690347ed84D8873261d7445074A997f451320e', '1720249871', 1, 1), - (44843, '150000000000000000', '128003188088496899', '0x05c7B364105dAc101d13b52495D650639B7ff845', '1720250411', 1, 1), - (44844, '29980163970928740964', '25583710451298464849', '0xfba2a83201137ad76409A3550C9ae26b79748251', '1720250711', 1, 1), - (44845, '59027674996144337', '50371537233054193', '0x15adf5Ab76D0B100565712d4515519FC63148AAf', '1720251443', 1, 1), - (44846, '51610790448140831', '44042304780862466', '0x643DcBC92592A2B24d9CAC834713f112Ceb8Ba60', '1720252823', 1, 1), - (44847, '51610790448140831', '44042304780862466', '0x379E023e1f6fcD0Ca60bDB7C6fDC6725322A4806', '1720252919', 1, 1), - (44848, '25521686897116080', '21779048588181842', '0x8006a98215728F26b7eBFC06F518eC5CF2eD8022', '1720254803', 1, 0), - (44849, '52363494799263748301', '44684628491741245209', '0x3A8315E25378CE9fC0d3279B26ec0576de52C0Ff', '1720255199', 1, 1), - (44850, '200000096734314238359', '170670999999999999999', '0xee2826453A4Fd5AfeB7ceffeEF3fFA2320081268', '1720255871', 1, 1), - (44851, '1e+21', '853354587256645997850', '0x4EF83c71Eeb0db578bC74b30AA570873BFCFeae1', '1720256291', 1, 0), - (44852, '779882367228384183', '665516195594913807', '0x4EF83c71Eeb0db578bC74b30AA570873BFCFeae1', '1720256291', 1, 0), - (44853, '34999999999999999999', '29867410553982609923', '0x6bCfE57F3c3F32d359FA60D230EA539ad80ECDBE', '1720256735', 1, 1), - (44854, '6507157473386819', '5552912679916008', '0x9f279Fa71319282D12e15162E75e5a451161Dac7', '1720256891', 1, 1), - (44855, '1530712903596288141', '1306240878056832621', '0xa68dfE3edb0Fab58f853dD4E695bCadAB6487b4f', '1720258019', 1, 1), - (44856, '1921815510070750859', '1639990081379846199', '0x1a30b2f0560fBB56578276348a07E81378d4B833', '1720258103', 1, 1), - (44857, '10090930280583711', '8611141644623103', '0x717a7C440F26f44777597a2C6B7553962dEB426c', '1720258547', 1, 0), - (44858, '9512794185229025', '8117786555593536', '0x2EB95E98cD2E951034A73ea171150144d773BF1A', '1720259135', 1, 0), - (44859, '1061705263440044745', '906011056871087989', '0x56299571508b4133eb2c25C4b76de1434C23BcdD', '1720259267', 1, 0), - (44860, '10013467563398973', '8545038479572143', '0x4223A247680C654e30533B749B51fC8528fbeC8b', '1720259267', 1, 0), - (44861, '2437122946561643497', '2079730046156812206', '0xbAEfF0000a0B78a5e16990F7FA79C48c74893CDA', '1720259603', 1, 1), - (44862, '9900000000000000', '8448210413840795', '0x9a887a02bB71f7244E49210C5dc0129740b3E91d', '1720259831', 1, 0), - (44863, '1391648334240561332', '1187569489872253149', '0x1D5C184f3259a5eFfe23eFdF6d650cD7db268383', '1720261247', 1, 1), - (44864, '29569231992236164', '25233039762230703', '0x40a1101A1a906e164147105F891Ca52320F7229f', '1720262543', 1, 1), - (44865, '1042410997149572296', '889546206224362054', '0xD9C4D0D23c6D96a2fc344df0425A9143C3230c09', '1720262639', 1, 1), - (44866, '5045673921194103387', '4305748986452216660', '0xddD47B8417443F8ca8E074062798E29dEC690A2B', '1720262843', 1, 1), - (44867, '21208076192539831', '18098009105792327', '0x5FE1108105DA7A5F280967415171f88437A2e171', '1720263059', 1, 0), - (44868, '10471758756329020', '8936123371358319', '0xFD64CeB90bcE9EeBFCdcF3e937DC1e6d010c1aB6', '1720265219', 1, 0), - (44869, '15950170317728672895', '13611151008158557813', '0xB3E3Ac374129c512282d528d1246C14744CcebA9', '1720266239', 1, 1), - (44870, '104455884460422883', '89137908170252071', '0x0A87dcc09938d328f73823E43d40A617BA8a4e68', '1720266395', 1, 1), - (44871, '34999999999999997', '29867410553982607', '0x3ffe85041F1434d5425Da6621311CDD43F84b09C', '1720266851', 1, 1), - (44872, '1149114830000000000', '980602411465140932', '0x562ae249d7231b5ee144B60b4B9C85b8Cbd38D3f', '1720267751', 1, 1), - (44873, '10006055700837875', '8538713532655514', '0x0608510b12CFB6BE57E83726b66E607536893C1C', '1720267931', 1, 0), - (44874, '500266360125314766660', '426869136942097135178', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720268771', 1, 1), - (44875, '1420615223755255816', '1212187831976759786', '0x7788eA4Ce2B1eAC4D6e25790BfE6D3d537CCe53A', '1720268927', 1, 1), - (44876, '7311196249056424060', '6238524677268394241', '0x7521EDa00E2Ce05aC4a9d8353d096CCB970d5188', '1720268999', 1, 1), - (44877, '290179561731632075446', '247605493688580533467', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720269263', 1, 1), - (44878, '222902995911146424681', '190199495849699099300', '0x5472367E0bC0f3CCC8D63bE92aEFdEc51bf4f3ae', '1720269335', 1, 1), - (44879, '22042506980772691', '18808512186519208', '0x893e3caE9E6DD21207aEbA7F6EaE332cECD9165A', '1720270259', 1, 1), - (44880, '6015595300360856', '5133009490013944', '0xddCFB66dF0858aDD215dC8Dd019c1380095715Ba', '1720272395', 1, 0), - (44881, '4613626229871223956', '3936732116917116211', '0x75C2A53F823C673f0dBd5c511795Eec66455E2eA', '1720274507', 1, 1), - (44882, '3667474662067445977', '3129396394675789176', '0xF27eCa006404514E2b325A6563C442ecE14A8f0A', '1720274723', 1, 1), - (44883, '8667680842710728325', '7395990887115917441', '0x319f20DF92dF7fAc58c3A245028Dd0Ad4AEc6C5f', '1720274807', 1, 1), - (44884, '111240910979856627', '94920057488433102', '0xF667365d1c0F92af18aDF3aF5fe04cC47F01D8Fb', '1720274975', 1, 0), - (44885, '2133160165674689889', '1820190825249011391', '0x6bB3b9865827160D22CA3B377DB47696964E9C3d', '1720275467', 1, 1), - (44886, '10824920893827282', '9236728686408232', '0xE589f8896feFEdeCE7e44B5C437c8fD0c41c3f45', '1720276619', 1, 1), - (44887, '21209837763693000', '18098009105792327', '0x453c8b8eF9409E6d15a7E9D1cf52f09235Fe3787', '1720279079', 1, 0), - (44888, '301385427572552461', '257167276493653374', '0x0f3e6f1AB8456F9a21c8feF8e3967D4E4E59f5Fc', '1720279607', 1, 0), - (44889, '1051761331100707268', '897450813129962082', '0x172De76E3E49423aEc43bE3027a3062DEa26Aff3', '1720280471', 1, 1), - (44890, '158479714215247549', '135228158881094540', '0x9e34357e365D534e8AC2A51689Df33A48163aa46', '1720281011', 1, 1), - (44891, '190054737161714379107', '162170611679057852967', '0xBe9e5C3B3929832E8f5Ab954607ddc56A95Fd49B', '1720281179', 1, 1), - (44892, '271146897960046311549', '231365231689251236659', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720284251', 1, 1), - (44893, '500000000000000000', '426641856185540924', '0x203A1cb9801442D2601791529235c4D86953c6f9', '1720284575', 1, 1), - (44894, '50026507522878561553', '42686804056081672838', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720284587', 1, 1), - (44895, '10349094408753067911', '8830713696779624167', '0xE1807047CDfcA04E9f2852C2029B74dA64865c29', '1720286891', 1, 0), - (44896, '1000000000000000000', '853283712371081849', '0x735a8ED9169a16fe9c1cee720cE4D741C589b631', '1720288367', 1, 1), - (44897, '117194314798442228990', '99999999999999999999', '0x8Ce57B3f3CAd1917172B040b10B090F2ccC0FfEe', '1720289003', 1, 1), - (44898, '572443804974661683', '488456975032606892', '0x3581E9FB562329F0F4E45D70b1aBd61a4e9b261C', '1720289159', 1, 0), - (44899, '690469687765619560', '589166538456349612', '0xe1929c4DBAE5E45c9Bd83a916Ed3A45F3572d6d2', '1720293767', 1, 1), - (44900, '10583153887722279', '9030432837910113', '0xC82f226556EbdFadB85Bec94BeFbC1e9301DE67F', '1720293947', 1, 1), - (44901, '20518012116291803', '17507685549064307', '0xC46fc7492d4003f2837b2E82Cf5cF1E991084D0c', '1720294151', 1, 0), - (44902, '30211283079193651727', '25778795781308007898', '0x3F9FcBa6071bc77830bb308bA56Cf832A04343fC', '1720295399', 1, 1), - (44903, '172629844349589763856', '147302234452659981216', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1720295447', 1, 1), - (44904, '1006717243514030925', '859015426853634727', '0xb22C63d161672fF278C3971252Ab327A5C0553a0', '1720295567', 1, 1), - (44905, '15104119325430446155', '12888099010099091619', '0x2c221FFd3BD207083CeC289157572651f3b747E5', '1720295639', 1, 1), - (44906, '8000702376974072770', '6826869025800575572', '0x8A5817d7Ecd09f44cc332efda3A3edB1c812Ec7b', '1720297859', 1, 1), - (44907, '1980877621497834083', '1690250610624470596', '0x75E3D0E43Ad26b3f8190198a5c633a32A95207e8', '1720300055', 1, 1), - (44908, '3152126144861629', '2689657898749477', '0x4428679E2a45fd26889c808A31837C2e0f61C1A1', '1720301579', 1, 1), - (44909, '6000000000000000000', '5119702274226491094', '0xA69d6c6a318dF90558F33A7dbe2712A7f591b420', '1720303391', 1, 1), - (44910, '262489366225582535', '223977900870897534', '0xb957B6810f9478C12b363Af753E2d3b4112585b5', '1720303547', 1, 1), - (44911, '50000000000000000000', '42664185618554092450', '0xf013Ab0A24390447d0bAb4C850deF030ee549C4b', '1720306103', 1, 1), - (44912, '340000000000000000', '290116462206167828', '0x46fA95C39bA95121A8ED6267640c502A074f5A15', '1720306271', 1, 1), - (44913, '33391273820605485', '28492230086445565', '0x1BcDB4A3bB9771bD56655A2a73D3Ac33f5E008CC', '1720307519', 1, 0), - (44914, '99999999999999998', '85328371237108183', '0x096Bb4Fff730869b5c76a9852445650A61558af4', '1720309019', 1, 0), - (44915, '12294288715765490172', '10490516316350277764', '0x5410e553Eb2a8e9bCBFDcc5A3C7815b8E8A36749', '1720310459', 1, 1), - (44916, '999999999999999', '853283712371080', '0x424411F75609375CDbeAD866A8e26615E8281802', '1720310951', 1, 0), - (44917, '10069520811960683165', '8592158100227682130', '0x91cc0c25f017703927B7479Ab022643C8d3FDAB5', '1720311107', 1, 1), - (44918, '3538634520000000000', '3019459199950061280', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720311755', 1, 1), - (44919, '99999999999999998', '85328371237108183', '0xeBd81840FCf94F72d0536f4Bf3073e486208aE9D', '1720312859', 1, 0), - (44920, '151000000000000000000', '128845840568033359200', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720314431', 1, 1), - (44921, '74534899261452648219', '63599415543016922418', '0xF84baa7d6033429D5BBf2Bb41965e1A0f74109Dd', '1720316339', 1, 1), - (44922, '10062258204533955707', '8585961035601110335', '0xF15B5ad940f18c112F84639Ffbfe5eCf3FC55748', '1720317275', 1, 1), - (44923, '1e+21', '853283712371081849012', '0x98078db053902644191f93988341E31289E1C8FE', '1720317611', 1, 1), - (44924, '1e+21', '853283712371081849012', '0x98078db053902644191f93988341E31289E1C8FE', '1720317623', 1, 1), - (44925, '1e+21', '853283712371081849012', '0x98078db053902644191f93988341E31289E1C8FE', '1720317635', 1, 1), - (44926, '31496366757095565627', '26875336752695636590', '0x98078db053902644191f93988341E31289E1C8FE', '1720317647', 1, 1), - (44927, '76050200000000000000', '64892396982563248833', '0xA658e969E15e058D50fEE55ff59Cd0631E52027f', '1720317767', 1, 1), - (44928, '2050785497463734134', '1749901862552630921', '0x6A5903f9B143b1835A1c5C1452139a94D5ebb2CA', '1720318367', 1, 0), - (44929, '750186310658757590', '640121760128870364', '0x2E27c5d396d4bcF650aC9Fe7368e25B8D29Fb9Db', '1720318535', 1, 1), - (44930, '2638509202631660054', '2251396927546805933', '0x0930A3c829a7D1a76e85a7AB7366908A0A20829D', '1720320215', 1, 1), - (44931, '1856413047553336', '1584047016910424', '0xC8eBbD81Ff245f1C0032a7b88C55fC65F5F9D8e8', '1720321187', 1, 1), - (44932, '300200000000000000000', '256155770453798771073', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720321583', 1, 1), - (44933, '24092421743335051528', '20557671065162704435', '0x27783d1d6B941399bdf1876bD857BA8955C990B4', '1720322027', 1, 1), - (44934, '105222858376303509', '89784951221628843', '0x3Aad9021c1bFbAEDc2459A9Cd458365F42F0d96C', '1720323947', 1, 1), - (44935, '20018749415815923703', '17081672818553837434', '0x20BEa11320D844A55Fc72B5a98A2AFC9D99255dd', '1720325075', 1, 1), - (44936, '6414698725822107041', '5473557942511536011', '0xEB02720Ea0F8e8552C1967d7EB7a0F5c6f703Ff0', '1720325555', 1, 0), - (44937, '140448248715177058', '119842203059703306', '0x437542B966aD238F4BF3D8f4eEcED2Ed0Becfe20', '1720325603', 1, 0), - (44938, '7266047517503418', '6199999999999999', '0x2703207Cd7e5f96a3d04c0F83E52432a8168CC17', '1720325627', 1, 1), - (44939, '531617493147236732', '453620548114082323', '0xb8614E663b6766Db205E26DE9B3cB071cec91298', '1720326443', 1, 0), - (44940, '8778965910161324049', '7490948622601628005', '0x74c443f1f9Ca5bba5EA01b998f445dF15249821f', '1720327271', 1, 1), - (44941, '240150000000000000000', '204916083525915306040', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720327739', 1, 1), - (44942, '100980000000000', '86164589275231', '0xA1766a9d10527140A23bC378900F450081b659d0', '1720327991', 1, 0), - (44943, '1952443873768836683', '1665988556805648877', '0x63635093828aF03eDC5eDb5Afe38a384a8F6cC2A', '1720331243', 1, 0), - (44944, '23000000000000000', '19625525384534882', '0xdF88A5540e7E8a60a33fc15eb84F0C3c1451507e', '1720331255', 1, 0), - (44945, '50004159085653633301', '42667734498600693981', '0x042a6f4BC8519Dcaf43E06268aA22279AF76a98D', '1720331399', 1, 1), - (44946, '23000000000000000', '19625525384534882', '0x2B3865a767c8A6812c847599962eF5F72DD53f4C', '1720331459', 1, 0), - (44947, '2928883560478503271', '2499168637587729294', '0x42277e3Ec2654cedC1ce0528B78BF56b8428A6C7', '1720331663', 1, 1), - (44948, '258895150772509435382', '220911015366037809826', '0xad6452a9b8F10b0fE084C83c396ABAe96411C761', '1720332791', 1, 1), - (44949, '504919573798377673', '430839648379504129', '0x15Ae1E68C9a4e5de38552846c70d5FC2C87E5Dc2', '1720335167', 1, 1), - (44950, '200320069404207166499', '170929852483654661196', '0x7AC50Addeca2A09ed01cc6237c2F6734F691fd0c', '1720337459', 1, 1), - (44951, '1779622568324985353', '1518522951719702757', '0x7BC56EEc9F5d2fa860e0f57675A9b93F735031BF', '1720337579', 1, 1), - (44952, '4638325066073192958', '3957807231562777592', '0xd5c103C5f8332Ab9f12086819ab9893Fb87c45a4', '1720338515', 1, 1), - (44953, '13143430577667644295', '11215075236603840347', '0x02758FBC0bb97A57D93351981E4E2eeC47a4a921', '1720338743', 1, 1), - (44954, '160000000000000000', '136525393979373095', '0x4569C5cE8DbC564fEb3623ba919A6DAb1913159A', '1720339103', 1, 1), - (44955, '3075556168807179907', '2624321985325572153', '0xb2D5102b7746054EdB95994a29CA65fdc4b41642', '1720339703', 1, 0), - (44956, '10363389934894261', '8842911836395679', '0xC247A2a860eC45854F2C697F42db41840df8962e', '1720339967', 1, 0), - (44957, '39529555135294819', '33729925554221725', '0x78D99a452db6f552686693c98d368114758073F5', '1720341947', 1, 1), - (44958, '100000000000000000', '85328371237108184', '0xa075972127a624227828e59c4f23f7b3b62e0ed6', '1720343963', 1, 1), - (44959, '400000000000000000', '341313484948432739', '0x66cc860B7342cC3d1bdc6DB41D611e738429E3a8', '1720344131', 1, 1), - (44960, '143938299614685649', '122820206647600030', '0x14d798fFEB18ef97eEA47a278aE61c1aA7864Cd2', '1720345955', 1, 1), - (44961, '964694373135472380', '823157996012529522', '0x7086180C8A78BF79e506Fe35794A5bCCacf3D187', '1720346375', 1, 1), - (44962, '10002880903248125215', '8535295351529360681', '0x72EddC0166B5629c1cb71D302c76544d01089218', '1720346723', 1, 1), - (44963, '4393252579463128612', '3748690870388129639', '0x7c46713490E379f515A182d8a5a36deC9d99Be6A', '1720348271', 1, 1), - (44964, '117194314798442228', '99999999999999999', '0x418714C470f372992D026F0d7eF2200b83d2fcEe', '1720349399', 1, 1), - (44965, '339040547236752118', '289297776790498983', '0xff18eD61c07d0f58D17242543688c1f01C031566', '1720349663', 1, 1), - (44966, '50000000000000000', '42664185618554092', '0xc460dBFff59Ef53af72cc8Ba04a6CA4b323f5Fc3', '1720349807', 1, 1), - (44967, '265084565270972403765', '226192341946689689159', '0x657975E1EDd5593977695426Ab393203451BC8D6', '1720349819', 1, 1), - (44968, '201582202878546480', '172006810420146722', '0xfd8cB87695784B2B6A3D0e9604746B30CAbC53Bd', '1720352099', 1, 1), - (44969, '10249088057648972', '8745379906248835', '0x66E46806463Fde0601396D089fFc5C8A799b685a', '1720352591', 1, 0), - (44970, '841836341943057', '718325239062063', '0x7c57d0Da639e864dad5e7C5de513a5c50f0b8A76', '1720352687', 1, 0), - (44971, '1090246815272140669', '930289849936161284', '0x0097c72AfB28A9D8Db9223eCf3c2d91b0176694b', '1720353335', 1, 0), - (44972, '2086516327320308532', '1780390397698748213', '0xAe447e9E2f1996D2Fb461A7d9e117d5748060D0b', '1720353443', 1, 0), - (44973, '100000000000000000', '85328371237108184', '0xF46878B65e4697F8703ADC3A081529584Cc1F20C', '1720353695', 1, 1), - (44974, '1073094590567630', '915654135964873', '0x3E5170b787Ee7b50249986c1674CAb0CbC962784', '1720354379', 1, 0), - (44975, '10556077204125762', '9007328744812180', '0x54c69fF631BF8afFf55011862637dA24003133B2', '1720354463', 1, 0), - (44976, '32831748250732339', '28012620921597795', '0x102cFE20b428Bd622F1F4fD0a3CEcaef4E413806', '1720355363', 1, 1), - (44977, '19990098163250574101', '17055900823684465057', '0x0bA86D5B4D1E4e6E9FfD32456B313e8E7d893222', '1720355759', 1, 1), - (44978, '1080613912136522', '921998659715294', '0x32a7e4Fe818d6b5397A159B3Ca609330E178b64e', '1720357151', 1, 0), - (44979, '19338563415871353050', '16499999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720357511', 1, 1), - (44980, '2750536085319600458', '2346805418365587085', '0x2b9Da9514d37a1057D7d3A7f996a5EfF19D32b05', '1720358195', 1, 1), - (44981, '368697534407678613', '314579174621311320', '0x5a2D7733a7A4889E893b7c5eed40D13913660dEd', '1720358735', 1, 1), - (44982, '16178804443677262683', '13804038468627202484', '0xE3EbAbcc9552785720E8EECC6136F9b7d65Ad4Fe', '1720359275', 1, 1), - (44983, '10254162677547602', '8749030656572787', '0xa4064a5A9d9b2Aaf5E9c60cf4F94b108c836978d', '1720359395', 1, 0), - (44984, '1700000000000000000', '1450469685715076618', '0x23a55352680a2ea5897e8de8D09f7B465bA16918', '1720359611', 1, 1), - (44985, '10553345807355095', '9004298927315803', '0x18FdD3197f863E30c0b7654134e681f96E2a7343', '1720359671', 1, 0), - (44986, '13177106005885467402', '11242936945288789680', '0x17d115462100923BFfe52FDf32C2de22AC065BD2', '1720360055', 1, 1), - (44987, '51745527153522954623', '44150187357371413664', '0x136b6447b51AAf6709A1ce623226caaA8a36c064', '1720360283', 1, 0), - (44988, '20000000000000000000', '17064349243706783751', '0xdf3471e9ab28363DdC3AAF761D0A55C18d614023', '1720360475', 1, 1), - (44989, '1055336206300331', '900431279691871', '0xD07eb5513E5C2aE8894A50D670F247987fab209a', '1720360775', 1, 0), - (44990, '19701672384546539', '16809810912749777', '0xb6a5ACeA0d98E9d4A16F25c3857aB9D80959eAa8', '1720361807', 1, 1), - (44991, '19999999999999999', '17064349243706782', '0x3896Fbe544Fa723AeBe40D7D1F5e2Aa29E49F3cF', '1720362155', 1, 1), - (44992, '14685369359357212798', '12529813576045101480', '0x5a824c05D0fa54D6122ed50898e9d94adfb10b50', '1720362455', 1, 1), - (44993, '4162684909895779', '3551675454698483', '0xAebB9D3435A5a937B0E32Cd40307D1d9Df2D5dD8', '1720364015', 1, 0), - (44994, '10607498499220688', '9050502949639869', '0xd32fc4CEfeE4116769F5d935fC5A570b7A46c0d9', '1720365419', 1, 0), - (44995, '15006735576974100', '12804008844672283', '0x8162fddaF11795d9eC4d201e8bfa144cF7e3b08d', '1720366463', 1, 1), - (44996, '14130511304000498', '12056398994180552', '0x9DbdD95C77A385510229E62B990F63c26B845188', '1720367387', 1, 1), - (44997, '9831958422554652', '8388798613603850', '0xa2C99645039842fAAC58F29c54A0E0D528Dd9273', '1720367951', 1, 0), - (44998, '3968572736904554811', '3386055559079630038', '0xc6110CaC5a3592d23FAfdaD3CF8F8808E9EfD26B', '1720368131', 1, 1), - (44999, '15737211202066596165', '13427263403701952273', '0x8f1897bcd648225cF1eb1B63A9e7D4CFeF191738', '1720369151', 1, 1), - (45000, '1537782469020218257', '1312062855610535601', '0x231Be03B933636B2B6b691C4228bB9669777867f', '1720369499', 1, 1), - (45001, '8567062889287486027', '7309567656780068291', '0x0529ACBFCeBe52e00bc404D08ac7CDE4272B54d2', '1720370387', 1, 1), - (45002, '320562800181613207', '273509778841982008', '0xAfe7F09cb2295683ECD0e502487d36F4Bbe5ae50', '1720374263', 1, 1), - (45003, '1038994859748318679', '886488557458072885', '0x74ede5f75247Fbdb9266D2b3a7bE63B3DB7611dd', '1720374275', 1, 1), - (45004, '1047272709267593530', '893551363217260703', '0xa9E966A7439710457D2062f6F4BAda4a84e23744', '1720374443', 1, 1), - (45005, '2581375717987988', '2202474839048568', '0xf55CBBda7E19fC0cf35e9D8Cda119fc8a49e6d16', '1720376207', 1, 1), - (45006, '534732320913516198', '456242953798306665', '0x5c870716ff2F686F58Eb991281A4b5EB2b02eDFa', '1720377623', 1, 0), - (45007, '7026540000000000', '5995166626743773', '0x3986Ad430843effb1d35c5e737cBeB10dE112C9B', '1720377779', 1, 1), - (45008, '2000000000000000000', '1706434924370678375', '0x640F4b5FA4d2F8204036a83a0aCc6280bC4a0f73', '1720378199', 1, 1), - (45009, '510000000000000000', '435140905714522985', '0x5AafD35eE89c9aaFd31D094159Cb6d1ABEda7fEb', '1720378523', 1, 1), - (45010, '5762894257913426070', '4917002013579356946', '0x59C08EB055746Cea3EC4F57BD24085A63262045f', '1720378835', 1, 1), - (45011, '5000803576329505', '4266772936283228', '0x3Bd5FA05E92530A62e9Aad9d890bF705AD81A54e', '1720378955', 1, 1), - (45012, '557150886855876980', '475370865737482409', '0x153CF334D7cE65126a75F3e73719Ba471F6363CE', '1720379507', 1, 0), - (45013, '3999999999999999', '3412869848741355', '0xDf9A60E74985CF0755Deb7Caf6945276A41Ce365', '1720379639', 1, 0), - (45014, '140667095924566755', '120019622597740515', '0xCB50aBF4333771f5E1630814669D10729E952857', '1720380719', 1, 0), - (45015, '1000000000000000000', '853217462185339187', '0x16624454FAeF9e514988406B970050CE1F6E8070', '1720383971', 1, 1), - (45016, '2707046859171540349', '2309699651199134944', '0x169f93B7a210b1DEe25477693BA650F4C00A30d2', '1720384475', 1, 1), - (45017, '50000000000000000000', '42660873109266959377', '0xECBb5cE2CeDb53aB3ab34eB258eDaCC0063844dc', '1720385951', 1, 1), - (45018, '3034600000000000000', '2589173710747630298', '0xe44D9809b65143AB98A3f3A8b24DDAdd07702546', '1720386263', 1, 1), - (45019, '16002571444254421945', '13653673396106335964', '0xb926887FEeA50bBFd272AfEde3E2ADAaE4E6B5ef', '1720386899', 1, 1), - (45020, '56228766891976395', '47975365789383121', '0x44eFa913424AcAB98c3CDf9E65f4472Bf52B89CF', '1720387703', 1, 1), - (45021, '21991935443859220184', '18763903347953374778', '0x26ED116FCbfbeb9ab12AD8ABe1c4e088192Bae30', '1720388615', 1, 1), - (45022, '516806003311451029', '440947906587544247', '0x6a3198535d86b2F2f6eA6aF35f8b870ed2CC2fED', '1720390643', 1, 1), - (45023, '6613207633791073', '5642504234207931', '0x25985b02Fc7c2403677c07332dB6CB13c95A1db5', '1720392011', 1, 1), - (45024, '21662422392302128253', '18482757058346885971', '0xAdA1C4f28CcDfB9836C2aD16f1D94f2AdFe41917', '1720393367', 1, 1), - (45025, '502500000000000000', '428741774748132941', '0x8DE747Ac9944d77FAb60BF8CC9655334C0C09C75', '1720394027', 1, 1), - (45026, '304114119075905063', '259475476892673766', '0x0e263f3C4f2f6B202E05c4a8054A70dBd410a321', '1720395275', 1, 1), - (45027, '5110631020718486470', '4360479629663096643', '0xaE7c247824D2207F1228212EAB2b485dd3fC99CC', '1720395491', 1, 1), - (45028, '471661681406647990', '402429982819850180', '0x4671dD6aA81CfB8D9Ba6A2EF7C8721eE34a3F078', '1720395575', 1, 1), - (45029, '39080641374629710', '33344285654236926', '0xA57256c3E53122493EF570F242A5DBF794A5B892', '1720395695', 1, 0), - (45030, '30000000000000000000', '25596523865560175626', '0x11b255D7f605dB3d68b6d1842C723564B69aC86B', '1720395815', 1, 0), - (45031, '1657810256836396462', '1414472660122775544', '0x371f435A3c80f33900D4229e2c357d9d8D9bBfD7', '1720396715', 1, 1), - (45032, '500460460460460460462', '427001603998180360571', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720397375', 1, 1), - (45033, '13615046480000000000', '11616595405201035413', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720398131', 1, 1), - (45034, '643681088178192866', '549199944512095250', '0x59C08EB055746Cea3EC4F57BD24085A63262045f', '1720398995', 1, 1), - (45035, '25000000000000000000', '21330436554633479688', '0xF84baa7d6033429D5BBf2Bb41965e1A0f74109Dd', '1720399547', 1, 1), - (45036, '544923768767529700967', '464938475072302288050', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720399607', 1, 1), - (45037, '10000000000000000000', '8532174621853391875', '0xA154b35F59312448FBCc0ECC9c61a5F61Dc7fC75', '1720399691', 1, 1), - (45038, '221238771250303490', '188764782943186724', '0xAB75EF5160a077d6FA49058E7d9A00a9E533A371', '1720401695', 1, 1), - (45039, '5000000000000000000', '4266087310926695937', '0xA4c5924b7d45d0dc473e9be0c3e562a6717BD474', '1720402067', 1, 1), - (45040, '999989994588662476512', '853208925393669665343', '0x75C8F18e401113167A43bB21556cc132BF8C7ca9', '1720402643', 1, 1), - (45041, '1e+21', '853217462185339187553', '0xc0fc18de8e091c2cACdf6128Dd60C99892CB093a', '1720402811', 1, 1), - (45042, '827034419856533797266', '705640208849916058075', '0xc0fc18de8e091c2cACdf6128Dd60C99892CB093a', '1720402811', 1, 1), - (45043, '358642448803432365659', '305999999999999999999', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720403063', 1, 1), - (45044, '15290597604637877', '13046204883526355', '0xA6C9691d0DaD7CdfbB155b20e338d40f28E8b902', '1720403159', 1, 1), - (45045, '200000000000000000000', '170643492437067837510', '0x937766e2E17DEf1e6f7a4A87A6299FfC607a23eD', '1720403183', 1, 1), - (45046, '23000000000000000000', '19624001630262801313', '0xE31a168906B8Aa61A0522c2f7C070C7B909EEaBB', '1720403435', 1, 1), - (45047, '1e+21', '853217462185339187553', '0x98078db053902644191f93988341E31289E1C8FE', '1720404011', 1, 1), - (45048, '937752422325518435973', '800106741934733249855', '0x98078db053902644191f93988341E31289E1C8FE', '1720404023', 1, 1), - (45049, '91213237561336504', '77824727069791988', '0xD9d785F294344033a08C1b4A428f78784fdcb202', '1720405595', 1, 1), - (45050, '7345904758128414', '6267654215185533', '0xb65cce735b0Db80859A508a0be3604157838618F', '1720406363', 1, 0), - (45051, '71988172803144930047', '61421566106458972293', '0x37A80841760a9707BF92D47fd143afbE111397e2', '1720406447', 1, 1), - (45052, '62131785416382424', '53011924274009879', '0x40eFEa092A0cC952155cC5F982312af6F804206C', '1720406615', 1, 1), - (45053, '1e+21', '853217462185339187553', '0x757dB7C1D65b1d3144E2AfB3dE8AA3D6Ee87594C', '1720407395', 1, 1), - (45054, '2974405439748456', '2537814660812445', '0x757dB7C1D65b1d3144E2AfB3dE8AA3D6Ee87594C', '1720407395', 1, 1), - (45055, '1513665520911225073', '1291485854349324921', '0xa732AE5D358Be8F56bC72e0165ad2f19ad6AE94D', '1720408115', 1, 1), - (45056, '1079480104812724', '921031275507876', '0x19B421632A376335aB767e651E69AD9d378b2F54', '1720408703', 1, 0), - (45057, '585246502236770532', '499342535391303787', '0xe020d5027139857cb9081eeA39C5C980066ea283', '1720410035', 1, 1), - (45058, '10796022406874946', '9211354839689898', '0x7C0a803BAc53B62DE6955d40f98f9f561B6a1E9E', '1720410311', 1, 0), - (45059, '62266478509836705096', '53126846773380834095', '0x5010Ca667371865dE12485D557aad5C3666D9e3A', '1720410383', 1, 1), - (45060, '699392279135733902', '596733705476211230', '0x64b117f5c0f45431Fa63952181469C5373199992', '1720410551', 1, 1), - (45061, '34221098652524374841', '29198038945500977616', '0x5fAb6561384682B6fBeEF2fE2DC99160A60e69e3', '1720410563', 1, 1), - (45062, '1e+21', '853217462185339187553', '0x34c3a4e11605ad269b9008d13E1513E78176ca9a', '1720412855', 1, 1), - (45063, '311930465854224634042', '266144520454432143349', '0x34c3a4e11605ad269b9008d13E1513E78176ca9a', '1720412855', 1, 1), - (45064, '1322846424794684393', '1128675669424269770', '0xC9Ea01aDA3476403e7E13B5988c1031b2A15D993', '1720414739', 1, 1), - (45065, '800000000000000', '682573969748271', '0x19956Bb231bf7bC25DDFeE73207b80367832c048', '1720415015', 1, 1), - (45066, '2520204170185754084', '2150282206274797761', '0xfE455Ee1e5ed553196754B3a122c6d828B5317BC', '1720415339', 1, 0), - (45067, '200000000000000', '170643492437067', '0x19956Bb231bf7bC25DDFeE73207b80367832c048', '1720416035', 1, 0), - (45068, '4822432337616898', '4114583480662002', '0xC43C453D91Ec1e1DE2ECc2278F4745cF96097ad6', '1720417499', 1, 0), - (45069, '6423152000000000000', '5480345448670685773', '0xaFBe28A3E5A057120737EAE5a204680fc0CE60F5', '1720417871', 1, 1), - (45070, '20622866865037359', '17595790129573297', '0x04621637c3a72db27d6f1Fc1352480Fd4D1e7B06', '1720419347', 1, 0), - (45071, '1176430133964855737', '1003750733339852814', '0x12d8C5B8F6F7125Fb1FED8701C3df4441f09d748', '1720419863', 1, 1), - (45072, '250000000000000000', '213304365546334796', '0xb0B876DC627C88caDB3555863d8f65B4bE6C4A5C', '1720420379', 1, 1), - (45073, '10135062679792189', '8647412458741634', '0x9fd364943C4A405749d2b3b08b2913C405513336', '1720421159', 1, 0), - (45074, '5701250896321332711', '4864406821041177841', '0xD4F9A2871D61f7F91340f0a726882b52D8FDF0E0', '1720421219', 1, 1), - (45075, '56257115782689789', '47999553557973373', '0x0D460ad5eB5519151B0ff26A919A4Af7708C7CFF', '1720421231', 1, 1), - (45076, '70322048784986738364', '59999999999999999999', '0x80E6c4918ce508c08F7e4298f64464044cF79Db7', '1720423679', 1, 1), - (45077, '4718478646659398182', '4025888376278445494', '0x93d69F925728FEAD9309E1C1FB7ed4f87e30893f', '1720423991', 1, 1), - (45078, '58250233543847943646', '49700116435985259151', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720424963', 1, 1), - (45079, '6102912859021187', '5207111821512329', '0x5c237fF578174f17C7b8Bf5ebe6BF497d71296A7', '1720424999', 1, 1), - (45080, '1000000000000000000', '853217462185339187', '0xF5596A4363c49608c3B57cfE0805C818D2b093d0', '1720425443', 1, 1), - (45081, '5412687335869062637', '4618199352312926260', '0x2E86c1E969F3c121eD865CF4d7879744c9c353df', '1720425611', 1, 1), - (45082, '98581700026604026568', '84111627914615472217', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720426055', 1, 1), - (45083, '2000000000000000000', '1706434924370678375', '0x86E883E4Ddb6dc1d9215Ad9b72CAeD398876cd54', '1720426199', 1, 1), - (45084, '100000000000000', '85321746218533', '0xA86322a72Bd98c269E0D72Dc79594A25E3461b0B', '1720428827', 1, 1), - (45085, '13705983873030239568', '11694184776900047169', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720431635', 1, 1), - (45086, '501442255612020097506', '427839288765779944547', '0xc8287D60d9ebca47b7dda1004f75fFC297CBedFa', '1720432211', 1, 1), - (45087, '6999999999999999', '5972522235297373', '0x4026E4b7c8f834861E18C012942A1b9781A42484', '1720432499', 1, 0), - (45088, '1038838675140838', '886355298023645', '0x259c9B7a6D6bA8CA30B849719a7Ee4CE843E4DDE', '1720432787', 1, 0), - (45089, '258894193942199028', '220893047129882068', '0x9308Bf120a4930ce8c647F349f743919BbbCBd0c', '1720434239', 1, 1), - (45090, '1000000000000000000', '853217462185339187', '0x523FD9411778E30C642E1E33F4ff7c0f776Fd056', '1720435091', 1, 1), - (45091, '100000000000000000', '85321746218533918', '0x99233eA3a576192bE6Af8fF9e89DD29f23dFA49b', '1720437119', 1, 0), - (45092, '10761956786804371', '9182289457785512', '0x680c669c3bDA2E4e59258c88D32D49B638A3b3af', '1720439123', 1, 1), - (45093, '939289216013636712', '801417961145211972', '0x496c1fDf3f6735532989721ED75cecAb6b40642e', '1720440839', 1, 1), - (45094, '349700193311317998436', '298346458478379032861', '0xe49B88Dc1a7aA49255E20cCa9855479e877191e0', '1720441583', 1, 1), - (45095, '271166867383209227163', '231345810176417691565', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720441595', 1, 1), - (45096, '50530747671044426839', '43110269597419699638', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720441883', 1, 1), - (45097, '200102206071598705802', '170717047508249383660', '0xadbe9081596C1160D6999772C73A221E05421A11', '1720442003', 1, 1), - (45098, '1114988475707553964', '951251584454839401', '0x75378AE2b3aaF8C3920Ee7a842c7164E4dc2050d', '1720442363', 1, 1), - (45099, '697786952017462894030', '595316416429601286010', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720442663', 1, 1), - (45100, '20805269360104452245', '17749999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720442759', 1, 1), - (45101, '10477451747166522', '8938830124873330', '0xa1B04dd16ad6b29b3f151e0A04944A070f5d0DD2', '1720442879', 1, 0), - (45102, '35650659035931460531', '30415333103123375019', '0xA002d299b6D01061a13e8B38cc3Bc7ac4946EEf8', '1720442903', 1, 1), - (45103, '290187713290340402947', '247573430641596007275', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720443107', 1, 1), - (45104, '992410000000000000000', '846673849547870646536', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720443347', 1, 1), - (45105, '76143249488142789607', '64961556374089123310', '0xA658e969E15e058D50fEE55ff59Cd0631E52027f', '1720443443', 1, 1), - (45106, '348618382489484484', '297423512384522333', '0x6F1a7C63aE2321539181c2b5308f1EF627F018ba', '1720443863', 1, 1), - (45107, '362320000000000000000', '309113037119924721287', '0xc346763866910B3D275A55F0CA95C8C51C8013E6', '1720444007', 1, 1), - (45108, '5025590052119435982', '4287578395700815934', '0xd19005bD64108639A3fb3CB9AcdFE3b30723d7dB', '1720444079', 1, 1), - (45109, '31685111314983444987', '27032129029745596235', '0xfba2a83201137ad76409A3550C9ae26b79748251', '1720444283', 1, 1), - (45110, '1000000000000000000', '853149252373384635', '0xd9dE20662F8291B404bC7bc13818d77bEadFC818', '1720444703', 1, 1), - (45111, '1e+21', '853149252373384635922', '0xee2826453A4Fd5AfeB7ceffeEF3fFA2320081268', '1720445639', 1, 1), - (45112, '172585526498470169058', '147241212902636787853', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1720446011', 1, 1), - (45113, '921298348226384365', '786004997002173995', '0xc7C61B6E4e07d5E74E95C89b54DFBE97810A38b6', '1720447307', 1, 1), - (45114, '3707421140472867243', '3162983574227707707', '0x07dD62E990f4D091D9c91b21c492Df023EF7e910', '1720447343', 1, 1), - (45115, '1014713281519773767', '865701877501938761', '0x16d79046b1C293d90B8F536Db73cA47b913fd103', '1720448699', 1, 1), - (45116, '300000000000000000', '255944775712015390', '0x41AFf82f5cd956d8253080eb2eA5715879AAB1a2', '1720449311', 1, 0), - (45117, '1000000000000000000', '853149252373384635', '0xAB5bC23FEc98fC100661FC73139Fe651A0D270E8', '1720451267', 1, 1), - (45118, '232000000000000000000', '197930626550625235534', '0xE53FFF67f9f384d20Ebea36F43b93DC49Ed22753', '1720451459', 1, 1), - (45119, '1000000000000000000', '853149252373384635', '0x4655BCFa6bD368373E9cC0804859Bf3913f032A4', '1720452887', 1, 1), - (45120, '7265387889367242', '6198460246016305', '0x0605c5BE09eB55C4050F821848fc43C68F2E7b7F', '1720453043', 1, 1), - (45121, '8000000000000000000', '6825194018987077087', '0xAc2F24eD436BE55C487169903d85cDA25fF1aFDD', '1720453523', 1, 1), - (45122, '4364087524392765', '3723218008727702', '0x1C00CB8994EB46657A603Be09E0B2133B858ac43', '1720454783', 1, 1), - (45123, '14165281243441905550', '12085099102501190005', '0x2E7296EBc57Fcf7c0b112D2a46062017bE2b1792', '1720455983', 1, 1), - (45124, '1552329401883727260', '1324368668654325251', '0xD08e349117601eF77358B2731a5CB273a5cD6E39', '1720456571', 1, 1), - (45125, '31494799404960774', '26869764565992003', '0xEA104AB324A68E9BBe8f18518Fd837982833C7Ed', '1720456667', 1, 0), - (45126, '6176438458823607770', '5269423853475580994', '0x8c7376d45D6FD710BDfed38187a1A787A3bDFc45', '1720456715', 1, 1), - (45127, '8178608873212315226', '6977574045635416468', '0x519c98E59Cf9BDfe21E769a23F0BE62A198CFC5E', '1720458623', 1, 1), - (45128, '188348058985956869480', '160689005709847253132', '0xf232421DaA5E7f899b6924dDEc516B3a52dA7a7b', '1720458779', 1, 1), - (45129, '2100000000000000000', '1791613429984107735', '0x23a55352680a2ea5897e8de8D09f7B465bA16918', '1720459715', 1, 1), - (45130, '29071803236972908668', '24802587196769580441', '0x259D09F736f74B48178d051EE9943A431116A8bA', '1720460483', 1, 1), - (45131, '555455793172575432', '473886694671648095', '0xe26f76A8DEd33b7ea4b69fa98358b8993c5D24f2', '1720461671', 1, 0), - (45132, '57314865652386887', '48898134781214854', '0x2466E8cC34F0cb6B02C41fBA7480A2C7ac78984e', '1720462331', 1, 0), - (45133, '3000000000000000000', '2559447757120153907', '0xe44D9809b65143AB98A3f3A8b24DDAdd07702546', '1720462739', 1, 1), - (45134, '2917544222949240489', '2489100672575431944', '0x42359aE987dedDEA36d736c2420e05cE582d3708', '1720463387', 1, 1), - (45135, '64022564809459428790', '54620803302216876248', '0xc17f4945FE61187dFe2509601c5DB05310FB5e40', '1720465571', 1, 1), - (45136, '50304426607039763459', '42917183950867772143', '0x9CFc2dBf87383bC3E86dfb3D83b661c9f54afD30', '1720466027', 1, 1), - (45137, '129041635029627384916', '110091774450565765194', '0x936FfAA9DE6d1E882ae1AAA064A6e21b534B4dE4', '1720467263', 1, 1), - (45138, '56310984643515124', '48041674449024071', '0xe0bAc8c80d4f3549E9f60ebB67689153dC039680', '1720471079', 1, 1), - (45139, '3500000000000000000', '2986022383306846225', '0xef1D6227A526673FE92215087C1d0c39c4B7a3b6', '1720471187', 1, 1), - (45140, '143471970769537754', '122403004598567228', '0xEA8Ffd46FF7032010dd27da9f1197aE551Fc04a7', '1720472255', 1, 1), - (45141, '7725134471315373871', '6590692698686573196', '0xDeE6c98Dd19150202a4BB6d4d9A2f0EBE5CBF83d', '1720472507', 1, 1), - (45142, '5968949966753746727', '5092405201590098098', '0x3B4b00DC3290C90F6A8485076Dbe953eA27A5233', '1720472927', 1, 1), - (45143, '300000000000000000', '255944775712015390', '0x23a55352680a2ea5897e8de8D09f7B465bA16918', '1720473635', 1, 1), - (45144, '8000000000000000000', '6825194018987077087', '0xf1EdD57458fC0008f02ef199f4Aa18342627BF3A', '1720474343', 1, 1), - (45145, '110990855246182094', '94691765173562809', '0x80e94F6dEdf80eFe3d8F764F20a62246bE6D8769', '1720475447', 1, 1), - (45146, '912394287875760036', '778408504570951352', '0xA7aAC318A18E4615098A966F29f7b969e6181aFf', '1720475831', 1, 1), - (45147, '37321121558079263', '31840486955011531', '0xFc01e4Fa4B50AE808Ee956c10AB482B36639Ce6a', '1720476347', 1, 1), - (45148, '278447174275973755', '237556998559028547', '0x4Ba162468c75540D6D77C64CC8fe15ea5664A03e', '1720476719', 1, 1), - (45149, '14065534215281883207', '11999999999999999999', '0x82E63dE6452f4a4d5a28de4BC51451a145AB757a', '1720478075', 1, 1), - (45150, '499716242680077874', '426332538841345280', '0xC50350415634fA572981e2df7F3C523832f5f2C4', '1720478171', 1, 1), - (45151, '800428493534516240', '682884970837327067', '0xbd223f099638B25694348F106EEa6C993a9Dabdd', '1720479347', 1, 1), - (45152, '1500000000000000000', '1279723878560076953', '0x181A91E1706Eaf775a430f8D3637cE1c0DCE37b3', '1720483415', 1, 0), - (45153, '999999999999999998', '853149252373384634', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720483475', 1, 1), - (45154, '311799233593823812570', '266011283031165100830', '0x9632703040c180cB3B1477130EBC367E0392663b', '1720484027', 1, 1), - (45155, '116804694800000000000', '99651838042321368041', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720484531', 1, 1), - (45156, '1e+21', '853149252373384635922', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720485119', 1, 1), - (45157, '1e+21', '853149252373384635922', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720485119', 1, 1), - (45158, '414322612119558965943', '353479026771189564045', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720485119', 1, 1), - (45159, '550267410590703813210', '469460229950897233157', '0xF23E48B2D068aae4751FB4Ee0b23B4e246C23BDc', '1720485575', 1, 1), - (45160, '721365192549493529934', '615432174711783057829', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720485647', 1, 1), - (45161, '523248200465272909077', '446408811032666473182', '0x54e324219979C0D1e9a895122EdAaaA3C02cB6B4', '1720485791', 1, 1), - (45162, '371171355757936827997', '316664564667299379403', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720485815', 1, 1), - (45163, '98000000000000000000', '83608626732591694320', '0x23323e87FcF0f45D8903b3460752c06479c41449', '1720486127', 1, 1), - (45164, '7896415347452801', '6736820850109077', '0x8498E947D230a2302D1e0cd75650497D36060d4E', '1720486307', 1, 1), - (45165, '4176188215533775', '3562911853853179', '0x3970c8EFED6EC5D7dA5C8E307B9085a4c4ECA8ea', '1720487375', 1, 1), - (45166, '100000000000167018864', '85314925237480955611', '0x462e3D9890d8D59a90C2f1DFbA1b86c3Cce0690C', '1720487735', 1, 1), - (45167, '1012574775205247997', '863877412438505338', '0x65501b23d61D4FEc69AC382511110c05AcccEF86', '1720488539', 1, 1), - (45168, '6780000000000000000', '5784351931091547831', '0xD202A46A4238538EFae3540a6209Db71a083bf0d', '1720488779', 1, 1), - (45169, '11982554877763516353', '10222907735486997299', '0x0d5145DF2E3fbce8a03CCC3486960d469b2f7698', '1720489811', 1, 1), - (45170, '1e+21', '853149252373384635922', '0x98078db053902644191f93988341E31289E1C8FE', '1720490411', 1, 1), - (45171, '1e+21', '853149252373384635922', '0x98078db053902644191f93988341E31289E1C8FE', '1720490423', 1, 1), - (45172, '1e+21', '853149252373384635922', '0x98078db053902644191f93988341E31289E1C8FE', '1720490435', 1, 1), - (45173, '1e+21', '853149252373384635922', '0x98078db053902644191f93988341E31289E1C8FE', '1720490447', 1, 1), - (45174, '1e+21', '853149252373384635922', '0x98078db053902644191f93988341E31289E1C8FE', '1720490471', 1, 1), - (45175, '76261134621793309766', '65062129987729001111', '0x98078db053902644191f93988341E31289E1C8FE', '1720490483', 1, 1), - (45176, '2153887556861461', '1837587558832691', '0xFEee9e8C8099F9e6F760192e707A56F4dFB64e65', '1720490675', 1, 0), - (45177, '9999999999999998', '8531492523733844', '0xeC765F84368A445345344b1E10a182c8D3Ed4e18', '1720491659', 1, 0), - (45178, '100000000000000000', '85314925237338463', '0x48E664103264d532063C11C0A728FE246836e04F', '1720491995', 1, 0), - (45179, '7045057209268025771', '6010485291014739775', '0x7525207c8bcE60E083BF3Bed3483693933365706', '1720492799', 1, 1), - (45180, '1605566290029348545', '1369787679974447553', '0xF44E28d62DCF5e601c732eeF46B1696cd38b72e9', '1720493147', 1, 1), - (45181, '10000000000000', '8531492523733', '0xA658e969E15e058D50fEE55ff59Cd0631E52027f', '1720493183', 1, 0), - (45182, '10555643830333772', '9005539642168987', '0x96aEb73377aafaE3453D4fb00B3834C26E773eF3', '1720493435', 1, 0), - (45183, '100000000000000', '85314925237338', '0x75380e2aBa7E1AAE1e370C8D9911D1D774fa0dAd', '1720494827', 1, 0), - (45184, '3159999999999998', '2695951637499893', '0xAd3200133e4515F23B070314779Ac6c49f7CEFEB', '1720496747', 1, 1), - (45185, '6482396569911613692', '5530451787207886210', '0xC694073833B33c883D196E35fb08D25B674a93Aa', '1720496927', 1, 1), - (45186, '9007617551104244211', '7684842179389963722', '0x6613Bf0Cf6C85a9f02d6fE9ac513074970C3189C', '1720498475', 1, 1), - (45187, '820489495891443187127', '699999999999999999999', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720498691', 1, 1), - (45188, '10485861947897845', '8946005281339569', '0xf46d36A35eCA074DAC347baB4F70D969E8Cbce59', '1720501799', 1, 0), - (45189, '12303507159893291', '10496727935033546', '0xaE80ED2785a702ECbd003aEb006c4D3Ce988B7ad', '1720502555', 1, 0), - (45190, '1449084832173131084', '1236285641194118331', '0xd6795471BBa317D9a547C2978187B13408520fe0', '1720502699', 1, 0), - (45191, '200000000000000000', '170629850474676927', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720504091', 1, 0), - (45192, '2118547584585246', '1807437287906342', '0x3e424cF834AE826069B49d45DA1A46f1d8Db50bE', '1720504115', 1, 0), - (45193, '3000000000000000000', '2559447757120153907', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720504223', 1, 0), - (45194, '3000000000000000000', '2559447757120153907', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720504331', 1, 0), - (45195, '3000000000000000000', '2559447757120153907', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720504451', 1, 0), - (45196, '15379383949866615', '13120909918791933', '0x1A83FB1a7C3671719D6Af719c4d749d22381aD56', '1720504583', 1, 1), - (45197, '3000000000000000000', '2559447757120153907', '0xD63BaC0A42f1e51a9121F12eC75790AA11EFF44f', '1720505003', 1, 0), - (45198, '52487683013910873', '44779827522129261', '0xcA1556EFbb867b3a2CCEDe86B5B027400e80D05f', '1720507451', 1, 1), - (45199, '1000000000000000000', '853149252373384635', '0x640F4b5FA4d2F8204036a83a0aCc6280bC4a0f73', '1720508255', 1, 1), - (45200, '251086331394197684', '214214115910135649', '0x30A6EB88E4AB0a23599D3A796E90b7fb1DFdAbfF', '1720511351', 1, 1), - (45201, '232674492535229857744', '198506069352788017466', '0x03c9Ff1f47FADf8313B6d550bDC583B8dE936135', '1720511435', 1, 1), - (45202, '25192490398316487768', '21492954348747382453', '0xb9d0ea7C782b3b83D4a73E0D2906764F7A1e5adA', '1720512767', 1, 1), - (45203, '2344255702546980', '1999999999999999', '0x2Cf73112506326a7BF6f58b35049df25a548824f', '1720514483', 1, 1), - (45204, '2025226285936583541', '1727820291733722746', '0xdC2276c7430fe326b578C31ecC395964cF32EBD5', '1720517471', 1, 0), - (45205, '1624538345277799922', '1385973674725650394', '0xfE31Fb62d879241eC2E0092151ABcA05B8218111', '1720518167', 1, 1), - (45206, '10051638471012998633', '8575547846672290836', '0xc600aDA87678F23E13B0305C781E989eB5c6f84D', '1720518611', 1, 1), - (45207, '177000213589270619867', '151007599893615624874', '0x2b9Da9514d37a1057D7d3A7f996a5EfF19D32b05', '1720519211', 1, 1), - (45208, '71128652666420479', '60683356844682783', '0xB011db9f45131A0e7E872AB6e628C4f2b8d5D929', '1720522595', 1, 0), - (45209, '1245648318562596', '1062723931701842', '0x5Dd0C29F8E783E3fdA7aF18eB5ce7A4c8f3b7fF3', '1720523603', 1, 0), - (45210, '500039975310161028', '426608731092669593', '0xBc639c6936d423000445D279782F71339cfcde69', '1720526231', 1, 1), - (45211, '50906000000000000000', '43430415841319518276', '0xEa68d241468494Ed1C762480242A635643229227', '1720526363', 1, 1), - (45212, '721255084666651365457', '615288204238894454235', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720527971', 1, 1), - (45213, '1e+21', '853079884384132236449', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720527995', 1, 1), - (45214, '1e+21', '853079884384132236449', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720527995', 1, 1), - (45215, '414329501470064816120', '353456163211018040834', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720527995', 1, 1), - (45216, '200058514889948500972', '170665894752378464720', '0xadbe9081596C1160D6999772C73A221E05421A11', '1720528007', 1, 1), - (45217, '2001302623651967414', '1707271010802680870', '0x55199F064Ba8f1D28D934c9a08953Ad9F6445EE6', '1720528991', 1, 1), - (45218, '189607096546149248968', '161749999999999999999', '0xC02ad7b9a9121fc849196E844DC869D2250DF3A6', '1720529771', 1, 1), - (45219, '8335667002613598441', '7110989842854234662', '0xfEb468A21EcDFF8CefF99334990Cfb34C3A38348', '1720530935', 1, 1), - (45220, '25788909576601443445', '21999999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720531079', 1, 1), - (45221, '3090872062806595655', '2636760781985194933', '0x7cdB461Ffb269E3B9e47326fEb01C7A7F2F5B113', '1720531319', 1, 1), - (45222, '120765032181192308', '103022219690777542', '0xB24421b06A1DB13fC85190d9ECcDb35eb8bE2693', '1720531559', 1, 1), - (45223, '5022740943084184283', '4284799263017703241', '0x196A35e14dA97a68E685E17957d047F904513254', '1720532171', 1, 1), - (45224, '131605748162176294', '112270216426476576', '0x5597ea76510a72024cB69e4469fa001760D4b9A0', '1720534547', 1, 1), - (45225, '831600831600800000', '709421941275758685', '0xdEB8cA8b115b5da3C35fE43E107d862eb0b42FE9', '1720534967', 1, 1), - (45226, '2016211358749772247', '1719989352816229871', '0x1D1A6C83a0f70B08b4484B331ff23D57cB23F88e', '1720536359', 1, 0), - (45227, '164661939569371927', '140469788370306772', '0x71ab988a96392D1c04d92D8f8f5Ab1172bf40301', '1720540007', 1, 0), - (45228, '100000000000000000', '85307988438413223', '0x130f6962a9f03521d27fb18ae81704936EC493c1', '1720540643', 1, 1), - (45229, '1000000000000000000', '853079884384132236', '0x32af17b1F0dAc64808D18Fb71b748bD5fa34CE66', '1720540727', 1, 1), - (45230, '10933736756047480854', '9327350887735522018', '0xdDF7c662032194694eD1288b2361769F3158201a', '1720541807', 1, 1), - (45231, '185742091912972274890', '158452842294385251527', '0x01eEb74efd231e138711BDC2b8AAb6dD0F960eBa', '1720542431', 1, 1), - (45232, '2000000000000000000', '1706159768768264472', '0x21aE5bf66a492051324A3317A5f1d7B5C7fc2753', '1720544075', 1, 1), - (45233, '119829896216626583', '102224474010242370', '0x0e5F455D3d76FE2ccC23D77fe63bd6Bb0D1E3408', '1720544495', 1, 1), - (45234, '6119200000000000000', '5220166428523381981', '0xd06c02bebF06277f6bB2D193063289c0aa464F49', '1720544843', 1, 1), - (45235, '998752557692231973', '852015716444445612', '0x81D7d732586413892B647caFAaeCa2A585382Bb1', '1720545335', 1, 1), - (45236, '1109601432318666451', '946578661594875506', '0x0a2b6dF07C07384Ac7b8E74c9697254eaa80c3Bd', '1720545851', 1, 1), - (45237, '2919905771789949144', '2490912878211130222', '0x6006e3ef65FE9a270E9e619f64A0518ddCe15379', '1720547303', 1, 1), - (45238, '941449934963845846111', '803132001672406427616', '0xee2826453A4Fd5AfeB7ceffeEF3fFA2320081268', '1720548047', 1, 1), - (45239, '99999999999999', '85307988438412', '0x977292Ec02C38e4bBa9789ddbA24BD838DFA6a8F', '1720549031', 1, 0), - (45240, '2550000000000000000', '2175353705179537202', '0x774Fb071526AcaaF0009a47c66C18159f98d4d39', '1720552703', 1, 1), - (45241, '99609000000000000000', '84974434203619027940', '0x8Be46b25d59616e594f0A9e20147fb14c1B989d9', '1720553303', 1, 1), - (45242, '17153866219516383586', '14633618211285908040', '0x64a20a45187ef620B79FebDdDC1e3fC8d5900010', '1720553363', 1, 1), - (45243, '172736875209582566427', '147358353532666973647', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1720554191', 1, 1), - (45244, '271065803499519347728', '231240784309861872538', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720555007', 1, 1), - (45245, '290094478747344689558', '247473764390259913978', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720555403', 1, 1), - (45246, '4000000000000000000', '3412319537536528945', '0xdBB8c7CE43aC52B2318b5E64648e4d5ea27FE5B5', '1720555667', 1, 1), - (45247, '50510937216474672214', '43089864480764375539', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720556123', 1, 1), - (45248, '3999999999999999999', '3412319537536528944', '0x8f4841723C662B6E4559Daf9e1ACb8E1116de103', '1720556255', 1, 1), - (45249, '555196940400691381977', '473627341727445760042', '0xF23E48B2D068aae4751FB4Ee0b23B4e246C23BDc', '1720558499', 1, 1), - (45250, '999999999999999999999', '853079884384132236448', '0xba15E9b644685cB845aF18a738Abd40C6Bcd78eD', '1720559639', 1, 1), - (45251, '168460935613564698136', '143710635476462517463', '0xba15E9b644685cB845aF18a738Abd40C6Bcd78eD', '1720559639', 1, 1), - (45252, '2552600000000000000', '2177571712878935946', '0x2E350e81ef79aC5fC00DD9d94c230B7d8fE22040', '1720560215', 1, 1), - (45253, '159287760167193098387', '135885184027236472529', '0x48bFB810E245087b98fe1886c250186fC4c02e5D', '1720560359', 1, 1), - (45254, '188060780670407188911', '160430869031500615216', '0xf232421DaA5E7f899b6924dDEc516B3a52dA7a7b', '1720562315', 1, 1), - (45255, '99999999999999999', '85307988438413222', '0x487d3C7D1FcB15a45576C5548e90aB9B0C8E6E12', '1720563311', 1, 1), - (45256, '8967141448332911224', '7649687989999999999', '0x2A3A02DDaFC82F687849A19805f4Fe2Ae47B5C91', '1720563491', 1, 1), - (45257, '12374414417025316', '10556364020197295', '0x63923AAf24cd288A9F3c0f5EaBCdFB60cBadBA36', '1720565135', 1, 1), - (45258, '150148880443905475674', '128088989569493776940', '0xa5606a1E41C5AF2D8680F135F244da44d4F4f623', '1720565567', 1, 1), - (45259, '371111344537815126052', '316587622891959192094', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720566659', 1, 1), - (45260, '10729622461607681264', '9153225089033669058', '0xF0A909F1d6777F10c96de512b8E723b8bC54D361', '1720570643', 1, 1), - (45261, '7949018040000000000', '6781147390530581437', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720570931', 1, 1), - (45262, '1055955094178999', '900814049657055', '0xA5Bf246eCfADdC7Dcd3D18831f45E1C569d23481', '1720572803', 1, 1), - (45263, '460044508325106119865', '392454715973536488871', '0x54e324219979C0D1e9a895122EdAaaA3C02cB6B4', '1720575623', 1, 1), - (45264, '5180915795376343', '4419735047723575', '0xBC35f94f29a9e9837c195E981B9DC5D5A4E0e5cA', '1720581059', 1, 0), - (45265, '18842549213410855', '16074199704478853', '0x4f38f1cAb1987DB2Ac33dDa5e4680c0ec9C3975d', '1720581719', 1, 1), - (45266, '2054606076601203989', '1752743114281890640', '0x673B562184146d2CD393378D10e63F8919f93083', '1720585091', 1, 1), - (45267, '869013381372910259', '741337834909866098', '0x82CB155e56f553245bef973360f9c1B0f3F9d187', '1720585559', 1, 1), - (45268, '10207146396174858522', '8707511267540760324', '0x951089832043C108dB9bD7FD7278B48A911354C6', '1720586879', 1, 1), - (45269, '203593535181036', '173681549453594', '0xfd5277ebdFf10DEAF07E472b5A25D1ed0cdd7C81', '1720587947', 1, 0), - (45270, '1e+21', '853079884384132236449', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720587995', 1, 1), - (45271, '1e+21', '853079884384132236449', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720587995', 1, 1), - (45272, '1e+21', '853079884384132236449', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720587995', 1, 1), - (45273, '1e+21', '853079884384132236449', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720587995', 1, 1), - (45274, '992000000000000000000', '846255245309059178557', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720587995', 1, 1), - (45275, '192509912899988641495', '164226334239521677268', '0xF84baa7d6033429D5BBf2Bb41965e1A0f74109Dd', '1720588727', 1, 1), - (45276, '5029056108218237137', '4290186603360127753', '0xc04f402f482E3d5D6346C7568805468E29DcA156', '1720589303', 1, 1), - (45277, '30000000000000000000', '25592396531523967093', '0x8822730E759d60222F339219c8819cD1b4AB5E9e', '1720589507', 1, 0), - (45278, '250909241050727120', '214045626346464657', '0x351a546F4284B0a15b017c4E0db469b7D83a95F2', '1720589975', 1, 1), - (45279, '976755142187912453', '833250163769270998', '0xb81DaE77BF03653155C649C28D2ce09D88439808', '1720593527', 1, 0), - (45280, '3031694060117653276', '2586277218293228102', '0x506199222272ee3bA59a817563B6F6FD5AdF4270', '1720594691', 1, 1), - (45281, '801942327001827136', '684120867601460660', '0xbd223f099638B25694348F106EEa6C993a9Dabdd', '1720596803', 1, 1), - (45282, '5816645467696201618', '4962063243085762455', '0x5992134a6a35208B06ED9eD4c1c27ECeb1C338Fa', '1720597931', 1, 1), - (45283, '2000000000000000000', '1706159768768264472', '0xE3fbd803865F2DAD742786FbAAc4a32D7eF9f3F5', '1720599527', 1, 1), - (45284, '110000000000000000', '93838787282254546', '0xBa198Fd43a2bC0Fd8eC345BcF3116E653eAd074a', '1720599947', 1, 1), - (45285, '3103140706899694', '2647226915469685', '0x28069aBE0eBef73dd2aB542E444E9F3479D4bC80', '1720600511', 1, 0), - (45286, '9999999999999999999', '8530798843841322363', '0xB2214684c15ba38222328e87d5dDFF6379DAC114', '1720603583', 1, 1), - (45287, '100998418573954132', '86159719240048984', '0x04bF8865ebE03fCaf5EB698515E43996617badb1', '1720603907', 1, 0), - (45288, '35831024350702173', '30566726110462036', '0xD067Dd9a82353d2799843306ec7D033E067496Ec', '1720604795', 1, 1), - (45289, '307049074611215332430', '261937389069590368618', '0xC5d49B440AA8c92e6d3D25c259508b96885a59AD', '1720604987', 1, 1), - (45290, '2017433900000000', '1721032278164628', '0x3311E6b9792fCE4D2999572c455f2a55b4d8f6A7', '1720605695', 1, 1), - (45291, '1000000000000000', '853079884384132', '0x01D03f08E1C4930DCd4788B9eB532F919244E281', '1720605923', 1, 1), - (45292, '1550000000000000000', '1322273820795404966', '0xCFd2aB9EB54A5D0B9BeCd6Ddf2F525Dc8a2B1d6f', '1720606511', 1, 1), - (45293, '12824805179923932475', '10940583320138528540', '0x88E332250EEEED6A4D64704Ce1a75e0da811FC02', '1720606919', 1, 1), - (45294, '203692034073530142', '173765576877415817', '0xA574e12376B7DDe924D30231060C9243d8e728a2', '1720607963', 1, 0), - (45295, '9999999999999', '8530798843840', '0x8eDB04C1AF71825eE9ff565485176d9ef8574433', '1720608467', 1, 0), - (45296, '100000000000000', '85307988438413', '0x8eDB04C1AF71825eE9ff565485176d9ef8574433', '1720608815', 1, 0), - (45297, '5026188129409862', '4287739988329862', '0x2c4362270fd2E98A68edA8a61f0a9c61b4638F76', '1720608923', 1, 0), - (45298, '3963748193076507610', '3381393850277520173', '0x13DFB9d44D7684350b848865b48e2eC5ffc69C51', '1720610159', 1, 1), - (45299, '500000000000000000', '426539942192066118', '0x39417b8a41fA3619cAd4e8f21Bfb763Ce29302Eb', '1720610375', 1, 1), - (45300, '27489952632696380864', '23451125613625900179', '0x7AC50Addeca2A09ed01cc6237c2F6734F691fd0c', '1720610567', 1, 1), - (45301, '720065153938179651119', '614273098270624677919', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720611371', 1, 1), - (45302, '10230000000000000000', '8727007217249672778', '0x4D6B80850B330FCe072DC2a615cA099a182fD329', '1720611587', 1, 0), - (45303, '253996826067624208', '216679583015705404', '0xA31779a768326B4170e5C6C2b21e62cFFC4F1468', '1720611959', 1, 0), - (45304, '4000000000000000000', '3412319537536528945', '0x01615eFBC0d60c4f9173AfC78878D7B8f076472C', '1720612427', 1, 1), - (45305, '302867913144819720', '258370524329246210', '0x9fe1B981f751e4075AE4085C741a0364397F148e', '1720613915', 1, 1), - (45306, '722130723939032001656', '615983735873638288798', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720614479', 1, 1), - (45307, '613950134569538627377', '523704760087450034652', '0x54e324219979C0D1e9a895122EdAaaA3C02cB6B4', '1720614515', 1, 1), - (45308, '271052132139578949378', '231209806530748444605', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720614611', 1, 1), - (45309, '36539415194551164', '31168436312201399', '0x60c60825502DDa24Bd8DcA55E29F46E50382c311', '1720614779', 1, 1), - (45310, '50507726295588471634', '43083526157608135093', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720615103', 1, 1), - (45311, '200026611936376262461', '170624425204650576750', '0xadbe9081596C1160D6999772C73A221E05421A11', '1720615115', 1, 1), - (45312, '351604931000000000', '299922038723917335', '0xc460dBFff59Ef53af72cc8Ba04a6CA4b323f5Fc3', '1720615727', 1, 1), - (45313, '1592137860000000000', '1358107326716458585', '0xcbEC4E28f4e0a89be5D12B55F5DbF8eDD25A1466', '1720616099', 1, 1), - (45314, '555270281801157889409', '473650339564229171302', '0xF23E48B2D068aae4751FB4Ee0b23B4e246C23BDc', '1720616135', 1, 1), - (45315, '394528141188766907', '336535907226205750', '0x7789CA502C96DDb2131988ca46d44c51428A2034', '1720616339', 1, 1), - (45316, '1e+21', '853008624966972762722', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720616495', 1, 1), - (45317, '999586066305755189566', '852655535955617497647', '0x2178e1d614FEFb2B304DB58f07116d89f948Fda1', '1720616495', 1, 1), - (45318, '27549545587431645698', '23499999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720616639', 1, 1), - (45319, '351201000000000000', '299577482097025801', '0xcbEC4E28f4e0a89be5D12B55F5DbF8eDD25A1466', '1720616819', 1, 1), - (45320, '290111364805264945126', '247467496379830866720', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720617599', 1, 1), - (45321, '9435969042967846034', '8048962978572924276', '0x21C29244bADc5CB665A99a37768fa60Bcb08449F', '1720617779', 1, 1), - (45322, '2150134934685957444', '1834083644129920349', '0xd95942EaA5E7424a190720C42eEaCd2258880679', '1720618067', 1, 1), - (45323, '1000000000000000000', '853008624966972762', '0xd84Cf058a098dD5afF006D7b45b28C4584bF712a', '1720618115', 1, 1), - (45324, '577219632042916475562', '492373324632870154060', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720618355', 1, 1), - (45325, '5724569205013651955', '4883106906096971654', '0xC3B47c12f6c58A7268B7DF4E02eFBC44c02910FA', '1720619375', 1, 0), - (45326, '1151085188678820964', '981885594014769473', '0xDD693B1932603583365aaFAC9173a55aa43853F7', '1720619555', 1, 1), - (45327, '100500433264992667', '85727736387956403', '0xB1c6498f636e6ae1C17969B0A5F49196457D3d50', '1720619819', 1, 1), - (45328, '1000000000000000', '853008624966972', '0xA70a562C7b1F9061c42FaC414A3F2E2857Bf64C2', '1720620827', 1, 0), - (45329, '131047278191531597', '111784458575822724', '0x0d4e718d6B6DC4dAeb5a2C6972F89fF2d24281ff', '1720622303', 1, 1), - (45330, '10406042347349411574', '8876443874060611131', '0x4212B3cde2fbc051c867E25a0a6AAB11aEa32b43', '1720623851', 1, 1), - (45331, '999999999999999999998', '853008624966972762721', '0xba15E9b644685cB845aF18a738Abd40C6Bcd78eD', '1720625603', 1, 1), - (45332, '193567064812810963', '165114375794868776', '0xba15E9b644685cB845aF18a738Abd40C6Bcd78eD', '1720625603', 1, 1), - (45333, '1300000000000000000', '1108911212457064591', '0xC87656F2AAbB3f861AF5620C7B1aDD9c12FEeFCA', '1720626095', 1, 1), - (45334, '312942999510425991', '266943077705428505', '0x2bb18DBc1B629190A2e2755f24574a391B36D6cD', '1720626467', 1, 1), - (45335, '185437251113655736', '158179574590114717', '0x67C0Dad679fCF5C732c4fb4B42591B11203B6ccD', '1720628111', 1, 1), - (45336, '6021740625457810457', '5136596690829525436', '0x19839DAebeE7b76B4E38cD7f5127487aF695A6f0', '1720628915', 1, 1), - (45337, '10000835389175135', '8530798843841321', '0xcE159C278b45021f41DfD5fC61023d9Ed9a07155', '1720628939', 1, 0), - (45338, '250521280020561002', '213696812595304686', '0x1C7FB1a4E5235E9750B4Bb7e0e4913cF1cdA51e2', '1720629251', 1, 1), - (45339, '265800000000000000', '226729692516221360', '0xFbfB9D250d5Ac0435751F181e54DD857F6E21A1B', '1720629623', 1, 1), - (45340, '25931798971670293603', '22120048183744435421', '0x88DFE32D47949052e0F01B69A8898Ca87f6037EB', '1720629791', 1, 1), - (45341, '16000000000000000000', '13648137999471564203', '0x3AfD8d8181B26cB27755d825D21D7043B5B6450C', '1720631891', 1, 0), - (45342, '19979999999999999997', '17043112326840115796', '0xeeEbF82307670C697C0bc037E77Cfa6190ed9fed', '1720631951', 1, 1), - (45343, '188028921711850179018', '160390291963447891597', '0xf232421DaA5E7f899b6924dDEc516B3a52dA7a7b', '1720634843', 1, 1), - (45344, '22878093010957921', '19515210661143725', '0x9A350F6333e1a29A994f2275a4eF796687B3494B', '1720635095', 1, 0), - (45345, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45346, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45347, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45348, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45349, '992000000000000000001', '846184555967236980621', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45350, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45351, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45352, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45353, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45354, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45355, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45356, '1e+21', '853008624966972762722', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45357, '914635193689940225669', '780191708915856714666', '0xD9B488280d723338Dd32d56b3900f379Eb7A7aF1', '1720637315', 1, 1), - (45358, '172919090285035492', '147501475434577943', '0x5bcAC35E1Bc2880Bb461F617CB671E03d6861DFe', '1720643387', 1, 1), - (45359, '2000000000000000000', '1706017249933945525', '0x760A3B0f719603b86D4c3CFC25374292153dCce4', '1720645307', 1, 1), - (45360, '923665554048640428', '787894684188387833', '0x3665A71624fDb3bCa287580E5e314597a7E0C53D', '1720646507', 1, 1), - (45361, '5179151550511806', '4417860942597640', '0xC89a6347E873FB3d78D3ee49086Cc1DfaD2085B8', '1720648139', 1, 0), - (45362, '10112866090012344', '8626361997916555', '0x539B901003021f29eBaa5d06DFdBE46ee7a33125', '1720650875', 1, 0), - (45363, '116737971235585924', '99578496325101167', '0x73fF632EE8EF1A362D406C5fc38E0D29F5921Bbe', '1720652447', 1, 1), - (45364, '827191946252812388', '705601864656865532', '0x400963FF8909415f7Dd0AbF4904AcF8F7a3D47AA', '1720653227', 1, 0), - (45365, '170389952023979643', '145344098684163332', '0x148fbE70301b8906f72118919bcbf55aE8F3353E', '1720653671', 1, 1), - (45366, '2908613014167050493', '2481071987775677809', '0xFE1AdbC160f7CDCB91aCf4D6ec11E61074e26993', '1720654943', 1, 1), - (45367, '265179331924830350', '226200257294859999', '0x66cc860B7342cC3d1bdc6DB41D611e738429E3a8', '1720655027', 1, 1), - (45368, '207265650000000000000', '176799387109385838198', '0xE3Ece6502d0A4c2593252607B5C8f93153145b90', '1720656047', 1, 1), - (45369, '128371365290664331630', '109501881791722555319', '0x16624454FAeF9e514988406B970050CE1F6E8070', '1720657055', 1, 1), - (45370, '36305730830000000000', '30969101533719330763', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720657331', 1, 1), - (45371, '10000000000000000000', '8530086249669727627', '0x8B17b4Cc91AA193CD0557F2468B8803335e7579e', '1720659563', 1, 1), - (45372, '50943564607005166', '43455299996337616', '0x3A61323aA49bF6e6b7F1648eb64F8Fb1CAC6fe4B', '1720660943', 1, 1), - (45373, '1e+21', '853008624966972762722', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720662383', 1, 1), - (45374, '55088979944190686335', '46991375033027237276', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720662383', 1, 1), - (45375, '1551347910919625408', '1323313148338935419', '0xD0F1898cDf8271e58Fc1e29A882c3ED44d2843d9', '1720664975', 1, 0), - (45376, '2565995612606709345', '2188816389180934058', '0x19C9f0736f5966D0fAC9606F914289DbAa6B6452', '1720666595', 1, 1), - (45377, '2186824560541051813', '1865380211431127089', '0xE6607f9C7F306fD1292200AC08Eb0740130c1445', '1720666895', 1, 1), - (45378, '33489353375729499', '28566707274064067', '0xb7f120B8b396874AB449880c0F1A1Fc0b323E3e3', '1720667831', 1, 1), - (45379, '200000000000000000000', '170601724993394552544', '0xD6cC5a7963bEdcC19421aBd4f008473c8a7d9374', '1720668827', 1, 1), - (45380, '100000000000000000', '85300862496697276', '0xdE24838b077b0adD8CE989423EF8325f821FAE31', '1720669583', 1, 0), - (45381, '100126026388157649', '85408364092769186', '0x2cBe4ae3b14498882c2ADce8B9d1444dcF318AeA', '1720670483', 1, 1), - (45382, '5019780132738248725', '4281915748663581560', '0x2f770040AeFf611c711374150e4d11b14D634c75', '1720670639', 1, 0), - (45383, '7936918643978922', '6770260058975190', '0x4c3285612e79968a9F0E518e7BC34Acc613ebb7b', '1720671059', 1, 0), - (45384, '3793003859649767758', '3235465006814268938', '0x4eC3A14D5487a488b918E7179232FB9968Fe119A', '1720671935', 1, 1), - (45385, '72169000063890865292', '61560779509740916463', '0xa25803ab86A327786Bb59395fC0164D826B98298', '1720673543', 1, 1), - (45386, '28529534924702051', '24335939357067323', '0x6542d96368F7A0B173cfEA5F81056F688CAAE6ab', '1720673687', 1, 0), - (45387, '5241423093047031', '4470979105470185', '0x25b0F3BE6346e87A2AB4d4A3FaC74490330CaFD5', '1720675535', 1, 0), - (45388, '540592527505312', '461130088554726', '0xF436288aaB5B8e275b277856b0d7E0b50bC0B43C', '1720678931', 1, 0), - (45389, '25750896288103678582', '21965736634382441762', '0x16624454FAeF9e514988406B970050CE1F6E8070', '1720678979', 1, 1), - (45390, '1500000000000000000', '1279512937450459144', '0xa6Fa61935B0442fE390c54285B45Bde93b0D4c01', '1720679315', 1, 1), - (45391, '51564367342544082', '43984850084155402', '0x3edc76cc472625618ad89Bd19cE7D8234Eb5e7ef', '1720680803', 1, 0), - (45392, '1000000000000000', '853008624966972', '0x32378D035F1Ca3b0326859A6dd823cDf19484B36', '1720680887', 1, 0), - (45393, '104310316558294811', '88977599697260707', '0x3361663aa4D416b7B71407DB78485Fa1B2FaBe9D', '1720681739', 1, 0), - (45394, '3000000000000000000', '2559025874900918288', '0x1ba3c7b22e2a2e1b158Fc983DF57e5a374f36720', '1720682147', 1, 0), - (45395, '5205259251807427', '4440131036980866', '0x80AC42B2aBcc6a2ea86dbaE5bef78375AF9800AA', '1720682183', 1, 0), - (45396, '50004176945875676', '42653994219206609', '0xc32f722e15190282C3ae2010aAc09D38d26DB1b0', '1720683383', 1, 1), - (45397, '4378947263850912600', '3735279784340354631', '0x27511FFF449a328B29ADEbe885269D8a908D832b', '1720683863', 1, 0), - (45398, '3803843299397735', '3244711142409094', '0x7FE387589E22d6F345ba6d505bA86df3e5aC7d07', '1720684487', 1, 0), - (45399, '10488799515382426', '8947036452170613', '0xCaf584c321A2BBeccA600483FC49B78E94Ec0fC9', '1720685003', 1, 0), - (45400, '380754321956989847', '324786720622763955', '0xB1c8e87E2d1043eC0295e2da5Cd0F72154858F41', '1720685171', 1, 1), - (45401, '1006988064370649799', '858969504146961441', '0x4551db1991054501cf4371a7cf94796897941E0C', '1720686071', 1, 1), - (45402, '46892843553075141614', '39999999999999999999', '0x6b1029C9AE8Aa5EEA9e045E8ba3C93d380D5BDDa', '1720686299', 1, 1), - (45403, '2452477916716961', '2091984815500600', '0x58289E9ef36Acd6339d06C187E6Dc132aa3Cbc08', '1720688459', 1, 0), - (45404, '17559824772488948104', '14978681983841782950', '0x699908d8AaFE380588FA2044D96B6fb2F22e5165', '1720691111', 1, 1), - (45405, '20000000000000000', '17060172499339455', '0xF9BB3EC31Fd54536b536620009EB6DA93a0b1041', '1720691135', 1, 0), - (45406, '500000000000000000', '426504312483486381', '0x575a41eb29DE112e0a5aa307cD1E93433f9AA417', '1720692839', 1, 1), - (45407, '513999999999999997', '438446433233023997', '0xe091F57c03109e6cDE62A06bd588C13791fd6f75', '1720693151', 1, 1), - (45408, '1999999999999999998', '1706017249933945523', '0x51f1FD934D9D157619B7874bDd7a2e82CA24ACb6', '1720693559', 1, 1), - (45409, '4650766761756317943', '3967144160487857376', '0x1Dc7ebb7cE304Df7A8C51171bBb746A00B21bd35', '1720694219', 1, 1), - (45410, '10092469920255005016', '8608963889197255079', '0x0Dcc5d3d678523bb7766293a7d1D7150142f1548', '1720694255', 1, 0), - (45411, '200000000000000', '170601724993394', '0xad79579eEceF31f4719426232D7b527B17b84f85', '1720695215', 1, 1), - (45412, '40000000000000000', '34120344998678910', '0xEF490a66aA920e008B23ce73983F38E21F43eAab', '1720698911', 1, 1), - (45413, '271052387139404112440', '231191038642318811328', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720700855', 1, 1), - (45414, '9603431074170261', '8191136879475124', '0xac7555c5562e79dC63277D0d89612216D7f9F08a', '1720701923', 1, 0), - (45415, '50511227002244919005', '43082974317215655606', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720704515', 1, 1), - (45416, '700513858550000000000', '597495296945013077067', '0xFE4a829408B7F576522DCB7D607c312A034248c5', '1720707647', 1, 1), - (45417, '298008798618242090', '254183202015730000', '0x926d17d52891BF38C2F3Bc9733AdA0698fCf98fC', '1720708211', 1, 1), - (45418, '1991040091526996559', '1698234911695807769', '0x889edC2eDab5f40e902b864aD4d7AdE8E412F9B1', '1720708475', 1, 0), - (45419, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45420, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45421, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45422, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45423, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45424, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45425, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45426, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45427, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45428, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45429, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45430, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45431, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45432, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45433, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45434, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45435, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45436, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45437, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45438, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45439, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45440, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45441, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45442, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45443, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45444, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45445, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45446, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45447, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45448, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45449, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45450, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45451, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45452, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45453, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45454, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45455, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45456, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45457, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45458, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45459, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45460, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45461, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45462, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45463, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45464, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45465, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45466, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45467, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45468, '1e+21', '852938581660288663631', '0xD9A442856C234a39a81a089C06451EBAa4306a72', '1720711559', 1, 1), - (45469, '307086849854929263053', '261926222161789387193', '0xC5d49B440AA8c92e6d3D25c259508b96885a59AD', '1720712159', 1, 1), - (45470, '533772303547976659', '455274991517756277', '0xceB0eE882Eb52343C130c2F0c9D09DE6C0dB9022', '1720712711', 1, 1), - (45471, '188026929229395422983', '160375422330860005394', '0xf232421DaA5E7f899b6924dDEc516B3a52dA7a7b', '1720712927', 1, 1), - (45472, '300682823171934848', '256463980725881487', '0x5cFc7B94Ad7257Bc84851129c41D54Cbb058D2cD', '1720714199', 1, 1), - (45473, '1000082119988695734', '853008624966972761', '0x4203fAA008d49CAC1AE550A868f134d34dd091ac', '1720721195', 1, 1), - (45474, '13134787075176441900', '11203166658310885683', '0x22Fd3b3BFdCfB0F3D9F3ddbf087253c217c13060', '1720722311', 1, 1), - (45475, '8458991821098916', '7215000486164091', '0x248F31fD4FB75bcfDCE7171B16e97Aa4771515ab', '1720723691', 1, 0), - (45476, '29896642675446739770', '25499999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720724171', 1, 1), - (45477, '270843648363277960', '231012997286672266', '0xF61B5C519Fe1Da19473d87b49Ed694BcD54F8186', '1720725335', 1, 0), - (45478, '45071184249657167', '38442951967652125', '0x778B2308188238b1809A73457D5167f490F377BC', '1720732211', 1, 0), - (45479, '500000000000000000', '426469290830144331', '0x95Ee4c8929450324D596CEDB5B6771C92565d0A0', '1720733951', 1, 0), - (45480, '3114764130000000000', '2656702499248542974', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720743731', 1, 1), - (45481, '14000000000000000', '11941140143244041', '0x487A10adCAA3eE157b6454A8F28663e4c1773beE', '1720745831', 1, 0), - (45482, '1909996141571378996', '1629109399968515910', '0x2B36f3A2171b8Dc772fCc511C24793E4Fee3DC2d', '1720746407', 1, 1), - (45483, '3517252079464322324', '2999999999999999998', '0x1684398FDf572b77422C274B362603035D470Ba4', '1720750463', 1, 1), - (45484, '9127074314895501024', '7784833820855019508', '0x30a3d8F9b03399a2d70B7661Ee7563cD92Cec5AF', '1720751291', 1, 1), - (45485, '42722571855038483017', '36439729842916291281', '0x385802026a6FC069d5D88386C261FeeF28E70377', '1720754771', 1, 1), - (45486, '5000410599943478', '4265043124834863', '0x477AACEa5afE06044aC8c7D50e672B91f2788eC6', '1720757195', 1, 0), - (45487, '191208501236877337', '163089107846371706', '0xb054D8eD588A91AC80b64fBD7f11316330918ba7', '1720758983', 1, 1), - (45488, '128779225547010144', '109840769985377243', '0x2aEe33513CDBA5F3DD28883Dc9e78352F8774F56', '1720762475', 1, 0), - (45489, '8463259261748713', '7218640350939248', '0xe7970A042f3003563b1762e52d9B4A6e1a79F67d', '1720764719', 1, 1), - (45490, '1118282819903720407', '953826562303747309', '0x2a0700391939e9dF3935d3c826bE77Db49b07276', '1720764971', 1, 1), - (45491, '2000000000000000', '1705877163320577', '0x5caf809086b2d77EC6cb54932E48B3BbB6546C53', '1720764995', 1, 0), - (45492, '30367676090000000000', '25901762572523660553', '0x2b0cce65A195af0dE256A0fB74F3e3D25841B5AC', '1720765727', 1, 1), - (45493, '250000000000000000', '213234645415072165', '0x6A86Ac380747d8Cca53E022Dc5Af358fd5D3d8b8', '1720766843', 1, 1), - (45494, '900000000000000000', '767644723494259797', '0x6A86Ac380747d8Cca53E022Dc5Af358fd5D3d8b8', '1720768247', 1, 1), - (45495, '404313367913208199', '344854470574186265', '0x6A86Ac380747d8Cca53E022Dc5Af358fd5D3d8b8', '1720768847', 1, 1), - (45496, '103126431018254848', '87960511804397888', '0x77b7B069C904F336B07e8d8b2fC38EB4f0b1D769', '1720770095', 1, 0), - (45497, '100008211998869573', '85300862496697275', '0xb56f2ca2289FDabBb94cd624d4a3b3096A520b5A', '1720771655', 1, 0), - (45498, '2000000000000000000', '1705877163320577327', '0x57328d5B3363f559966CaC89bA51Bf8627ff6a87', '1720772879', 1, 0), - (45499, '31000000000000000', '26441096031468948', '0xC79E36D668323bd6fef9428E4c32E746C135C678', '1720773551', 1, 1), - (45500, '58000000000000', '49470437736296', '0xdC0773a69D61a2D10aD4AbA7f3d8cfb250156744', '1720773587', 1, 0), - (45501, '12122577834915247709', '10339814344579064354', '0xd21cc3D733A56bb033bD3e72bb006e07e103d327', '1720773959', 1, 0), - (45502, '1018539516160525954', '868751650278915671', '0xEEB49B19A661489261c929fD0eeEeA7f48C6F24E', '1720774067', 1, 0), - (45503, '160685081867500018', '137054505822032833', '0x5f1aF1d8973aE5a3557f0CD690024BFBC1ca1AF8', '1720776107', 1, 1), - (45504, '508805786234445873', '433980085651356288', '0x31aa9b1c221aD90b1e948F325F63f21F677E6C42', '1720776155', 1, 1), - (45505, '1e+21', '852938581660288663631', '0xE588aF7B7187913E0cDdf364AC72acB8506dBA63', '1720777031', 1, 0), - (45506, '388216300466710696055', '331124660697480681065', '0xE588aF7B7187913E0cDdf364AC72acB8506dBA63', '1720777031', 1, 0), - (45507, '2572640000000000', '2194303912722525', '0x38b9A0fb002282E8C0b2628608c48d72dFe8e869', '1720779227', 1, 0), - (45508, '177999999999999999', '151823067535531381', '0x0b974899566A878d556C853aB8fDdeDE6cb4b848', '1720780835', 1, 1), - (45509, '3000000000000000000', '2558815744980865990', '0x5ec1be1845190374539fDD3aC8EaF281a631e17d', '1720782275', 1, 1), - (45510, '22057202206697837', '18813438765575042', '0x4043B7bD0d581DC9095D80c73177434c39b0675B', '1720782707', 1, 0), - (45511, '19010000000000000000', '16214362437362087495', '0x39417b8a41fA3619cAd4e8f21Bfb763Ce29302Eb', '1720783739', 1, 0), - (45512, '4728427546141626383', '4033058284689477937', '0x5282995Efa51c5819DE848240709E3D9AcaA6D4b', '1720783871', 1, 1), - (45513, '52984274999653773', '45192332368503380', '0x285a34495a168DbE73f98456bcdFf2067B7146d7', '1720784267', 1, 1), - (45514, '2022300000000000000', '1724897693691601764', '0x16cd4Ba1812F9416eCf4756f7712242B7C8A9a89', '1720784891', 1, 1), - (45515, '1446918196195447025', '1234132354041407866', '0xB9d04A70400A47b6D851D833B91276Cf6026C785', '1720786187', 1, 1), - (45516, '2728300000000000000', '2326877671665942246', '0x86B0c4f2Dcc1b195f04AD49a704AdaF251B134f4', '1720787003', 1, 0), - (45517, '10308133899439532', '8791469635725040', '0x586286a10Af4d684A8D62837eeE7331aE6129B22', '1720787795', 1, 0), - (45518, '290142248465803938093', '247452816611820976906', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720787915', 1, 1), - (45519, '80990281042485110', '69073956888798172', '0xc99463b9f7996873469511Aa98002fe8ec22877f', '1720789715', 1, 1), - (45520, '6139322988332786568', '5236027409264739626', '0x8b70Bf4eaf971beFAdF6957a793366242Aad507d', '1720789775', 1, 0), - (45521, '100000000000000000', '85286723295309982', '0xfE98590597174B1bC8ebF2F0C06b0507e355efA8', '1720792271', 1, 1), - (45522, '1137771663953395010', '970368170768376150', '0xFE8388F3d2bC6feFAf108ccEd3b8Aed4Bd120Aee', '1720795187', 1, 0), - (45523, '10000000000000000000', '8528672329530998226', '0x5FF5DbA2F6c80360B84453A4B5732c767Cf47796', '1720795595', 1, 0), - (45524, '10454473622803486848', '8916277990661578864', '0xb3eae5D93c03CdEe8b86Ec4aFe28Ba7D79f08EA2', '1720796507', 1, 1), - (45525, '6000000000000000', '5117203397718598', '0x3a3A023D500DCF49d0c7719cc27054b86Ed65D86', '1720799315', 1, 1), - (45526, '271041640188488196946', '231162533682625626001', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720801295', 1, 1), - (45527, '50504732064171878014', '43073831086607967149', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720801859', 1, 1), - (45528, '1000000000000000000', '852867232953099822', '0x2097189de6C6bb1c1db2AFB3EEb41Ba4FB5CE3c5', '1720803383', 1, 1), - (45529, '1000000000000000000', '852867232953099822', '0xa075972127a624227828e59c4f23f7b3b62e0ed6', '1720805195', 1, 0), - (45530, '200000000000000000', '170573446590619964', '0x4121E5850094Af3ADD007f31C5A1B4E2878a1FfF', '1720806575', 1, 0), - (45531, '1138424238427793734', '970924730154652413', '0xD2060dE0FeBD2083f931c274A1b5c2210826FEad', '1720812167', 1, 0), - (45532, '359037606047880539', '306211409596161013', '0x2a27200DC0E574cf3F12049D5F836B5718e18569', '1720812719', 1, 1), - (45533, '13116800480237067385', '11186889330777678576', '0xe08dE110915C708044c2FA7d742a26ED0be2C69B', '1720814567', 1, 1), - (45534, '4069191554488145092', '3470480141432427230', '0xa56aC714afE9F83C5FFb862BB194d5c35bA637B4', '1720817795', 1, 1), - (45535, '198349701131238130', '169165960760873397', '0xA9e3f22FFF3681AA710CbC3623B8B8ccE17D01Eb', '1720817879', 1, 1), - (45536, '4499999999999999999', '3837902548288949201', '0x349e6d200Df89D148E2EF17B7fcD41bE7C24f58B', '1720817963', 1, 1), - (45537, '176637507160748107503', '150648341967920594252', '0x11D6091366a6b4f10944761E5f3a07E96B0415Cc', '1720819607', 1, 0), - (45538, '201325236807367787187', '171703697639527329370', '0x82c086C4D9610c43b85DC3cbfB5542e4d87C61b4', '1720819895', 1, 1), - (45539, '347064570619138078549', '296000000000000000000', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720823363', 1, 1), - (45540, '797172552244107389', '679882348818592275', '0x8F306b67f75Dc899b7Fdf506e21f3758cCeA52dE', '1720824539', 1, 1), - (45541, '7346822274421931', '6265863984184431', '0x2Ce553f65E334c5b4b8A491f6a7a8C70545B082e', '1720826855', 1, 0), - (45542, '2000000000000000000', '1705734465906199645', '0xD44a67916F0D77eb0f2b1805B8b91F01beF675C0', '1720827731', 1, 0), - (45543, '665851109183417', '567882593048013', '0xd2C901896304017eb424BE37505524AB27e53883', '1720828343', 1, 0), - (45544, '101220348836192', '86327518830470', '0x7B66D683eCE4E02067f1549A3619B564d4db2258', '1720829651', 1, 0), - (45545, '11530952840000000000', '9834371841963487987', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720830155', 1, 1), - (45546, '55799999214261785', '47589990928652592', '0x57f3DFD2675615978808285b74d6188cAaE37007', '1720831535', 1, 0), - (45547, '1501044754311149319', '1280191886148115475', '0x699d2974b3Cc6F455A79c6bf3827D4d868dD50Eb', '1720833719', 1, 1), - (45548, '6507185443059424', '5549765243134781', '0xDb97047D1B30A1A2BB494239b04F499b80b0d7f9', '1720834067', 1, 0), - (45549, '10000000000000000', '8528672329530998', '0xdbe89d053785f730C3B8b0463e2C2AD353dBcbfe', '1720835555', 1, 1), - (45550, '1999999999999999998', '1705734465906199643', '0x9aa5b77DD79D79b634f83D6BbfD095da1e9e89fd', '1720835879', 1, 1), - (45551, '999999999999999999', '852867232953099821', '0xaFBB3d98dD8EBf8b306e5F1176B4c20399A39d4F', '1720836227', 1, 0), - (45552, '1e+21', '852867232953099822699', '0x98078db053902644191f93988341E31289E1C8FE', '1720837067', 1, 1), - (45553, '1e+21', '852867232953099822699', '0x98078db053902644191f93988341E31289E1C8FE', '1720837079', 1, 1), - (45554, '1e+21', '852867232953099822699', '0x98078db053902644191f93988341E31289E1C8FE', '1720837091', 1, 1), - (45555, '49512496394441394337', '42227585796527563709', '0x98078db053902644191f93988341E31289E1C8FE', '1720837103', 1, 1), - (45556, '4720492040287020', '4025952984576723', '0xED4b6a453BF85d2b675256E4D9fbb57Fd24f63fC', '1720838795', 1, 0), - (45557, '1000000000000000000', '852867232953099822', '0xaFBB3d98dD8EBf8b306e5F1176B4c20399A39d4F', '1720838807', 1, 0), - (45558, '5500000000000000000', '4690769781242049024', '0x36020602Ac5bb48eEbB4837B531E784999a55033', '1720839899', 1, 1), - (45559, '1014946209698427411', '865614365461734393', '0x92054AD5051C5b944Bfca7600bfdeCC6a5504264', '1720842767', 1, 1), - (45560, '2035825344351207816', '1736288728212606220', '0x009857105d9d00733Ea8BaD0dBb94bc52088e365', '1720842923', 1, 0), - (45561, '1e+21', '852867232953099822699', '0xBBE3188a1e6Bfe7874F069a9164A923725B8Bd68', '1720844975', 1, 1), - (45562, '417195666125032391240', '355812513368081656842', '0xBBE3188a1e6Bfe7874F069a9164A923725B8Bd68', '1720844975', 1, 1), - (45563, '103157431127544259', '87979592844298640', '0x9a744842e62F09E4db9401c27D9DA1e5133a8E13', '1720845683', 1, 0), - (45564, '36883373447684974', '31456620654302917', '0xb9d4Dffc023813fB38E2c9a3421830367D55d125', '1720848827', 1, 0), - (45565, '3517546323842615660', '2999999999999999999', '0x418714C470f372992D026F0d7eF2200b83d2fcEe', '1720848887', 1, 1), - (45566, '387940709837090919', '330861919748621124', '0xA7060b4CFC5d64e8C6c0A827BC9C62c189aE9FA7', '1720853027', 1, 1), - (45567, '100000000000000', '85286723295309', '0x0E297A8E975e4dAA101E79bD40824590DCB00955', '1720853495', 1, 0), - (45568, '10302788677757123', '8786910871299243', '0x48c305be407B747b1042E1A8155034e7c93D5CE5', '1720855079', 1, 0), - (45569, '3000000000000000000', '2558601698859299468', '0xC45553E7B327928eF59D0ceCE0fBA8f724a8032B', '1720858547', 1, 1), - (45570, '10953241712728418', '9341660951401157', '0x621752f25aBd2E13136275F0059e4d9ae4DC08B7', '1720858727', 1, 0), - (45571, '65000000000000000', '55436370141951488', '0x83e5dc06f4179868EBD316aaD6601Be6AD76D741', '1720859075', 1, 1), - (45572, '7419144251261065162', '6327545028452922224', '0x895D0c8b5E056Cb3CF63dbfEb745161dFf9F9578', '1720861511', 1, 1), - (45573, '100000000000000000', '85286723295309982', '0x0EBaC3d0C886482D88E0b1451A25EDD7454b7F77', '1720862495', 1, 0), - (45574, '1055626301043187', '900309082403218', '0x03b24bFDEc2EC0d79A6ed7a6A5b54Ae5723b4a93', '1720862759', 1, 1), - (45575, '149700000000000000', '127674224773079043', '0x5903cE9ee0A69F9042b77E6A646Ca0A210A749BD', '1720864631', 1, 1), - (45576, '74058579825744727', '63162136052419166', '0xEAdA0B1F19cBD692f48EFab5209217EE727A0525', '1720866107', 1, 0), - (45577, '244994124084459390', '208947460697681270', '0xA80a4aFAfa2E052bB037525bBfad61553fb955Cf', '1720866383', 1, 0), - (45578, '210000000000000000', '179102118920150962', '0xdC1b8366B1f36a077e6552C7ECcca0d921F0989C', '1720866635', 1, 0), - (45579, '1014222324418069181', '864996987425699790', '0x3fC1832f425f5c491d6A6B6f9DF1783F7E591959', '1720866815', 1, 1), - (45580, '121800000000000000', '103879228973687558', '0xB8B1247A7c9086632E63FDA09575c8d366BEFf20', '1720868375', 1, 1), - (45581, '88930819456312400', '75846181913956849', '0x09ADAD2A62d36C87B66b6d2D21cd3414b3F4e987', '1720870835', 1, 0), - (45582, '1226043961332003461', '1045652720780083106', '0xD52F4117ad6B9f421892aDbC38Da93fb666967fD', '1720871243', 1, 1), - (45583, '307972383536920086', '262638692617348751', '0x146E16Dae4F2078b117816fad8E5DecCaC5EF542', '1720874255', 1, 1), - (45584, '10750014676587153845', '9167607068695795596', '0xfc815d3907e4CB473473dD95BDAB6757467CFCA8', '1720876067', 1, 1), - (45585, '5000000000000000000', '4263997466283585143', '0x22F2Ce07bB8B7032002342ba59E261F6523230F4', '1720876979', 1, 1), - (45586, '1403036450948838760', '1196508774389872412', '0xdb192d6bA2f6e2dEB496e183eDfF4029cDED56C7', '1720880531', 1, 1), - (45587, '17003713658349503', '14500758391322774', '0x0E349adb44fF7F17e989CCa29958e72b2a439aE5', '1720883771', 1, 0), - (45588, '15421080047339359751', '13151089249842275844', '0x22F2Ce07bB8B7032002342ba59E261F6523230F4', '1720883867', 1, 1), - (45589, '63032391696512769', '53753991697544987', '0x800FBC8d5b167EbEC28c59cdeAB5AAA64ef53dd7', '1720883867', 1, 0), - (45590, '9999999999999999', '8527994932567169', '0xCaBE7DdB088e47bf4291b42AffB8fa261b75500A', '1720883963', 1, 0), - (45591, '100000000000000000000', '85279949325671702875', '0x0dCc074BA2956269CfD8D0817D24B933C2c09fc5', '1720884311', 1, 1), - (45592, '761984067673490558', '649819626781644723', '0xa628147e4fFEbA1aa6bF85e8eB295f1212A9ACAA', '1720886375', 1, 0), - (45593, '2001712106777716', '1707059070305871', '0xcB32Aa838cA8daD385674BAf17CF43bBaAa5e1c6', '1720890239', 1, 0), - (45594, '1773978068823977155', '1512847598141617202', '0x7fE133F5bD02f70D675FfD7E1c984Fa6191f2725', '1720890815', 1, 1), - (45595, '132391488079890436', '112903393946033256', '0xb79bDB26EfF06E75566C42f02Ff79D6D23F4b699', '1720890899', 1, 1), - (45596, '8600000000000000', '7334075642007766', '0x499286D307E9d5559c409002F18f3C1C33eC95d0', '1720890959', 1, 0), - (45597, '22272234929468641', '18993750661545409', '0xb12CD6F4f7c2010c1Af497ef233Ef8Db3FC1693f', '1720894619', 1, 0), - (45598, '1000000000000000000', '852799493256717028', '0x801410acf2cd3CD82628279E4580b537ba1A9738', '1720894907', 1, 1), - (45599, '305885100491648858', '260858658694058110', '0x1F603dd09019d400c161640bf276fb3F4740b061', '1720895015', 1, 0), - (45600, '3319435836658138', '2830813199400246', '0x10364bc63464bD9Cd6492e9a1C6DE7BF91e60D38', '1720896335', 1, 0), - (45601, '12613513732482029', '10756798119247315', '0xb069709ab860586352225660809a3bbe5Ef3a3AA', '1720898663', 1, 0), - (45602, '79034957857398734', '67400972010355626', '0x31Cb0b057396a9EC0Bc8A3B6c7f6fD411E502144', '1720898675', 1, 0), - (45603, '4116282663794357796', '3510363769785237639', '0xf2Fa3518F7b98ff9B766717fcF1B105FCDF91f1e', '1720898807', 1, 1), - (45604, '704631822218596540', '600909660920576252', '0x74a1062DbcF45d8F5DCE5c27Ef79a28eB0e80e3f', '1720900463', 1, 0), - (45605, '23736967580656736', '20242873924235184', '0xa7A556Cf55d2fF1E75417c4E0540C18e24EB7813', '1720900787', 1, 0), - (45606, '3744590843978919652', '3193385174198965017', '0x4AB276498551CcA1210BdEE07c682AD49D862Cd5', '1720902359', 1, 1), - (45607, '690000000000000000', '588431650347134749', '0xbBD42e41e04630508e97dC77ECE95F58D10FbE7D', '1720903055', 1, 0), - (45608, '115100000000000000', '98157221673848130', '0xbf7325a7c62B510eb2dc2Dd80EC3A7DAB44E43df', '1720903247', 1, 0), - (45609, '148163442830000000000', '126353708964594564003', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1720916531', 1, 1), - (45610, '600000000000000000', '511679695954030217', '0x760A3B0f719603b86D4c3CFC25374292153dCce4', '1720918211', 1, 1), - (45611, '7500000000000000000', '6395996199425377715', '0x39D83133E87c1Cfe99475065834b903f18D4c051', '1720920071', 1, 1), - (45612, '1e+21', '852799493256717028756', '0x98078db053902644191f93988341E31289E1C8FE', '1720922411', 1, 1), - (45613, '908151356714677998825', '774471016806677461013', '0x98078db053902644191f93988341E31289E1C8FE', '1720922423', 1, 1), - (45614, '1080000000000000000', '921023452717254391', '0x519cB35a549370c5a7c777886B2C62f2fd9107B5', '1720923791', 1, 0), - (45615, '2129157586614556', '1815744510928587', '0xFb50040DFA0baaF59ae69bb3Cf4067437652f66d', '1720923923', 1, 0), - (45616, '1e+21', '852799493256717028756', '0x18818d5bA213713E4cb748C8b3e429F666D3b32E', '1720924319', 1, 0), - (45617, '93513248355945480852', '79748050810739832873', '0x18818d5bA213713E4cb748C8b3e429F666D3b32E', '1720924319', 1, 0), - (45618, '15133853757391497972', '12906142815324732443', '0x85636Dda5e73E06b8244016b19eB824B3a7D155B', '1720925363', 1, 0), - (45619, '92067323689550921', '78514966987951164', '0x621A3497fd4279D38A1974e0c1A0870A40113b3a', '1720926911', 1, 0), - (45620, '4000000000000000000', '3411197973026868115', '0x6Fc1e8e1f70Fa2ef3769fC38C1971334768E1fBf', '1720931735', 1, 1), - (45621, '686899715893159819488', '585787729631869590345', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720932035', 1, 1), - (45622, '992775870174445586', '846638759002263488', '0x6c904b3Bb57865516a0d054CCfE7449e01B85421', '1720935371', 1, 0), - (45623, '36030657079642937359', '30726926099226040830', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1720935635', 1, 1), - (45624, '5000000000000000', '4263997466283585', '0x8E4D3a9782b50720ce7D26CA107E10591142C0c2', '1720937771', 1, 0), - (45625, '955129800419549480', '814534209792181068', '0xcCc8Ef8b502BC0c5b37B3A375a90f0974106946a', '1720938659', 1, 0), - (45626, '500000000000000000', '426399746628358514', '0xd44Af1e25eb01daBA040A95784231CD52B6660De', '1720940867', 1, 0), - (45627, '10515810927013739343', '8967878229740764651', '0x86fCa688906A34503272Afa81405D548698Dae7a', '1720943987', 1, 1), - (45628, '13012211842440893', '11096807665382645', '0xcb802DbfcC930797661347dF7875057f45A7e5f7', '1720944635', 1, 0), - (45629, '4952896596437396454', '4223827707594730200', '0x8B56d4413ca28876c8881c32e9CECEa001BD8EfE', '1720945691', 1, 1), - (45630, '13900906247055763', '11854685803298286', '0x64E74C99e3c2C2e5bBABdCf4651C887BF2Ef5CAD', '1720946483', 1, 1), - (45631, '1001046943518260814', '853692326158558255', '0xfF53878DCe3feFA9163510a82D6d6b0644101412', '1720949723', 1, 1), - (45632, '100000000000000000', '85279949325671702', '0x84d203faa11abB3BcB72cC1fbf97b84523E0cefA', '1720950491', 1, 1), - (45633, '3513871825893680337', '2996628112491185597', '0x45Bf9aa6e4363ee50f917bA6f8cB2DDC1e9B94E2', '1720950503', 1, 1), - (45634, '5000000000000000000', '4263997466283585143', '0xe8b247D7a20cdeb0032930fd510Fe16d8EbA75D8', '1720956779', 1, 1), - (45635, '271048243869317049623', '231131374405612053733', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1720960103', 1, 1), - (45636, '722111821934244089486', '615767493991485685608', '0xeece3eC3e2E6849D7592F35096b81a3743766e69', '1720960127', 1, 1), - (45637, '755090642372496692939', '643889572870713878363', '0xF23E48B2D068aae4751FB4Ee0b23B4e246C23BDc', '1720960151', 1, 1), - (45638, '1e+21', '852731495715019358225', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720960427', 1, 1), - (45639, '728064735090114818210', '620843730530752948284', '0xCdd03A39690f1a8f63C05a90d114E9AC05A4C442', '1720960427', 1, 1), - (45640, '32249307241714018118', '27499999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1720960859', 1, 1), - (45641, '262699758668880', '224012358133688', '0xb8c462932FF25C32c835469dF69Ae438D09795fD', '1720961363', 1, 0), - (45642, '51011217515977387461', '43498871810643592006', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1720961423', 1, 1), - (45643, '149642890725456453', '127605206031437679', '0xA47F8FeA19FAf6c15FA248D05Ecf0e4aa536184d', '1720962167', 1, 1), - (45644, '5796429711918761', '4942798178051463', '0x5a8f7f757410b10cA323A1F1544a3556b556d783', '1720963823', 1, 1), - (45645, '34002711189195349', '28995182770728374', '0x23fB43dC92295bf3dB6dcC821B72bcdED9E7A9fB', '1720964363', 1, 0), - (45646, '400000000000000000', '341092598286007743', '0xd5b5343f30d4c8A82e11C4482dC107495ec01cfa', '1720964999', 1, 0), - (45647, '1032100418856226290', '880104533899367813', '0x9793590Be0Dd452370DDF90e07Ca2DFc37bDb831', '1720965467', 1, 1), - (45648, '47440076576743715', '40453647456121723', '0x6f713118FbE570C9212ED38888cb7A96B05385b1', '1720965899', 1, 1), - (45649, '1000000000000000000', '852731495715019358', '0x8C7488700a1c5BBa0878A07523BcDaA72b5a6C47', '1720966787', 1, 1), - (45650, '1100834031927676269', '938715850579682759', '0x10385026D52f67cA2FF5d4FcC1CA0Ad4D12A13d2', '1720968107', 1, 1), - (45651, '20090104079439017080', '17131464500730445121', '0x203A1cb9801442D2601791529235c4D86953c6f9', '1720968263', 1, 1), - (45652, '900000000000000', '767458346143517', '0x8CB425Cf3391a322d6DA3eCD3FA09ae5A1b8a583', '1720969067', 1, 0), - (45653, '1004935157268988937', '856939859754593144', '0x0350f4BcEf4d7D538edffe57164f78064b1B041c', '1720970843', 1, 1), - (45654, '191030403254252535611', '162897641494042066135', '0xBe9e5C3B3929832E8f5Ab954607ddc56A95Fd49B', '1720971119', 1, 1), - (45655, '40999999999999999', '34961991324315792', '0x492dC8dc8d7797f0c572D370Fd24904b47385032', '1720971923', 1, 0), - (45656, '1059396625900212159', '903380869359332730', '0x0031AEB045837F8FAcCcc3E5ddFb22960efb38b9', '1720972523', 1, 1), - (45657, '51360734783935527201', '43796916193327763716', '0x35cf0e0d31E21c6eA896944b8d3Ca48cA660Bd6F', '1720973039', 1, 0), - (45658, '12281605223410852223', '10472911591940530500', '0xc038891DEA14cE43fDd8792dB76799ae74a12b7a', '1720974203', 1, 0), - (45659, '1016300564952470569', '866631500847939409', '0x004710e7BbdC771CAAdFd0482ae7B970517E97c5', '1720977155', 1, 1), - (45660, '11355300096627119164', '9683022035689747169', '0xd3d952259DFc6278c3f5C44997442BD1043B48c5', '1720977395', 1, 1), - (45661, '578106535767412527004', '492969650927574020623', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1720977959', 1, 1), - (45662, '9066797532893396794', '7731543821569433676', '0xE42FD2B5A3c56d7184ef8650D0B5DA56DEB744dE', '1720978379', 1, 0), - (45663, '10003249900506149715', '8530086249669727627', '0x2bb18DBc1B629190A2e2755f24574a391B36D6cD', '1720978751', 1, 0), - (45664, '999999999999999999', '852731495715019357', '0x4D55F6E438E146b2a4819bE692A7f96CDee5caC9', '1720979459', 1, 1), - (45665, '34000000000000000', '28992870854310658', '0x0688547A2b5f07327a7A2644FB649CAA29C730eb', '1720981235', 1, 0), - (45666, '31302495888876899', '26692624138935242', '0xaB5a04D29802eadb94D1d1c6A0797a55FF338b86', '1720981679', 1, 1), - (45667, '526646409864950076', '449087980797084004', '0xC336CaF72CD88df3071c5f0d3174DC935077e0A6', '1720982159', 1, 0), - (45668, '131572989400734845', '112196432047385012', '0x982dEF89D5fe10671568Cf6226a6Dc7B354aE699', '1720982747', 1, 0), - (45669, '188029170736363104462', '160338396000073657918', '0xf232421DaA5E7f899b6924dDEc516B3a52dA7a7b', '1720982927', 1, 1), - (45670, '4733720840318482', '4036592852462137', '0x546e592a069da0b69BaBEd1dAf266acA7067451e', '1720984643', 1, 0), - (45671, '1812938519218809998', '1545949775132828218', '0x55925287d79e7892b052BDa17EF481A34f65d142', '1720985159', 1, 0), - (45672, '307102171700666547876', '261875694211640075585', '0xC5d49B440AA8c92e6d3D25c259508b96885a59AD', '1720985519', 1, 1), - (45673, '291078161723132691492', '248211516216145236487', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1720985543', 1, 1), - (45674, '270305302543680989', '230497844937773916', '0xdEf8E17540E797c12bbAd9b18f633953Ca1E4665', '1720988351', 1, 1), - (45675, '155385156534290266261', '132501816943397752415', '0x33A0cb590F11429Eb1080d84e4B355D8db37d6b5', '1720989503', 1, 1), - (45676, '2283244188842759823', '1946994232234512698', '0x9F041636FE40FF29Da4dd05dE0bE5DcB365C2988', '1720990859', 1, 1), - (45677, '1091353682384285546', '930631657933645987', '0xaAE1478eE9f89f07c789E7D2C3647E606Cfb0386', '1720991627', 1, 0), - (45678, '1481229864850668944', '1263091358151866907', '0xA19eBb901189d4F80E5d78c40Ac0257578f7Ae3f', '1720991867', 1, 1), - (45679, '2000000000000000000', '1705462991430038716', '0xcC39E82439e2211a1380548FBb1CF1fa648AF6E5', '1720991927', 1, 0), - (45680, '335595185622594406', '286172584590714487', '0x6fD2Dd2629893f2bD01a59E60d6C465047887C21', '1720994003', 1, 1), - (45681, '1002457737922668500', '854827286249891992', '0x6aF6855E83e1659aBE6C0a41338d678e31Dc4fBE', '1720995695', 1, 1), - (45682, '32000000000000000', '27287407862880619', '0xaB71deb4ffB482e5146d96f626edA5a835fCfb75', '1720996391', 1, 1), - (45683, '337869403855910369152', '288111882106392377981', '0xb4994b37012C29c2078D599451e368518d11CD69', '1720997075', 1, 1), - (45684, '44070210560768776', '37580056567960200', '0x4682454C09cb7B117fC64eC7aCb0b2ed7Ac62637', '1720997339', 1, 1), - (45685, '512060838748105807', '436650404922759605', '0x5cc628f8BE5Ec4D07e6B6F63241640CE80B7c194', '1720999235', 1, 0), - (45686, '390753481650212', '333207800863436', '0xf8e3540c98E600Fb3012208eF81dcc9233CCDe31', '1721000267', 1, 0), - (45687, '2014524200000000000', '1717848234220102800', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1721002931', 1, 1), - (45688, '5468748126271061215', '4663373769403831580', '0x820960ffd6fDD7E37456E7c32cb3c29e364A8d65', '1721004251', 1, 1), - (45689, '10318392189757504', '8798818005346090', '0x2938b282366647268A7F56C20630f565AEE2e64e', '1721006795', 1, 0), - (45690, '260776550559779193196', '222372378006243880105', '0x251c1FAe4e0438bC065E6c4d69b0F35A94649Df9', '1721007167', 1, 0), - (45691, '51526597252163685', '43938352343942945', '0x589e615B0EcbcB9CFeaead59e0B8821e0cFf85e1', '1721008139', 1, 1), - (45692, '46580043915955971', '39720270518924422', '0x137935F6fe4728C497123dC4B28dF15d8225Ce06', '1721008295', 1, 1), - (45693, '41142830666801856', '35083787532451713', '0x8F8DAe9050cb2CAD5e6cA1BFBBb736243c1c37e0', '1721008403', 1, 1), - (45694, '1789688382400000000', '1526123651187745526', '0x263dda9b18a825a2554d53B050Ed188Dd13E0C8A', '1721008583', 1, 1), - (45695, '117270208151687', '99999999999999', '0x01D03f08E1C4930DCd4788B9eB532F919244E281', '1721008799', 1, 1), - (45696, '1e+21', '852731495715019358224', '0x98078db053902644191f93988341E31289E1C8FE', '1721008811', 1, 1), - (45697, '613127153137693443811', '522832834358597054739', '0x98078db053902644191f93988341E31289E1C8FE', '1721008823', 1, 1), - (45698, '1103398362462639705', '940902535992269826', '0xf2e5b119B66830BF1c6E06Bb6d12278A9d83D2fF', '1721009843', 1, 1), - (45699, '8000000000000000000', '6821851965720154865', '0x9BdFCD5334b0De6A05ec570A8BE5436B3b6C4FF7', '1721014655', 1, 1), - (45700, '9157667008672318', '7809031085565232', '0x55817E849D991895699476172ef4380f1FDD231E', '1721018927', 1, 0), - (45701, '285000000000000000', '243028476278780517', '0x959D654e9f93BeAf62D7a01A89327E6B4cba207D', '1721019395', 1, 0), - (45702, '1172702081516873', '999999999999999', '0x01D03f08E1C4930DCd4788B9eB532F919244E281', '1721020151', 1, 1), - (45703, '1910215405421552466', '1628900839802992532', '0xA49B2a68896D150cEb6105bBD4d7893F1D0C2182', '1721021879', 1, 1), - (45704, '22103529136417884', '18848375461078132', '0xBe042EF3fAb06B43a1874A79D18D20B7F1468deC', '1721022443', 1, 0), - (45705, '101031037400815491', '86152347636437455', '0x735402e6D3706074868E74b7E062A94F4EBFf5A9', '1721022455', 1, 0), - (45706, '6116810000000000000', '5215996540304587560', '0xaFBe28A3E5A057120737EAE5a204680fc0CE60F5', '1721022503', 1, 1), - (45707, '43642450000000000', '37215291665167946', '0x3b1A4c643f9672D2BDbd6e3691d2c5B73C6786E4', '1721023127', 1, 0), - (45708, '50274393528965973', '42870558790120644', '0x98780411E33E19F5a5c0D8cEA44d1A1E9a2f949F', '1721023139', 1, 1), - (45709, '1010654892629491180', '861817258243648307', '0xAbeD7E7a43147dCEfc5Aed0009070b35aFa54Ed4', '1721024135', 1, 1), - (45710, '988034314914608758', '842527979174898785', '0x61d587b771DC5361CD38CB19d245Fd72717E2B5C', '1721024987', 1, 0), - (45711, '6309584810975751', '5380381693204119', '0xa5D966d7362B6584afB62eFA1f8961900De09745', '1721025299', 1, 0), - (45712, '1017224444291737767', '867419321858772931', '0x1D3874597aF72D186aD5c40de7a34592e118B087', '1721025515', 1, 1), - (45713, '2520096787752122', '2148965903166482', '0x67Efc95038065094744aC0884a2d8BD1770C1b28', '1721025923', 1, 1), - (45714, '1e+21', '852731495715019358224', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721026031', 1, 1), - (45715, '4843595315', '4130286277', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721026031', 1, 1), - (45716, '100865616765886008', '86011288250991909', '0x136a504298D353a0Cf08035783249cD5aF25Ca4A', '1721026283', 1, 1), - (45717, '20189473544346483', '17216199973169389', '0xcFEd1d42266497a9E90Dfbc98fF5227C44DD0f83', '1721026871', 1, 0), - (45718, '30000000000000', '25581944871450', '0x6e2f4ad2415Db937809101938b9f10FA0C9BdfA5', '1721027807', 1, 0), - (45719, '5000000000000000', '4263657478575096', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721029079', 1, 1), - (45720, '1e+21', '852731495715019358224', '0xEF40163e587990Aa684e0B0016ac88d72dA1b44c', '1721031623', 1, 0), - (45721, '717000000000000000000', '611408482427668879847', '0xEF40163e587990Aa684e0B0016ac88d72dA1b44c', '1721031623', 1, 0), - (45722, '6608415221600483', '5635203796221280', '0xB6705FE63bC63da67BaaC93E33f1387CFd8c37D0', '1721031863', 1, 1), - (45723, '122578179235447745', '104526274121467083', '0x5aaEbEefE4A2Fac78Bf206B77697E31A6e4550f0', '1721033651', 1, 0), - (45724, '29000000000000000000', '24729213375735561388', '0x81134EfF2e13f8c7ED87b0F16EdAC8F9230cAF43', '1721034335', 1, 0), - (45725, '100000000000000', '85273149571501', '0xDEd7a36D8752804219AF1F4cb642E9593Caf9E50', '1721034371', 1, 1), - (45726, '54037226782734849', '46079245218733191', '0x5f5Ec02190994449946763130B4B7128632C37E2', '1721039195', 1, 0), - (45727, '999999999999999999', '852731495715019357', '0x35e36c6bb97aA3dfD350bbA0A01DCE2F096667F9', '1721039291', 1, 0), - (45728, '7488187154166726', '6385413032166586', '0x78895877DBadc1b263f032328b9dC1E0680E2901', '1721039507', 1, 1), - (45729, '62000000000000000000', '52869352734331200209', '0xFF4606bd3884554CDbDabd9B6e25E2faD4f6fc54', '1721042339', 1, 0), - (45730, '100000000000000000', '85273149571501935', '0x32ac1960214711a4a9b3EF48663d7c376C10ebf3', '1721042363', 1, 1), - (45731, '134086776473349711', '114340017457724967', '0xeEa4b0DC4Eac5D2f12F4E6FB992b80dec416F878', '1721043143', 1, 1), - (45732, '456066187806682530', '388902002473439317', '0x25cDf2262fD0c4b7b1Dc8CC45fe654660d9cFc77', '1721044955', 1, 0), - (45733, '5840034737906559807', '4979981557082731804', '0x6CB1360813BCC335F1cD872215601605bf940DE2', '1721045051', 1, 1), - (45734, '52537053251955927698', '44799999999999999999', '0xeF252a21258FeFFB3f252e5B7B50a8AC3f5eCe77', '1721046191', 1, 1), - (45735, '3330000000000000000', '2839369117515924298', '0x5B2a79478Cb51D72091277d1B3851cadD1d047D9', '1721046467', 1, 0), - (45736, '9999999999999999999', '8526633986534307202', '0x3012c85B0ccDFBf89a92d822454Bdd83F9a797d1', '1721046479', 1, 0), - (45737, '4999168057982655639', '4262607626759162167', '0xaacDdA4223062cc243F29CDf129626488Fa661Ce', '1721046911', 1, 1), - (45738, '34597474274828608818', '29499999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1721046935', 1, 1), - (45739, '240978862537622877', '205473855934967416', '0x3741d1989a0d91Fa5CE57567a8A0D432ba9CBaB4', '1721047907', 1, 0), - (45740, '400291000513745873', '341313484948432738', '0x19689C52C596Ef5DfEe78576ce32bc92b7Fad47C', '1721049191', 1, 1), - (45741, '915239739371908614', '780391426755531746', '0xF147d29004ad0175Bdd5467E3a409D98b982509c', '1721049443', 1, 1), - (45742, '3375119362988402680', '2877840746906693540', '0x31FE438C5229D07c966781E82dc79DCF44549c96', '1721049683', 1, 1), - (45743, '10614391287268673', '9050502949639870', '0x1d7ad01BA1b4E1dAa20bD4C0DE4D495CCeeb2442', '1721049803', 1, 0), - (45744, '291850269113980219471', '248850042360644754816', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1721049971', 1, 1), - (45745, '115730350525967641429', '98679034006824422687', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1721050835', 1, 1), - (45746, '307111997675453830404', '261863159705196978089', '0xC5d49B440AA8c92e6d3D25c259508b96885a59AD', '1721051039', 1, 1), - (45747, '1279112517722602847', '1090652426621501178', '0x0dA003919dF21e0E97E13530a85e1AedA05ea817', '1721051123', 1, 1), - (45748, '940955486851659640', '802318303400529652', '0x5eA1675EcE0F892aF595ee0B03D1A58c3443AF2e', '1721053667', 1, 1), - (45749, '27936059297026372296', '23820055265186277247', '0xc6A7949B268AC3133b28493CF16081eE6267B47A', '1721054171', 1, 1), - (45750, '80000000000000000', '68213071892274457', '0xe3b0Ae620a61Cf432E315DF94AF43c43F070F52a', '1721055503', 1, 1), - (45751, '2000000000000000000', '1705326797306861440', '0x236EcbD3c99E11ba232e928Ea7FDF2aC6E9d0ea4', '1721056079', 1, 1), - (45752, '500000000000000000', '426331699326715360', '0xd06844Fa859e78936B8D647Ba886C1056BFC0229', '1721062751', 1, 1), - (45753, '500000000000000000', '426331699326715360', '0xC815d3B4BB790218aeB861dF30c843a8D82922F5', '1721064167', 1, 1), - (45754, '21297793250507568402', '18159848776795880883', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1721065235', 1, 1), - (45755, '602748127093424107', '513941266579469005', '0x5D9AEfc522C4962D81072Fc1767D71DBA59F8FF9', '1721066111', 1, 1), - (45756, '1254666679081281031', '1069808354762658353', '0x5fD068B0252fb184F9F10D284637Ce5e60256F60', '1721066675', 1, 1), - (45757, '100000000000000000', '85266339865343072', '0x15A09771b65AfB8BaDd427756F2f161828A6C139', '1721068055', 1, 1), - (45758, '450000000000000000000', '383698529394043824151', '0x4B4EEC1DDC9420a5cc35a25F5899dC5993f9e586', '1721068199', 1, 1), - (45759, '1000000000000000000', '852663398653430720', '0xF17ab6072B3e689f1F35d8A4903C6ed620936e03', '1721068307', 1, 1), - (45760, '3072180478095373492', '2619535847729522832', '0x3a3A023D500DCF49d0c7719cc27054b86Ed65D86', '1721071703', 1, 1), - (45761, '492574195238267854892', '419999987400839999999', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1721072435', 1, 1), - (45762, '1000000000000000000', '852663398653430720', '0xd05A5A6475a62328372A5589E577124E4BA22CB8', '1721073899', 1, 0), - (45763, '523457949615351496', '446333434371181904', '0x49790b3E000F776fC2F651f939BE0988C56b3927', '1721074103', 1, 0), - (45764, '578157911026251393631', '492974089374011320765', '0x1c23BdE5D2d259b5929458078F0d0582675d97ee', '1721074163', 1, 1), - (45765, '482194046967780106', '411149214897999385', '0x009F0C2F1FeF3e6232dD2B8DfAAD41C00e096c52', '1721074283', 1, 1), - (45766, '347502967418367149', '296303061241097335', '0x7CEC905a97dE49148C93Cb2759b7c84A01c2d7fb', '1721075099', 1, 0), - (45767, '93589097095270892431', '79799997606159600001', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1721076035', 1, 1), - (45768, '250000000000000000', '213165849663357680', '0x9B7e69A14eCeDb17De6A0CB4Dcb35D8aBa9361Ec', '1721076563', 1, 1), - (45769, '272069296814660703218', '231983531291237608021', '0xe54fd9A5a2320DE0fe9926370aA8854714C260E6', '1721079251', 1, 1), - (45770, '3716852518208790589', '3169224100469469875', '0xB7C484d9eca2fd5A9B670c25b33F45Daf7d9b85F', '1721079707', 1, 1), - (45771, '51008999982389924606', '43493507286897380877', '0x2aC5770d6780A5c17e97F9b8763290E0552060fA', '1721080019', 1, 0), - (45772, '172786114065786612470', '147328395259452963509', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1721080943', 1, 1), - (45773, '9076800000000000000', '7739455136897459962', '0xc0Db3e82B35bA6cE03cb72a49845384043603Bf5', '1721084531', 1, 1), - (45774, '1000000000000000000', '852663398653430720', '0x6B6Ff6fB90217F075ac961eF8b5c62425B7dFa56', '1721085731', 1, 1), - (45775, '1000000000000000000', '852663398653430720', '0x92371A15f005DAFf7280A01cA9b7808B8b1Db373', '1721085875', 1, 1), - (45776, '5000000000000000000', '4263316993267153601', '0xd03DA3272d6197Be9E13874bA6fAA1A87a9b01C6', '1721086535', 1, 1), - (45777, '7509999999999999997', '6403502123887264707', '0x062096405Ce4D6E03034a8E33C72a03a2824C474', '1721086679', 1, 1), - (45778, '4527281347584379762', '3860247100491581051', '0x709a0845b69b821bd64C0cd68111e84Ce8a017fF', '1721086763', 1, 0), - (45779, '1e+21', '852663398653430720336', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721087579', 1, 1), - (45780, '1e+21', '852663398653430720336', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721087579', 1, 1), - (45781, '500000000000000000002', '426331699326715360169', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721087579', 1, 1), - (45782, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45783, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45784, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45785, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45786, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45787, '1e+21', '852663398653430720336', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45788, '285492668686160944438', '243429149172579866609', '0xD104C38c7A1659687c54d93B556f44C847824c21', '1721087771', 1, 1), - (45789, '1000000000000000000', '852663398653430720', '0x872c195AD16Dad7Be186d64285A3eFB46387577b', '1721087939', 1, 1), - (45790, '1e+21', '852663398653430720336', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721087975', 1, 1), - (45791, '97116329999999999', '82807540002548132', '0xf2e4ee37f4dF6A2f1048744E4bde06E108A1615D', '1721087975', 1, 1), - (45792, '10243826080406817', '8734535560934328', '0x036723fc13e14E82319c4cDA49A3e7a1f01BD241', '1721089031', 1, 0), - (45793, '8970376110000000000', '7648711381152141103', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1721089343', 1, 1), - (45794, '40000000000000000000', '34106535946137228813', '0xeA6421ba4e53Bc5af2b342220Cbe6c591ad470B5', '1721090303', 1, 1), - (45795, '10000000000000000000', '8526633986534307203', '0x823F7ed4C1fD41D5B9B8518Cc23434A13699C953', '1721090339', 1, 1), - (45796, '153109280031792081', '130550679077287690', '0xe319bC0439a57b69f2B007ea6288C87aaCEBD7a7', '1721092439', 1, 1), - (45797, '81126173683415312394', '69173318972649410619', '0x9C7c2B00Ea7800fbe32FD50d844645Db07C27a74', '1721094827', 1, 1), - (45798, '1e+21', '852663398653430720336', '0x98078db053902644191f93988341E31289E1C8FE', '1721095211', 1, 1), - (45799, '1e+21', '852663398653430720336', '0x98078db053902644191f93988341E31289E1C8FE', '1721095223', 1, 1), - (45800, '1e+21', '852663398653430720336', '0x98078db053902644191f93988341E31289E1C8FE', '1721095235', 1, 1), - (45801, '1e+21', '852663398653430720336', '0x98078db053902644191f93988341E31289E1C8FE', '1721095247', 1, 1), - (45802, '1e+21', '852663398653430720336', '0x98078db053902644191f93988341E31289E1C8FE', '1721095259', 1, 0), - (45803, '946891169377884749726', '807379442636668535640', '0x98078db053902644191f93988341E31289E1C8FE', '1721095271', 1, 0), - (45804, '400000000000000000', '341065359461372288', '0x345609f938925bA089A2dE9d17021703F7E22b43', '1721096147', 1, 1), - (45805, '331455479329885715', '282619955507722309', '0x5b76699338EC9592D6F1469CB371C52f9Ec6D8BB', '1721098271', 1, 0), - (45806, '28656469370092097', '24434322566510664', '0xe38EA053b8C1A5033c6259868E0ffF1795Fb51A1', '1721098319', 1, 0), - (45807, '323124969066099193', '275516834313684805', '0x30E6f0Ae670b6E36b833b4a7dad4246382d19043', '1721099627', 1, 1), - (45808, '100276190344203866', '85501837262907201', '0x4CDD7811CCEdB0fFd3808B586bcafD6AB0ACb313', '1721100515', 1, 1), - (45809, '5000000000000000000', '4263316993267153601', '0x5a6b14EDfcdd1A0710AEEedF8d83295FD892996A', '1721101067', 1, 1), - (45810, '1405687304439254734', '1198578114447154693', '0x3A103E1C1aA03d1c4A25441Cc590F6316016d26c', '1721102963', 1, 1), - (45811, '100000000000000', '85266339865343', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721104547', 1, 0), - (45812, '100000000000000', '85266339865343', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721104571', 1, 0), - (45813, '100000000000000', '85266339865343', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721104595', 1, 1), - (45814, '100000000000000', '85266339865343', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721104643', 1, 1), - (45815, '100000000000000', '85266339865343', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721104679', 1, 1), - (45816, '26499286775810174', '22594971924154215', '0x96eD5d93645fF96431F472852E0D1339D8774945', '1721104931', 1, 0), - (45817, '500000000000000000', '426331699326715360', '0x03905Ab84D6FB67175Ec37BCf1317a332613E32c', '1721105291', 1, 1), - (45818, '1000000000000000000', '852663398653430720', '0x009F357148910bbEDCe6Dc758E2566DF484EEf73', '1721107427', 1, 1), - (45819, '4114397324997578', '3508196006543018', '0x6aF6855E83e1659aBE6C0a41338d678e31Dc4fBE', '1721107511', 1, 0), - (45820, '2062758983995817513', '1758839085896771467', '0xAa4D0F9506B8514289c28ceeE60C418EF97b5151', '1721108279', 1, 0), - (45821, '693169900000000', '591040602778258', '0x263dda9b18a825a2554d53B050Ed188Dd13E0C8A', '1721108447', 1, 0), - (45822, '2600654066424847034', '2217482534999675043', '0xafdbb4bB7FADB800c9bB88952eA5Af43413bc1B6', '1721115275', 1, 1), - (45823, '20000000000000000', '17053267973068614', '0xbD1B054806563FB22FDA2c96f40A7cc2Ef22c6C5', '1721115767', 1, 1), - (45824, '1000000000000000', '852663398653430', '0x5caf809086b2d77EC6cb54932E48B3BbB6546C53', '1721115767', 1, 0), - (45825, '10041958177181535460', '8562410188491218053', '0xab76d13e0bBcC66eB6762cF13CE2612A41c9bA8b', '1721116235', 1, 1), - (45826, '1e+21', '852663398653430720336', '0xe2E2407d5fa336e9703a27ABE7daFAa17E8Ba756', '1721119043', 1, 1), - (45827, '506160853944672598192', '431584833989787292970', '0xe2E2407d5fa336e9703a27ABE7daFAa17E8Ba756', '1721119043', 1, 1), - (45828, '1002661042405083', '854932372114509', '0xE2448D1de45447B8A4CAd8586f712FF3CA4Fb1BB', '1721120183', 1, 0), - (45829, '286648365612629298', '244414569641715696', '0xFB60b30DB73c67f114624E7996c0Fb32f201b34b', '1721120447', 1, 1), - (45830, '1000000000000000', '852663398653430', '0x5caf809086b2d77EC6cb54932E48B3BbB6546C53', '1721120627', 1, 0), - (45831, '223365033979600809', '190455189013385463', '0xe8F9D64a031504a0c17222402f35c999be83209b', '1721121167', 1, 1), - (45832, '213212077889618954', '181798134967322487', '0x9729dCB1137eCB055Ad095024F1A2Ab82779d34a', '1721121167', 1, 1), - (45833, '203059121799637098', '173141080921259511', '0x4a4962BC7DcECd297DF66625c7EC7Be716EE68d3', '1721121167', 1, 1), - (45834, '223365033979600809', '190455189013385463', '0x62497c0d9C8B81a81179f300c168ebE126b0934F', '1721121167', 1, 1), - (45835, '374323730578159287', '319172144311404427', '0x868F5eec91e6a3aA3884BA5184d4f5BbfAaB503F', '1721121167', 1, 1), - (45836, '351523438963499983', '299731170172959707', '0xc8752A7E3526a7C2aE106a11b1cB20552902faC5', '1721121167', 1, 1), - (45837, '1475852271127153', '1258405213409662', '0x01D03f08E1C4930DCd4788B9eB532F919244E281', '1721122619', 1, 1), - (45838, '142141385259745968', '121198756644881657', '0x62fBd37A66a1fa218f1625658d5e9AE385679f60', '1721122703', 1, 1), - (45839, '203059121799637098', '173141080921259511', '0x49190fC3830d46B5dB47C657D9730bd43D3f2d63', '1721122715', 1, 1), - (45840, '213212077889618954', '181798134967322487', '0xEc495125d0763628B080C0Bfb260A9d997599A6C', '1721122715', 1, 1), - (45841, '248747424204555446', '212097824128542902', '0x4e4457C92859FD18Dd08466a2f4f9af78D80C886', '1721122715', 1, 1), - (45842, '50000000000000000', '42633169932671536', '0x19778bbc678Cff63e485750bfFF5A9f609473E1f', '1721122739', 1, 1), - (45843, '43000000000000000', '36664526142097520', '0xA66B4dAD8a2cc4fbEc29CF83D7DA4dd2c7564582', '1721123135', 1, 1), - (45844, '188790724258618126952', '160974940580596021856', '0x37728038E40C06420E4e6bfA1B25808EeA3e9Cc1', '1721124371', 1, 0), - (45845, '223365033979600809', '190455189013385463', '0x7257D5F701aa5F7D13455B1b14544B50B21dd2b6', '1721124695', 1, 0), - (45846, '213212077889618954', '181798134967322487', '0xD7ad86f299F17F4eC98Ced4DF743466394ed7F4E', '1721124707', 1, 0), - (45847, '253823902249546374', '216426351151574390', '0xAC7cB74458e93190e43Bb39F004fd0b67A815e7A', '1721124719', 1, 0), - (45848, '324092419159989869', '276341743598769210', '0x14e2Ba7F7b6d4018d7287865904982A1Af3C0E0B', '1721124719', 1, 0), - (45849, '262118633677985536', '223498965042264752', '0xFE25FE4718A4bEe2AD781FDD26552c6Ed7b8fD03', '1721124719', 1, 0), - (45850, '314741638789437503', '268368675427952243', '0x45Fe9783ec417BC07AbDDFEE2a3E2D5De84036fE', '1721124719', 1, 0), - (45851, '284282770519491938', '242397513289763316', '0xff1f92ed2f69e92f1B6fCd38bfAb77A0747B54CE', '1721124719', 1, 0), - (45852, '192906165709655244', '164484026875196536', '0x1835a02af76CDc44989680CBa88d494D4accFC6d', '1721124719', 1, 0), - (45853, '324894594879419358', '277025729474015219', '0xB9D7C460B6A602506492b7743C59C6f3050E418d', '1721124719', 1, 0), - (45854, '233517990069582663', '199112243059448438', '0x6D59F6DB50788E20CA660266d100efd89d0E71ce', '1721124719', 1, 0), - (45855, '284282770519491938', '242397513289763316', '0xC3712406dc443f898d2Fd4090CB918eec4D790d8', '1721124719', 1, 0), - (45856, '284282770519491938', '242397513289763316', '0x857D3A66bBC83155483385114d84E76ED9690d48', '1721125175', 1, 0), - (45857, '345200507059383068', '294339837566141170', '0x6CaF9a132f8A7e570b56E05cDD618381EAaE88A5', '1721125715', 1, 0), - (45858, '172600253529691533', '147169918783070584', '0xFC17431c9D93aD9F9262e06327F782C2E830e24A', '1721125715', 1, 0), - (45859, '182753209619673389', '155826972829133560', '0x9fB71949463d941D718D95D9c0ab0EC7d5098957', '1721125727', 1, 0), - (45860, '521563017043993332', '444717694724668567', '0xd00f573CaEDAfAB7cD6E942AE25316B11136Bc60', '1721125727', 1, 0), - (45861, '172600253529691533', '147169918783070584', '0x5CDF857Bab3EC7E289c6B84697d42b4F7784f46D', '1721125727', 1, 0), - (45862, '243670946159564519', '207769297105511414', '0xD3cCA5efB5e3039dfaF7821Ad751F6bcA68f041a', '1721125727', 1, 0), - (45863, '269467206389394238', '229764824025626352', '0x9B766134B57311EbEB846f935DB88cD33a5FA180', '1721125727', 1, 0), - (45864, '203059121799637098', '173141080921259511', '0xCc037F7E123f5375F44E969eaD8A964a16E4DAfF', '1721125727', 1, 0), - (45865, '243670946159564519', '207769297105511414', '0xce3bc169Ac3eaC018071dAc1A40067BdB95883BA', '1721125727', 1, 0), - (45866, '213212077889618954', '181798134967322487', '0xbb0A349a07ed1E3A2fa47d101b26Dec94E41EC15', '1721125727', 1, 0), - (45867, '223365033979600809', '190455189013385463', '0x4cA862AAe6D8b2560600aF1AbA67da64a91B0097', '1721125727', 1, 0), - (45868, '20305912179963709', '17314108092125950', '0x679EF52B954066AA9EB2b7d2ed29Ab49eDB69866', '1721125727', 1, 0), - (45869, '1000000000000000000', '852663398653430720', '0x19778bbc678Cff63e485750bfFF5A9f609473E1f', '1721128343', 1, 1), - (45870, '20061592968926243518', '17105786043286420354', '0xAB2Abbd9369Ed668B89f26b1D325404918f39118', '1721128595', 1, 0), - (45871, '1500587248482149186', '1279495823266789473', '0xD5a5be3eF378814BBEE6b57E7eF3528E5e40964A', '1721130191', 1, 0), - (45872, '136444706509132236', '116341407180346573', '0xfcAF34f30fa2EbCD22DB4F4ABBaD8615D3EAA8bD', '1721131319', 1, 0), - (45873, '177409245873281438', '151270370538854279', '0x20e6fC1d2D43eC19D16ce9275256CA8a5bE047fE', '1721131979', 1, 0), - (45874, '204708990439813161', '174547863523323747', '0x83b541aC1A60B56f218E117121A73A2aa68AAa6C', '1721132315', 1, 0), - (45875, '6379376374918469906', '5439003978839874544', '0x3553180Cad4f4777029f6aAc6e00479678C494c6', '1721133503', 1, 0), - (45876, '37649904731005822292', '32099999999999999999', '0x2735A560ca4a5ec14776a2cEF36280f17a980CD2', '1721133791', 1, 1), - (45877, '183665986020887668', '156592113403549382', '0x139913E3De728a55884F29f58B72839c205Dc319', '1721134271', 1, 0), - (45878, '6983866235366115', '5954387076327224', '0xA70B8ab16Bf8FA2070DAd7a44eDc502c09EAE6Fe', '1721135639', 1, 0), - (45879, '117289422838024368512', '99999999999999999999', '0x8Ce57B3f3CAd1917172B040b10B090F2ccC0FfEe', '1721136215', 1, 0), - (45880, '3128366228339649338', '2667219389987019364', '0x97dfbFA1535f8F074521c1066cC64d52D69DbCc3', '1721137595', 1, 0), - (45881, '2517084967238508439', '2146045999999999999', '0x177dDC2A99214Be2F61d449de756007cc5E5E405', '1721138099', 1, 0), - (45882, '2000000000000000000', '1705183597639475044', '0x54Ac27fe8697f36aD40AC35a59e565Bfc7492C1A', '1721138531', 1, 0), - (45883, '34000000000000000', '28988121159871075', '0x09865E0097b8A5ba2f6efbfCbFb4ea0D7A82ee90', '1721141003', 1, 0), - (45884, '30367100896785663', '25890741178530952', '0x222DE2aA5Da37477C62B10299c8C76cD4C502d2b', '1721141159', 1, 1), - (45885, '30000000000000000000', '25577753964592125672', '0x345609f938925bA089A2dE9d17021703F7E22b43', '1721142203', 1, 0), - (45886, '2000000000000000000', '1705183597639475044', '0x6DcF87Ab9BC1a2c11fEd655E462A0F8Fee0e0ED0', '1721142755', 1, 0), - (45887, '1899999999999999999', '1619924417757501291', '0xE4E83eF0AA0e22506cf920434A3b1d9685DBD171', '1721142911', 1, 0), - (45888, '7916054727892477', '6749163340009334', '0x89F3bC21789e2cB1ba371C7007a32f8dC88aDF63', '1721142983', 1, 0), - (45889, '504344518203504784', '429999999999999999', '0x46099361553BF35f0454f5Aa5A6e702a6aF62789', '1721144747', 1, 1), - (45890, '712653947907896961442', '607602911382781390347', '0x85B78AcA6Deae198fBF201c82DAF6Ca21942acc6', '1721148035', 1, 1), - (45891, '127160281599658729210', '108415813227477406310', '0x399240a799a6968755E7e7A572ac66943ef42A1b', '1721148251', 1, 0), - (45892, '204400620395803976', '174270292623128841', '0xf1c3385b03a135EE96183543e6d09299513CFdc7', '1721148911', 1, 0), - (45893, '5008165048456054353', '4269920447449285313', '0x200E6E8C7a959e4DC1593A8ff35FA2980E88111f', '1721149499', 1, 0), - (45894, '21025848503474493619', '17926465997288604720', '0x95324E99930E5F6c25253d24E2D2e883527874CB', '1721149619', 1, 0), - (45895, '11300518818296564080', '9634729666887762164', '0x6fB6e3B27be466321D57BB053530167A773945f5', '1721150363', 1, 0), - (45896, '169999999999999999', '144940605799355377', '0x22aC3509ea5151E067a8e3805d7089E9278b0a94', '1721150903', 1, 0), - (45897, '1026650708481825484', '875313974304077547', '0x2037290eBba705ddD1D347efCBA46AaAA4Eba788', '1721151299', 1, 0), - (45898, '292101796579117882137', '249043596183867167403', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1721152307', 1, 1), - (45899, '307108000250042138298', '261837762365115827503', '0xC5d49B440AA8c92e6d3D25c259508b96885a59AD', '1721152331', 1, 1), - (45900, '172028800838615405388', '146670344755797479292', '0x0572F08D3BdE65B6eA82b1F44CFA4820972207cE', '1721152595', 1, 0), - (45901, '1067197247336588154', '909883620802174032', '0x531042ddB2da47291f5b9A9f446C9C05124BeA5b', '1721153315', 1, 0), - (45902, '300025193709507521147', '255799019596029216100', '0xF368d43f148e1803eC793670183b0CA6a07d3898', '1721155139', 1, 0), - (45903, '500000000000000000', '426295899409868761', '0xfE98590597174B1bC8ebF2F0C06b0507e355efA8', '1721156627', 1, 0), - (45904, '997933328854061633', '850829771949853081', '0x5c3d91846d085a63617D63608Ea25B89e7d1E9Fb', '1721157275', 1, 1), - (45905, '16000000000000000000', '13641468781115800358', '0xdB4014d967a1af2D894081A9aA661316825e4B1F', '1721157719', 1, 0), - (45906, '4000000000000000000', '3410367195278950089', '0x5007bCaD2eB2FfcAB4bBB405e04DC406cd1c3b20', '1721158019', 1, 0), - (45907, '13753046538145878579', '11725734687209358498', '0x78351B1decb365a30d561A3EA6CC3A7921DBa7C6', '1721161331', 1, 0), - (45908, '2100760000000000', '1791090747288551', '0x76A9b9A1Ab7C55bF20112eeAEB852D83051bb0f3', '1721165255', 1, 0), - (45909, '4000000000000000000', '3410367195278950089', '0x19778bbc678Cff63e485750bfFF5A9f609473E1f', '1721165675', 1, 1), - (45910, '950803386731672158', '810647169817454921', '0x5AcAECFee54Ef590e033025185be3f342798Dd6C', '1721165723', 1, 0), - (45911, '210614652972095056', '179568325835273301', '0xB7015dDb849B0FD6B5646b0a81A656DB60fb2471', '1721166347', 1, 0), - (45912, '350698815205643649', '299002933700130436', '0x95977b5F068f016c23380738e0AAaE9CF3B49Dee', '1721168627', 1, 0), - (45913, '196192317133399027', '167271960579377086', '0x9D0b3e6331489Bc02d037D290d76d59A1E06E042', '1721171699', 1, 0), - (45914, '125477056356492653', '106980709189587651', '0x82BF2348883a9aEF4607A564aC57B1B92318C112', '1721172251', 1, 0), - (45915, '5097354218444834', '4345962402325258', '0x9228aB6d81838D4B309Cda9A4Fbcc3A9752fffF9', '1721173463', 1, 0), - (45916, '2699999999999999954', '2301997856813291271', '0x4d12143c8753A7C905B9064CbB122792fa152b20', '1721175191', 1, 0), - (45917, '21049572870000000000', '17946693197620444972', '0x450671184dA005416D9685cdecb0705A9f35A87e', '1721175731', 1, 0), - (45918, '1014204285760700304', '864702256367402578', '0xC7F7c4009FEdbd880E35232549f044313D2937F9', '1721176547', 1, 0), - (45919, '3250000000000000000', '2770923346164146947', '0xE1d78b2b837367820F981a1C9A9fDaf431c3Cba0', '1721179091', 1, 0), - (45920, '32731576900000000', '27906674027377567', '0x36f7a6b1aE29639d28124e919cbBcDFCFce88E01', '1721179619', 1, 0), - (45921, '264659331348736242', '225646375389047982', '0x3A01dd1a1a00e10f0e800a5dbf1BafCf986bf01c', '1721179943', 1, 0), - (45922, '656800000000000000', '559982293464803604', '0xCC298D2D64118C7B59A1385918982DdF91F7f81c', '1721180243', 1, 0), - (45923, '1e+21', '852591798819737522408', '0x98078db053902644191f93988341E31289E1C8FE', '1721181611', 1, 0), - (45924, '1e+21', '852591798819737522408', '0x98078db053902644191f93988341E31289E1C8FE', '1721181623', 1, 0), - (45925, '1e+21', '852591798819737522408', '0x98078db053902644191f93988341E31289E1C8FE', '1721181647', 1, 0), - (45926, '508009597649247160862', '433124816677462739162', '0x98078db053902644191f93988341E31289E1C8FE', '1721181659', 1, 0), - (45927, '1029391011726953038', '877650334377152413', '0xB25f71F036Bfe7064D638E049c02de80D2e10C5F', '1721184107', 1, 0), - (45928, '316233815325023360', '269618357455590345', '0x34B8217f061A9A7B5ae7cc258AaA5b5b99751b81', '1721184455', 1, 0), - (45929, '30461426176209300', '25971162138188925', '0x58bc7b2E1BF81fB8A6ba1A8ec910820aC69B4d99', '1721184455', 1, 0), - (45930, '310910998918570673', '265080167840825637', '0x75297649E711801Ae1ceAe991CA1ec4db71DBbb5', '1721184455', 1, 0), - (45931, '264435206896921254', '225455288719515553', '0x1518f93b49Af29276a76093385808Eb6B180D51a', '1721184491', 1, 0), - (45932, '269576410243171214', '229838636528592861', '0x80960Ca526A5eBd62d735C7d1d5Ef2568ec105e1', '1721184491', 1, 0), - (45933, '313550911829827399', '267330935938561459', '0xdA050e6328714f949E2954B3fcAdD991C76624e2', '1721184491', 1, 0), - (45934, '255028303034513852', '217435039634141290', '0x70e168514524E83850Bb23327a193349714E32e8', '1721184491', 1, 0), - (45935, '254012254018440092', '216568764575837938', '0x0eD3a7E9F95266001A773Ce99c7582E148ED1f8b', '1721184491', 1, 0), - (45936, '270508249892814678', '230633115371693936', '0x5a3693eFB8Fa478918B93fB73DA7952C136Ab7e7', '1721184491', 1, 0), - (45937, '347906159634583229', '296621938463316071', '0x0F57F7bd86F8Eae4Fe890288EaB91449f32505d4', '1721184491', 1, 0), - (45938, '121992218907684066998', '104009565360513553978', '0x2E15D7AA0650dE1009710FDd45C3468d75AE1392', '1721184971', 1, 0), - (45939, '284639300206193794', '242681132977590052', '0x619670DfDd2A0Af7A3C7b2c7F9353BfF684F3F13', '1721185271', 1, 0), - (45940, '290847216050169165', '247973951113926562', '0xCb80fd993d297Cb82bbC2c73beE5F0223f64b0bD', '1721185271', 1, 0), - (45941, '223973163981925692', '190957682766698071', '0xC2839103F4A127099324bE7F232e77D1fC9fcCD2', '1721185283', 1, 0), - (45942, '257191939114882251', '219279738011893869', '0xaEe08cd532A2A8fe8b57bb0A59a82e95922dFad3', '1721185283', 1, 0), - (45943, '266950623326318422', '227599912137836006', '0xF0d4d28F19FD4D98B8f983b3800Ea6dAfeA522B8', '1721185283', 1, 0), - (45944, '285509773516726664', '243423291383241843', '0x668f3764f8ac2822c92b7031DB612B4105eF7838', '1721185283', 1, 0), - (45945, '338750734381041565', '288816097977439332', '0x3EaA47640400e39275473cE522752676d8Dd8610', '1721185295', 1, 0), - (45946, '278972699111006275', '237849835356650230', '0x97804045B0896b887d6127FdA7D12D427ae158Ad', '1721185295', 1, 0), - (45947, '325526231237036939', '277540995053395154', '0x6d0b503807457908b6e02FE32Ca6CBBB6515c8da', '1721185331', 1, 0), - (45948, '279620396271632954', '238402056643919367', '0x81e0a64175c43faAF1F2e959aE45D103562cEBB4', '1721185331', 1, 0), - (45949, '274499143592665318', '234035718610147950', '0x0c8657E7901CC6f3D54EB7fb4389529C65c2b29b', '1721185331', 1, 0), - (45950, '265188793195251456', '226097790217174808', '0x880B4Da9c12620F9D848b1a57c2640BeE11C6d30', '1721185379', 1, 0), - (45951, '303587937267859769', '258836585535178191', '0xA8C6e48A4581524609Ef69983BEf2484DC8fCD43', '1721186303', 1, 0), - (45952, '255028303034513852', '217435039634141290', '0xaC55A10fe3283737f29C9a2F021fb42f38E57b9D', '1721186303', 1, 0), - (45953, '282461626468505383', '240824466208331788', '0x03C929210cFEa05aBB2D0e64F619172349d73BD1', '1721186315', 1, 0), - (45954, '305391542809767784', '260374324828514793', '0x8c3820850456fDc837e259800c174c5F87b71f9f', '1721186315', 1, 0), - (45955, '243851763857702489', '207906013992804421', '0x902662e4CE915903f97e6226FB3B0d8e4D1C92c3', '1721186315', 1, 0), - (45956, '292622116629242986', '249487216791365305', '0x441d78f401482aaf4e3aFB847BBF62CD357D3e64', '1721186315', 1, 0), - (45957, '315513738294116630', '269004425684520800', '0xF4c8DF140D71D78e41BE8B4dc11d88CC2036d7Fe', '1721186315', 1, 0), - (45958, '261355715122005159', '222829739287689254', '0x8DeA5624454bB15b8897B2c8b096eF922F28A45f', '1721186315', 1, 0), - (45959, '276662569261612411', '235880237592848346', '0xaD7DE926D482da08881D5413A0Ebb32D0aD102b9', '1721186315', 1, 0), - (45960, '264490062880092513', '225502058480883562', '0x91B053938f1804034adE4119c819cCD1E2a77a9A', '1721186315', 1, 0), - (45961, '1000000000000000', '852591798819737', '0xf1696c9463677f78FFC4578bd63c0f3dF68b3C9B', '1721186999', 1, 0), - (45962, '315513738294116630', '269004425684520800', '0x1E99F754e0a81B7D89fA3DC5d171526863425B55', '1721187779', 1, 0), - (45963, '299051570580983820', '254968916501508693', '0xd2670d5254f915b9Cad1f7e36F40CCa5eF4349B7', '1721187791', 1, 0), - (45964, '310910998918570673', '265080167840825637', '0x8dFe5ed470365ff965c06EE49870c33122D856Bc', '1721187791', 1, 0), - (45965, '297003272152346945', '253222554059717538', '0xDa568f9FE8889ed696a05f78fD35922D81627A63', '1721187791', 1, 0), - (45966, '286909331086116574', '244616542688879766', '0x7AfD98589DbB2B54a9412F96Bc61421Eb4B58e07', '1721187791', 1, 0), - (45967, '290591409326581139', '247755852399312464', '0x8Ef9c121e8c295680f90B4e59d30FAd1003fb4F2', '1721187791', 1, 0), - (45968, '286525822532800424', '244289566441545195', '0xFF3B0CeFFC88fC23ceA65D3795d4cBc489a1ff83', '1721187791', 1, 0), - (45969, '286909331086116574', '244616542688879766', '0x86B8F2B6BeA99B4caEd0027e7D8f9eBbBe3eb18b', '1721187791', 1, 0), - (45970, '280960219384986361', '239544378842233609', '0xa310cb6162e1B754Bf392F37f9a52d551E7C76Ec', '1721187791', 1, 0), - (45971, '311460602509342458', '265548755354919540', '0xf1d8041f8286E6854490E38747aE6e25Aa10bc87', '1721187803', 1, 0), - (45972, '271399541794386002', '231393023537328095', '0x8fEB28B00e0B1679a7c151DAC12c53C7A14b9616', '1721187803', 1, 0), - (45973, '254492952341473153', '216978604023762327', '0x5A67E1478F977D13CacC4a122107607801eF5301', '1721187803', 1, 0), - (45974, '277381381388136581', '236493090916815029', '0xFd2F2A49a94901c29e43337658aFD01c4B4ABD5E', '1721193791', 1, 0), - (45975, '346110415184403488', '295090901472316765', '0x9193342827dBCD2392B656B7282c286eD15efAB5', '1721193791', 1, 0), - (45976, '289229048343028564', '246594314597703547', '0x034cEe24B460F764C56E5F83e36ED871f367b78A', '1721193791', 1, 0), - (45977, '295237352521629321', '251716945465192912', '0x9d0838dAA2Cb8CbbD4d166E75dD73E346865D72A', '1721193791', 1, 0), - (45978, '2285267646430227939', '1948400453454495958', '0x4e1F9A53e92B369D7DBB1952927d16c40A1eC996', '1721193791', 1, 0), - (45979, '271285087291694018', '231295440566994918', '0x47E20d8e70136f144fbba4fdCcdD611a024fA249', '1721193791', 1, 0), - (45980, '305180841784722130', '260194682862557956', '0xC49d3B028F8Aa756625836a626919786Ec67Bf89', '1721193791', 1, 0), - (45981, '258304870198401986', '220228613926354360', '0x1A6C47dAE13ffc2fF9fAeC7Cb45A7590B6326d14', '1721193791', 1, 0), - (45982, '320439883873958236', '273204417005685854', '0xeECCe35d4f925d878200B576Ebb4095AeDF030d0', '1721193791', 1, 0), - (45983, '247915959921997530', '211371114226017828', '0x6C2CB86ca3DCbca25CaAF8373DCacd570bD34108', '1721193803', 1, 0), - (45984, '284493724500652903', '242557016324938491', '0xb151DEB7617384D4CCBDf359Dbb039327A6B7F5C', '1721193803', 1, 0), - (45985, '272301136307767779', '232161715625298270', '0xE6747b710d45fb3b28551C3CAfBfEFf6Bdae4C1D', '1721193803', 1, 0), - (45986, '293788420569964310', '250481597966155447', '0xae3a42228620371e7a47d1d3C5706cd5902C7c14', '1721193803', 1, 0), - (45987, '254686047002701454', '217143234948321452', '0xB1cbeE3C17a90B34D6696AA336E36C26fCFdEE63', '1721193803', 1, 0), - (45988, '228813369270237980', '195084402100117051', '0x617ad7f0D8A7265EefC2b73466383de8C0C50d16', '1721193803', 1, 0), - (45989, '386829287559039193', '329807478116118738', '0xb52bd03197246763695b1Ca89Fa01772f7e57b7f', '1721193803', 1, 0), - (45990, '287689006994117299', '245281287973778517', '0x36fAC77E7Fed784c548eA972B14E7fC039579e92', '1721193803', 1, 0), - (45991, '259535494403224969', '221277834030815496', '0x6dAAde97aC7ac7A723A952F9D1d6CF344aa46882', '1721193803', 1, 0), - (45992, '313318997565648053', '267133207738892835', '0x1D101a24bCa330274AEa0726553ac34915F4998D', '1721194847', 1, 0), - (45993, '330544008621151568', '281819110899394442', '0x44bFbfFDEfbFa9140D29e93f0D591d59cfB3B11D', '1721194859', 1, 0), - (45994, '374613625846648481', '319392505122978146', '0x306dF3d583f0CAAc7A2B3F1A43Ab989f54E5f5AB', '1721194859', 1, 0), - (45995, '306846802854275631', '261615067607612230', '0x1269db6fa797bEdA120B532A20B42F6eA58721Fb', '1721194859', 1, 0), - (45996, '254237076966931088', '216760446777907834', '0x01F30032ae8B5E5d19460A50bF9262341D81406b', '1721194859', 1, 0), - (45997, '281445577452431622', '239958191150028436', '0xf83eD26c2ef602AdbE3dd5c53D3eBB41aFcAE5C5', '1721194859', 1, 0), - (45998, '280154651702971600', '238857558443153598', '0xCcBB9c57E97c15C772c08bdf82F5ed82d1983875', '1721194859', 1, 0), - (45999, '318023342031086995', '271144093248949099', '0x71C7944e4B41bFa2eB4b165C0CAfC9454C7d1e4A', '1721194859', 1, 0), - (46000, '287541871548874184', '245155841499848546', '0x996535e88D03fD723a6daDF3d70Ec5A2F97C1219', '1721194859', 1, 0), - (46001, '305335875768499964', '260326863565665290', '0x4410b68f1523E9A3A2635CDb6DBb7f5F3eA8a648', '1721194859', 1, 0), - (46002, '340376420384709724', '290202144531622838', '0x81fa52601924F5315C789C937F7577D8448592b1', '1721194859', 1, 0), - (46003, '299734459741759309', '255551142199488768', '0xE0561AEda24Eb22865a632D0785302E9C207f637', '1721194859', 1, 0), - (46004, '264172744179177696', '225231515158871456', '0xA9AfeDf74565F64b04dfe93249Ea6D7f80315AE5', '1721194859', 1, 0), - (46005, '307275160738058192', '261980282026285019', '0xdDd46f8464Bda6B8076BE441Ca9E1c66214cA5EE', '1721194859', 1, 0), - (46006, '286267116831036434', '244068996081913312', '0xBDc686EfAb9c43513d7b9867Fd4FDf087FDDCdA8', '1721194895', 1, 0), - (46007, '262208137163142990', '223556507329096549', '0xb77c03fd986D045b04b1571d6E3c1BF2417bc9C4', '1721194895', 1, 0), - (46008, '285431820325832774', '243356829131993883', '0xFe8C8AA346144E5a56a1a68a70CF4A548AAe9dF1', '1721194895', 1, 0), - (46009, '279736597808963659', '238501129121657772', '0xDed464c53B5A9F4b37622dC4532c74216C50B608', '1721194895', 1, 0), - (46010, '1476853888006909981', '1259153512969734564', '0xbD1B054806563FB22FDA2c96f40A7cc2Ef22c6C5', '1721195099', 1, 0), - (46011, '3518682685491091227', '3000000000298714208', '0x6CdD6334B7d60fA05Fa48a578DCb754a1D69d8cd', '1721196071', 1, 0), - (46012, '276721621344087991', '235930584914070253', '0x38adC375a12bEe775DEdB8362C90b550FF76BA39', '1721196083', 1, 0), - (46013, '253125663397650910', '215812864683642582', '0x89b3614cefCF7b51f702a0Ab2Aa7ecd8409B2745', '1721196083', 1, 0), - (46014, '275592991432153299', '234968324307252092', '0x999db58C541C641d83C41FCb9C6C1d0561AeFca6', '1721196083', 1, 0), - (46015, '369623939990287046', '315138339883157547', '0xac2790FE843775D4227Ce5F97666200D7F9472B2', '1721196083', 1, 0), - (46016, '305209073725199638', '260218753183473847', '0x4Dc33e4Acd4048239Eb72920E4152a22Ca52e6d5', '1721196083', 1, 0), - (46017, '285655869135501630', '243547851309652874', '0x76e79620669D1eE8D45d3dE54f2E3Ac812B5ABDb', '1721196083', 1, 0), - (46018, '307402854735124901', '262089152880942607', '0xaCF35f7ED370CBFDD8f4a1c255a5747CfBC55239', '1721196083', 1, 0), - (46019, '308407785765451693', '262945948835778699', '0xFC219d7aa477D94543cd998B66AAF939eE56b233', '1721196083', 1, 0), - (46020, '269342799568494478', '229639461983246730', '0x9272d8E567335B5633A3D407F451a17780fbf108', '1721196083', 1, 0), - (46021, '262140646147030174', '223498965042264752', '0xB6e5B638550c049ecefEEb22692eC7319725c88a', '1721196119', 1, 0), - (46022, '257191939114882251', '219279738011893869', '0xfb14c665a108f44dD5B0fDaD199F1358D07e6d24', '1721196119', 1, 0), - (46023, '287177778496624105', '244845418749492883', '0xeBDD95107370D62e028DB5c4Af21e3e1e456ef87', '1721196119', 1, 0), - (46024, '386598160051919543', '329610420699066874', '0xC51293FD12aD281f08DC2206655EB97cFC3a1a46', '1721196119', 1, 0), - (46025, '283728577895095095', '241904658604145143', '0xEE1Ad78119A69Ef8e710E8010D2b77Db47F1c943', '1721196119', 1, 0), - (46026, '254340894770999699', '216848960986228206', '0x8e26B7b4F5e190d0C6ecaEE702A7BFBd45bdD573', '1721196119', 1, 0), - (46027, '244993111963188230', '208879118027140009', '0x8D669C35EABeC044DeC178502484282a598f3c51', '1721196119', 1, 0), - (46028, '293057388180819073', '249858325746498619', '0x630a124bF9B39205cfFfFc6B2Ef6dF63A2D5B675', '1721196119', 1, 0), - (46029, '1213522317531543501', '1034639175612115373', '0x10522a1d52CC3FF76442a400EF10Af5299088Fbe', '1721196563', 1, 0), - (46030, '5116642998583733128', '4362407858080920735', '0x5809Ee96D141D0Cdc3AD4D987F4293eEa8Ee0f3F', '1721196827', 1, 1), - (46031, '320338716978333171', '273118162940163871', '0xd623C86bF140fDc68e812f7650debe5BB431b8D1', '1721197199', 1, 0), - (46032, '1e+21', '852591798819737522408', '0x59a661F1C909ca13ba3E9114BFDd81E5a420705D', '1721197199', 1, 0), - (46033, '1e+21', '852591798819737522408', '0x59a661F1C909ca13ba3E9114BFDd81E5a420705D', '1721197199', 1, 0), - (46034, '234148578349221363789', '199633157605846889944', '0x59a661F1C909ca13ba3E9114BFDd81E5a420705D', '1721197199', 1, 0), - (46035, '272084289159516854', '231976833525102084', '0xD50E21e08580567Ff17B5c9cEF28311dca6C3daa', '1721197223', 1, 0), - (46036, '276722893510847672', '235931669553016288', '0xA3f82854237AFbDa8Ede7F5659e1Ebc5f8C361A0', '1721197223', 1, 0), - (46037, '305830753838201871', '260748792549308878', '0x63F162812020e71E7FfA71a3B1A27bDc261303f2', '1721197223', 1, 0), - (46038, '297434127728646396', '253589897990546201', '0xfDaE20df2F6223A998dC03c17a899bD52ac838Bd', '1721197223', 1, 0), - (46039, '281445577452431622', '239958191150028436', '0x29bed7599e1216aE4E67d438F2820A8122afFbeA', '1721197223', 1, 0), - (46040, '255028303034513852', '217435039634141290', '0xbf719b4D44A79333F47cCd6446Bec8e663fD925A', '1721197223', 1, 0), - (46041, '213646351607639747', '182153127228431693', '0xbF0243e6FBbb578aAb28510911302516BdaB7BDe', '1721197223', 1, 0), - (46042, '219547060366326940', '187184023123312187', '0x79FD533690173037eF531c7873C18642E55347a3', '1721197223', 1, 0), - (46043, '250964106970218811', '213969939400927883', '0x483f06223cE9BE3Fac121ea73613D96E078DE422', '1721197223', 1, 0), - (46044, '277217954992715284', '236353754912368160', '0x3D6562c773fdb2AcA593084bD6dd52454220a592', '1721197223', 1, 0), - (46045, '295435814523133687', '251886152540052885', '0xe3f99b742eb440DeA5417C7a9283AdE9205530CB', '1721197223', 1, 0), - (46046, '264718981139725674', '225697232311646883', '0x3b9A74Ade2F476db8eD2Cb1707996b996e7330De', '1721197235', 1, 0), - (46047, '274662757606249917', '234175214576302161', '0x09df803b12fD8a822bE63705aAE82b16faFAA9A0', '1721197235', 1, 0), - (46048, '400677633299883395', '341614464121982747', '0xB7a97745AcD25Df0ffdA6B5E53f424440Ed3fe34', '1721197235', 1, 0), - (46049, '409870472980166535', '349452203841256810', '0xEc932dE6ecf4d8CD4162A55aA5242cD4dAcEA861', '1721197235', 1, 0), - (46050, '281785950173864492', '240248390140864056', '0xA12ee491Bd5b9fDB4453aEe055680E041D0C6ba9', '1721197235', 1, 0), - (46051, '305209073725199638', '260218753183473847', '0xE8f909e29bf4BcA9F69c282A0D97F366E844e2f6', '1721198423', 1, 0), - (46052, '319525158332038992', '272424529510474566', '0x57a0a94c6534e0028A7fb6f81e7A06Cb36d5d0f6', '1721198423', 1, 0), - (46053, '255028303034513852', '217435039634141290', '0xe260adaacf292bb1Adc723ec0BCb0E2acCFaf6C8', '1721198423', 1, 0), - (46054, '288557920564947944', '246022116558151898', '0x802d0Cbe735E55462B014f6721594E792c5fc783', '1721198423', 1, 0), - (46055, '218712936612384193', '186472856051499868', '0x26E3f710881370Bb68536b688Bdec3D9211fFa04', '1721198423', 1, 0), - (46056, '307275160738058192', '261980282026285019', '0xAE97E3045dcA869CBc34EAee0Fe75fE9b92f4fEB', '1721198423', 1, 0), - (46057, '266440456661343780', '227164948223247410', '0xdA7c0A1b15CF6D53F4d2bD8Ff73A9fE59ecaE8F4', '1721198435', 1, 0), - (46058, '287689006994117299', '245281287973778517', '0x883623C932a3D6fe11A416d24D8d94936fD6F09f', '1721198435', 1, 0), - (46059, '274852388528791005', '234336892345663313', '0xf22Bb2efb97b4375a2c72EDe8c2034F0d0F11109', '1721198447', 1, 0), - (46060, '306101440668185031', '260979577920601033', '0x88F9828B01af4ad8fFc3B2E579c69f82aD188c38', '1721198447', 1, 0), - (46061, '291165113176503399', '248244987596707492', '0xa0a15c8adCE68189404846a83fCFCCD1d939E85D', '1721198447', 1, 0), - (46062, '252996205002366332', '215702489517534587', '0xE3c1D54A0301C8f69fD4cDBEe131d2cb863A09f0', '1721198459', 1, 0), - (46063, '282351620825913715', '240730676299634237', '0x9504717bD62D66FaA8aE46d49d78E94D227d4864', '1721198459', 1, 0), - (46064, '259582811388302616', '221318176104237574', '0x6f175684BC4D032C6a1Ed44d591aC1ee317f43c8', '1721198459', 1, 0), - (46065, '288557920564947944', '246022116558151898', '0x69098Ef8CfC58C0cb5eC0Cd9B1c0B031b8043214', '1721198459', 1, 0), - (46066, '295169729433693858', '251659290575008270', '0x96beEE65d015bc46B1E12DA12EC6f30035fa77d9', '1721198459', 1, 0), - (46067, '257060401066661374', '219167589750747994', '0x4218aAb2093E16fE260aac5b321B23F90AF328A5', '1721198459', 1, 0), - (46068, '280984514813688594', '239565092925493943', '0x31e12ae61088B4ACFAdaB80FBAb29222a602AA3a', '1721198459', 1, 0), - (46069, '266415807437108247', '227143932496816926', '0x8E1729B571D4eB2c403803847F81165769b8f7DC', '1721198459', 1, 0), - (46070, '281589593418270290', '240080977981401588', '0x90E6b0270027C385A250d95Adc1eD8D6457e6257', '1721198459', 1, 0), - (46071, '285762474510830544', '243638742178368406', '0x3EC8240531a4F285d90352f6b2F880B2Abe4FB5e', '1721199611', 1, 0), - (46072, '386758775973433287', '329747360516509367', '0xC533A20dab6A5F84D3Ea68971D35cFC69170Aaf7', '1721199611', 1, 0), - (46073, '338344322352562202', '288469594415016134', '0x54df8a9fE1127902DAeb3C8fceDaD7CAeBe6A191', '1721199623', 1, 0), - (46074, '268236940243472737', '228696615392084863', '0x7d5A6288291DB5ABFC253C7a6ED9E7d2dDfF9089', '1721199623', 1, 0), - (46075, '372320626977360999', '317437513092320707', '0xBcB0b4467B6c474a0F7d975Ce6eE15358cF25756', '1721199623', 1, 0), - (46076, '264172744179177696', '225231515158871456', '0x51973DfC1fEf51e041F4483Bc14C35092f72D35F', '1721199623', 1, 0), - (46077, '237045713926571720', '202103231639164688', '0xE291b5a52B1923B350A56b65914A63e77EfB4EaF', '1721199623', 1, 0), - (46078, '264695557433184907', '225677261451552265', '0xDE31866931a45F912091185013619688158405B5', '1721199623', 1, 0), - (46079, '275870360338156898', '235204806761758363', '0xEAdc32BB18f93bf2323c4563038Eb1f0d0BCA30B', '1721199623', 1, 0), - (46080, '284980150717266633', '242971739327954270', '0x4bdEaC92Dcd768465C58E758D19DAc81361Db376', '1721199623', 1, 0), - (46081, '259225076973497920', '221013174676019512', '0x6429a1F8f35aa8aF97E9ca2abFB819125793bd67', '1721199623', 1, 0), - (46082, '193379387986716643', '164873680258254683', '0x086c8a9a6064737Dd6d069b0909b6C04C7E9f8F1', '1721199623', 1, 0), - (46083, '291190879253698241', '248266955542811571', '0x20177eAfcD4187439fab3646078b7Bc5D3536c0c', '1721199623', 1, 0), - (46084, '306846802854275631', '261615067607612230', '0x83B8B68363B79F15a6acEe206B3da6F1Ab3EBF44', '1721199623', 1, 0), - (46085, '279271421325994657', '238104523467274591', '0x5662661e1249696f4bbB543034C6C66512A7c1b8', '1721199623', 1, 0), - (46086, '291280318189433021', '248343210445914210', '0xC9349F322feBa39719b1F5A97C981B0D935e7154', '1721199635', 1, 0), - (46087, '270780501291327435', '230865234681283116', '0x6A3482CD4dd6391e2367e0B61fE81427aEafb691', '1721199635', 1, 0), - (46088, '280154651702971600', '238857558443153598', '0x76A54Eb6d575B198cf3Be28c91b8D269c6dB9CDA', '1721199635', 1, 0), - (46089, '264307921620037095', '225346766336333620', '0x127CD56124DD8448AFFB15A78844c133aF7Ce51C', '1721199635', 1, 0), - (46090, '285032106622449931', '243016036506613806', '0x3A39BE344832525Faf2CA46dC26e8FbD408B005f', '1721199635', 1, 0), - (46091, '1566773801989614597', '1335818494181964761', '0xF8f8bA69D14762e1187b71AEF8e7Cd3A40A6c09a', '1721200331', 1, 0), - (46092, '301111763894259168', '256725420424390517', '0x7451811B12F8092221d1A71fDcd586528FC45771', '1721200787', 1, 0), - (46093, '356258043574617144', '303742686215283263', '0xCA6FE42f8568Eae37De76F22110774e5fD7d7edE', '1721200787', 1, 0), - (46094, '249948057954145050', '213103664342624531', '0x73faa9E95495007bCB46A238FF930BB16c374768', '1721200787', 1, 0), - (46095, '311568047735565739', '265640362273619841', '0x4E410068e1f8DD12Df7cBFC8b924813C9Bcef2cC', '1721200787', 1, 0), - (46096, '323795675876049091', '276065537745213384', '0x5100a202d62936dB3F36Ec0A2A4C450cDA03e94F', '1721200787', 1, 0), - (46097, '278924275766254576', '237808550010043511', '0xD4909D029156CEfe5022C7aB33E1B72c31AF963d', '1721200787', 1, 0), - (46098, '305391542809767784', '260374324828514793', '0x02c6bEC475bE4D2091F866D40820F4565a89CB0c', '1721200787', 1, 0), - (46099, '350182302421867059', '298562559136696963', '0xDd89C41AC85924F60cF6f484583290764F720B9D', '1721200787', 1, 0), - (46100, '246101490503989293', '209824112481014783', '0xdB0035c33998421E7BDfb06050F50380D4C43Ed2', '1721200799', 1, 0), - (46101, '302782606789980590', '258149967374398823', '0xE7c64C85857B9Fa69f79efE80Ef571E22a2F4310', '1721200799', 1, 0), - (46102, '255254025274798812', '217627488565019465', '0xb5b801E50046893e3e4fe6066A28433c12774E67', '1721200799', 1, 0), - (46103, '317649616559629064', '270825457976974027', '0xC024abA22C1C43E031cFD537Cc0eee08b3CBf466', '1721200799', 1, 0), - (46104, '305084492360317306', '260112536133489401', '0x75f935E6750883A06B9A3a9CD713fA4367508226', '1721200799', 1, 0), - (46105, '264873488882809512', '225828964346254310', '0x3115eEd7E84429625d652474C893891354894250', '1721200799', 1, 0), - (46106, '304373571000401891', '259506410412419743', '0x22014CA7975ACe6FA6A7619DD29EFE150b4aB2da', '1721200799', 1, 0), - (46107, '114686569429427654', '97780828530300441', '0x3f146252B61faFfc4220e69E541797fb3e05045A', '1721201591', 1, 0), - (46108, '318339306764370587', '271413482189262955', '0xF799aDdb865457b34b4534D7886614d8aDd4b997', '1721201963', 1, 0), - (46109, '256169045612604084', '218407627400785506', '0xfbBc48b1A7Bd528Cb873D2205c9e16d8f1C9fd45', '1721201963', 1, 0), - (46110, '259582811388302616', '221318176104237574', '0x044B278849241eb20BA031A0300Bbc99220BBDB0', '1721201963', 1, 0), - (46111, '240798902875847839', '205303169756738375', '0x53E4B1D5b11768D5004A015b17399Ed118D08686', '1721201963', 1, 0), - (46112, '239404884182539367', '204114640851422165', '0x4052a3d3a4B434B44a82f4afdB3942Cff40cb791', '1721201963', 1, 0), - (46113, '305391542809767784', '260374324828514793', '0xD94E61425A0e5D204C0312c298A59126d7DBF5eF', '1721201963', 1, 0), - (46114, '215681078765807744', '183887918916321518', '0x85f0f57286C72fC842Ea94EeacAf4C84F8bF67cB', '1721201963', 1, 0), - (46115, '276365332372062820', '235626815858511677', '0x22a6C7301C936Dc61B40B94B4B4D9920749a1f55', '1721201963', 1, 0), - (46116, '264172744179177696', '225231515158871456', '0x42248009A46B0D4b94a51f4096c592C476Ac4adb', '1721201963', 1, 0), - (46117, '285032106622449931', '243016036506613806', '0x64030Ded325D6186946148999c8a56B6ef9909b8', '1721201963', 1, 0), - (46118, '365777645786553733', '311859020989206632', '0x7467264A3ACb535bbe39589d616ab5A0f66BD9cA', '1721201975', 1, 0), - (46119, '318972461115893203', '271953304396758167', '0x98Dd3dBCa159Ae0D9A0016c04E21363eCb9c243E', '1721201975', 1, 0), - (46120, '267220891227398977', '227830340333781511', '0xc065d81124CB706ae6C61487D2Cf2B1200A374Cb', '1721201975', 1, 0), - (46121, '328035628539479473', '279680486613438031', '0x4399af19973931C22b8052951826A4A31b0E217F', '1721201975', 1, 0), - (46122, '292305953112635251', '249217658370019542', '0x84F154B987412146d37bc824F549B473ADA33C0c', '1721201975', 1, 0), - (46123, '349973071204895586', '298384170317050012', '0x7c0d64a24e121eC08DA2af44006351A564567C61', '1721201975', 1, 0), - (46124, '236028350347487721', '201235835795219775', '0x996264aC840b80890F432b6e42eAC0Ac81C15111', '1721201975', 1, 0), - (46125, '287796371126565992', '245372825752591668', '0xAF7334b5e24Bc12c51F74f557478a9E522290208', '1721201975', 1, 0), - (46126, '366101390832380768', '312135043360187282', '0x208a2D5eB23D15BD938Fe43640ef6da224fae910', '1721201975', 1, 0), - (46127, '266415807437108247', '227143932496816926', '0x7413039440C2CF850AcB6Cf80Ae9201FF63f0Dad', '1721201975', 1, 0), - (46128, '275592991432153299', '234968324307252092', '0xf7bd8d15E40E6C4C792168833Aa06cf9C74F1463', '1721201999', 1, 0), - (46129, '279413479420284101', '238225641033421732', '0x2Eda87060131D0D68FC07A8D7589669384598c7B', '1721201999', 1, 0), - (46130, '10272974055308652527', '8758653429044097802', '0x76d4e86776e3fD1C70026cBA0D4fF7112934dBB8', '1721202311', 1, 1), - (46131, '2180510000000000', '1859084943244425', '0x1708D4CB7fb2D06f5ad83c79344794Dad652E272', '1721203583', 1, 0), - (46132, '315895556346286517', '269329960624442172', '0x89B6d4d3b47D29cfBE83e2c701f39aFC45EAe2EA', '1721203751', 1, 0), - (46133, '292305953112635251', '249217658370019542', '0x969772FD3855B44596657b088910da7Ade4C22dE', '1721203751', 1, 0), - (46134, '305180841784722130', '260194682862557956', '0x815b670A1457C3091b87709FaF7Ebeca5D90AAF9', '1721203751', 1, 0), - (46135, '263156695163103935', '224365240100568104', '0x236b396aB208D11A1e10752AA5254918FB14eF84', '1721203751', 1, 0), - (46136, '265324490549344931', '226213484668396442', '0xfb7216BCDB4599D63d41d6C44930Bde8436E4C8A', '1721203751', 1, 0), - (46137, '278643836355756472', '237569449668586986', '0x354236fCc44665dbeA042c8022AAC8588fC5Ec45', '1721203751', 1, 0), - (46138, '134761439335206', '114896497974340', '0x00a9F80007F2efA3B87b8073CF43269dDBDFa8AC', '1721203763', 1, 0), - (46139, '259535494403224969', '221277834030815496', '0x7Bfe30DdBAd15EdE568FeC005b4417c2449DeAc5', '1721203763', 1, 0), - (46140, '275820074444211634', '235161933420984312', '0x8c23F529e890F74C399fBe2aCCD204Aac53082A0', '1721203763', 1, 0), - (46141, '283477675484579142', '241690741266635139', '0x6641F96e5e30cC1C6Dd158d340aF2f9e2e37D2D8', '1721203763', 1, 0), - (46142, '314975194982865714', '268545268074039044', '0x52d672cdD70B92F2C961B3b0Ff17b12a5b6371e2', '1721203763', 1, 0), - (46143, '301766557773906829', '257283692316095471', '0x38031236dCAbF90C58ee09A7eF857bEdbd8fA283', '1721203763', 1, 0), - (46144, '356290133278062414', '303770045633267258', '0x7714D121E33cf2fF0254c249Be685d5470D0F003', '1721203763', 1, 0), - (46145, '254446563140416636', '216939052971387741', '0x5A75ff316599351C19E910499E1dE36a5Af73378', '1721203763', 1, 0), - (46146, '41400000000000000000', '35297300471137133427', '0x007aBdd190137F614701A6216fd703329AFBcdf1', '1721204027', 1, 0), - (46147, '1011934927247293245', '862767419910289968', '0x7BCf01593B8745C90d962e4a1d55eDeCc72342EF', '1721204543', 1, 0), - (46148, '253220128659063364', '215893404990796203', '0x8254737a665D8dc546e60e7EcaC82968DB3D33Cc', '1721204963', 1, 0), - (46149, '298718410725685549', '254684867141185416', '0xc8E7f2bf364248ec89f150109E799aaaE3278548', '1721204963', 1, 0), - (46150, '246201986138327708', '209909794234668903', '0xfFD24611288c35490c5586612e4636e699D6dB33', '1721204963', 1, 0), - (46151, '233971978701620299', '199482590194627766', '0x2E98C0F8f2ca193291C3916b13068735f07E6C62', '1721204963', 1, 0), - (46152, '273023442386895959', '232777547864600597', '0x9B4e80b9Ae8690e8e5e3F22dc70625b70a817c7d', '1721204963', 1, 0), - (46153, '297032655380122919', '253247605958742185', '0x445dC61447B493e5e4040B76f42BEc75F93Dda26', '1721204963', 1, 0), - (46154, '262372663429872883', '223696781074800885', '0xfcFA5A0Ec374a8E550c7DF1403F812a11bf3b695', '1721204963', 1, 0), - (46155, '282766119527181185', '241084074492956314', '0xb1a264caBe5abb9Caa821de56d88AEA32C0d08C4', '1721204975', 1, 0), - (46156, '384406460373999806', '327741795528196646', '0x4159E605F5a9975bFA1c2082AdcA9a6B3e73FADc', '1721204975', 1, 0), - (46157, '284861802143519663', '242870836304575591', '0x1377B28784D148B3Ebb2E5f1060C85e492549928', '1721204975', 1, 0), - (46158, '225833822920694376', '192544065318292887', '0x04AD8A45173F3b8E22FA55fe8C0908914d355e81', '1721204975', 1, 0), - (46159, '226694871235647201', '193278188050009220', '0x98cf937C43319b64fD0219D1929cdA47C1BDDcF7', '1721204975', 1, 0), - (46160, '200025151886821760931', '170539804056376580084', '0x671730450C132914662dfA6BEDa90F8a1A4cf84a', '1721205647', 1, 1), - (46161, '258076450082735133', '220033864809051345', '0x206a074AE859b2FbADeBAe109ab1A3E9EE7bE4a1', '1721206175', 1, 0), - (46162, '271285087291694018', '231295440566994918', '0xA262e05b4a6825C31f302Ac1e2d3225b922a0f8F', '1721206175', 1, 0), - (46163, '315353536510879534', '268867838957976555', '0xF1e6035C0c717F193AB752397E81FA02f70066C1', '1721206175', 1, 0), - (46164, '259427712666419693', '221185940205952770', '0x55a03eA9eeB2f5DaF71A6D3819a7e20CC7EefEF8', '1721206187', 1, 0), - (46165, '274852388528791005', '234336892345663313', '0x3EAf2D697dFc1A3CB59362D646bcD356a9c1c8e3', '1721206187', 1, 0), - (46166, '339214517584432381', '289211515733080688', '0xc97308BF3f5a9C6a609345A0105b5615405AcdB8', '1721206187', 1, 0), - (46167, '226161209738398891', '192823192634109449', '0xed725dD3d03eCe7f088531AA53b72D10c708a6fE', '1721206187', 1, 0), - (46168, '293331588035837480', '250092106294124874', '0xE75bf9377fE58bE6e697b04291DEe00302C30894', '1721206187', 1, 0), - (46169, '254492952341473153', '216978604023762327', '0x2501DA025e468aDd1E64778Bdbb10099a7f90A77', '1721206187', 1, 0), - (46170, '274499143592665318', '234035718610147950', '0x5f64C7147cC047f3fDAA067c50Bcd16EBb24aBe3', '1721206187', 1, 0), - (46171, '233971978701620299', '199482590194627766', '0x6a5EacB08fd8B30C98143fe6cbf51859a6078580', '1721206187', 1, 0), - (46172, '302782606789980590', '258149967374398823', '0x7473565F238db9fC013b31dE19A5e2D901c7eE56', '1721206187', 1, 0), - (46173, '314180348991743988', '267867588900683914', '0x37F171e587Da81f22B586542DC93AA7eA609a5b7', '1721206199', 1, 0), - (46174, '389552988856887647', '332129683505099005', '0x7487D8245fc458EC7395b125b32d4f2c09f22741', '1721206607', 1, 0), - (46175, '20774858857602681345', '17712474283629627385', '0x9B3ab8802766ae39B97751f20B0957c876d6B008', '1721206631', 1, 0), - (46176, '20429625857614185898', '17418131459157501629', '0x1100c7680787f401f30d4204100c78ce016fed94', '1721206823', 1, 0), - (46177, '274333234339915300', '233894265741904974', '0xC09411c13Ff78B32A19726A9591fD57e2d3021Eb', '1721207495', 1, 0), - (46178, '999999999999999998', '852591798819737520', '0x48d62ED012E327FaaCb9c8d2A56330E215DA0575', '1721211083', 0, 0), - (46179, '17021501133200868', '14512392269767928', '0xfb4e07C7BF05464e6206abc93873078f2fc53991', '1721211479', 0, 0), - (46180, '890332114422741336', '759089858982665409', '0xa6Fa61935B0442fE390c54285B45Bde93b0D4c01', '1721213747', 0, 0), - (46181, '5100000000000000000', '4348218173980661364', '0x3D57904a7F16B13D5825Fbe0BDDa54860f5bfB24', '1721214575', 0, 0), - (46182, '3659738873500737932', '3120263349368513984', '0xEaA5c31aC2B821f3F20B8122A2485c82a701e1cb', '1721216519', 0, 0), - (46183, '35293172700055915', '30090669598396325', '0xaD6Aa02B939C07680e4b65Bd5E0D3f6fc9Cf0932', '1721216831', 0, 0), - (46184, '136369045793297026', '116267130056238271', '0x0fc4df6b52096b2C8847fB6BDA2750b36d843b4A', '1721217095', 0, 0), - (46185, '85748230281410305', '73101949417669601', '0x06e551e616a05133Ec76BB9a82335F5E3Ce5A0dE', '1721219207', 0, 0), - (46186, '295113447764444426260', '251589662668845442769', '0x610795c27EF8bEe6c041F5A0055F40991012BD18', '1721219315', 0, 0), - (46187, '2000000000000000000', '1705036924441755146', '0x2dd5d6cAD7C463a4E87dF7e86a5CF5BD04B3a7DA', '1721219855', 0, 0), - (46188, '400090994566541665767', '341084959436289585563', '0xF23E48B2D068aae4751FB4Ee0b23B4e246C23BDc', '1721220059', 0, 0), - (46189, '3755242795788733975', '3201413813531840481', '0xb1faDf40e8331904C61E699cA02a0B4CA5E37C5a', '1721220899', 0, 0); \ No newline at end of file diff --git a/ethereum-steth/src/entity/events.ts b/ethereum-steth/src/entity/events.ts deleted file mode 100644 index 2d34e4220..000000000 --- a/ethereum-steth/src/entity/events.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { Log } from '@ethersproject/abstract-provider' -import * as agent_pb from '../generated/proto/agent_pb' -import { TransactionEvent } from '../generated/proto/agent_pb' -import BigNumber from 'bignumber.js' -import { formatAddress } from 'forta-agent/dist/cli/utils' -import { Finding } from '../generated/proto/alert_pb' -import { ethers } from 'ethers' - -export type EventOfNotice = { - name: string - address: string - abi: string - alertId: string - description: CallableFunction - severity: Finding.Severity - type: Finding.FindingType -} - -export type BlockDto = { - number: number - timestamp: number - parentHash: string - hash: string -} - -export type TransactionDto = { - logs: Log[] - to: string | null - block: { - timestamp: number - number: number - } -} - -export function newTransactionDto(request: agent_pb.EvaluateTxRequest): TransactionDto { - const txEvent = request.getEvent() - const transaction = txEvent.getTransaction() - const logList = >txEvent.getLogsList() - const block = txEvent.getBlock() - - const logs: Log[] = [] - for (const l of logList) { - logs.push({ - blockNumber: new BigNumber(l.getBlocknumber(), 10).toNumber(), - blockHash: l.getTransactionhash(), - transactionIndex: new BigNumber(l.getTransactionindex(), 10).toNumber(), - removed: l.getRemoved(), - address: l.getAddress(), - data: l.getData(), - topics: l.getTopicsList(), - transactionHash: l.getTransactionhash(), - logIndex: new BigNumber(l.getLogindex(), 10).toNumber(), - }) - } - - return { - logs: logs, - to: transaction.getTo() ? formatAddress(transaction.getTo()) : null, - block: { - number: new BigNumber(block.getBlocknumber(), 10).toNumber(), - timestamp: new BigNumber(block.getBlocktimestamp(), 10).toNumber(), - }, - } -} - -export function handleEventsOfNotice(txEvent: TransactionDto, eventsOfNotice: EventOfNotice[]): Finding[] { - const out: Finding[] = [] - - const addresses = new Set() - for (const eventOfNotice of eventsOfNotice) { - addresses.add(eventOfNotice.address.toLowerCase()) - } - - for (const log of txEvent.logs) { - if (addresses.has(log.address.toLowerCase())) { - for (const eventInfo of eventsOfNotice) { - const parser = new ethers.utils.Interface([eventInfo.abi]) - - try { - const logDesc = parser.parseLog(log) - const f: Finding = new Finding() - - f.setName(eventInfo.name) - f.setDescription(eventInfo.description(logDesc.args) + '\n\n' + `BlockNumber ${log.blockNumber}`) - f.setAlertid(eventInfo.alertId) - f.setSeverity(eventInfo.severity) - f.setType(eventInfo.type) - f.setProtocol('ethereum') - const m = f.getMetadataMap() - m.set('args', String(logDesc.args)) - - out.push(f) - } catch (e) { - // Only one from eventsOfNotice could be correct - // Others - skipping - } - } - } - } - - return out -} diff --git a/ethereum-steth/src/entity/gate_seal.ts b/ethereum-steth/src/entity/gate_seal.ts deleted file mode 100644 index fbb715268..000000000 --- a/ethereum-steth/src/entity/gate_seal.ts +++ /dev/null @@ -1,8 +0,0 @@ -export type GateSeal = { - roleForWithdrawalQueue: boolean - roleForExitBus: boolean - exitBusOracleAddress: string - withdrawalQueueAddress: string -} - -export const GateSealExpiredErr = new Error('GateSeal is expired') diff --git a/ethereum-steth/src/entity/metadata.ts b/ethereum-steth/src/entity/metadata.ts deleted file mode 100644 index 32745c4d7..000000000 --- a/ethereum-steth/src/entity/metadata.ts +++ /dev/null @@ -1 +0,0 @@ -export type Metadata = { [key: string]: string } diff --git a/ethereum-steth/src/entity/share_rate.ts b/ethereum-steth/src/entity/share_rate.ts deleted file mode 100644 index 0d2f80082..000000000 --- a/ethereum-steth/src/entity/share_rate.ts +++ /dev/null @@ -1,6 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ShareRate = { - amount: BigNumber - blockNumber: number -} diff --git a/ethereum-steth/src/entity/staking_limit_info.ts b/ethereum-steth/src/entity/staking_limit_info.ts deleted file mode 100644 index 4cf643903..000000000 --- a/ethereum-steth/src/entity/staking_limit_info.ts +++ /dev/null @@ -1,7 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type StakingLimitInfo = { - maxStakeLimit: BigNumber - currentStakeLimit: BigNumber - isStakingPaused: boolean -} diff --git a/ethereum-steth/src/entity/withdrawal_request.ts b/ethereum-steth/src/entity/withdrawal_request.ts deleted file mode 100644 index 75fe0b901..000000000 --- a/ethereum-steth/src/entity/withdrawal_request.ts +++ /dev/null @@ -1,79 +0,0 @@ -import BigNumber from 'bignumber.js' -import { WithdrawalQueueBase } from '../generated/typechain/WithdrawalQueueERC721' - -export type WithdrawalRequestSql = { - id: number - amountOfStETH: string - amountOfShares: string - owner: string - timestamp: number - isFinalized: number - isClaimed: number -} - -export class WithdrawalRequest { - public id: number - public amountOfStETH: BigNumber - public amountOfShares: BigNumber - public owner: string - public timestamp: number - public isFinalized: boolean - public isClaimed: boolean - - constructor( - id: number, - amountOfStETH: BigNumber, - amountOfShares: BigNumber, - owner: string, - timestamp: number, - isFinalized: boolean, - isClaimed: boolean, - ) { - this.id = id - this.amountOfStETH = amountOfStETH - this.amountOfShares = amountOfShares - this.owner = owner - this.timestamp = timestamp - this.isFinalized = isFinalized - this.isClaimed = isClaimed - } - - public static toWithdrawalRequest( - withdrawalRequest: WithdrawalQueueBase.WithdrawalRequestStatusStructOutput, - requestId: number, - ): WithdrawalRequest { - return new WithdrawalRequest( - requestId, - new BigNumber(withdrawalRequest.amountOfStETH.toString()), - new BigNumber(withdrawalRequest.amountOfShares.toString()), - withdrawalRequest.owner, - withdrawalRequest.timestamp.toNumber(), - withdrawalRequest.isFinalized, - withdrawalRequest.isClaimed, - ) - } - - public toSqlObject(): WithdrawalRequestSql { - return { - id: this.id, - amountOfStETH: this.amountOfStETH.toString(), - amountOfShares: this.amountOfShares.toString(), - owner: this.owner, - timestamp: this.timestamp, - isFinalized: Number(this.isFinalized), - isClaimed: Number(this.isClaimed), - } - } - - public static sqlToWithdrawalRequest(o: WithdrawalRequestSql): WithdrawalRequest { - return new WithdrawalRequest( - o.id, - new BigNumber(o.amountOfStETH.toString()), - new BigNumber(o.amountOfShares.toString()), - o.owner, - o.timestamp, - Boolean(o.isFinalized), - Boolean(o.isClaimed), - ) - } -} diff --git a/ethereum-steth/src/generated/proto/.gitignore b/ethereum-steth/src/generated/proto/.gitignore deleted file mode 100644 index 2d9424679..000000000 --- a/ethereum-steth/src/generated/proto/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.ts -*.js \ No newline at end of file diff --git a/ethereum-steth/src/generated/typechain/.gitignore b/ethereum-steth/src/generated/typechain/.gitignore deleted file mode 100644 index b0a155ec1..000000000 --- a/ethereum-steth/src/generated/typechain/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.ts \ No newline at end of file diff --git a/ethereum-steth/src/handlers/alert.handler.ts b/ethereum-steth/src/handlers/alert.handler.ts deleted file mode 100644 index 2ee864d13..000000000 --- a/ethereum-steth/src/handlers/alert.handler.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { EvaluateAlertRequest, EvaluateAlertResponse, ResponseStatus } from '../generated/proto/agent_pb' - -export class AlertHandler { - public handleAlert() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new EvaluateAlertResponse() - resp.setStatus(ResponseStatus.SUCCESS) - resp.setFindingsList([]) - resp.setTimestamp(new Date().toISOString()) - - callback(null, resp) - } - } -} diff --git a/ethereum-steth/src/handlers/block.handler.ts b/ethereum-steth/src/handlers/block.handler.ts deleted file mode 100644 index 7b78312fb..000000000 --- a/ethereum-steth/src/handlers/block.handler.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { BlockEvent, EvaluateBlockRequest, EvaluateBlockResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { StethOperationSrv } from '../services/steth_operation/StethOperation.srv' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { GateSealSrv } from '../services/gate-seal/GateSeal.srv' -import { VaultSrv } from '../services/vault/Vault.srv' -import { WithdrawalsSrv } from '../services/withdrawals/Withdrawals.srv' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import { BlockDto } from '../entity/events' -import BigNumber from 'bignumber.js' -import { Finding } from '../generated/proto/alert_pb' -import { either as E } from 'fp-ts' -import { HandleBlockLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { ETHProvider } from '../clients/eth_provider' - -const MINUTES_6 = 60 * 6 - -export class BlockHandler { - private logger: Logger - private metrics: Metrics - private StethOperationSrv: StethOperationSrv - private WithdrawalsSrv: WithdrawalsSrv - private GateSealSrv: GateSealSrv - private VaultSrv: VaultSrv - private healthChecker: HealthChecker - - private onAppStartFindings: Finding[] = [] - private readonly ethProvider: ETHProvider - - constructor( - logger: Logger, - metrics: Metrics, - StethOperationSrv: StethOperationSrv, - WithdrawalsSrv: WithdrawalsSrv, - GateSealSrv: GateSealSrv, - VaultSrv: VaultSrv, - healthChecker: HealthChecker, - onAppStartFindings: Finding[], - ethProvider: ETHProvider, - ) { - this.logger = logger - this.metrics = metrics - this.StethOperationSrv = StethOperationSrv - this.WithdrawalsSrv = WithdrawalsSrv - this.GateSealSrv = GateSealSrv - this.VaultSrv = VaultSrv - this.healthChecker = healthChecker - this.onAppStartFindings = onAppStartFindings - this.ethProvider = ethProvider - } - - public handleBlock() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - this.metrics.lastAgentTouch.labels({ method: HandleBlockLabel }).set(new Date().getTime()) - const end = this.metrics.summaryHandlers.labels({ method: HandleBlockLabel }).startTimer() - - const event = call.request.getEvent() - const block = event.getBlock() - - const blockDtoEvent: BlockDto = { - number: new BigNumber(block.getNumber(), 10).toNumber(), - timestamp: new BigNumber(block.getTimestamp(), 10).toNumber(), - parentHash: block.getParenthash(), - hash: block.getHash(), - } - - const findings: Finding[] = [] - const latestL1Block = await this.ethProvider.getBlockByHash('latest') - if (E.isRight(latestL1Block)) { - const infraLine = `#ETH block infra: ${blockDtoEvent.number} ${blockDtoEvent.timestamp}\n` - const lastBlockLine = `#ETH block latst: ${latestL1Block.right.number} ${latestL1Block.right.timestamp}. Delay between blocks: ` - const diff = latestL1Block.right.timestamp - blockDtoEvent.timestamp - const diffLine = `${latestL1Block.right.timestamp} - ${blockDtoEvent.timestamp} = ${diff} seconds` - - this.logger.info(`\n` + infraLine + lastBlockLine + diffLine) - - if (diff > MINUTES_6) { - const f: Finding = new Finding() - - f.setName(`⚠️ Currently processing Ethereum network block is outdated`) - f.setDescription(infraLine + lastBlockLine + diffLine) - f.setAlertid('L1-BLOCK-OUTDATED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - findings.push(f) - } - } - - const startTime = new Date().getTime() - - if (this.onAppStartFindings.length > 0) { - findings.push(...this.onAppStartFindings) - this.onAppStartFindings = [] - } - - const [bufferedEthFindings, withdrawalsFindings, gateSealFindings, vaultFindings] = await Promise.all([ - this.StethOperationSrv.handleBlock(blockDtoEvent), - this.WithdrawalsSrv.handleBlock(blockDtoEvent), - this.GateSealSrv.handleBlock(blockDtoEvent), - this.VaultSrv.handleBlock(blockDtoEvent), - ]) - - const WithdrawalStat = await this.WithdrawalsSrv.getStatistic() - const stat: string = E.isLeft(WithdrawalStat) ? WithdrawalStat.left.message : WithdrawalStat.right - - findings.push(...bufferedEthFindings, ...withdrawalsFindings, ...gateSealFindings, ...vaultFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusFail }).inc() - - this.logger.info(stat) - - const share = this.StethOperationSrv.getStorage().getShareRate() - this.logger.info(`\tShare rate: ${share.amount.toFixed(4)} on block: ${share.blockNumber}`) - - const blockResponse = new EvaluateBlockResponse() - blockResponse.setStatus(ResponseStatus.SUCCESS) - blockResponse.setPrivate(false) - blockResponse.setFindingsList(findings) - const m = blockResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - this.logger.info(elapsedTime('handleBlock', startTime) + '\n') - this.metrics.lastBlockNumber.set(blockDtoEvent.number) - - end() - callback(null, blockResponse) - } - } -} diff --git a/ethereum-steth/src/handlers/health.handler.ts b/ethereum-steth/src/handlers/health.handler.ts deleted file mode 100644 index 403730746..000000000 --- a/ethereum-steth/src/handlers/health.handler.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import * as agent_pb from '../generated/proto/agent_pb' -import { HealthCheckRequest, HealthCheckResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { Metrics } from '../utils/metrics/metrics' -import express, { Request, Response } from 'express' -import BigNumber from 'bignumber.js' -import { Logger } from 'winston' - -export class HealthHandler { - private healthChecker: HealthChecker - private metrics: Metrics - private logger: Logger - private readonly ethereumRpcUrl: string - private readonly chainId: number - - constructor(healthChecker: HealthChecker, metrics: Metrics, logger: Logger, ethereumRpcUrl: string, chainId: number) { - this.healthChecker = healthChecker - this.metrics = metrics - this.logger = logger - this.ethereumRpcUrl = ethereumRpcUrl - this.chainId = chainId - } - - public healthGrpc() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new HealthCheckResponse() - resp.setStatus(ResponseStatus.SUCCESS) - this.metrics.healthStatus.set(1) - - if (!this.healthChecker.isHealth()) { - const e: agent_pb.Error = new agent_pb.Error() - e.setMessage('There is too much network errors') - - const errList: Array = [] - errList.push(e) - - resp.setErrorsList(errList) - this.metrics.healthStatus.set(0) - } - - callback(null, resp) - } - } - - public healthHttp(): express.Handler { - return async (req: Request, res: Response) => { - try { - type data = { - jsonrpc: string - id: number - result: string - } - - const resp = await fetch(this.ethereumRpcUrl, { - method: 'POST', - body: JSON.stringify({ - method: 'eth_chainId', - }), - }) - - // @ts-expect-error @typescript-eslint/ban-ts-comment - const data: data = await resp.json() - const chainId = new BigNumber(data.result) - if (chainId.toNumber() === this.chainId) { - return res.status(200).send('ok') - } - } catch (e) { - this.logger.error(e) - } - - return res.status(503).send('not ok') - } - } -} diff --git a/ethereum-steth/src/handlers/init.handler.ts b/ethereum-steth/src/handlers/init.handler.ts deleted file mode 100644 index d52c9b5cb..000000000 --- a/ethereum-steth/src/handlers/init.handler.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { InitializeRequest, InitializeResponse, ResponseStatus, Error as pbError } from '../generated/proto/agent_pb' -import { Logger } from 'winston' -import { WithdrawalsSrv } from '../services/withdrawals/Withdrawals.srv' -import { StethOperationSrv } from '../services/steth_operation/StethOperation.srv' -import { GateSealSrv } from '../services/gate-seal/GateSeal.srv' -import { VaultSrv } from '../services/vault/Vault.srv' -import { Metadata } from '../entity/metadata' -import Version from '../utils/version' -import { elapsedTime } from '../utils/time' -import { ETH_DECIMALS } from '../utils/constants' -import { Finding } from '../generated/proto/alert_pb' - -export class InitHandler { - private readonly logger: Logger - private readonly StethOperationSrv: StethOperationSrv - private readonly WithdrawalsSrv: WithdrawalsSrv - private readonly GateSealSrv: GateSealSrv - private readonly VaultSrv: VaultSrv - private readonly appName: string - private readonly latestBlockNumber: number - - private onAppStartFindings: Finding[] = [] - - constructor( - appName: string, - logger: Logger, - StethOperationSrv: StethOperationSrv, - WithdrawalsSrv: WithdrawalsSrv, - GateSealSrv: GateSealSrv, - VaultSrv: VaultSrv, - onAppStartFindings: Finding[], - latestBlockNumber: number, - ) { - this.appName = appName - this.logger = logger - this.StethOperationSrv = StethOperationSrv - this.WithdrawalsSrv = WithdrawalsSrv - this.GateSealSrv = GateSealSrv - this.VaultSrv = VaultSrv - this.onAppStartFindings = onAppStartFindings - this.latestBlockNumber = latestBlockNumber - } - - public handleInit() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const startTime = new Date().getTime() - - const metadata: Metadata = { - 'version.commitHash': Version.commitHash, - 'version.commitMsg': Version.commitMsg, - } - - const agents: string[] = [ - this.StethOperationSrv.getName(), - this.WithdrawalsSrv.getName(), - this.GateSealSrv.getName(), - this.VaultSrv.getName(), - ] - metadata.agents = '[' + agents.toString() + ']' - - const withdrawalsSrvErr = await this.WithdrawalsSrv.initialize(this.latestBlockNumber) - if (withdrawalsSrvErr !== null) { - this.logger.error('Could not init withdrawalsSrvErr', withdrawalsSrvErr) - const err = new pbError() - err.setMessage(`Could not init withdrawalsSrvErr ${withdrawalsSrvErr}`) - - const resp = new InitializeResponse() - resp.setStatus(ResponseStatus.ERROR) - resp.addErrors(err) - - callback(null, resp) - return - } - - const f: Finding = new Finding() - f.setName(`${this.appName} launched`) - f.setDescription(`Version: ${Version.desc}`) - f.setAlertid('LIDO-AGENT-LAUNCHED') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - this.logger.info( - `[${this.StethOperationSrv.getName()}] Last Depositor TxTime: ${new Date( - this.StethOperationSrv.getStorage().getLastDepositorTxTime() * 1000, - ).toUTCString()}`, - ) - this.logger.info( - `[${this.StethOperationSrv.getName()}] Buffered Eth: ${this.StethOperationSrv.getStorage() - .getLastBufferedEth() - .div(ETH_DECIMALS) - .toFixed(2)}`, - ) - this.logger.info(elapsedTime('Agent.initialize', startTime) + '\n') - - this.onAppStartFindings.push(f) - const resp = new InitializeResponse() - resp.setStatus(ResponseStatus.SUCCESS) - - callback(null, resp) - } - } -} diff --git a/ethereum-steth/src/handlers/tx.handler.ts b/ethereum-steth/src/handlers/tx.handler.ts deleted file mode 100644 index 5572fcad9..000000000 --- a/ethereum-steth/src/handlers/tx.handler.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { StethOperationSrv } from '../services/steth_operation/StethOperation.srv' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { GateSealSrv } from '../services/gate-seal/GateSeal.srv' -import { VaultSrv } from '../services/vault/Vault.srv' -import { WithdrawalsSrv } from '../services/withdrawals/Withdrawals.srv' -import { EvaluateTxRequest, EvaluateTxResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { newTransactionDto } from '../entity/events' -import { Finding } from '../generated/proto/alert_pb' -import { HandleTxLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' - -export class TxHandler { - private metrics: Metrics - private StethOperationSrv: StethOperationSrv - private WithdrawalsSrv: WithdrawalsSrv - private GateSealSrv: GateSealSrv - private VaultSrv: VaultSrv - private healthChecker: HealthChecker - - constructor( - metrics: Metrics, - StethOperationSrv: StethOperationSrv, - WithdrawalsSrv: WithdrawalsSrv, - GateSealSrv: GateSealSrv, - VaultSrv: VaultSrv, - healthChecker: HealthChecker, - ) { - this.metrics = metrics - this.StethOperationSrv = StethOperationSrv - this.WithdrawalsSrv = WithdrawalsSrv - this.GateSealSrv = GateSealSrv - this.VaultSrv = VaultSrv - this.healthChecker = healthChecker - } - - public handleTx() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const end = this.metrics.summaryHandlers.labels({ method: HandleTxLabel }).startTimer() - this.metrics.lastAgentTouch.labels({ method: HandleTxLabel }).set(new Date().getTime()) - - const txEvent = newTransactionDto(call.request) - - const findings: Finding[] = [] - - const stethOperationFindings = await this.StethOperationSrv.handleTransaction(txEvent) - const withdrawalsFindings = await this.WithdrawalsSrv.handleTransaction(txEvent) - const gateSealFindings = this.GateSealSrv.handleTransaction(txEvent) - const vaultFindings = this.VaultSrv.handleTransaction(txEvent) - - findings.push(...stethOperationFindings, ...withdrawalsFindings, ...gateSealFindings, ...vaultFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusFail }).inc() - - const txResponse = new EvaluateTxResponse() - txResponse.setStatus(ResponseStatus.SUCCESS) - txResponse.setPrivate(false) - txResponse.setFindingsList(findings) - const m = txResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - end() - callback(null, txResponse) - } - } -} diff --git a/ethereum-steth/src/main.ts b/ethereum-steth/src/main.ts deleted file mode 100644 index 06f02daf6..000000000 --- a/ethereum-steth/src/main.ts +++ /dev/null @@ -1,232 +0,0 @@ -import * as grpc from '@grpc/grpc-js' -import { either as E } from 'fp-ts' -import { BlockHandler } from './handlers/block.handler' -import { HealthHandler } from './handlers/health.handler' -import { TxHandler } from './handlers/tx.handler' -import { InitHandler } from './handlers/init.handler' -import { AlertHandler } from './handlers/alert.handler' -import { AgentService } from './generated/proto/agent_grpc_pb' -import express, { Express, Request, Response } from 'express' -import Version from './utils/version' -import { Finding } from './generated/proto/alert_pb' -import { Config } from './utils/env/env' -import { knex } from 'knex' -import * as Winston from 'winston' -import { ethers } from 'ethers' -import { Address } from './utils/constants' -import { - GateSeal__factory, - Lido__factory, - ValidatorsExitBusOracle__factory, - WithdrawalQueueERC721__factory, -} from './generated/typechain' -import { ETHProvider } from './clients/eth_provider' -import { StethOperationCache } from './services/steth_operation/StethOperation.cache' -import { getDepositSecurityEvents } from './utils/events/deposit_security_events' -import { getLidoEvents } from './utils/events/lido_events' -import { getInsuranceFundEvents } from './utils/events/insurance_fund_events' -import { getBurnerEvents } from './utils/events/burner_events' -import { WithdrawalsRepo } from './services/withdrawals/Withdrawals.repo' -import { WithdrawalsCache } from './services/withdrawals/Withdrawals.cache' -import { getWithdrawalsEvents } from './utils/events/withdrawals_events' -import { GateSealCache } from './services/gate-seal/GateSeal.cache' -import promClient from 'prom-client' -import { Metrics } from './utils/metrics/metrics' -import { StethOperationSrv } from './services/steth_operation/StethOperation.srv' -import { WithdrawalsSrv } from './services/withdrawals/Withdrawals.srv' -import { GateSealSrv } from './services/gate-seal/GateSeal.srv' -import { VaultSrv } from './services/vault/Vault.srv' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' -import { getEthersProvider } from 'forta-agent/dist/sdk/utils' -import * as fs from 'node:fs' - -const main = async () => { - const config = new Config() - const dbClient = knex(config.knexConfig) - if (config.dataProvider === '') { - console.log('Could not set up dataProvider') - process.exit(1) - } - - const logger: Winston.Logger = Winston.createLogger({ - format: config.logFormat === 'simple' ? Winston.format.simple() : Winston.format.json(), - transports: [new Winston.transports.Console()], - }) - - const defaultRegistry = promClient - defaultRegistry.collectDefaultMetrics({ - prefix: config.promPrefix, - }) - - const customRegister = new promClient.Registry() - const mergedRegistry = promClient.Registry.merge([defaultRegistry.register, customRegister]) - mergedRegistry.setDefaultLabels({ instance: config.instance, dataProvider: config.dataProvider }) - - const metrics = new Metrics(mergedRegistry, config.promPrefix) - - const ethProvider = new ethers.providers.JsonRpcProvider(config.ethereumRpcUrl, config.chainId) - let fortaEthersProvider = getEthersProvider() - if (!config.useFortaProvider) { - fortaEthersProvider = ethProvider - } - - const address: Address = Address - const lidoRunner = Lido__factory.connect(address.LIDO_STETH_ADDRESS, fortaEthersProvider) - - const wdQueueRunner = WithdrawalQueueERC721__factory.connect(address.WITHDRAWALS_QUEUE_ADDRESS, ethProvider) - - const gateSealRunner = GateSeal__factory.connect(address.GATE_SEAL_DEFAULT_ADDRESS, fortaEthersProvider) - const veboRunner = ValidatorsExitBusOracle__factory.connect(address.EXIT_BUS_ORACLE_ADDRESS, fortaEthersProvider) - - const ethClient = new ETHProvider( - logger, - metrics, - fortaEthersProvider, - lidoRunner, - wdQueueRunner, - gateSealRunner, - veboRunner, - ) - - const stethOperationCache = new StethOperationCache() - const stethOperationSrv = new StethOperationSrv( - logger, - stethOperationCache, - ethClient, - address.DEPOSIT_SECURITY_ADDRESS, - address.LIDO_STETH_ADDRESS, - address.DEPOSIT_EXECUTOR_ADDRESS, - getDepositSecurityEvents(address.DEPOSIT_SECURITY_ADDRESS), - getLidoEvents(address.LIDO_STETH_ADDRESS), - getInsuranceFundEvents(address.INSURANCE_FUND_ADDRESS, address.KNOWN_ERC20), - getBurnerEvents(address.BURNER_ADDRESS), - ) - - const withdrawalsSrv = new WithdrawalsSrv( - logger, - new WithdrawalsRepo(dbClient), - ethClient, - new WithdrawalsCache(), - getWithdrawalsEvents(address.WITHDRAWALS_QUEUE_ADDRESS), - address.WITHDRAWALS_QUEUE_ADDRESS, - address.LIDO_STETH_ADDRESS, - ) - - const gateSealSrv = new GateSealSrv( - logger, - ethClient, - new GateSealCache(), - address.GATE_SEAL_DEFAULT_ADDRESS, - address.GATE_SEAL_FACTORY_ADDRESS, - ) - - const vaultSrv = new VaultSrv( - logger, - ethClient, - address.WITHDRAWALS_VAULT_ADDRESS, - address.EL_REWARDS_VAULT_ADDRESS, - address.BURNER_ADDRESS, - address.LIDO_STETH_ADDRESS, - ) - - try { - await dbClient.migrate.latest() - - const sql = fs.readFileSync('./src/db/withdrawal_requests_17_07_24.sql', 'utf8') - await dbClient.raw(sql) - - logger.info('Migrations have been run successfully.') - } catch (error) { - logger.error('Error running migrations:', error) - process.exit(1) - } - - const onAppFindings: Finding[] = [] - - const healthChecker = new HealthChecker(logger, metrics, BorderTime, MaxNumberErrorsPerBorderTime) - - const gRPCserver = new grpc.Server() - const blockH = new BlockHandler( - logger, - metrics, - stethOperationSrv, - withdrawalsSrv, - gateSealSrv, - vaultSrv, - healthChecker, - onAppFindings, - ethClient, - ) - const txH = new TxHandler(metrics, stethOperationSrv, withdrawalsSrv, gateSealSrv, vaultSrv, healthChecker) - const healthH = new HealthHandler(healthChecker, metrics, logger, config.ethereumRpcUrl, config.chainId) - - const latestBlockNumber = await ethClient.getBlockNumber() - if (E.isLeft(latestBlockNumber)) { - logger.error(latestBlockNumber.left) - - process.exit(1) - } - - const initH = new InitHandler( - config.appName, - logger, - stethOperationSrv, - withdrawalsSrv, - gateSealSrv, - vaultSrv, - onAppFindings, - latestBlockNumber.right, - ) - const alertH = new AlertHandler() - - gRPCserver.addService(AgentService, { - initialize: initH.handleInit(), - evaluateBlock: blockH.handleBlock(), - evaluateTx: txH.handleTx(), - healthCheck: healthH.healthGrpc(), - // not used, but required for grpc contract - evaluateAlert: alertH.handleAlert(), - }) - - const stethOperationSrvErr = await stethOperationSrv.initialize(latestBlockNumber.right) - if (stethOperationSrvErr !== null) { - logger.error('Could not init stethSrv', stethOperationSrvErr) - - process.exit(1) - } - - const gateSealSrvErr = await gateSealSrv.initialize(latestBlockNumber.right) - if (gateSealSrvErr instanceof Error) { - logger.error('Could not init gateSealSrvErr', gateSealSrvErr) - - process.exit(1) - } else { - onAppFindings.push(...gateSealSrvErr) - } - - metrics.buildInfo.set({ commitHash: Version.commitHash }, 1) - - gRPCserver.bindAsync(`0.0.0.0:${config.grpcPort}`, grpc.ServerCredentials.createInsecure(), (err, port) => { - if (err != null) { - logger.error(err) - - process.exit(1) - } - logger.info(`${config.appName} is listening on ${port}`) - }) - - const httpService: Express = express() - - httpService.get('/metrics', async (req: Request, res: Response) => { - res.set('Content-Type', mergedRegistry.contentType) - res.send(await mergedRegistry.metrics()) - }) - - httpService.get('/health', healthH.healthHttp()) - - httpService.listen(config.httpPort, () => { - logger.info(`Http server is running at http://localhost:${config.httpPort}`) - }) -} - -main() diff --git a/ethereum-steth/src/services/gate-seal/GateSeal.cache.ts b/ethereum-steth/src/services/gate-seal/GateSeal.cache.ts deleted file mode 100644 index 3377c5d58..000000000 --- a/ethereum-steth/src/services/gate-seal/GateSeal.cache.ts +++ /dev/null @@ -1,22 +0,0 @@ -export class GateSealCache { - private _lastNoPauseRoleAlertTimestamp = 0 - private _lastExpiryGateSealAlertTimestamp = 0 - - constructor() {} - - public getLastNoPauseRoleAlertTimestamp(): number { - return this._lastNoPauseRoleAlertTimestamp - } - - public setLastNoPauseRoleAlertTimestamp(lastNoPauseRoleAlertTimestamp: number) { - this._lastNoPauseRoleAlertTimestamp = lastNoPauseRoleAlertTimestamp - } - - public getLastExpiryGateSealAlertTimestamp(): number { - return this._lastExpiryGateSealAlertTimestamp - } - - public setLastExpiryGateSealAlertTimestamp(lastExpiryGateSealAlertTimestamp: number) { - this._lastExpiryGateSealAlertTimestamp = lastExpiryGateSealAlertTimestamp - } -} diff --git a/ethereum-steth/src/services/gate-seal/GateSeal.srv.ts b/ethereum-steth/src/services/gate-seal/GateSeal.srv.ts deleted file mode 100644 index 6e82047de..000000000 --- a/ethereum-steth/src/services/gate-seal/GateSeal.srv.ts +++ /dev/null @@ -1,319 +0,0 @@ -import { elapsedTime, formatDelay } from '../../utils/time' -import { either as E } from 'fp-ts' -import { GateSeal, GateSealExpiredErr } from '../../entity/gate_seal' -import { GateSealCache } from './GateSeal.cache' -import { GATE_SEAL_FACTORY_GATE_SEAL_CREATED_EVENT, GATE_SEAL_SEALED_EVENT } from '../../utils/events/gate_seal_events' -import { etherscanAddress } from '../../utils/string' -import { Logger } from 'winston' -import { networkAlert } from '../../utils/errors' -import { BlockDto, TransactionDto } from '../../entity/events' -import BigNumber from 'bignumber.js' -import { Finding } from '../../generated/proto/alert_pb' -import { ethers } from 'forta-agent' - -const ONE_HOUR = 60 * 60 -const ONE_DAY = 24 * ONE_HOUR -const ONE_WEEK = 7 * ONE_DAY -const TWO_WEEKS = 2 * ONE_WEEK -const ONE_MONTH = ONE_WEEK * 4 -const THREE_MONTHS = ONE_MONTH * 3 - -export abstract class IGateSealClient { - public abstract checkGateSeal(blockNumber: number, gateSealAddress: string): Promise> - - public abstract getExpiryTimestamp(blockNumber: number): Promise> -} - -export class GateSealSrv { - private readonly name = 'GateSealSrv' - private readonly logger: Logger - - private readonly gateSealClient: IGateSealClient - private readonly cache: GateSealCache - private readonly gateSealFactoryAddress: string - - private gateSealAddress: string | undefined - - constructor( - logger: Logger, - ethProvider: IGateSealClient, - cache: GateSealCache, - gateSealAddress: string, - gateSealFactoryAddress: string, - ) { - this.logger = logger - this.gateSealClient = ethProvider - this.cache = cache - this.gateSealAddress = gateSealAddress - this.gateSealFactoryAddress = gateSealFactoryAddress - } - - public async initialize(currentBlock: number): Promise { - const start = new Date().getTime() - const out: Finding[] = [] - if (this.gateSealAddress === undefined) { - return new Error(`Gate seal address is not provided`) - } - - const status = await this.gateSealClient.checkGateSeal(currentBlock, this.gateSealAddress) - if (E.isLeft(status)) { - if (status.left === GateSealExpiredErr) { - const f: Finding = new Finding() - f.setName('⚠️ GateSeal: default GateSeal address in forta agent is expired') - f.setDescription(`GateSeal address: ${etherscanAddress(this.gateSealAddress)}]`) - f.setAlertid('GATE-SEAL-DEFAULT-EXPIRED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start) + `on block ${currentBlock}`) - - return out - } - - return status.left - } - - if (!status.right.roleForExitBus || !status.right.roleForWithdrawalQueue) { - let additionalDesc = '' - if (!status.right.roleForExitBus) { - additionalDesc += `\nNo PAUSE_ROLE for ExitBus address: ${etherscanAddress(status.right.exitBusOracleAddress)}` - } - if (!status.right.roleForWithdrawalQueue) { - additionalDesc += `\nNo PAUSE_ROLE for WithdrawalQueue address: ${etherscanAddress( - status.right.withdrawalQueueAddress, - )}` - } - - const f: Finding = new Finding() - f.setName("⚠️ GateSeal: default GateSeal address in forta agent doesn't have PAUSE_ROLE for contracts") - f.setDescription(`GateSeal address: ${etherscanAddress(this.gateSealAddress)}${additionalDesc}`) - f.setAlertid('GATE-SEAL-DEFAULT-WITHOUT-ROLE') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - } - - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return out - } - - public getName(): string { - return this.name - } - - public async handleBlock(blockDto: BlockDto): Promise { - const start = new Date().getTime() - const findings: Finding[] = [] - - const [pauseRoleFindings, expiryGateSealFindings] = await Promise.all([ - this.handlePauseRole(blockDto), - this.handleExpiryGateSeal(blockDto), - ]) - - findings.push(...pauseRoleFindings, ...expiryGateSealFindings) - this.logger.info(elapsedTime(GateSealSrv.name + '.' + this.handleBlock.name, start)) - - return findings - } - - public async handlePauseRole(blockDto: BlockDto): Promise { - const out: Finding[] = [] - if (this.gateSealAddress === undefined) { - return [] - } - - const currentBlockTimestamp = blockDto.timestamp - const status = await this.gateSealClient.checkGateSeal(blockDto.number, this.gateSealAddress) - if (E.isLeft(status)) { - if (status.left === GateSealExpiredErr) { - const f: Finding = new Finding() - f.setName('⚠️ GateSeal: default GateSeal address in forta agent is expired') - f.setDescription(`GateSeal address: ${etherscanAddress(this.gateSealAddress)}]`) - f.setAlertid('GATE-SEAL-DEFAULT-EXPIRED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - return out - } - - out.push( - networkAlert( - status.left, - `Error in ${GateSealSrv.name}.${this.handlePauseRole.name}:125`, - `Could not call ethProvider.checkGateSeal`, - ), - ) - - return out - } - - if (!status.right.roleForExitBus || !status.right.roleForWithdrawalQueue) { - let additionalDesc = '' - if (!status.right.roleForExitBus) { - additionalDesc += `\nNo PAUSE_ROLE for ExitBus address: ${etherscanAddress(status.right.exitBusOracleAddress)}` - } - if (!status.right.roleForWithdrawalQueue) { - additionalDesc += `\nNo PAUSE_ROLE for WithdrawalQueue address: ${etherscanAddress( - status.right.withdrawalQueueAddress, - )}` - } - if (currentBlockTimestamp - this.cache.getLastNoPauseRoleAlertTimestamp() > ONE_DAY) { - const f: Finding = new Finding() - f.setName("🚨 GateSeal: actual address doesn't have PAUSE_ROLE for contracts") - f.setDescription(`GateSeal address: ${etherscanAddress(this.gateSealAddress)}${additionalDesc}`) - f.setAlertid('GATE-SEAL-DEFAULT-EXPIRED') - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - this.cache.setLastNoPauseRoleAlertTimestamp(currentBlockTimestamp) - } - } - - return out - } - - public async handleExpiryGateSeal(blockDto: BlockDto): Promise { - if (this.gateSealAddress === undefined) { - return [] - } - - const currentBlockTimestamp = blockDto.timestamp - const expiryTimestamp = await this.gateSealClient.getExpiryTimestamp(blockDto.number) - - if (E.isLeft(expiryTimestamp)) { - return [ - networkAlert( - expiryTimestamp.left, - `Error in ${GateSealSrv.name}.${this.handleExpiryGateSeal.name}:189`, - `Could not call ethProvider.getExpiryTimestamp`, - ), - ] - } - - const out: Finding[] = [] - if (expiryTimestamp.right.eq(0) || expiryTimestamp.right.toNumber() <= currentBlockTimestamp) { - const f: Finding = new Finding() - f.setName('🚨 GateSeal: is expired!') - f.setDescription(`GateSeal address: ${etherscanAddress(this.gateSealAddress)}}`) - f.setAlertid('GATE-SEAL-IS-EXPIRED') - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - out.push(f) - - this.gateSealAddress = undefined - } else if (currentBlockTimestamp - this.cache.getLastExpiryGateSealAlertTimestamp() > TWO_WEEKS) { - if (expiryTimestamp.right.toNumber() - currentBlockTimestamp <= THREE_MONTHS) { - const f: Finding = new Finding() - f.setName('⚠️ GateSeal: is about to be expired') - f.setDescription( - `GateSeal address: ${etherscanAddress(this.gateSealAddress)}\nExpiry date ${new Date(expiryTimestamp.right.toNumber() * 1000).toUTCString()}`, - ) - f.setAlertid('GATE-SEAL-IS-ABOUT-TO-BE-EXPIRED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - out.push(f) - - this.cache.setLastExpiryGateSealAlertTimestamp(currentBlockTimestamp) - } - } - - return out - } - - public handleTransaction(txEvent: TransactionDto): Finding[] { - const findings: Finding[] = [] - - const sealedGateSealFindings = this.handleSealedGateSeal(txEvent) - const newGateSealFindings = this.handleNewGateSeal(txEvent) - - findings.push(...sealedGateSealFindings, ...newGateSealFindings) - - return findings - } - - public handleSealedGateSeal(txEvent: TransactionDto): Finding[] { - if (this.gateSealAddress === undefined) { - return [] - } - - const iface = new ethers.utils.Interface([GATE_SEAL_SEALED_EVENT]) - const out: Finding[] = [] - for (const log of txEvent.logs) { - if (log.address.toLowerCase() !== this.gateSealAddress.toLowerCase()) { - continue - } - - try { - const sealedEvent = iface.parseLog(log) - const { sealed_by, sealed_for, sealable } = sealedEvent.args - const duration = formatDelay(Number(sealed_for)) - - const f: Finding = new Finding() - f.setName('🚨🚨🚨 GateSeal: is sealed 🚨🚨🚨') - f.setDescription( - `GateSeal address: ${etherscanAddress(this.gateSealAddress)}\nSealed by: ${etherscanAddress( - sealed_by, - )}\nSealed for: ${duration}\nSealable: ${etherscanAddress(sealable)}`, - ) - f.setAlertid('GATE-SEAL-IS-SEALED') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - } catch (e) { - // Only one from eventsOfNotice could be correct - // Others - skipping - } - } - - return out - } - - public handleNewGateSeal(txEvent: TransactionDto): Finding[] { - const iface = new ethers.utils.Interface([GATE_SEAL_FACTORY_GATE_SEAL_CREATED_EVENT]) - const out: Finding[] = [] - - for (const log of txEvent.logs) { - if (log.address.toLowerCase() !== this.gateSealFactoryAddress.toLowerCase()) { - continue - } - - try { - const newGateSealEvent = iface.parseLog(log) - const { gate_seal } = newGateSealEvent.args - - const f: Finding = new Finding() - f.setName('⚠️ GateSeal: a new instance deployed from factory') - f.setDescription( - `New instance address: ${etherscanAddress( - gate_seal, - )}\ndev: Please, check if \`GATE_SEAL_DEFAULT_ADDRESS\` should be updated in the nearest future`, - ) - f.setAlertid('GATE-SEAL-NEW-ONE-CREATED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - this.gateSealAddress = gate_seal - } catch (e) { - // Only one from eventsOfNotice could be correct - // Others - skipping - } - } - - return out - } -} diff --git a/ethereum-steth/src/services/gate-seal/gate-seal.spec.ts b/ethereum-steth/src/services/gate-seal/gate-seal.spec.ts deleted file mode 100644 index a8f83c3a7..000000000 --- a/ethereum-steth/src/services/gate-seal/gate-seal.spec.ts +++ /dev/null @@ -1,193 +0,0 @@ -import { Address, GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024 } from '../../utils/constants' -import { either as E } from 'fp-ts' -import { GateSeal } from '../../entity/gate_seal' -import { expect } from '@jest/globals' -import { BlockDto, TransactionDto } from '../../entity/events' -import { - GateSeal__factory, - Lido__factory, - ValidatorsExitBusOracle__factory, - WithdrawalQueueERC721__factory, -} from '../../generated/typechain' -import { GateSealSrv, IGateSealClient } from './GateSeal.srv' -import { GateSealCache } from './GateSeal.cache' -import * as Winston from 'winston' -import { ETHProvider } from '../../clients/eth_provider' -import { ethers } from 'forta-agent' -import { Finding } from '../../generated/proto/alert_pb' -import { getFortaConfig } from 'forta-agent/dist/sdk/utils' -import promClient from 'prom-client' -import { Metrics } from '../../utils/metrics/metrics' - -const TEST_TIMEOUT = 120_000 // ms - -describe('GateSeal srv functional tests', () => { - const chainId = 1 - - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - const adr: Address = Address - - const fortaEthersProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) - const lidoRunner = Lido__factory.connect(adr.LIDO_STETH_ADDRESS, fortaEthersProvider) - const wdQueueRunner = WithdrawalQueueERC721__factory.connect(adr.WITHDRAWALS_QUEUE_ADDRESS, fortaEthersProvider) - const gateSealRunner = GateSeal__factory.connect(adr.GATE_SEAL_DEFAULT_ADDRESS, fortaEthersProvider) - const veboRunner = ValidatorsExitBusOracle__factory.connect(adr.EXIT_BUS_ORACLE_ADDRESS, fortaEthersProvider) - - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - - const gateSealClient: IGateSealClient = new ETHProvider( - logger, - m, - fortaEthersProvider, - lidoRunner, - wdQueueRunner, - gateSealRunner, - veboRunner, - ) - - const gateSealSrv = new GateSealSrv( - logger, - gateSealClient, - new GateSealCache(), - GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024, - adr.GATE_SEAL_FACTORY_ADDRESS, - ) - - test( - 'handle pause role true', - async () => { - const blockNumber = 19_113_580 - const block = await fortaEthersProvider.getBlock(blockNumber) - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - const initErr = await gateSealSrv.initialize(blockNumber) - if (initErr instanceof Error) { - throw initErr - } - - const status = await gateSealClient.checkGateSeal(blockNumber, GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024) - if (E.isLeft(status)) { - throw status - } - - const expected: GateSeal = { - roleForWithdrawalQueue: true, - roleForExitBus: true, - exitBusOracleAddress: '0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e', - withdrawalQueueAddress: '0x889edc2edab5f40e902b864ad4d7ade8e412f9b1', - } - expect(status.right).toEqual(expected) - - const result = await gateSealSrv.handlePauseRole(blockDto) - - expect(result.length).toEqual(0) - }, - TEST_TIMEOUT, - ) - - test( - '⚠️ GateSeal: is about to be expired', - async () => { - const initBlock = 19_172_614 - - const initErr = await gateSealSrv.initialize(initBlock) - if (initErr instanceof Error) { - throw initErr - } - - const neededBlock = 19_172_615 - const block = await fortaEthersProvider.getBlock(neededBlock) - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - const result = await gateSealSrv.handleExpiryGateSeal(blockDto) - - const expected = { - alertId: 'GATE-SEAL-IS-ABOUT-TO-BE-EXPIRED', - description: - `GateSeal address: [${GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024}](https://etherscan.io/address/${GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024})\n` + - 'Expiry date Wed, 01 May 2024 00:00:00 GMT', - name: '⚠️ GateSeal: is about to be expired', - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.DEGRADED, - } - - expect(result.length).toEqual(1) - expect(result[0].getAlertid()).toEqual(expected.alertId) - expect(result[0].getDescription()).toEqual(expected.description) - expect(result[0].getName()).toEqual(expected.name) - expect(result[0].getSeverity()).toEqual(expected.severity) - expect(result[0].getType()).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) - - test( - '⚠️ GateSeal: a new instance deployed from factory', - async () => { - const txHash = '0x1547f17108830a92673b967aff13971fae18b4d35681b93a38a97a22083deb93' - const trx = await fortaEthersProvider.getTransaction(txHash) - const receipt = await trx.wait() - - const transactionDto: TransactionDto = { - logs: receipt.logs, - to: trx.to ? trx.to : null, - block: { - timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), - number: trx.blockNumber ? trx.blockNumber : 1, - }, - } - - const results = gateSealSrv.handleTransaction(transactionDto) - - const expected = { - alertId: 'GATE-SEAL-NEW-ONE-CREATED', - description: - 'New instance address: [0x79243345eDbe01A7E42EDfF5900156700d22611c](https://etherscan.io/address/0x79243345eDbe01A7E42EDfF5900156700d22611c)\n' + - 'dev: Please, check if `GATE_SEAL_DEFAULT_ADDRESS` should be updated in the nearest future', - name: '⚠️ GateSeal: a new instance deployed from factory', - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - } - - expect(results.length).toEqual(1) - expect(results[0].getAlertid()).toEqual(expected.alertId) - expect(results[0].getDescription()).toEqual(expected.description) - expect(results[0].getName()).toEqual(expected.name) - expect(results[0].getSeverity()).toEqual(expected.severity) - expect(results[0].getType()).toEqual(expected.type) - - const txHashEmptyFindings = '0xb00783f3eb79bd60f63e5744bbf0cb4fdc2f98bbca54cd2d3f611f032faa6a57' - - const trxWithEmptyFindings = await fortaEthersProvider.getTransaction(txHashEmptyFindings) - const receiptWithEmptyFindings = await trxWithEmptyFindings.wait() - - const trxDTOWithEmptyFindings: TransactionDto = { - logs: receiptWithEmptyFindings.logs, - to: trxWithEmptyFindings.to ? trxWithEmptyFindings.to : null, - block: { - timestamp: trxWithEmptyFindings.timestamp ? trxWithEmptyFindings.timestamp : new Date().getTime(), - number: trxWithEmptyFindings.blockNumber ? trxWithEmptyFindings.blockNumber : 1, - }, - } - - const resultsEmptyFindings = gateSealSrv.handleTransaction(trxDTOWithEmptyFindings) - - expect(resultsEmptyFindings.length).toEqual(0) - }, - TEST_TIMEOUT, - ) -}) diff --git a/ethereum-steth/src/services/gate-seal/mocks/mock.ts b/ethereum-steth/src/services/gate-seal/mocks/mock.ts deleted file mode 100644 index bddcb930a..000000000 --- a/ethereum-steth/src/services/gate-seal/mocks/mock.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IGateSealClient } from '../GateSeal.srv' - -export const GateSealClientMock = (): jest.Mocked => ({ - checkGateSeal: jest.fn(), - getExpiryTimestamp: jest.fn(), -}) diff --git a/ethereum-steth/src/services/health-checker/health-checker.srv.spec.ts b/ethereum-steth/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 977b86c2c..000000000 --- a/ethereum-steth/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { networkAlert } from '../../utils/errors' -import { HealthChecker } from './health-checker.srv' -import promClient from 'prom-client' -import * as Winston from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc')] - const borderTime = 1_000 - const timeForNextCheck = 250 - - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/ethereum-steth/src/services/health-checker/health-checker.srv.ts b/ethereum-steth/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 5f07ca97a..000000000 --- a/ethereum-steth/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { NetworkErrorFinding } from '../../utils/errors' -import { Finding } from '../../generated/proto/alert_pb' -import { Logger } from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - private logger: Logger - private metrics: Metrics - - constructor(logger: Logger, metrics: Metrics, borderTime: number, maxCountErrors: number) { - this.logger = logger - this.metrics = metrics - - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): number { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.getAlertid() === NetworkErrorFinding) { - this.logger.warn(f.getName(), { - desc: f.getDescription(), - err: { - stack: f.getMetadataMap()['stack'], - msg: f.getMetadataMap()['message'], - err: f.getMetadataMap()['name'], - }, - }) - errCount += 1 - - this.metrics.networkErrors.inc() - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return errCount - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - - return errCount - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/ethereum-steth/src/services/steth_operation/StethOperation.cache.ts b/ethereum-steth/src/services/steth_operation/StethOperation.cache.ts deleted file mode 100644 index 62fbb6ddd..000000000 --- a/ethereum-steth/src/services/steth_operation/StethOperation.cache.ts +++ /dev/null @@ -1,108 +0,0 @@ -import BigNumber from 'bignumber.js' -import { ShareRate } from '../../entity/share_rate' -import { BlockDto } from '../../entity/events' - -export class StethOperationCache { - private _lastDepositorTxTime = 0 - private _lastBufferedEth = new BigNumber(0) - private _criticalDepositableAmountTime = 0 - private _lastReportedDepositableEthTimestamp = 0 - private _lastReportedExecutorBalanceTimestamp = 0 - private _lastReportedStakingLimit10Timestamp = 0 - private _lastReportedStakingLimit30Timestamp = 0 - private _shareRate: ShareRate - private _prev4Blocks: Array - - constructor() { - this._shareRate = { - amount: new BigNumber(0), - blockNumber: 0, - } - - this._prev4Blocks = [] - } - - public getLastDepositorTxTime(): number { - return this._lastDepositorTxTime - } - - public setLastDepositorTxTime(value: number) { - this._lastDepositorTxTime = value - } - - public getLastBufferedEth(): BigNumber { - return this._lastBufferedEth - } - - public setLastBufferedEth(value: BigNumber) { - this._lastBufferedEth = value - } - - public getCriticalDepositableAmountTimestamp(): number { - return this._criticalDepositableAmountTime - } - - public setCriticalDepositableAmountTimestamp(blockTimestamp: number) { - this._criticalDepositableAmountTime = blockTimestamp - } - - public getLastReportedDepositableEthTimestamp(): number { - return this._lastReportedDepositableEthTimestamp - } - - public setLastReportedDepositableEthTimestamp(blockTimestamp: number) { - this._lastReportedDepositableEthTimestamp = blockTimestamp - } - - public getLastReportedExecutorBalanceTimestamp(): number { - return this._lastReportedExecutorBalanceTimestamp - } - - public setLastReportedExecutorBalanceTimestamp(blockTimestamp: number) { - this._lastReportedExecutorBalanceTimestamp = blockTimestamp - } - - public getLastReportedStakingLimit10Timestamp(): number { - return this._lastReportedStakingLimit10Timestamp - } - - public setLastReportedStakingLimit10Timestamp(blockTimestamp: number) { - this._lastReportedStakingLimit10Timestamp = blockTimestamp - } - - public getLastReportedStakingLimit30Timestamp(): number { - return this._lastReportedStakingLimit30Timestamp - } - - public setLastReportedStakingLimit30Timestamp(blockTimestamp: number) { - this._lastReportedStakingLimit30Timestamp = blockTimestamp - } - - public getShareRate(): ShareRate { - return this._shareRate - } - - public setShareRate(shareRate: ShareRate) { - this._shareRate = shareRate - } - - public setPrevBlock(curBlock: BlockDto) { - for (let i = 0; i < this._prev4Blocks.length - 1; i++) { - this._prev4Blocks[i] = this._prev4Blocks[i + 1] - } - - this._prev4Blocks[this._prev4Blocks.length - 1] = curBlock - } - - public setPrev4Blocks(prev4Blocks: Array) { - this._prev4Blocks = prev4Blocks - } - - public getPrev4Blocks(): Array { - return this._prev4Blocks - } - - public getParentBlock(): BlockDto { - return this._prev4Blocks[this._prev4Blocks.length - 1] - } -} diff --git a/ethereum-steth/src/services/steth_operation/StethOperation.functional.spec.ts b/ethereum-steth/src/services/steth_operation/StethOperation.functional.spec.ts deleted file mode 100644 index 9164e48a4..000000000 --- a/ethereum-steth/src/services/steth_operation/StethOperation.functional.spec.ts +++ /dev/null @@ -1,344 +0,0 @@ -import BigNumber from 'bignumber.js' -import { BlockDto, TransactionDto } from '../../entity/events' -import { ethers } from 'ethers' -import { Finding } from '../../generated/proto/alert_pb' -import * as Winston from 'winston' -import { Address } from '../../utils/constants' -import { getFortaConfig } from 'forta-agent/dist/sdk/utils' -import { - GateSeal__factory, - Lido__factory, - ValidatorsExitBusOracle__factory, - WithdrawalQueueERC721__factory, -} from '../../generated/typechain' -import { ETHProvider } from '../../clients/eth_provider' -import { StethOperationCache } from './StethOperation.cache' -import { StethOperationSrv } from './StethOperation.srv' -import { getDepositSecurityEvents } from '../../utils/events/deposit_security_events' -import { getLidoEvents } from '../../utils/events/lido_events' -import { getInsuranceFundEvents } from '../../utils/events/insurance_fund_events' -import { getBurnerEvents } from '../../utils/events/burner_events' -import promClient from 'prom-client' -import { Metrics } from '../../utils/metrics/metrics' - -const TEST_TIMEOUT = 60_000 // ms - -describe('Steth.srv functional tests', () => { - const chainId = 1 - - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - const address: Address = Address - - const fortaEthersProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) - const lidoRunner = Lido__factory.connect(address.LIDO_STETH_ADDRESS, fortaEthersProvider) - const wdQueueRunner = WithdrawalQueueERC721__factory.connect(address.WITHDRAWALS_QUEUE_ADDRESS, fortaEthersProvider) - const gateSealRunner = GateSeal__factory.connect(address.GATE_SEAL_DEFAULT_ADDRESS, fortaEthersProvider) - const veboRunner = ValidatorsExitBusOracle__factory.connect(address.EXIT_BUS_ORACLE_ADDRESS, fortaEthersProvider) - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - - const ethClient = new ETHProvider( - logger, - m, - fortaEthersProvider, - lidoRunner, - wdQueueRunner, - gateSealRunner, - veboRunner, - ) - - const stethOperationCache = new StethOperationCache() - const stethOperationSrv = new StethOperationSrv( - logger, - stethOperationCache, - ethClient, - address.DEPOSIT_SECURITY_ADDRESS, - address.LIDO_STETH_ADDRESS, - address.DEPOSIT_EXECUTOR_ADDRESS, - getDepositSecurityEvents(address.DEPOSIT_SECURITY_ADDRESS), - getLidoEvents(address.LIDO_STETH_ADDRESS), - getInsuranceFundEvents(address.INSURANCE_FUND_ADDRESS, address.KNOWN_ERC20), - getBurnerEvents(address.BURNER_ADDRESS), - ) - - test( - 'LOW-STAKING-LIMIT', - async () => { - const blockNumber = 16_704_075 - const block = await fortaEthersProvider.getBlock(blockNumber) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - const result = await stethOperationSrv.handleBlock(blockDto) - - const expected = { - alertId: 'LOW-STAKING-LIMIT', - description: `Current staking limit is lower than 10% of max staking limit`, - name: '⚠️ Unspent staking limit below 10%', - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - } - - expect(result.length).toEqual(1) - expect(result[0].getAlertid()).toEqual(expected.alertId) - expect(result[0].getDescription()).toEqual(expected.description) - expect(result[0].getName()).toEqual(expected.name) - expect(result[0].getSeverity()).toEqual(expected.severity) - expect(result[0].getType()).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) - - test( - 'LOW-DEPOSIT-EXECUTOR-BALANCE', - async () => { - const blockNumber = 17241600 - const block = await fortaEthersProvider.getBlock(blockNumber) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - const result = await stethOperationSrv.handleDepositExecutorBalance(blockDto.number, blockDto.timestamp) - - const expected = { - alertId: 'LOW-DEPOSIT-EXECUTOR-BALANCE', - description: `Balance of deposit executor is 1.9232. This is extremely low! 😱`, - name: '⚠️ Low deposit executor balance', - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.SUSPICIOUS, - } - - expect(result.length).toEqual(1) - expect(result[0].getAlertid()).toEqual(expected.alertId) - expect(result[0].getDescription()).toEqual(expected.description) - expect(result[0].getName()).toEqual(expected.name) - expect(result[0].getSeverity()).toEqual(expected.severity) - expect(result[0].getType()).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) - - test( - 'should process tx with EL rewards vault set and staking changes', - async () => { - const txHash = '0x11a48020ae69cf08bd063f1fbc8ecf65bd057015aaa991bf507dbc598aadb68e' - - const trx = await fortaEthersProvider.getTransaction(txHash) - const receipt = await trx.wait() - - const transactionDto: TransactionDto = { - logs: receipt.logs, - to: trx.to ? trx.to : null, - block: { - timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), - number: trx.blockNumber ? trx.blockNumber : 1, - }, - } - - const results = await stethOperationSrv.handleTransaction(transactionDto) - - const expected = [ - { - name: '⚠️ Lido: Staking resumed', - description: 'Staking was resumed!\n\nBlockNumber 14860268', - alertId: 'LIDO-STAKING-RESUMED', - protocol: 'ethereum', - severity: 3, - type: 4, - }, - { - name: '⚠️ Lido: Staking limit set', - description: - 'Staking limit was set with:\n' + - 'Max staking limit: 150000000000000000000000\n' + - 'Stake limit increase per block: 23437500000000000000\n\nBlockNumber 14860268', - alertId: 'LIDO-STAKING-LIMIT-SET', - protocol: 'ethereum', - severity: 3, - type: 4, - }, - ] - - expect(results.length).toEqual(2) - expect(results[0].getAlertid()).toEqual(expected[0].alertId) - expect(results[0].getDescription()).toEqual(expected[0].description) - expect(results[0].getName()).toEqual(expected[0].name) - expect(results[0].getSeverity()).toEqual(expected[0].severity) - expect(results[0].getType()).toEqual(expected[0].type) - - expect(results[1].getAlertid()).toEqual(expected[1].alertId) - expect(results[1].getDescription()).toEqual(expected[1].description) - expect(results[1].getName()).toEqual(expected[1].name) - expect(results[1].getSeverity()).toEqual(expected[1].severity) - expect(results[1].getType()).toEqual(expected[1].type) - }, - TEST_TIMEOUT, - ) - - test( - 'Insurance fund', - async () => { - const txHash = '0x91c7c2f33faf3b5fb097138c1d49c1d4e83f99e1c3b346b3cad35a5928c03b3a' - - const trx = await fortaEthersProvider.getTransaction(txHash) - const receipt = await trx.wait() - - const transactionDto: TransactionDto = { - logs: receipt.logs, - to: trx.to ? trx.to : null, - block: { - timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), - number: trx.blockNumber ? trx.blockNumber : 1, - }, - } - const results = await stethOperationSrv.handleTransaction(transactionDto) - - const expected = [ - { - name: '🚨 Insurance fund: Ownership transferred', - description: - 'Owner of the insurance fund was transferred from [0x0000000000000000000000000000000000000000](https://etherscan.io/address/0x0000000000000000000000000000000000000000) to [0xbD829522d4791b9660f59f5998faE451dACA4E1C](https://etherscan.io/address/0xbD829522d4791b9660f59f5998faE451dACA4E1C)\n\nBlockNumber 15639078', - alertId: 'INS-FUND-OWNERSHIP-TRANSFERRED', - protocol: 'ethereum', - severity: 4, - type: 4, - }, - { - name: '🚨 Insurance fund: Ownership transferred', - description: - 'Owner of the insurance fund was transferred from [0xbD829522d4791b9660f59f5998faE451dACA4E1C](https://etherscan.io/address/0xbD829522d4791b9660f59f5998faE451dACA4E1C) to [0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c](https://etherscan.io/address/0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c)\n\nBlockNumber 15639078', - alertId: 'INS-FUND-OWNERSHIP-TRANSFERRED', - protocol: 'ethereum', - severity: 4, - type: 4, - }, - ] - - expect(results.length).toEqual(2) - expect(results[0].getAlertid()).toEqual(expected[0].alertId) - expect(results[0].getDescription()).toEqual(expected[0].description) - expect(results[0].getName()).toEqual(expected[0].name) - expect(results[0].getSeverity()).toEqual(expected[0].severity) - expect(results[0].getType()).toEqual(expected[0].type) - - expect(results[1].getAlertid()).toEqual(expected[1].alertId) - expect(results[1].getDescription()).toEqual(expected[1].description) - expect(results[1].getName()).toEqual(expected[1].name) - expect(results[1].getSeverity()).toEqual(expected[1].severity) - expect(results[1].getType()).toEqual(expected[1].type) - }, - TEST_TIMEOUT, - ) - - test( - 'Share rate', - async () => { - const txHash = '0xe71ac8b9f8f7b360f5defd3f6738f8482f8c15f1dd5f6827544bef8b7b4fbd37' - - const trx = await fortaEthersProvider.getTransaction(txHash) - const receipt = await trx.wait() - - const transactionDto: TransactionDto = { - logs: receipt.logs, - to: trx.to ? trx.to : null, - block: { - timestamp: trx.timestamp ? trx.timestamp : new Date().getTime(), - number: trx.blockNumber ? trx.blockNumber : 1, - }, - } - - const results = await stethOperationSrv.handleTransaction(transactionDto) - - const expected = { - name: 'ℹ️ Lido: Token rebased', - description: 'reportTimestamp: 1706011211\n\nBlockNumber 19069339', - alertId: 'LIDO-TOKEN-REBASED', - severity: 1, - type: 4, - } - - expect(results[0].getAlertid()).toEqual(expected.alertId) - expect(results[0].getDescription()).toEqual(expected.description) - expect(results[0].getName()).toEqual(expected.name) - expect(results[0].getSeverity()).toEqual(expected.severity) - expect(results[0].getType()).toEqual(expected.type) - - expect(stethOperationSrv.getStorage().getShareRate().blockNumber).toEqual(19069339) - expect(stethOperationSrv.getStorage().getShareRate().amount).toEqual(new BigNumber('1.1546900318248249941')) - - const findings = await stethOperationSrv.handleShareRateChange(19069340) - expect(findings.length).toEqual(0) - }, - TEST_TIMEOUT, - ) - - test( - 'handleBufferedEth', - async () => { - const blockNumber = 20_149_739 + 3 - const block = await fortaEthersProvider.getBlock(blockNumber) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - const result = await stethOperationSrv.handleBufferedEth(blockDto) - - expect(result.length).toEqual(0) - }, - 2 * TEST_TIMEOUT, - ) - - test( - '⚠️ High depositable ETH amount', - async () => { - const blockNumber = 20227000 - const block = await fortaEthersProvider.getBlock(blockNumber) - - const blockDto: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - await stethOperationSrv.initialize(blockNumber) - const results = await stethOperationSrv.handleBufferedEth(blockDto) - - const expected = { - name: '⚠️ High depositable ETH amount', - description: - 'There are: \n' + - 'Buffered: 34250.21 \n' + - 'Depositable: 10683.20 \n' + - 'ETH in DAO and there are more than 72 hours since last Depositor TX', - alertId: 'HIGH-DEPOSITABLE-ETH', - severity: 3, - type: 2, - } - - expect(results.length).toEqual(1) - expect(results[0].getAlertid()).toEqual(expected.alertId) - expect(results[0].getDescription()).toEqual(expected.description) - expect(results[0].getName()).toEqual(expected.name) - expect(results[0].getSeverity()).toEqual(expected.severity) - expect(results[0].getType()).toEqual(expected.type) - }, - 2 * TEST_TIMEOUT, - ) -}) diff --git a/ethereum-steth/src/services/steth_operation/StethOperation.srv.ts b/ethereum-steth/src/services/steth_operation/StethOperation.srv.ts deleted file mode 100644 index 75645fe98..000000000 --- a/ethereum-steth/src/services/steth_operation/StethOperation.srv.ts +++ /dev/null @@ -1,509 +0,0 @@ -import { StethOperationCache } from './StethOperation.cache' -import { ETH_DECIMALS } from '../../utils/constants' -import { either as E } from 'fp-ts' -import { EventOfNotice, handleEventsOfNotice, TransactionDto } from '../../entity/events' -import { elapsedTime } from '../../utils/time' -import { Logger } from 'winston' -import { alertId_token_rebased } from '../../utils/events/lido_events' -import { networkAlert } from '../../utils/errors' -import { BlockDto } from '../../entity/events' -import type { BigNumber } from 'bignumber.js' -import type { TypedEvent } from '../../generated/typechain/common' -import { StakingLimitInfo } from '../../entity/staking_limit_info' -import { Finding } from '../../generated/proto/alert_pb' -import { UnbufferedEvent } from '../../generated/typechain/Lido' - -// Formula: (60 * 60 * 24 * 7) / 12 = 50_400 -export const HISTORY_BLOCK_OFFSET: number = Math.floor((60 * 60 * 24 * 7) / 12) -const ONCE_PER_100_BLOCKS: number = 100 -const ONCE_PER_25_BLOCKS: number = 25 -export const ETH_10K = 10_000 // 10000 ETH -export const ETH_20K: number = 20_000 // 20000 ETH -const HOURS_24 = 60 * 60 * 24 // 24 hours -export const HOUR_1 = 60 * 60 // 1 hour -const HOURS_4 = 60 * 60 * 4 // 4 Hours -const HOURS_12 = 60 * 60 * 12 // 12 Hours -export const DAYS_3 = 60 * 60 * 72 // 72 Hours -export const ETH_2 = 2 // 2 ETH - -export abstract class IStethClient { - public abstract getUnbufferedEvents(startBlock: number, endBlock: number): Promise> - - public abstract getStethBalance(lidoStethAddress: string, block: number): Promise> - - public abstract getShareRate(blockNumber: number): Promise> - - public abstract getBufferedEther(blockNumber: number): Promise> - - public abstract getWithdrawalsFinalizedEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> - - public abstract getDepositableEther(blockNumber: number): Promise> - - public abstract getEthBalance(address: string, block: number): Promise> - - public abstract getStakingLimitInfo(blockNumber: number): Promise> - - public abstract getChainPrevBlocks(parentHash: string, depth: number): Promise> - - public abstract getBlockByNumber(blockNumber: number): Promise> -} - -export class StethOperationSrv { - private readonly name = 'StethOperationSrv' - private readonly logger: Logger - private readonly cache: StethOperationCache - private readonly stethClient: IStethClient - private readonly depositSecurityAddress: string - private readonly lidoStethAddress: string - private readonly lidoDepositExecutorAddress: string - - private readonly depositSecurityEvents: EventOfNotice[] - private readonly lidoEvents: EventOfNotice[] - private readonly insuranceFundEvents: EventOfNotice[] - private readonly burnerEvents: EventOfNotice[] - - constructor( - logger: Logger, - cache: StethOperationCache, - stethClient: IStethClient, - depositSecurityAddress: string, - lidoStethAddress: string, - lidoDepositExecutorAddress: string, - depositSecurityEvents: EventOfNotice[], - lidoEvents: EventOfNotice[], - insuranceFundEvents: EventOfNotice[], - burnerEvents: EventOfNotice[], - ) { - this.logger = logger - this.cache = cache - this.stethClient = stethClient - this.depositSecurityAddress = depositSecurityAddress - this.lidoStethAddress = lidoStethAddress - this.lidoDepositExecutorAddress = lidoDepositExecutorAddress - - this.depositSecurityEvents = depositSecurityEvents - this.lidoEvents = lidoEvents - this.insuranceFundEvents = insuranceFundEvents - this.burnerEvents = burnerEvents - } - - public async initialize(currentBlock: number): Promise { - const start = new Date().getTime() - const events = await this.stethClient.getUnbufferedEvents(currentBlock - HISTORY_BLOCK_OFFSET, currentBlock - 1) - - if (E.isLeft(events)) { - this.logger.error(elapsedTime(`Failed [${this.name}.initialize]`, start)) - return events.left - } - - const latestDepositBlock = await this.stethClient.getBlockByNumber( - events.right[events.right.length - 1].blockNumber, - ) - if (E.isLeft(latestDepositBlock)) { - this.logger.error(elapsedTime(`Failed [${this.name}.initialize]`, start)) - return latestDepositBlock.left - } - - this.cache.setLastDepositorTxTime(latestDepositBlock.right.timestamp) - - const bufferedEthRaw = await this.stethClient.getStethBalance(this.lidoStethAddress, currentBlock) - if (E.isLeft(bufferedEthRaw)) { - this.logger.error(elapsedTime(`Failed [${this.name}.initialize]`, start)) - return bufferedEthRaw.left - } - - this.cache.setLastBufferedEth(bufferedEthRaw.right) - - const currBlock = await this.stethClient.getBlockByNumber(currentBlock) - if (E.isLeft(currBlock)) { - this.logger.error(elapsedTime(`Failed [${this.name}.initialize]`, start)) - return currBlock.left - } - - const prev4Blocks = await this.stethClient.getChainPrevBlocks(currBlock.right.parentHash, 4) - if (E.isLeft(prev4Blocks)) { - this.logger.error(elapsedTime(`Failed [${this.name}.initialize]`, start)) - return prev4Blocks.left - } - - this.cache.setPrev4Blocks(prev4Blocks.right) - - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return null - } - - public getName(): string { - return this.name - } - - public async handleBlock(blockDto: BlockDto) { - const start = new Date().getTime() - const findings: Finding[] = [] - - const [bufferedEthFindings, depositorBalanceFindings, stakingLimitFindings, shareRateFindings] = await Promise.all([ - this.handleBufferedEth(blockDto), - this.handleDepositExecutorBalance(blockDto.number, blockDto.timestamp), - this.handleStakingLimit(blockDto.number, blockDto.timestamp), - this.handleShareRateChange(blockDto.number), - ]) - - findings.push(...bufferedEthFindings, ...depositorBalanceFindings, ...stakingLimitFindings, ...shareRateFindings) - this.logger.info(elapsedTime(StethOperationSrv.name + '.' + this.handleBlock.name, start)) - - return findings - } - - public async handleShareRateChange(blockNumber: number): Promise { - const start = new Date().getTime() - const findings: Finding[] = [] - - if (this.cache.getShareRate().blockNumber !== 0) { - const shareRate = await this.stethClient.getShareRate(blockNumber) - if (E.isLeft(shareRate)) { - return [ - networkAlert( - shareRate.left, - `Error in ${StethOperationSrv.name}.${this.handleShareRateChange.name}:137`, - `Could not call stethClient.getShareRate`, - ), - ] - } - - const shareRateFromReport = this.cache.getShareRate() - if (!shareRate.right.eq(shareRateFromReport.amount)) { - const percentsFromReportedShareRate = shareRate.right.div(shareRateFromReport.amount).multipliedBy(100) - const deviation = 100.0 - percentsFromReportedShareRate.toNumber() - - // deviation by 0.0001 (1 bp or 0.01%) - if (Math.abs(deviation) >= 0.01) { - const f: Finding = new Finding() - - f.setName(`🚨🚨🚨 Share rate unexpected has changed`) - f.setDescription( - `Prev.shareRate(${shareRateFromReport.blockNumber}) = ${shareRateFromReport.amount.toNumber()} \n` + - `Curr.shareRate(${blockNumber}) = ${shareRate.right.toNumber()} \n` + - `Diff: ${shareRate.right.minus(shareRateFromReport.amount).toNumber()}`, - ) - f.setAlertid('LIDO-INVARIANT-ERROR') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - findings.push(f) - } - } - } - - this.logger.info(elapsedTime(StethOperationSrv.name + '.' + this.handleShareRateChange.name, start)) - - return findings - } - - public async handleTransaction(txEvent: TransactionDto): Promise { - const out: Finding[] = [] - - if (txEvent.to !== null && txEvent.to.toLowerCase() == this.depositSecurityAddress.toLowerCase()) { - this.cache.setLastDepositorTxTime(txEvent.block.timestamp) - } - - const lidoFindings = handleEventsOfNotice(txEvent, this.lidoEvents) - const depositSecFindings = handleEventsOfNotice(txEvent, this.depositSecurityEvents) - const insuranceFundFindings = handleEventsOfNotice(txEvent, this.insuranceFundEvents) - const burnerFindings = handleEventsOfNotice(txEvent, this.burnerEvents) - out.push(...lidoFindings, ...depositSecFindings, ...insuranceFundFindings, ...burnerFindings) - - for (const f of lidoFindings) { - if (f.getAlertid() === alertId_token_rebased) { - const shareRate = await this.stethClient.getShareRate(txEvent.block.number) - if (E.isLeft(shareRate)) { - const f: Finding = networkAlert( - shareRate.left, - `Error in ${StethOperationSrv.name}.${this.handleTransaction.name}:192`, - `Could not call stethClient.getShareRate`, - ) - - out.push(f) - } else { - this.cache.setShareRate({ - amount: shareRate.right, - blockNumber: txEvent.block.number, - }) - } - } - } - - return out - } - - public async handleBufferedEth(blockDto: BlockDto): Promise { - if (this.cache.getPrev4Blocks().length === 0 || this.cache.getParentBlock().hash !== blockDto.parentHash) { - const prev4Blocks = await this.stethClient.getChainPrevBlocks(blockDto.parentHash, 4) - if (E.isLeft(prev4Blocks)) { - const f: Finding = networkAlert( - prev4Blocks.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:255`, - `Could not call stethClient.getChainPrevBlocks`, - ) - - return [f] - } - - this.cache.setPrev4Blocks(prev4Blocks.right) - } - - const prev4Blocks = this.cache.getPrev4Blocks() - const shiftedBlockNumber = prev4Blocks[1].number - const [bufferedEthRaw, shifte3dBufferedEthRaw, shifte4dBufferedEthRaw] = await Promise.all([ - this.stethClient.getBufferedEther(blockDto.number), - this.stethClient.getBufferedEther(prev4Blocks[1].number), - this.stethClient.getBufferedEther(prev4Blocks[0].number), - ]) - - if (E.isLeft(bufferedEthRaw)) { - return [ - networkAlert( - bufferedEthRaw.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:240`, - `Could not call stethClient.bufferedEthRaw`, - ), - ] - } - - if (E.isLeft(shifte3dBufferedEthRaw)) { - return [ - networkAlert( - shifte3dBufferedEthRaw.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:241`, - `Could not call stethClient.shifte3dBufferedEthRaw`, - ), - ] - } - - if (E.isLeft(shifte4dBufferedEthRaw)) { - return [ - networkAlert( - shifte4dBufferedEthRaw.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:242`, - `Could not call stethClient.shifte4dBufferedEthRaw`, - ), - ] - } - - const out: Finding[] = [] - if (shifte3dBufferedEthRaw.right.lt(shifte4dBufferedEthRaw.right)) { - const [unbufferedEvents, wdReqFinalizedEvents] = await Promise.all([ - this.stethClient.getUnbufferedEvents(shiftedBlockNumber, shiftedBlockNumber), - this.stethClient.getWithdrawalsFinalizedEvents(shiftedBlockNumber, shiftedBlockNumber), - ]) - - if (E.isLeft(unbufferedEvents)) { - return [ - networkAlert( - unbufferedEvents.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:278`, - `Could not call stethClient.getUnbufferedEvents`, - ), - ] - } - - if (E.isLeft(wdReqFinalizedEvents)) { - return [ - networkAlert( - wdReqFinalizedEvents.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:279`, - `Could not call stethClient.getWithdrawalsFinalizedEvents`, - ), - ] - } - - if (unbufferedEvents.right.length === 0 && wdReqFinalizedEvents.right.length === 0) { - const f: Finding = new Finding() - f.setName('🚨🚨🚨 Buffered ETH drain') - f.setDescription( - `Buffered ETH amount decreased from ` + - `${shifte4dBufferedEthRaw.right.div(ETH_DECIMALS).toFixed(2)} ` + - `to ${shifte3dBufferedEthRaw.right.div(ETH_DECIMALS).toFixed(2)} ` + - `without Unbuffered or WithdrawalsFinalized events\n\n` + - `Note: actual handled block number is ${shiftedBlockNumber}`, - ) - f.setAlertid('BUFFERED-ETH-DRAIN') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - } - - if (blockDto.number % ONCE_PER_100_BLOCKS === 0) { - const depositableEtherRaw = await this.stethClient.getDepositableEther(blockDto.number) - if (E.isLeft(depositableEtherRaw)) { - return [ - networkAlert( - depositableEtherRaw.left, - `Error in ${StethOperationSrv.name}.${this.handleBufferedEth.name}:321`, - `Could not call stethClient.getDepositableEther`, - ), - ] - } - const depositableEther = depositableEtherRaw.right.div(ETH_DECIMALS).toNumber() - - // Keep track of buffer size above MAX_BUFFERED_ETH_AMOUNT_CRITICAL - if (depositableEther > ETH_20K) { - if (this.cache.getCriticalDepositableAmountTimestamp() === 0) { - this.cache.setCriticalDepositableAmountTimestamp(blockDto.timestamp) - } - } else { - // reset counter if buffered amount goes below MAX_BUFFERED_ETH_AMOUNT_CRITICAL - this.cache.setCriticalDepositableAmountTimestamp(0) - } - - if (this.cache.getLastReportedDepositableEthTimestamp() + HOURS_24 < blockDto.timestamp) { - if ( - depositableEther > ETH_20K && - this.cache.getCriticalDepositableAmountTimestamp() + HOUR_1 < blockDto.timestamp - ) { - out.push( - new Finding() - .setName('🚨 Huge depositable ETH amount') - .setDescription( - `There are ${depositableEther.toFixed(2)} ` + - `depositable ETH in DAO for more than ` + - `${Math.floor(HOUR_1 / (60 * 60))} hour(s)`, - ) - .setAlertid('HUGE-DEPOSITABLE-ETH') - .setSeverity(Finding.Severity.HIGH) - .setType(Finding.FindingType.SUSPICIOUS) - .setProtocol('ethereum'), - ) - - this.cache.setLastReportedDepositableEthTimestamp(blockDto.timestamp) - } else if ( - depositableEther > ETH_10K && - this.cache.getLastDepositorTxTime() !== 0 && - this.cache.getLastDepositorTxTime() + DAYS_3 < blockDto.timestamp - ) { - const bufferedEth = bufferedEthRaw.right.div(ETH_DECIMALS).toNumber() - - const f: Finding = new Finding() - f.setName('⚠️ High depositable ETH amount') - f.setDescription( - `There are: \n` + - `Buffered: ${bufferedEth.toFixed(2)} \n` + - `Depositable: ${depositableEther.toFixed(2)} \n` + - `ETH in DAO and there are more than ${Math.floor(DAYS_3 / (60 * 60))} hours since last Depositor TX`, - ) - f.setAlertid('HIGH-DEPOSITABLE-ETH') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - out.push(f) - - this.cache.setLastReportedDepositableEthTimestamp(blockDto.timestamp) - } - } - } - - this.cache.setPrevBlock(blockDto) - - return out - } - - public async handleDepositExecutorBalance(blockNumber: number, currentBlockTimestamp: number): Promise { - const out: Finding[] = [] - if (blockNumber % ONCE_PER_100_BLOCKS === 0) { - if (this.cache.getLastReportedExecutorBalanceTimestamp() + HOURS_4 < currentBlockTimestamp) { - const executorBalanceRaw = await this.stethClient.getEthBalance(this.lidoDepositExecutorAddress, blockNumber) - if (E.isLeft(executorBalanceRaw)) { - return [ - networkAlert( - executorBalanceRaw.left, - `Error in ${StethOperationSrv.name}.${this.handleDepositExecutorBalance.name}:396`, - `Could not call stethClient.getBalance`, - ), - ] - } - - const executorBalance = executorBalanceRaw.right.div(ETH_DECIMALS).toNumber() - if (executorBalance < ETH_2) { - this.cache.setLastReportedExecutorBalanceTimestamp(currentBlockTimestamp) - - const f: Finding = new Finding() - f.setName('⚠️ Low deposit executor balance') - f.setDescription( - `Balance of deposit executor is ${executorBalance.toFixed(4)}. ` + `This is extremely low! 😱`, - ) - f.setAlertid('LOW-DEPOSIT-EXECUTOR-BALANCE') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - out.push(f) - } - } - } - - return out - } - - public async handleStakingLimit(blockNumber: number, currentBlockTimestamp: number): Promise { - const out: Finding[] = [] - if (blockNumber % ONCE_PER_25_BLOCKS === 0) { - const stakingLimitInfo = await this.stethClient.getStakingLimitInfo(blockNumber) - if (E.isLeft(stakingLimitInfo)) { - return [ - networkAlert( - stakingLimitInfo.left, - `Error in ${StethOperationSrv.name}.${this.handleStakingLimit.name}:430`, - `Could not call stethClient.getStakingLimitInfo`, - ), - ] - } - - const currentStakingLimit = stakingLimitInfo.right.currentStakeLimit - const maxStakingLimit = stakingLimitInfo.right.maxStakeLimit - - if ( - this.cache.getLastReportedStakingLimit10Timestamp() + HOURS_12 < currentBlockTimestamp && - currentStakingLimit.isLessThan(maxStakingLimit.times(0.1)) - ) { - const f: Finding = new Finding() - f.setName('⚠️ Unspent staking limit below 10%') - f.setDescription(`Current staking limit is lower than 10% of max staking limit`) - f.setAlertid('LOW-STAKING-LIMIT') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - out.push(f) - - this.cache.setLastReportedStakingLimit10Timestamp(currentBlockTimestamp) - } else if ( - this.cache.getLastReportedStakingLimit30Timestamp() + HOURS_12 < currentBlockTimestamp && - currentStakingLimit.isLessThan(maxStakingLimit.times(0.3)) - ) { - const f: Finding = new Finding() - f.setName('📉 Unspent staking limit below 30%') - f.setDescription( - `Current staking limit is ${currentStakingLimit.toFixed(2)} ETH ` + - `this is lower than 30% of max staking limit ` + - `${maxStakingLimit.toFixed(2)} ETH`, - ) - f.setAlertid('LOW-STAKING-LIMIT') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - out.push(f) - - this.cache.setLastReportedStakingLimit30Timestamp(currentBlockTimestamp) - } - } - - return out - } - - public getStorage(): StethOperationCache { - return this.cache - } -} diff --git a/ethereum-steth/src/services/steth_operation/mocks/eth_evnt.mock.ts b/ethereum-steth/src/services/steth_operation/mocks/eth_evnt.mock.ts deleted file mode 100644 index d2b3a4e33..000000000 --- a/ethereum-steth/src/services/steth_operation/mocks/eth_evnt.mock.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { TypedEvent } from '../../../generated/typechain/common' - -export const TypedEventMock = (): jest.Mocked => ({ - address: '', - args: undefined, - blockHash: '', - blockNumber: 0, - data: '', - getBlock: jest.fn(), - getTransaction: jest.fn(), - getTransactionReceipt: jest.fn(), - logIndex: 0, - removeListener: jest.fn(), - removed: false, - topics: [], - transactionHash: '', - transactionIndex: 0, -}) diff --git a/ethereum-steth/src/services/steth_operation/mocks/mock.ts b/ethereum-steth/src/services/steth_operation/mocks/mock.ts deleted file mode 100644 index f17366d9b..000000000 --- a/ethereum-steth/src/services/steth_operation/mocks/mock.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IStethClient } from '../StethOperation.srv' - -export const StethClientMock = (): jest.Mocked => ({ - getStethBalance: jest.fn(), - getEthBalance: jest.fn(), - getBufferedEther: jest.fn(), - getShareRate: jest.fn(), - getWithdrawalsFinalizedEvents: jest.fn(), - getDepositableEther: jest.fn(), - getStakingLimitInfo: jest.fn(), - getUnbufferedEvents: jest.fn(), - getChainPrevBlocks: jest.fn(), - getBlockByNumber: jest.fn(), -}) diff --git a/ethereum-steth/src/services/vault/Vault.srv.ts b/ethereum-steth/src/services/vault/Vault.srv.ts deleted file mode 100644 index 4d6708cd4..000000000 --- a/ethereum-steth/src/services/vault/Vault.srv.ts +++ /dev/null @@ -1,395 +0,0 @@ -import BigNumber from 'bignumber.js' -import { ETH_DECIMALS } from '../../utils/constants' -import { either as E } from 'fp-ts' -import { elapsedTime } from '../../utils/time' -import { toEthString } from '../../utils/string' -import { ETHDistributedEvent } from '../../generated/typechain/Lido' -import { TRANSFER_SHARES_EVENT } from '../../utils/events/vault_events' -import { Logger } from 'winston' -import { networkAlert } from '../../utils/errors' -import { BlockDto, TransactionDto } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import { ethers } from 'forta-agent' - -const ONCE_PER_100_BLOCKS = 100 -const ETH_1K = ETH_DECIMALS.times(1000) -const ETH_50 = ETH_DECIMALS.times(50) - -export abstract class IVaultClient { - public abstract getEthBalance(address: string, block: number): Promise> - - public abstract getBalanceByBlockHash(address: string, blockHash: string): Promise> - - public abstract getETHDistributedEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> -} - -export class VaultSrv { - private readonly logger: Logger - private readonly name = 'VaultSrv' - private readonly ethProvider: IVaultClient - - private readonly withdrawalsVaultAddress: string - private readonly elRewardsVaultAddress: string - private readonly lidoStethAddress: string - private readonly burnerAddress: string - - constructor( - logger: Logger, - ethProvider: IVaultClient, - withdrawalsVaultAddress: string, - elRewardsVaultAddress: string, - burnerAddress: string, - lidoStethAddress: string, - ) { - this.logger = logger - this.ethProvider = ethProvider - this.elRewardsVaultAddress = elRewardsVaultAddress - this.withdrawalsVaultAddress = withdrawalsVaultAddress - this.burnerAddress = burnerAddress - this.lidoStethAddress = lidoStethAddress - } - - public initialize(currentBlock: number): null { - const start = new Date().getTime() - this.logger.info(elapsedTime(`[${this.name}.initialize] on ${currentBlock}`, start)) - - return null - } - - public getName(): string { - return this.name - } - - public async handleBlock(blockDto: BlockDto) { - const start = new Date().getTime() - const findings: Finding[] = [] - - const currentBlock = blockDto.number - const prevBlockWithdrawalVaultBalance = await this.ethProvider.getBalanceByBlockHash( - this.withdrawalsVaultAddress, - blockDto.parentHash, - ) - if (E.isLeft(prevBlockWithdrawalVaultBalance)) { - return [ - networkAlert( - prevBlockWithdrawalVaultBalance.left, - `Error in ${VaultSrv.name}.${this.handleBlock.name}:63`, - `Could not call ethProvider.getBalanceByBlockHash`, - ), - ] - } - const prevBlockElVaultBalance = await this.ethProvider.getBalanceByBlockHash( - this.elRewardsVaultAddress, - blockDto.parentHash, - ) - if (E.isLeft(prevBlockElVaultBalance)) { - return [ - networkAlert( - prevBlockElVaultBalance.left, - `Error in ${VaultSrv.name}.${this.handleBlock.name}:76`, - `Could not call ethProvider.getBalanceByBlockHash`, - ), - ] - } - - const reports = await this.ethProvider.getETHDistributedEvents(currentBlock, currentBlock) - if (E.isLeft(reports)) { - return [ - networkAlert( - reports.left, - `Error in ${VaultSrv.name}.${this.handleBlock.name}:90`, - `Could not call ethProvider.getETHDistributedEvent`, - ), - ] - } - - let report: ETHDistributedEvent | null = null - if (reports.right.length !== 0) { - report = reports.right[0] - } - - const [ - withdrawalVaultBalanceFindings, - elVaultBalanceFindings, - noWithdrawalVaultDrainsFindings, - noELVaultDrainsFindings, - ] = await Promise.all([ - this.handleWithdrawalVaultBalance(currentBlock), - this.handleELVaultBalance(currentBlock, prevBlockElVaultBalance.right), - this.handleNoWithdrawalVaultDrains(currentBlock, prevBlockWithdrawalVaultBalance.right, report), - this.handleNoELVaultDrains(currentBlock, prevBlockElVaultBalance.right, report), - ]) - - findings.push( - ...withdrawalVaultBalanceFindings, - ...elVaultBalanceFindings, - ...noWithdrawalVaultDrainsFindings, - ...noELVaultDrainsFindings, - ) - - this.logger.info(elapsedTime(VaultSrv.name + '.' + this.handleBlock.name, start)) - - return findings - } - - public async handleWithdrawalVaultBalance(blockNumber: number): Promise { - const out: Finding[] = [] - if (blockNumber % ONCE_PER_100_BLOCKS === 0) { - const reports = await this.ethProvider.getETHDistributedEvents(blockNumber - ONCE_PER_100_BLOCKS, blockNumber) - if (E.isLeft(reports)) { - return [ - networkAlert( - reports.left, - `Error in ${VaultSrv.name}.${this.handleWithdrawalVaultBalance.name}:128`, - `Could not call ethProvider.getETHDistributedEvent`, - ), - ] - } - - let report: ETHDistributedEvent | null = null - if (reports.right.length !== 0) { - report = reports.right[0] - } - - const prevWithdrawalVaultBalance = await this.ethProvider.getEthBalance( - this.withdrawalsVaultAddress, - blockNumber - ONCE_PER_100_BLOCKS, - ) - if (E.isLeft(prevWithdrawalVaultBalance)) { - return [ - networkAlert( - prevWithdrawalVaultBalance.left, - `Error in ${VaultSrv.name}.${this.handleWithdrawalVaultBalance.name}:142`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - const withdrawalVaultBalance = await this.ethProvider.getEthBalance(this.withdrawalsVaultAddress, blockNumber) - if (E.isLeft(withdrawalVaultBalance)) { - return [ - networkAlert( - withdrawalVaultBalance.left, - `Error in ${VaultSrv.name}.${this.handleWithdrawalVaultBalance.name}:156`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - let withdrawalsWithdrawn = new BigNumber(0) - if (report !== null) { - withdrawalsWithdrawn = new BigNumber(String(report.args.withdrawalsWithdrawn)) - } - - const withdrawalVaultBalanceDiff = withdrawalVaultBalance.right - .minus(prevWithdrawalVaultBalance.right) - .plus(withdrawalsWithdrawn) - - if (withdrawalVaultBalanceDiff.gte(ETH_1K)) { - const f: Finding = new Finding() - f.setName('ℹ️ Withdrawal Vault Balance significant change') - f.setDescription( - `Withdrawal Vault Balance has increased by ${toEthString( - withdrawalVaultBalanceDiff, - )} during the last ${ONCE_PER_100_BLOCKS} blocks`, - ) - f.setAlertid('WITHDRAWAL-VAULT-BALANCE-CHANGE') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - } - } - - return out - } - - public async handleELVaultBalance(blockNumber: number, prevBalance: BigNumber): Promise { - const elVaultBalance = await this.ethProvider.getEthBalance(this.elRewardsVaultAddress, blockNumber) - if (E.isLeft(elVaultBalance)) { - return [ - networkAlert( - elVaultBalance.left, - `Error in ${VaultSrv.name}.${this.handleELVaultBalance.name}:195`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - const elVaultBalanceDiff = elVaultBalance.right.minus(prevBalance) - - const out: Finding[] = [] - if (elVaultBalanceDiff.gte(ETH_50)) { - const f: Finding = new Finding() - f.setName('ℹ️ EL Vault Balance significant change') - f.setDescription(`EL Vault Balance has increased by ${toEthString(elVaultBalanceDiff)}`) - f.setAlertid('EL-VAULT-BALANCE-CHANGE') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - } - - return out - } - - public async handleNoWithdrawalVaultDrains( - currentBlock: number, - prevBalance: BigNumber, - report: ETHDistributedEvent | null, - ): Promise { - const out: Finding[] = [] - const currentBalance = await this.ethProvider.getEthBalance(this.withdrawalsVaultAddress, currentBlock) - if (E.isLeft(currentBalance)) { - return [ - networkAlert( - currentBalance.left, - `Error in ${VaultSrv.name}.${this.handleNoWithdrawalVaultDrains.name}:230`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - if (report === null) { - if (currentBalance.right.lt(prevBalance)) { - const f: Finding = new Finding() - f.setName('🚨🚨🚨 Withdrawal Vault balance mismatch. [without oracle report]') - f.setDescription( - `Withdrawal Vault Balance has decreased by ${toEthString( - prevBalance.minus(currentBalance.right), - )} without Oracle report\n\n - BlockNumber: ${currentBlock}`, - ) - f.setAlertid('WITHDRAWAL-VAULT-BALANCE-DRAIN') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - - return out - } - - const withdrawalsWithdrawn = new BigNumber(String(report.args.withdrawalsWithdrawn)) - const expectedBalance = prevBalance.minus(withdrawalsWithdrawn) - - if (currentBalance.right.lt(expectedBalance)) { - const f: Finding = new Finding() - f.setName('🚨🚨🚨 Withdrawal Vault balance mismatch. [within oracle report]') - f.setDescription( - `Withdrawal Vault Balance has decreased by ${toEthString( - expectedBalance.minus(currentBalance.right), - )} but Oracle report shows ${toEthString(withdrawalsWithdrawn)}\n\n - BlockNumber: ${currentBlock}`, - ) - f.setAlertid('WITHDRAWAL-VAULT-BALANCE-DRAIN') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - - return out - } - - public async handleNoELVaultDrains( - currentBlock: number, - prevBalance: BigNumber, - report: ETHDistributedEvent | null, - ): Promise { - const currentBalance = await this.ethProvider.getEthBalance(this.elRewardsVaultAddress, currentBlock) - if (E.isLeft(currentBalance)) { - return [ - networkAlert( - currentBalance.left, - `Error in ${VaultSrv.name}.${this.handleNoELVaultDrains.name}:284`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - const out: Finding[] = [] - if (report === null) { - if (currentBalance.right.lt(prevBalance)) { - const f: Finding = new Finding() - f.setName('🚨🚨🚨 EL Vault balance mismatch. [without oracle report]') - f.setDescription( - `EL Vault Balance has decreased by ${toEthString( - prevBalance.minus(currentBalance.right), - )} without Oracle report\n\n - BlockNumber: ${currentBlock}`, - ) - f.setAlertid('EL-VAULT-BALANCE-DRAIN') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - - return out - } - - const executionLayerRewardsWithdrawn = new BigNumber(String(report.args.executionLayerRewardsWithdrawn)) - const expectedBalance = prevBalance.minus(executionLayerRewardsWithdrawn) - - if (currentBalance.right.lt(expectedBalance)) { - const f: Finding = new Finding() - f.setName(`🚨🚨🚨 EL Vault balance mismatch. [within oracle report]`) - f.setDescription( - `EL Vault Balance has decreased by ${toEthString( - expectedBalance.minus(currentBalance.right), - )} but Oracle report shows ${toEthString(executionLayerRewardsWithdrawn)}`, - ) - f.setAlertid('EL-VAULT-BALANCE-DRAIN') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - - return out - } - - public handleTransaction(txEvent: TransactionDto): Finding[] { - return this.handleBurnerSharesTx(txEvent) - } - - public handleBurnerSharesTx(txEvent: TransactionDto): Finding[] { - const iface = new ethers.utils.Interface([TRANSFER_SHARES_EVENT]) - const out: Finding[] = [] - for (const log of txEvent.logs) { - if (log.address.toLowerCase() !== this.lidoStethAddress.toLowerCase()) { - continue - } - - try { - const event = iface.parseLog(log) - if (event.args.from.toLowerCase() === this.burnerAddress.toLowerCase()) { - const f: Finding = new Finding() - f.setName('🚨 Burner shares transfer') - f.setDescription(`Burner shares transfer to ${event.args.to} has occurred`) - f.setAlertid('BURNER-SHARES-TRANSFER') - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - } - } catch (e) { - // Only one from eventsOfNotice could be correct - // Others - skipping - } - } - - return out - } -} diff --git a/ethereum-steth/src/services/vault/Vaults.functional.spec.ts b/ethereum-steth/src/services/vault/Vaults.functional.spec.ts deleted file mode 100644 index fec380e6c..000000000 --- a/ethereum-steth/src/services/vault/Vaults.functional.spec.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { BlockDto } from '../../entity/events' -import { expect } from '@jest/globals' -import { ethers } from 'ethers' -import { Finding } from '../../generated/proto/alert_pb' -import * as Winston from 'winston' -import { Address } from '../../utils/constants' -import { getFortaConfig } from 'forta-agent/dist/sdk/utils' -import { - GateSeal__factory, - Lido__factory, - ValidatorsExitBusOracle__factory, - WithdrawalQueueERC721__factory, -} from '../../generated/typechain' -import { ETHProvider } from '../../clients/eth_provider' -import { IVaultClient, VaultSrv } from './Vault.srv' -import promClient from 'prom-client' -import { Metrics } from '../../utils/metrics/metrics' - -const TEST_TIMEOUT = 120_000 // ms - -describe('Vaults.srv functional tests', () => { - const chainId = 1 - - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - const address: Address = Address - - const fortaEthersProvider = new ethers.providers.JsonRpcProvider(getFortaConfig().jsonRpcUrl, chainId) - const lidoRunner = Lido__factory.connect(address.LIDO_STETH_ADDRESS, fortaEthersProvider) - const wdQueueRunner = WithdrawalQueueERC721__factory.connect(address.WITHDRAWALS_QUEUE_ADDRESS, fortaEthersProvider) - const gateSealRunner = GateSeal__factory.connect(address.GATE_SEAL_DEFAULT_ADDRESS, fortaEthersProvider) - const veboRunner = ValidatorsExitBusOracle__factory.connect(address.EXIT_BUS_ORACLE_ADDRESS, fortaEthersProvider) - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - - const vaultClient: IVaultClient = new ETHProvider( - logger, - m, - fortaEthersProvider, - lidoRunner, - wdQueueRunner, - gateSealRunner, - veboRunner, - ) - - const vaultSrv = new VaultSrv( - logger, - vaultClient, - address.WITHDRAWALS_VAULT_ADDRESS, - address.EL_REWARDS_VAULT_ADDRESS, - address.BURNER_ADDRESS, - address.LIDO_STETH_ADDRESS, - ) - - test( - 'EL-VAULT-BALANCE-CHANGE', - async () => { - const blockNumber = 17_007_842 - const block = await fortaEthersProvider.getBlock(blockNumber) - - vaultSrv.initialize(blockNumber) - - const blockEvent: BlockDto = { - number: block.number, - timestamp: block.timestamp, - parentHash: block.parentHash, - hash: block.hash, - } - - const result = await vaultSrv.handleBlock(blockEvent) - - const expected = { - alertId: 'EL-VAULT-BALANCE-CHANGE', - description: `EL Vault Balance has increased by 689.017 ETH`, - name: 'ℹ️ EL Vault Balance significant change', - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - } - - expect(result.length).toEqual(1) - expect(result[0].getAlertid()).toEqual(expected.alertId) - expect(result[0].getDescription()).toEqual(expected.description) - expect(result[0].getName()).toEqual(expected.name) - expect(result[0].getSeverity()).toEqual(expected.severity) - expect(result[0].getType()).toEqual(expected.type) - }, - TEST_TIMEOUT, - ) -}) diff --git a/ethereum-steth/src/services/vault/mocks/mock.ts b/ethereum-steth/src/services/vault/mocks/mock.ts deleted file mode 100644 index 03ba38011..000000000 --- a/ethereum-steth/src/services/vault/mocks/mock.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { IVaultClient } from '../contract' - -export const VaultClientMock = (): jest.Mocked => ({ - getBalance: jest.fn(), - getBalanceByBlockHash: jest.fn(), - getETHDistributedEvent: jest.fn(), -}) diff --git a/ethereum-steth/src/services/withdrawals/Withdrawals.cache.ts b/ethereum-steth/src/services/withdrawals/Withdrawals.cache.ts deleted file mode 100644 index ccad1fea5..000000000 --- a/ethereum-steth/src/services/withdrawals/Withdrawals.cache.ts +++ /dev/null @@ -1,116 +0,0 @@ -import BigNumber from 'bignumber.js' - -export class WithdrawalsCache { - private _bunkerModeEnabledSinceTimestamp = 0 - private _isBunkerMode = false - - private _lastQueueOnParStakeLimitAlertTimestamp = 0 - private _lastBigUnfinalizedQueueAlertTimestamp = 0 - private _lastLongUnfinalizedQueueAlertTimestamp = 0 - private _lastUnclaimedRequestsAlertTimestamp = 0 - private _lastUnclaimedMoreThanBalanceAlertTimestamp = 0 - private _lastBigRequestAfterRebaseAlertTimestamp = 0 - private _lastTokenRebaseTimestamp = 0 - private _lastClaimedAmountMoreThanRequestedAlertTimestamp = 0 - private _claimedAmountMoreThanRequestedAlertsCount = 0 - - private _amountOfRequestedStETHSinceLastTokenRebase = new BigNumber(0) - - constructor() {} - - public getBunkerModeEnabledSinceTimestamp(): number { - return this._bunkerModeEnabledSinceTimestamp - } - - public setBunkerModeEnabledSinceTimestamp(blockTimestamp: number) { - this._bunkerModeEnabledSinceTimestamp = blockTimestamp - } - - public getIsBunkerMode(): boolean { - return this._isBunkerMode - } - - public setIsBunkerMode(isBunkerMode: boolean) { - this._isBunkerMode = isBunkerMode - } - - public getLastQueueOnParStakeLimitAlertTimestamp(): number { - return this._lastQueueOnParStakeLimitAlertTimestamp - } - - public setLastQueueOnParStakeLimitAlertTimestamp(lastQueueOnParStakeLimitAlertTimestamp: number) { - this._lastQueueOnParStakeLimitAlertTimestamp = lastQueueOnParStakeLimitAlertTimestamp - } - - public getLastBigUnfinalizedQueueAlertTimestamp(): number { - return this._lastBigUnfinalizedQueueAlertTimestamp - } - - public setLastBigUnfinalizedQueueAlertTimestamp(lastBigUnfinalizedQueueAlertTimestamp: number) { - this._lastBigUnfinalizedQueueAlertTimestamp = lastBigUnfinalizedQueueAlertTimestamp - } - - public getLastLongUnfinalizedQueueAlertTimestamp(): number { - return this._lastLongUnfinalizedQueueAlertTimestamp - } - - public setLastLongUnfinalizedQueueAlertTimestamp(lastLongUnfinalizedQueueAlertTimestamp: number) { - this._lastLongUnfinalizedQueueAlertTimestamp = lastLongUnfinalizedQueueAlertTimestamp - } - - public getLastUnclaimedRequestsAlertTimestamp(): number { - return this._lastUnclaimedRequestsAlertTimestamp - } - - public setLastUnclaimedRequestsAlertTimestamp(lastUnclaimedRequestsAlertTimestamp: number) { - this._lastUnclaimedRequestsAlertTimestamp = lastUnclaimedRequestsAlertTimestamp - } - - public getLastUnclaimedMoreThanBalanceAlertTimestamp(): number { - return this._lastUnclaimedMoreThanBalanceAlertTimestamp - } - - public setLastUnclaimedMoreThanBalanceAlertTimestamp(lastUnclaimedMoreThanBalanceAlertTimestamp: number) { - this._lastUnclaimedMoreThanBalanceAlertTimestamp = lastUnclaimedMoreThanBalanceAlertTimestamp - } - - public getAmountOfRequestedStETHSinceLastTokenRebase(): BigNumber { - return this._amountOfRequestedStETHSinceLastTokenRebase - } - - public setAmountOfRequestedStETHSinceLastTokenRebase(amountOfRequestedStETHSinceLastTokenRebase: BigNumber) { - this._amountOfRequestedStETHSinceLastTokenRebase = amountOfRequestedStETHSinceLastTokenRebase - } - - public getLastBigRequestAfterRebaseAlertTimestamp(): number { - return this._lastBigRequestAfterRebaseAlertTimestamp - } - - public setLastBigRequestAfterRebaseAlertTimestamp(lastBigRequestAfterRebaseAlertTimestamp: number) { - this._lastBigRequestAfterRebaseAlertTimestamp = lastBigRequestAfterRebaseAlertTimestamp - } - - public getLastTokenRebaseTimestamp(): number { - return this._lastTokenRebaseTimestamp - } - - public setLastTokenRebaseTimestamp(lastTokenRebaseTimestamp: number) { - this._lastTokenRebaseTimestamp = lastTokenRebaseTimestamp - } - - public getLastClaimedAmountMoreThanRequestedAlertTimestamp(): number { - return this._lastClaimedAmountMoreThanRequestedAlertTimestamp - } - - public setLastClaimedAmountMoreThanRequestedAlertTimestamp(lastClaimedAmountMoreThanRequestedAlertTimestamp: number) { - this._lastClaimedAmountMoreThanRequestedAlertTimestamp = lastClaimedAmountMoreThanRequestedAlertTimestamp - } - - public getClaimedAmountMoreThanRequestedAlertsCount(): number { - return this._claimedAmountMoreThanRequestedAlertsCount - } - - public setClaimedAmountMoreThanRequestedAlertsCount(claimedAmountMoreThanRequestedAlertsCount: number) { - this._claimedAmountMoreThanRequestedAlertsCount = claimedAmountMoreThanRequestedAlertsCount - } -} diff --git a/ethereum-steth/src/services/withdrawals/Withdrawals.repo.ts b/ethereum-steth/src/services/withdrawals/Withdrawals.repo.ts deleted file mode 100644 index 025da4afb..000000000 --- a/ethereum-steth/src/services/withdrawals/Withdrawals.repo.ts +++ /dev/null @@ -1,214 +0,0 @@ -import { Knex } from 'knex' -import { WithdrawalRequest, WithdrawalRequestSql } from '../../entity/withdrawal_request' -import { either as E } from 'fp-ts' - -export const KnexErr = Error -export const NotFound = new Error('Not found') - -export class WithdrawalsRepo { - private readonly tblName = 'withdrawal_requests' - private readonly knex: Knex - - constructor(knex: Knex) { - this.knex = knex - } - - public async createOrUpdate(requests: WithdrawalRequest[]): Promise { - const data: WithdrawalRequestSql[] = [] - - for (const r of requests) { - data.push(r.toSqlObject()) - } - - const trx = await this.knex.transaction() - - try { - const chunkSize = 100 - for (let i = 0; i < data.length; i += chunkSize) { - await trx - .insert(data.slice(i, i + chunkSize)) - .into(this.tblName) - .onConflict('id') - .merge() - } - - await trx.commit() - return null - } catch (e) { - await trx.rollback() - return new KnexErr(`${e}`) - } - } - - public async getById(requestId: number): Promise> { - try { - const data = await this.knex(this.tblName).where('id', requestId).select('*').limit(1) - - if (data.length === 0) { - return E.left(NotFound) - } - - return E.right(WithdrawalRequest.sqlToWithdrawalRequest(data[0])) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getUnclaimedReqIds(): Promise> { - try { - const data: number[] = await this.knex(this.tblName).where('isClaimed', 0).pluck('id') - return E.right(data) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getFinalizedRequests(): Promise> { - try { - const data = await this.knex(this.tblName).select('*').where('isFinalized', 1) - - const out: WithdrawalRequest[] = [] - for (const wr of data) { - out.push(WithdrawalRequest.sqlToWithdrawalRequest(wr)) - } - - return E.right(out) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async removeByIds(ids: number[]): Promise { - const trx = await this.knex.transaction() - - try { - const chunkSize = 100 - for (let i = 0; i < ids.length; i += chunkSize) { - await trx(this.tblName) - .whereIn('id', ids.slice(i, i + chunkSize)) - .delete() - } - - await trx.commit() - return null - } catch (e) { - await trx.rollback() - return new KnexErr(`${e}`) - } - } - - public async getLastFinalizedRequest(): Promise> { - try { - const data = await this.knex(this.tblName) - .where('isFinalized', 1) - .orderBy('id', 'desc') - .limit(1) - - if (data.length === 0) { - return E.left(NotFound) - } - - return E.right(WithdrawalRequest.sqlToWithdrawalRequest(data[0])) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getFirstUnfinalizedRequest(): Promise> { - try { - const data = await this.knex(this.tblName) - .where('isFinalized', 0) - .orderBy('id', 'asc') - .limit(1) - - if (data.length === 0) { - return E.left(NotFound) - } - - return E.right(WithdrawalRequest.sqlToWithdrawalRequest(data[0])) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getRequestMapByIds(requestIds: number[]): Promise>> { - try { - const data = await this.knex(this.tblName).whereIn('id', requestIds).select('*') - - const out = new Map() - for (const wr of data) { - out.set(wr.id, WithdrawalRequest.sqlToWithdrawalRequest(wr)) - } - - return E.right(out) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getLastRequestId(): Promise> { - try { - const data: number[] = await this.knex(this.tblName) - .orderBy('id', 'desc') - .pluck('id') - .limit(1) - - if (data.length === 0) { - return E.right(0) - } - - return E.right(data[0]) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async getAll(): Promise> { - try { - const data = await this.knex(this.tblName).select('*') - - const out: WithdrawalRequest[] = [] - for (const r of data) { - const wr = WithdrawalRequest.sqlToWithdrawalRequest(r) - out.push(wr) - } - - return E.right(out) - } catch (e) { - return E.left(new KnexErr(`${e}`)) - } - } - - public async setWithdrawalRequestClaimed( - withdrawalRequestId: number, - isClaimed: boolean, - amountOfStETH: string, - ): Promise { - try { - await this.knex(this.tblName) - .where('id', withdrawalRequestId) - .update({ - isClaimed: Number(isClaimed), - amountOfStETH: amountOfStETH, - }) - - return null - } catch (e) { - return new KnexErr(`${e}`) - } - } - - public async setFinalizedRequests(lastRequestId: number): Promise { - try { - await this.knex(this.tblName) - .where('id', '<=', lastRequestId) - .update({ - isFinalized: Number(1), - }) - - return null - } catch (e) { - return new KnexErr(`${e}`) - } - } -} diff --git a/ethereum-steth/src/services/withdrawals/Withdrawals.srv.ts b/ethereum-steth/src/services/withdrawals/Withdrawals.srv.ts deleted file mode 100644 index 74f1380d5..000000000 --- a/ethereum-steth/src/services/withdrawals/Withdrawals.srv.ts +++ /dev/null @@ -1,857 +0,0 @@ -import BigNumber from 'bignumber.js' -import { WithdrawalsCache } from './Withdrawals.cache' -import { either as E } from 'fp-ts' -import { ETH_DECIMALS } from '../../utils/constants' -import { elapsedTime, formatDelay } from '../../utils/time' -import { - LIDO_TOKEN_REBASED_EVENT, - WITHDRAWAL_QUEUE_WITHDRAWAL_CLAIMED_EVENT, - WITHDRAWAL_QUEUE_WITHDRAWAL_REQUESTED_EVENT, - WITHDRAWAL_QUEUE_WITHDRAWALS_FINALIZED_EVENT, - WITHDRAWALS_BUNKER_MODE_DISABLED_EVENT, - WITHDRAWALS_BUNKER_MODE_ENABLED_EVENT, -} from '../../utils/events/withdrawals_events' -import { etherscanAddress, etherscanNft } from '../../utils/string' -import { EventOfNotice, handleEventsOfNotice, TransactionDto } from '../../entity/events' -import { Logger } from 'winston' -import { WithdrawalRequest } from '../../entity/withdrawal_request' -import { WithdrawalsRepo } from './Withdrawals.repo' -import { dbAlert, networkAlert } from '../../utils/errors' -import { BlockDto } from '../../entity/events' -import { StakingLimitInfo } from '../../entity/staking_limit_info' -import { Finding } from '../../generated/proto/alert_pb' -import { filterLog } from 'forta-agent' -import { WithdrawalClaimedEvent } from '../../generated/typechain/WithdrawalQueueERC721' - -const ONE_HOUR = 60 * 60 -const ONE_DAY = ONE_HOUR * 24 -const FIVE_DAYS = ONE_DAY * 5 -const TWO_WEEKS = 14 * ONE_DAY // 2 weeks - -const THRESHOLD_OF_100K_STETH = new BigNumber(100_000) -const THRESHOLD_OF_5K_STETH = new BigNumber(5_000) -const THRESHOLD_OF_150K_STETH = new BigNumber(150_000) - -const ONCE_PER_100_BLOCKS = 100 // 20 minutes (100 blocks x 12 sec = 12000 seconds = 20 minutes) -const THRESHOLD_095 = 0.95 -const THRESHOLD_02 = 0.2 -const CLAIMED_MORE_THEN_REQUESTED_5_ATTEMPT_PER_HOUR = 5 - -export abstract class IWithdrawalsClient { - public abstract getUnfinalizedStETH(blockNumber: number): Promise> - - public abstract getWithdrawalStatuses( - requestIds: number[], - currentBlock: number, - ): Promise> - - public abstract getTotalPooledEther(blockNumber: number): Promise> - - public abstract getTotalShares(blockNumber: number): Promise> - - public abstract isBunkerModeActive(blockNumber: number): Promise> - - public abstract getBunkerTimestamp(blockNumber: number): Promise> - - public abstract getWithdrawalLastRequestId(blockNumber: number): Promise> - - public abstract getWithdrawalStatus( - requestId: number, - blockNumber: number, - ): Promise> - - public abstract getEthBalance(address: string, block: number): Promise> - - public abstract getStakingLimitInfo(blockNumber: number): Promise> - - public abstract getClaimedEvents(currentBlock: number): Promise> -} - -export class WithdrawalsSrv { - private name = `WithdrawalsSrv` - - private readonly logger: Logger - private readonly repo: WithdrawalsRepo - private readonly cache: WithdrawalsCache - private readonly ethProvider: IWithdrawalsClient - private readonly withdrawalsEvents: EventOfNotice[] - - private readonly withdrawalsQueueAddress: string - private readonly lidoStethAddress: string - - constructor( - logger: Logger, - repo: WithdrawalsRepo, - ethProvider: IWithdrawalsClient, - cache: WithdrawalsCache, - withdrawalsEvents: EventOfNotice[], - withdrawalsQueueAddress: string, - lidoStethAddress: string, - ) { - this.logger = logger - this.repo = repo - this.ethProvider = ethProvider - this.cache = cache - this.withdrawalsEvents = withdrawalsEvents - this.withdrawalsQueueAddress = withdrawalsQueueAddress - this.lidoStethAddress = lidoStethAddress - } - - async initialize(currentBlock: number): Promise { - const start = new Date().getTime() - - const isBunkerMode = await this.ethProvider.isBunkerModeActive(currentBlock) - if (E.isLeft(isBunkerMode)) { - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return isBunkerMode.left - } - - this.cache.setIsBunkerMode(isBunkerMode.right) - - if (this.cache.getIsBunkerMode()) { - const bunkerModeSinceTimestamp = await this.ethProvider.getBunkerTimestamp(currentBlock) - if (E.isLeft(bunkerModeSinceTimestamp)) { - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return bunkerModeSinceTimestamp.left - } - - this.cache.setBunkerModeEnabledSinceTimestamp(bunkerModeSinceTimestamp.right) - } - - const err = await this.fillUpWithdrawalStatusesTable(currentBlock) - if (err !== null) { - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return err - } - - this.logger.info(elapsedTime(`[${this.name}.initialize]`, start)) - return null - } - - async fillUpWithdrawalStatusesTable(currentBlock: number): Promise { - const [cached, latest] = await Promise.all([ - this.repo.getFirstUnfinalizedRequest(), - this.ethProvider.getWithdrawalLastRequestId(currentBlock), - ]) - - if (E.isLeft(latest)) { - return latest.left - } - - if (E.isLeft(cached)) { - return cached.left - } - - const requests: number[] = [] - for (let i = cached.right.id; i <= latest.right; i++) { - requests.push(i) - } - - const requestStatuses = await this.ethProvider.getWithdrawalStatuses(requests, currentBlock) - if (E.isLeft(requestStatuses)) { - return requestStatuses.left - } - - const insertErr = await this.repo.createOrUpdate(requestStatuses.right) - if (insertErr !== null) { - return insertErr - } - - return null - } - - public getName(): string { - return this.name - } - - async handleBlock(blockDto: BlockDto): Promise { - const start = new Date().getTime() - const findings: Finding[] = [] - - const chainLastRequestId = await this.ethProvider.getWithdrawalLastRequestId(blockDto.number) - if (E.isLeft(chainLastRequestId)) { - return [ - networkAlert( - chainLastRequestId.left, - `Error in ${WithdrawalsSrv.name}.${this.handleBlock.name}:138`, - `Could not call ethProvider.getWithdrawalLastRequestId`, - ), - ] - } - - const dbLastRequestId = await this.repo.getLastRequestId() - if (E.isLeft(dbLastRequestId)) { - return [ - dbAlert( - dbLastRequestId.left, - `Error in ${WithdrawalsSrv.name}.${this.handleBlock.name}:149`, - `Could not call repo.getLastRequestId`, - ), - ] - } - - // db is outdated - // fetch requests and store them in db - if (chainLastRequestId.right > dbLastRequestId.right) { - const requestIds: number[] = [] - for (let i = dbLastRequestId.right; i <= chainLastRequestId.right; i++) { - requestIds.push(i) - } - - const requests = await this.ethProvider.getWithdrawalStatuses(requestIds, blockDto.number) - if (E.isLeft(requests)) { - return [ - networkAlert( - requests.left, - `Error in ${WithdrawalsSrv.name}.${this.handleBlock.name}:168`, - `Could not call ethProvider.getWithdrawalStatuses`, - ), - ] - } - - const insErr = await this.repo.createOrUpdate(requests.right) - if (insErr !== null) { - return [ - dbAlert( - insErr, - `Error in ${WithdrawalsSrv.name}.${this.handleBlock.name}:179`, - `Could not call repo.createOrUpdate`, - ), - ] - } - } - - if (blockDto.number % ONCE_PER_100_BLOCKS === 0) { - const [queueOnParWithStakeLimitFindings, unfinalizedRequestNumberFindings, unclaimedRequestsFindings] = - await Promise.all([ - this.handleQueueOnParWithStakeLimit(blockDto), - this.handleUnfinalizedRequestNumber(blockDto), - this.handleUnclaimedRequests(blockDto), - ]) - - findings.push( - ...queueOnParWithStakeLimitFindings, - ...unfinalizedRequestNumberFindings, - ...unclaimedRequestsFindings, - ) - } - - this.logger.info(elapsedTime(WithdrawalsSrv.name + '.' + this.handleBlock.name, start)) - - return findings - } - - public async handleTransaction(txEvent: TransactionDto): Promise { - const out: Finding[] = [] - - const withdrawalsEventsFindings = handleEventsOfNotice(txEvent, this.withdrawalsEvents) - const bunkerStatusFindings = this.handleBunkerStatus(txEvent) - this.handleLastTokenRebase(txEvent) - - const [finalizedFindings, withdrawalRequestFindings, withdrawalClaimedFindings] = await Promise.all([ - this.handleWithdrawalFinalized(txEvent), - this.handleWithdrawalRequest(txEvent), - this.handleWithdrawalClaimed(txEvent), - ]) - - out.push( - ...bunkerStatusFindings, - ...finalizedFindings, - ...withdrawalRequestFindings, - ...withdrawalClaimedFindings, - ...withdrawalsEventsFindings, - ) - - return out - } - - public async handleQueueOnParWithStakeLimit(blockDto: BlockDto): Promise { - const blockTimestamp = blockDto.timestamp - - if (blockTimestamp - this.cache.getLastQueueOnParStakeLimitAlertTimestamp() <= ONE_DAY) { - return [] - } - - const stakeLimitFullInfo = await this.ethProvider.getStakingLimitInfo(blockDto.number) - if (E.isLeft(stakeLimitFullInfo)) { - return [ - networkAlert( - stakeLimitFullInfo.left, - `Error in ${WithdrawalsSrv.name}.${this.handleQueueOnParWithStakeLimit.name}:243`, - `Could not call ethProvider.getStakingLimitInfo`, - ), - ] - } - - const unfinalizedStETH = await this.ethProvider.getUnfinalizedStETH(blockDto.number) - if (E.isLeft(unfinalizedStETH)) { - return [ - networkAlert( - unfinalizedStETH.left, - `Error in ${WithdrawalsSrv.name}.${this.handleQueueOnParWithStakeLimit.name}:254`, - `Could not call ethProvider.getUnfinalizedStETH`, - ), - ] - } - - if (stakeLimitFullInfo.right.isStakingPaused || unfinalizedStETH.right.eq(0)) { - return [] - } - const spentStakeLimit = stakeLimitFullInfo.right.maxStakeLimit.minus(stakeLimitFullInfo.right.currentStakeLimit) - const spentStakeLimitRate = spentStakeLimit.div(stakeLimitFullInfo.right.maxStakeLimit) - const thresholdStakeLimit = stakeLimitFullInfo.right.maxStakeLimit.times(THRESHOLD_095) - - const findings: Finding[] = [] - if (spentStakeLimit.gte(thresholdStakeLimit) && unfinalizedStETH.right.gte(thresholdStakeLimit)) { - const f: Finding = new Finding() - f.setName( - `⚠️ Withdrawals: ${spentStakeLimitRate.times( - 100, - )}% of stake limit is drained and unfinalized queue is on par with drained stake limit`, - ) - f.setDescription( - `Unfinalized queue: ${unfinalizedStETH.right.div(ETH_DECIMALS).toFixed(2)} stETH\n` + - `Spent stake limit: ${spentStakeLimit.div(ETH_DECIMALS).toFixed(2)} stETH`, - ) - f.setAlertid('WITHDRAWALS-UNFINALIZED-QUEUE-AND-STAKE-LIMIT') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - findings.push(f) - - this.cache.setLastQueueOnParStakeLimitAlertTimestamp(blockTimestamp) - } - - return findings - } - - public async handleUnfinalizedRequestNumber(blockDto: BlockDto): Promise { - const currentBlockTimestamp = blockDto.timestamp - - let unfinalizedStETH = new BigNumber(0) - - const out: Finding[] = [] - const lastFinalizedRequest = await this.repo.getLastFinalizedRequest() - if (E.isLeft(lastFinalizedRequest)) { - return [ - dbAlert( - lastFinalizedRequest.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnfinalizedRequestNumber.name}:298`, - `Could not call repo.getLastFinalizedRequest`, - ), - ] - } - - const firstUnfinalizedRequest = await this.repo.getFirstUnfinalizedRequest() - if (E.isLeft(firstUnfinalizedRequest)) { - return [ - dbAlert( - firstUnfinalizedRequest.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnfinalizedRequestNumber.name}:309`, - `Could not call repo.getFirstUnfinalizedRequest`, - ), - ] - } - - if (currentBlockTimestamp >= lastFinalizedRequest.right.timestamp) { - const unfinalizedStETHraw = await this.ethProvider.getUnfinalizedStETH(blockDto.number) - if (E.isLeft(unfinalizedStETHraw)) { - return [ - networkAlert( - unfinalizedStETHraw.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnfinalizedRequestNumber.name}:309`, - `Could not call ethProvider.getUnfinalizedStETH`, - ), - ] - } - - unfinalizedStETH = unfinalizedStETHraw.right.div(ETH_DECIMALS) - if (currentBlockTimestamp - this.cache.getLastBigUnfinalizedQueueAlertTimestamp() > ONE_DAY) { - if (unfinalizedStETH.gte(THRESHOLD_OF_100K_STETH)) { - // if alert hasn't been sent after last finalized batch - // and unfinalized queue is more than `THRESHOLD_OF_100K_STETH` StETH - - const f: Finding = new Finding() - f.setName(`⚠️ Withdrawals: unfinalized queue is more than ${THRESHOLD_OF_100K_STETH} stETH`) - f.setDescription(`Unfinalized queue is ${unfinalizedStETH.toFixed(2)} stETH`) - f.setAlertid('WITHDRAWALS-BIG-UNFINALIZED-QUEUE') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setLastBigUnfinalizedQueueAlertTimestamp(currentBlockTimestamp) - } - } - } - - if (!this.cache.getIsBunkerMode() && unfinalizedStETH.gt(0)) { - if (currentBlockTimestamp - FIVE_DAYS > firstUnfinalizedRequest.right.timestamp) { - const timeSinceLastAlert = currentBlockTimestamp - this.cache.getLastLongUnfinalizedQueueAlertTimestamp() - - if (timeSinceLastAlert > ONE_DAY) { - // if we are in turbo mode and unfinalized queue is not finalized for 5 days - // and alert hasn't been sent for 1 day - const f: Finding = new Finding() - f.setName(`⚠️ Withdrawals: unfinalized queue wait time is more than ${FIVE_DAYS / ONE_DAY} days`) - f.setDescription( - `Withdrawal request #${firstUnfinalizedRequest.right.id} has been waiting for ${formatDelay( - currentBlockTimestamp - firstUnfinalizedRequest.right.timestamp, - )} at the moment`, - ) - f.setAlertid('WITHDRAWALS-LONG-UNFINALIZED-QUEUE') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setLastLongUnfinalizedQueueAlertTimestamp(currentBlockTimestamp) - } - } - } - - return out - } - - public async handleUnclaimedRequests(blockDto: BlockDto): Promise { - const out: Finding[] = [] - const currentBlockTimestamp = blockDto.timestamp - - const outdatedClaimedReqIds: number[] = [] - let unclaimedStETH = new BigNumber(0) - let claimedStETH = new BigNumber(0) - - const unclaimedReqIds = await this.repo.getUnclaimedReqIds() - if (E.isLeft(unclaimedReqIds)) { - return [ - dbAlert( - unclaimedReqIds.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:395`, - `Could not call repo.getUnclaimedReqIds`, - ), - ] - } - const unclaimedRequestsStatuses = await this.ethProvider.getWithdrawalStatuses( - unclaimedReqIds.right, - blockDto.number, - ) - if (E.isLeft(unclaimedRequestsStatuses)) { - return [ - networkAlert( - unclaimedRequestsStatuses.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:405`, - `Could not call ethProvider.getWithdrawalStatuses`, - ), - ] - } - - const updateErr = await this.repo.createOrUpdate(unclaimedRequestsStatuses.right) - if (updateErr !== null) { - return [ - networkAlert( - updateErr, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:419`, - `Could not call repo.createOrUpdate`, - ), - ] - } - - const finalizedRequests = await this.repo.getFinalizedRequests() - if (E.isLeft(finalizedRequests)) { - return [ - dbAlert( - finalizedRequests.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:430`, - `Could not call repo.getFinalizedRequests`, - ), - ] - } - - for (const request of finalizedRequests.right) { - const isOutdated = currentBlockTimestamp - request.timestamp > TWO_WEEKS - if (isOutdated && request.isClaimed) { - outdatedClaimedReqIds.push(request.id) - } - if (!isOutdated && request.isClaimed) { - claimedStETH = claimedStETH.plus(request.amountOfStETH) - } - if (!request.isClaimed) { - unclaimedStETH = unclaimedStETH.plus(request.amountOfStETH) - } - } - - const removeErr = await this.repo.removeByIds(outdatedClaimedReqIds) - if (removeErr !== null) { - return [ - dbAlert( - removeErr, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:454`, - `Could not call repo.removeByIds`, - ), - ] - } - - const totalFinalizedSize = claimedStETH.plus(unclaimedStETH) - const unclaimedSizeRate = unclaimedStETH.div(totalFinalizedSize) - if (currentBlockTimestamp - this.cache.getLastUnclaimedRequestsAlertTimestamp() > ONE_DAY) { - if (unclaimedSizeRate.gte(THRESHOLD_02)) { - const f: Finding = new Finding() - f.setName(`ℹ️ Withdrawals: ${unclaimedSizeRate.times(100).toFixed(2)}% of finalized requests are unclaimed`) - f.setDescription( - `Unclaimed (for all time): ${unclaimedStETH.div(ETH_DECIMALS).toFixed(2)} stETH\n` + - `Claimed (for 2 weeks): ${claimedStETH.div(ETH_DECIMALS).toFixed(2)} stETH\n` + - `Total finalized: ${totalFinalizedSize.div(ETH_DECIMALS).toFixed(2)} stETH`, - ) - f.setAlertid('WITHDRAWALS-UNCLAIMED-REQUESTS') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setLastUnclaimedRequestsAlertTimestamp(currentBlockTimestamp) - } - } - if (currentBlockTimestamp - this.cache.getLastUnclaimedMoreThanBalanceAlertTimestamp() > ONE_DAY) { - const withdrawalQueueBalance = await this.ethProvider.getEthBalance(this.withdrawalsQueueAddress, blockDto.number) - if (E.isLeft(withdrawalQueueBalance)) { - return [ - networkAlert( - withdrawalQueueBalance.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:490`, - `Could not call ethProvider.getBalance`, - ), - ] - } - - if (unclaimedStETH.gt(withdrawalQueueBalance.right)) { - const f: Finding = new Finding() - f.setName(`🚨🚨🚨 Withdrawals: unclaimed requests size is more than withdrawal queue balance`) - f.setDescription( - `Unclaimed: ${unclaimedStETH.div(ETH_DECIMALS).toFixed(2)} stETH\n` + - `Withdrawal queue balance: ${withdrawalQueueBalance.right.div(ETH_DECIMALS).toFixed(2)} ETH\n` + - `Difference: ${unclaimedStETH.minus(withdrawalQueueBalance.right)} wei`, - ) - f.setAlertid('WITHDRAWALS-UNCLAIMED-REQUESTS-MORE-THAN-BALANCE') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setLastUnclaimedMoreThanBalanceAlertTimestamp(currentBlockTimestamp) - } - } - - return out - } - - public handleBunkerStatus(txEvent: TransactionDto): Finding[] { - const [bunkerEnabled] = filterLog(txEvent.logs, WITHDRAWALS_BUNKER_MODE_ENABLED_EVENT, this.withdrawalsQueueAddress) - const out: Finding[] = [] - - if (bunkerEnabled) { - this.cache.setIsBunkerMode(true) - this.cache.setBunkerModeEnabledSinceTimestamp(bunkerEnabled.args._sinceTimestamp) - - const f: Finding = new Finding() - f.setName('🚨 Withdrawals: BUNKER MODE ON! 🚨') - f.setDescription( - `Started from ${new Date(String(this.cache.getBunkerModeEnabledSinceTimestamp())).toUTCString()}`, - ) - f.setAlertid('WITHDRAWALS-BUNKER-ENABLED') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - out.push(f) - - return out - } - - const [bunkerDisabled] = filterLog( - txEvent.logs, - WITHDRAWALS_BUNKER_MODE_DISABLED_EVENT, - this.withdrawalsQueueAddress, - ) - if (bunkerDisabled) { - this.cache.setIsBunkerMode(false) - const delay = formatDelay(txEvent.block.timestamp - Number(this.cache.getBunkerModeEnabledSinceTimestamp())) - - const f: Finding = new Finding() - f.setName('⚠️ Withdrawals: BUNKER MODE OFF! ✅') - f.setDescription(`Bunker lasted ${delay}`) - f.setAlertid('WITHDRAWALS-BUNKER-DISABLED') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - return out - } - - return out - } - - public async handleWithdrawalRequest(txEvent: TransactionDto): Promise { - const requestEvents = filterLog( - txEvent.logs, - WITHDRAWAL_QUEUE_WITHDRAWAL_REQUESTED_EVENT, - this.withdrawalsQueueAddress, - ) - if (!requestEvents) { - return [] - } - - const perRequesterAmounts = new Map() - const withdrawalRequestIds: number[] = [] - for (const event of requestEvents) { - perRequesterAmounts.set( - event.args.requestor, - (perRequesterAmounts.get(event.args.requestor) || new BigNumber(0)).plus( - new BigNumber(String(event.args.amountOfStETH)).div(ETH_DECIMALS), - ), - ) - - withdrawalRequestIds.push(Number(event.args.requestId)) - } - - const withdrawalRequests = await this.ethProvider.getWithdrawalStatuses(withdrawalRequestIds, txEvent.block.number) - if (E.isLeft(withdrawalRequests)) { - return [ - networkAlert( - withdrawalRequests.left, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:593`, - `Could not call ethProvider.getWithdrawalStatuses`, - ), - ] - } - - const updateErr = await this.repo.createOrUpdate(withdrawalRequests.right) - if (updateErr !== null) { - return [ - dbAlert( - updateErr, - `Error in ${WithdrawalsSrv.name}.${this.handleUnclaimedRequests.name}:604`, - `Could not call repo.createOrUpdate`, - ), - ] - } - - const out: Finding[] = [] - for (const [requester, amounts] of perRequesterAmounts.entries()) { - if (amounts.gte(THRESHOLD_OF_5K_STETH)) { - const f: Finding = new Finding() - f.setName(`ℹ️ Huge stETH withdrawal requests batch`) - f.setDescription(`Requester: ${etherscanAddress(requester)}\n` + `Amount: ${amounts.toFixed(2)} stETH`) - f.setAlertid('WITHDRAWALS-BIG-WITHDRAWAL-REQUEST-BATCH') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - } - - this.cache.setAmountOfRequestedStETHSinceLastTokenRebase( - this.cache.getAmountOfRequestedStETHSinceLastTokenRebase().plus(amounts), - ) - } - - if (this.cache.getAmountOfRequestedStETHSinceLastTokenRebase().gte(THRESHOLD_OF_150K_STETH)) { - if (this.cache.getLastBigRequestAfterRebaseAlertTimestamp() < this.cache.getLastTokenRebaseTimestamp()) { - const f: Finding = new Finding() - f.setName( - `⚠️ Withdrawals: the sum of received withdrawal requests since the last rebase greater than ${THRESHOLD_OF_150K_STETH} stETH (max staking limit)`, - ) - f.setDescription(`Amount: ${this.cache.getAmountOfRequestedStETHSinceLastTokenRebase().toFixed(2)} stETH`) - f.setAlertid('WITHDRAWALS-BIG-WITHDRAWAL-REQUEST-AFTER-REBASE') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setLastBigRequestAfterRebaseAlertTimestamp(txEvent.block.timestamp) - } - } - - return out - } - - public handleLastTokenRebase(txEvent: TransactionDto): void { - const [rebaseEvent] = filterLog(txEvent.logs, LIDO_TOKEN_REBASED_EVENT, this.lidoStethAddress) - if (!rebaseEvent) { - return - } - - this.cache.setLastTokenRebaseTimestamp(txEvent.block.timestamp) - this.cache.setAmountOfRequestedStETHSinceLastTokenRebase(new BigNumber(0)) - } - - public async handleWithdrawalFinalized(txEvent: TransactionDto): Promise { - const [withdrawalEvent] = filterLog( - txEvent.logs, - WITHDRAWAL_QUEUE_WITHDRAWALS_FINALIZED_EVENT, - this.withdrawalsQueueAddress, - ) - if (!withdrawalEvent) { - return [] - } - - const updateErr = await this.repo.setFinalizedRequests(withdrawalEvent.args.to) - if (updateErr !== null) { - dbAlert( - updateErr, - `Repo: could not update finalized requests`, - `Error in ${WithdrawalsSrv.name}.${this.handleWithdrawalFinalized.name}:720`, - ) - } - - return [] - } - - public async handleWithdrawalClaimed(txEvent: TransactionDto): Promise { - const claimedEvents = filterLog( - txEvent.logs, - WITHDRAWAL_QUEUE_WITHDRAWAL_CLAIMED_EVENT, - this.withdrawalsQueueAddress, - ) - if (claimedEvents.length === 0) { - return [] - } - - const currentBlockTimestamp = txEvent.block.timestamp - if (currentBlockTimestamp - this.cache.getLastClaimedAmountMoreThanRequestedAlertTimestamp() > ONE_HOUR) { - this.cache.setClaimedAmountMoreThanRequestedAlertsCount(0) - } - - if (this.cache.getClaimedAmountMoreThanRequestedAlertsCount() >= CLAIMED_MORE_THEN_REQUESTED_5_ATTEMPT_PER_HOUR) { - return [] - } - - const out: Finding[] = [] - const claimedRequestIds: number[] = [] - for (const event of claimedEvents) { - claimedRequestIds.push(Number(event.args.requestId)) - } - - const claimedRequestMap = await this.repo.getRequestMapByIds(claimedRequestIds) - if (E.isLeft(claimedRequestMap)) { - return [ - dbAlert( - claimedRequestMap.left, - `Error in ${WithdrawalsSrv.name}.${this.handleWithdrawalClaimed.name}:732`, - `Could not call repo.getRequestMapByIds`, - ), - ] - } - - for (const event of claimedEvents) { - const reqId = Number(event.args.requestId) - if (claimedRequestMap.right.has(reqId)) { - const withdrawalRequest = claimedRequestMap.right.get(reqId) as WithdrawalRequest - const claimedAmount = new BigNumber(String(event.args.amountOfETH)) - - if (claimedAmount.gt(withdrawalRequest.amountOfStETH)) { - const f: Finding = new Finding() - f.setName(`🚨🚨🚨 Withdrawals: claimed amount is more than requested`) - f.setDescription( - `Request ID: ${etherscanNft(this.withdrawalsQueueAddress, reqId)}\n` + - `Claimed: ${claimedAmount.div(ETH_DECIMALS).toFixed(2)} ETH\n` + - `Requested: ${withdrawalRequest.amountOfStETH.div(ETH_DECIMALS).toFixed(2)} stETH\n` + - `Difference: ${claimedAmount.minus(withdrawalRequest.amountOfStETH)} wei\n` + - `Owner: ${etherscanAddress(event.args.owner)}\n` + - `Receiver: ${etherscanAddress(event.args.receiver)}`, - ) - f.setAlertid('WITHDRAWALS-CLAIMED-AMOUNT-MORE-THAN-REQUESTED') - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - out.push(f) - - this.cache.setClaimedAmountMoreThanRequestedAlertsCount( - this.cache.getClaimedAmountMoreThanRequestedAlertsCount() + 1, - ) - - this.cache.setLastClaimedAmountMoreThanRequestedAlertTimestamp(currentBlockTimestamp) - } - - withdrawalRequest.isClaimed = true - withdrawalRequest.amountOfStETH = new BigNumber(String(event.args.amountOfETH)) - - const updateErr = await this.repo.setWithdrawalRequestClaimed( - withdrawalRequest.id, - withdrawalRequest.isClaimed, - withdrawalRequest.amountOfStETH.toString(), - ) - - if (updateErr !== null) { - out.push( - dbAlert( - updateErr, - `Error in ${WithdrawalsSrv.name}.${this.repo.setWithdrawalRequestClaimed.name}:823`, - `Could not call repo.setWithdrawalRequestClaimed`, - ), - ) - } - } - } - - return out - } - - async getStatistic(): Promise> { - const data = await this.repo.getAll() - if (E.isLeft(data)) { - return data - } - - let stETH = new BigNumber(0) - - let finalizedStETH = new BigNumber(0) - let nonFinalizedStETH = new BigNumber(0) - - let claimedStEth = new BigNumber(0) - let nonClaimedStEth = new BigNumber(0) - - let finalized: number = 0 - let claimed: number = 0 - let notFinalized: number = 0 - let notClaimed: number = 0 - - for (const wr of data.right) { - stETH = stETH.plus(wr.amountOfStETH) - - if (wr.isFinalized) { - finalized += 1 - finalizedStETH = finalizedStETH.plus(wr.amountOfStETH) - } else { - notFinalized += 1 - nonFinalizedStETH = nonFinalizedStETH.plus(wr.amountOfStETH) - } - - if (wr.isClaimed) { - claimed += 1 - claimedStEth = claimedStEth.plus(wr.amountOfStETH) - } else { - notClaimed += 1 - nonClaimedStEth = nonClaimedStEth.plus(wr.amountOfStETH) - } - } - - return E.right( - `\n` + - `\tStEth: ${stETH.dividedBy(ETH_DECIMALS).toFixed(4)} \n` + - `\tfinalized: ${finalizedStETH.dividedBy(ETH_DECIMALS).toFixed(4)} ${finalized} \n` + - `\tnot finalized: ${nonFinalizedStETH.dividedBy(ETH_DECIMALS).toFixed(4)} ${notFinalized} \n` + - `\tclaimed: ${claimedStEth.dividedBy(ETH_DECIMALS).toFixed(4)} ${claimed} \n` + - `\tnot claimed: ${nonClaimedStEth.dividedBy(ETH_DECIMALS).toFixed(4)} ${notClaimed}\n` + - `\ttotal: ${data.right.length} wr`, - ) - } -} diff --git a/ethereum-steth/src/services/withdrawals/withdrawals.repo.spec.ts b/ethereum-steth/src/services/withdrawals/withdrawals.repo.spec.ts deleted file mode 100644 index 9ddd02343..000000000 --- a/ethereum-steth/src/services/withdrawals/withdrawals.repo.spec.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { WithdrawalRequest } from '../../entity/withdrawal_request' -import BigNumber from 'bignumber.js' -import { faker } from '@faker-js/faker' -import { NotFound, WithdrawalsRepo } from './Withdrawals.repo' -import { either as E } from 'fp-ts' -import { Config } from '../../utils/env/env' -import { knex } from 'knex' - -const timeout = 120_000 - -describe('Withdrawals repo tests', () => { - const dbClient = knex(Config.getKnexConfig()) - const repo = new WithdrawalsRepo(dbClient) - - const requests: WithdrawalRequest[] = [ - new WithdrawalRequest( - 1, - new BigNumber('40289303816004547510'), - new BigNumber(faker.number.bigInt().toString()), - faker.string.hexadecimal(), - faker.date.past().getTime(), - true, - true, - ), - new WithdrawalRequest( - 2, - new BigNumber(faker.number.bigInt().toString()), - new BigNumber(faker.number.bigInt().toString()), - faker.string.hexadecimal(), - faker.date.past().getTime(), - true, - false, - ), - new WithdrawalRequest( - 3, - new BigNumber(faker.number.bigInt().toString()), - new BigNumber(faker.number.bigInt().toString()), - faker.string.hexadecimal(), - faker.date.past().getTime(), - true, - false, - ), - new WithdrawalRequest( - 4, - new BigNumber(faker.number.bigInt().toString()), - new BigNumber(faker.number.bigInt().toString()), - faker.string.hexadecimal(), - faker.date.past().getTime(), - true, - false, - ), - ] - - beforeAll(async () => { - await dbClient.migrate.down() - await dbClient.migrate.latest() - - const err = await repo.createOrUpdate(requests) - if (err !== null) { - throw err - } - }) - - afterAll(async () => { - await dbClient.destroy() - }) - - test( - 'createOrUpdate should insert data', - async () => { - const r = await repo.getById(1) - if (E.isLeft(r)) { - throw r.left - } - - expect(r.right).toEqual(requests[0]) - }, - timeout, - ) - - test( - 'getUnclaimedReqIds success', - async () => { - const r = await repo.getUnclaimedReqIds() - if (E.isLeft(r)) { - throw r.left - } - - expect(r.right.length).toEqual(3) - }, - timeout, - ) - - test( - 'removeByIds success', - async () => { - const requestForDelete = 3 - const r = await repo.removeByIds([requestForDelete]) - if (r !== null) { - throw r - } - - const deleted = await repo.getById(requestForDelete) - if (E.isRight(deleted)) { - throw new Error('Object must be deleted') - } - - expect(deleted.left).toEqual(NotFound) - }, - timeout, - ) - - test( - 'update success', - async () => { - const requestForUpdate = 4 - const wr = new WithdrawalRequest( - requestForUpdate, - new BigNumber(1), - new BigNumber(1), - faker.string.hexadecimal(), - faker.date.past().getTime(), - true, - true, - ) - - const updErr = await repo.createOrUpdate([wr]) - if (updErr) { - throw new Error('Object must be updated') - } - - const r = await repo.getById(requestForUpdate) - if (E.isLeft(r)) { - throw new Error('Object must be exist') - } - - expect(r.right).toEqual(wr) - }, - timeout, - ) - - test( - 'update finalized requests', - async () => { - const lastFinalizedRequestId = 5 - - const r = await repo.setFinalizedRequests(lastFinalizedRequestId) - if (r !== null) { - throw r - } - - const records = await repo.getAll() - if (E.isLeft(records)) { - throw records - } - - for (const record of records.right) { - expect(record.isFinalized).toBe(true) - } - }, - timeout, - ) -}) diff --git a/ethereum-steth/src/utils/constants.ts b/ethereum-steth/src/utils/constants.ts deleted file mode 100644 index e9333a8f2..000000000 --- a/ethereum-steth/src/utils/constants.ts +++ /dev/null @@ -1,78 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ERC20 = { - decimals: number - name: string -} - -export type Address = { - DEPOSIT_SECURITY_ADDRESS: string - BURNER_ADDRESS: string - LDO_ADDRESS: string - LIDO_STETH_ADDRESS: string - WSTETH_ADDRESS: string - WITHDRAWALS_QUEUE_ADDRESS: string - DEPOSIT_EXECUTOR_ADDRESS: string - INSURANCE_FUND_ADDRESS: string - DAI_ADDRESS: string - USDT_ADDRESS: string - USDC_ADDRESS: string - GATE_SEAL_DEFAULT_ADDRESS: string - EXIT_BUS_ORACLE_ADDRESS: string - GATE_SEAL_FACTORY_ADDRESS: string - WITHDRAWALS_VAULT_ADDRESS: string - EL_REWARDS_VAULT_ADDRESS: string - KNOWN_ERC20: Map -} - -export const ETH_DECIMALS = new BigNumber(10).pow(18) - -const DEPOSIT_SECURITY_ADDRESS: string = '0xc77f8768774e1c9244beed705c4354f2113cfc09' -const BURNER_ADDRESS: string = '0xd15a672319cf0352560ee76d9e89eab0889046d3' -const LDO_ADDRESS: string = '0x5a98fcbea516cf06857215779fd812ca3bef1b32' -const LIDO_STETH_ADDRESS: string = '0xae7ab96520de3a18e5e111b5eaab095312d7fe84' -const WSTETH_ADDRESS: string = '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' -const WITHDRAWALS_QUEUE_ADDRESS: string = '0x889edc2edab5f40e902b864ad4d7ade8e412f9b1' -const DEPOSIT_EXECUTOR_ADDRESS: string = '0xf82ac5937a20dc862f9bc0668779031e06000f17' -const INSURANCE_FUND_ADDRESS: string = '0x8b3f33234abd88493c0cd28de33d583b70bede35' -const DAI_ADDRESS: string = '0x6b175474e89094c44da98b954eedeac495271d0f' -const USDT_ADDRESS: string = '0xdac17f958d2ee523a2206206994597c13d831ec7' -const USDC_ADDRESS: string = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' -const GATE_SEAL_DEFAULT_ADDRESS: string = '0x79243345eDbe01A7E42EDfF5900156700d22611c' -const EXITBUS_ORACLE_ADDRESS: string = '0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e' -const GATE_SEAL_FACTORY_ADDRESS: string = '0x6c82877cac5a7a739f16ca0a89c0a328b8764a24' -const WITHDRAWALS_VAULT_ADDRESS: string = '0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f' -const EL_REWARDS_VAULT_ADDRESS: string = '0x388c818ca8b9251b393131c08a736a67ccb19297' - -// const for backward functional test capability -// https://github.com/lidofinance/alerting-forta/issues/533 -export const GATE_SEAL_DEFAULT_ADDRESS_BEFORE_26_APR_2024: string = '0x1ad5cb2955940f998081c1ef5f5f00875431aa90' - -const KNOWN_ERC20 = new Map([ - [LIDO_STETH_ADDRESS, { decimals: 18, name: 'stETH' }], - [WSTETH_ADDRESS, { decimals: 18, name: 'wstETH' }], - [LDO_ADDRESS, { decimals: 18, name: 'LDO' }], - [DAI_ADDRESS, { decimals: 18, name: 'DAI' }], - [USDT_ADDRESS, { decimals: 6, name: 'USDT' }], - [USDC_ADDRESS, { decimals: 6, name: 'USDC' }], -]) - -export const Address: Address = { - DEPOSIT_SECURITY_ADDRESS: DEPOSIT_SECURITY_ADDRESS, - BURNER_ADDRESS: BURNER_ADDRESS, - LDO_ADDRESS: LDO_ADDRESS, - LIDO_STETH_ADDRESS: LIDO_STETH_ADDRESS, - WSTETH_ADDRESS: WSTETH_ADDRESS, - WITHDRAWALS_QUEUE_ADDRESS: WITHDRAWALS_QUEUE_ADDRESS, - DEPOSIT_EXECUTOR_ADDRESS: DEPOSIT_EXECUTOR_ADDRESS, - INSURANCE_FUND_ADDRESS: INSURANCE_FUND_ADDRESS, - DAI_ADDRESS: DAI_ADDRESS, - USDT_ADDRESS: USDT_ADDRESS, - USDC_ADDRESS: USDC_ADDRESS, - GATE_SEAL_DEFAULT_ADDRESS: GATE_SEAL_DEFAULT_ADDRESS, - EXIT_BUS_ORACLE_ADDRESS: EXITBUS_ORACLE_ADDRESS, - GATE_SEAL_FACTORY_ADDRESS: GATE_SEAL_FACTORY_ADDRESS, - WITHDRAWALS_VAULT_ADDRESS: WITHDRAWALS_VAULT_ADDRESS, - EL_REWARDS_VAULT_ADDRESS: EL_REWARDS_VAULT_ADDRESS, - KNOWN_ERC20: KNOWN_ERC20, -} diff --git a/ethereum-steth/src/utils/env/env.ts b/ethereum-steth/src/utils/env/env.ts deleted file mode 100644 index 9ce7088cc..000000000 --- a/ethereum-steth/src/utils/env/env.ts +++ /dev/null @@ -1,63 +0,0 @@ -import 'dotenv/config' -import { knex } from 'knex' - -export class Config { - public readonly appName: string - public readonly nodeEnv: string - public readonly instance: string - public readonly ethereumRpcUrl: string - public readonly dataProvider: string - - public readonly grpcPort: number - public readonly httpPort: number - public readonly logFormat: string - public readonly logLevel: string - - public readonly chainId: number - public readonly knexConfig: knex.Knex.Config - public readonly promPrefix: string - public readonly useFortaProvider: boolean - - constructor() { - this.appName = process.env.APP_NAME || 'ethereum-steth' - this.nodeEnv = process.env.NODE_ENV || 'production' - this.instance = process.env.INSTANCE || 'forta' - - this.grpcPort = parseInt(process.env.AGENT_GRPC_PORT!, 10) || 50051 - this.httpPort = parseInt(process.env.HTTP_PORT!, 10) || 3000 - this.logFormat = process.env.LOG_FORMAT || 'simple' - this.logLevel = process.env.LOG_LEVEL || 'info' - - this.chainId = parseInt(process.env.FORTA_CHAIN_ID!, 10) || 1 - this.ethereumRpcUrl = process.env.ETHEREUM_RPC_URL || 'https://eth.drpc.org' - - this.promPrefix = this.appName.replace('-', '_') + '_' - - this.useFortaProvider = JSON.parse(process.env.USE_FORTA_RPC_URL!) - - this.knexConfig = Config.getKnexConfig() - - const urlRegex = /^(?:https?:\/\/)?(?:www\.)?([^/\n]+)/ - - this.dataProvider = '' - const match = this.ethereumRpcUrl.match(urlRegex) - if (match) { - this.dataProvider = match[1] - } - } - - public static getKnexConfig(): knex.Knex.Config { - return { - client: 'sqlite3', - connection: { - filename: ':memory:', - // filename: '/tmp/dbdatabase.db', - }, - migrations: { - tableName: 'knex_migrations', - directory: './src/db/migrations', - }, - useNullAsDefault: false, - } - } -} diff --git a/ethereum-steth/src/utils/errors.ts b/ethereum-steth/src/utils/errors.ts deleted file mode 100644 index ed0183cb7..000000000 --- a/ethereum-steth/src/utils/errors.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Finding } from '../generated/proto/alert_pb' - -export const NetworkErrorFinding = 'NETWORK-ERROR' - -export function networkAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid(NetworkErrorFinding) - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export function dbAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid('DB-ERROR') - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - this.cause = e.cause - } else { - this.message = `${e}` - } - } -} diff --git a/ethereum-steth/src/utils/events/burner_events.ts b/ethereum-steth/src/utils/events/burner_events.ts deleted file mode 100644 index 9427bcf90..000000000 --- a/ethereum-steth/src/utils/events/burner_events.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' -import { Finding } from '../../generated/proto/alert_pb' - -export function getBurnerEvents(BURNER_ADDRESS: string): EventOfNotice[] { - return [ - { - address: BURNER_ADDRESS, - abi: 'event ERC20Recovered(address indexed requestedBy, address indexed token,uint256 amount)', - alertId: 'LIDO-BURNER-ERC20-RECOVERED', - name: 'ℹ️ Lido Burner: ERC20 recovered', - description: (args: Result) => - `ERC20 recovered:\n` + - `Requested by: ${etherscanAddress(args.requestedBy)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Amount: ${args.amount}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - { - address: BURNER_ADDRESS, - abi: 'event ERC721Recovered(address indexed requestedBy, address indexed token, uint256 tokenId)', - alertId: 'LIDO-BURNER-ERC721-RECOVERED', - name: 'ℹ️ Lido Burner: ERC721 recovered', - description: (args: Result) => - `ERC721 recovered:\n` + - `Requested by: ${etherscanAddress(args.requestedBy)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Token ID: ${args.tokenId}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/ethereum-steth/src/utils/events/deposit_security_events.ts b/ethereum-steth/src/utils/events/deposit_security_events.ts deleted file mode 100644 index 3fa330984..000000000 --- a/ethereum-steth/src/utils/events/deposit_security_events.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' -import { Finding } from '../../generated/proto/alert_pb' - -export function getDepositSecurityEvents(DEPOSIT_SECURITY_ADDRESS: string): EventOfNotice[] { - return [ - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event DepositsPaused(address indexed guardian, uint24 indexed stakingModuleId)', - alertId: 'LIDO-DEPOSITS-PAUSED', - name: '🚨 Deposit Security: Deposits paused', - description: (args: Result) => - `Deposits were paused by ${etherscanAddress(args.guardian)} for ${args.stakingModuleId} staking module`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event GuardianQuorumChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-QUORUM-CHANGED', - name: '🚨 Deposit Security: Guardian quorum changed', - description: (args: Result) => `New quorum size ${args.newValue}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event OwnerChanged(address newValue)', - alertId: 'LIDO-DEPOSITOR-OWNER-CHANGED', - name: '🚨 Deposit Security: Owner changed', - description: (args: Result) => `New owner ${etherscanAddress(args.newValue)}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event DepositsUnpaused(uint24 indexed stakingModuleId)', - alertId: 'LIDO-DEPOSITS-UNPAUSED', - name: '⚠️ Deposit Security: Deposits resumed', - description: (args: Result) => `Deposits were resumed for ${args.stakingModuleId} staking module`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event GuardianAdded(address guardian)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-ADDED', - name: '⚠️ Deposit Security: Guardian added', - description: (args: Result) => `New guardian added ${etherscanAddress(args.guardian)}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event GuardianRemoved(address guardian)', - alertId: 'LIDO-DEPOSITOR-GUARDIAN-REMOVED', - name: '⚠️ Deposit Security: Guardian removed', - description: (args: Result) => `Guardian ${etherscanAddress(args.guardian)} was removed`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event MaxDepositsChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-MAX-DEPOSITS-CHANGED', - name: '⚠️ Deposit Security: Max deposits changed', - description: (args: Result) => `New value ${args.newValue}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: DEPOSIT_SECURITY_ADDRESS, - abi: 'event MinDepositBlockDistanceChanged(uint256 newValue)', - alertId: 'LIDO-DEPOSITOR-MIN-DEPOSITS-BLOCK-DISTANCE-CHANGED', - name: '⚠️ Deposit Security: Min deposit block distance changed', - description: (args: Result) => `New value ${args.newValue}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/ethereum-steth/src/utils/events/gate_seal_events.ts b/ethereum-steth/src/utils/events/gate_seal_events.ts deleted file mode 100644 index 84b2db24e..000000000 --- a/ethereum-steth/src/utils/events/gate_seal_events.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const GATE_SEAL_SEALED_EVENT = - 'event Sealed (address gate_seal, address sealed_by, uint256 sealed_for, address sealable, uint256 sealed_at)' - -export const GATE_SEAL_FACTORY_GATE_SEAL_CREATED_EVENT = 'event GateSealCreated (address gate_seal)' diff --git a/ethereum-steth/src/utils/events/insurance_fund_events.ts b/ethereum-steth/src/utils/events/insurance_fund_events.ts deleted file mode 100644 index d430d0935..000000000 --- a/ethereum-steth/src/utils/events/insurance_fund_events.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { ERC20, ETH_DECIMALS } from '../constants' -import BigNumber from 'bignumber.js' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' -import { Finding } from '../../generated/proto/alert_pb' - -export function getInsuranceFundEvents( - INSURANCE_FUND_ADDRESS: string, - KNOWN_ERC20: Map, -): EventOfNotice[] { - return [ - { - address: INSURANCE_FUND_ADDRESS, - abi: 'event ERC20Transferred(address indexed _token, address indexed _recipient, uint256 _amount)', - alertId: 'INS-FUND-ERC20-TRANSFERRED', - name: '🚨 Insurance fund: ERC20 transferred', - description: (args: Result) => { - const tokenInfo = KNOWN_ERC20.get(args._token.toLowerCase()) || { - decimals: 18, - name: 'unknown', - } - return `${new BigNumber(String(args._amount)).div(10 ** tokenInfo.decimals).toFixed(2)} of ${etherscanAddress( - args._token, - )}(${tokenInfo.name}) were transferred from insurance fund to ${etherscanAddress(args._recipient)}` - }, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: INSURANCE_FUND_ADDRESS, - abi: 'event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)', - alertId: 'INS-FUND-OWNERSHIP-TRANSFERRED', - name: '🚨 Insurance fund: Ownership transferred', - description: (args: Result) => - `Owner of the insurance fund was transferred from ${etherscanAddress(args.previousOwner)} to ${etherscanAddress( - args.newOwner, - )}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: INSURANCE_FUND_ADDRESS, - abi: 'event EtherTransferred(address indexed _recipient, uint256 _amount)', - alertId: 'INS-FUND-ETH-TRANSFERRED', - name: '⚠️ Insurance fund: ETH transferred', - description: (args: Result) => - `${new BigNumber(String(args._amount)) - .div(ETH_DECIMALS) - .toFixed(2)} ETH were transferred from insurance fund to ${etherscanAddress(args._recipient)}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: INSURANCE_FUND_ADDRESS, - abi: 'event ERC721Transferred(address indexed _token, address indexed _recipient, uint256 _tokenId, bytes _data)', - alertId: 'INS-FUND-ERC721-TRANSFERRED', - name: '⚠️ Insurance fund: ERC721 transferred', - description: (args: Result) => - `ERC721 token (address: ${etherscanAddress(args._token)}, id: ${ - args._tokenId - }) was transferred form insurance fund to ${etherscanAddress(args._recipient)}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: INSURANCE_FUND_ADDRESS, - abi: 'event ERC1155Transferred(address indexed _token, address indexed _recipient, uint256 _tokenId, uint256 _amount, bytes _data)', - alertId: 'INS-FUND-ERC1155-TRANSFERRED', - name: '⚠️ Insurance fund: ERC1155 transferred', - description: (args: Result) => - `${args._amount} of ERC1155 token (address: ${etherscanAddress(args._token)}, id: ${ - args._tokenId - }) was transferred form insurance fund to ${etherscanAddress(args._recipient)}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/ethereum-steth/src/utils/events/lido_events.ts b/ethereum-steth/src/utils/events/lido_events.ts deleted file mode 100644 index 912727f48..000000000 --- a/ethereum-steth/src/utils/events/lido_events.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { etherscanAddress } from '../string' -import { Finding } from '../../generated/proto/alert_pb' - -export const alertId_token_rebased = 'LIDO-TOKEN-REBASED' - -export function getLidoEvents(LIDO_STETH_ADDRESS: string): EventOfNotice[] { - return [ - { - address: LIDO_STETH_ADDRESS, - abi: 'event Stopped()', - alertId: 'LIDO-STOPPED', - name: '🚨🚨🚨 Lido: Stopped 🚨🚨🚨', - description: () => `Lido DAO contract was stopped`, - severity: Finding.Severity.CRITICAL, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event StakingLimitRemoved()', - alertId: 'LIDO-STAKING-LIMIT-REMOVED', - name: '🚨 Lido: Staking limit removed', - description: () => `Staking limit was removed`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event LidoLocatorSet(address lidoLocator)', - alertId: 'LIDO-LOCATOR-SET', - name: '🚨 Lido: Locator set', - description: (args: Result) => `Lido locator was set to: ${etherscanAddress(args.lidoLocator)}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event StakingPaused()', - alertId: 'LIDO-STAKING-PAUSED', - name: '🚨 Lido: Staking paused', - description: () => `Staking was paused!`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event Resumed()', - alertId: 'LIDO-RESUMED', - name: '⚠️ Lido: Resumed', - description: () => `Lido DAO contract was resumed`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event StakingResumed()', - alertId: 'LIDO-STAKING-RESUMED', - name: '⚠️ Lido: Staking resumed', - description: () => `Staking was resumed!`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event StakingLimitSet(uint256 maxStakeLimit, uint256 stakeLimitIncreasePerBlock)', - alertId: 'LIDO-STAKING-LIMIT-SET', - name: '⚠️ Lido: Staking limit set', - description: (args: Result) => - `Staking limit was set with:\n` + - `Max staking limit: ${args.maxStakeLimit}\n` + - `Stake limit increase per block: ${args.stakeLimitIncreasePerBlock}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event RecoverToVault(address vault, address token, uint256 amount)', - alertId: 'LIDO-RECOVER-TO-VAULT', - name: '⚠️ Lido: Funds recovered to vault', - description: (args: Result) => - `Funds recovered to vault:\n` + - `Vault: ${etherscanAddress(args.vault)}\n` + - `Token: ${etherscanAddress(args.token)}\n` + - `Amount: ${args.amount}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event ContractVersionSet(uint256 version)', - alertId: 'LIDO-CONTRACT-VERSION-SET', - name: '⚠️ Lido: Contract version set', - description: (args: Result) => `Contract version set:\n` + `Version: ${args.version}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: LIDO_STETH_ADDRESS, - abi: 'event TokenRebased(uint256 indexed reportTimestamp, uint256 timeElapsed, uint256 preTotalShares, uint256 preTotalEther, uint256 postTotalShares, uint256 postTotalEther, uint256 sharesMintedAsFees)', - alertId: alertId_token_rebased, - name: 'ℹ️ Lido: Token rebased', - description: (args: Result) => `reportTimestamp: ${args.reportTimestamp}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/ethereum-steth/src/utils/events/vault_events.ts b/ethereum-steth/src/utils/events/vault_events.ts deleted file mode 100644 index 16b733cef..000000000 --- a/ethereum-steth/src/utils/events/vault_events.ts +++ /dev/null @@ -1,7 +0,0 @@ -export const TRANSFER_SHARES_EVENT = ` - event TransferShares( - address indexed from, - address indexed to, - uint256 sharesValue - ) -` diff --git a/ethereum-steth/src/utils/events/withdrawals_events.ts b/ethereum-steth/src/utils/events/withdrawals_events.ts deleted file mode 100644 index 302e2c608..000000000 --- a/ethereum-steth/src/utils/events/withdrawals_events.ts +++ /dev/null @@ -1,43 +0,0 @@ -import BigNumber from 'bignumber.js' -import { Result } from '@ethersproject/abi/lib' -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' - -export const WITHDRAWALS_BUNKER_MODE_ENABLED_EVENT = 'event BunkerModeEnabled(uint256 _sinceTimestamp)' - -export const WITHDRAWALS_BUNKER_MODE_DISABLED_EVENT = 'event BunkerModeDisabled()' - -export const WITHDRAWAL_QUEUE_WITHDRAWAL_REQUESTED_EVENT = - 'event WithdrawalRequested(uint256 indexed requestId, address indexed requestor, address indexed owner, uint256 amountOfStETH, uint256 amountOfShares)' - -export const LIDO_TOKEN_REBASED_EVENT = - 'event TokenRebased(uint256 indexed reportTimestamp, uint256 timeElapsed, uint256 preTotalShares, uint256 preTotalEther, uint256 postTotalShares, uint256 postTotalEther, uint256 sharesMintedAsFees)' - -export const WITHDRAWAL_QUEUE_WITHDRAWALS_FINALIZED_EVENT = - 'event WithdrawalsFinalized(uint256 indexed from, uint256 indexed to, uint256 amountOfETHLocked, uint256 sharesToBurn, uint256 timestamp)' - -export const WITHDRAWAL_QUEUE_WITHDRAWAL_CLAIMED_EVENT = - 'event WithdrawalClaimed(uint256 indexed requestId, address indexed owner, address indexed receiver, uint256 amountOfETH)' - -export function getWithdrawalsEvents(WITHDRAWAL_QUEUE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: WITHDRAWAL_QUEUE_ADDRESS, - abi: 'event Paused(uint256 duration)', - alertId: 'WITHDRAWALS-PAUSED', - name: '🚨 Withdrawals: contract was paused', - description: (args: Result) => `For ${new BigNumber(args.duration).div(60 * 60)} hours`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: WITHDRAWAL_QUEUE_ADDRESS, - abi: 'event Resumed()', - alertId: 'WITHDRAWALS-UNPAUSED', - name: '⚠️ Withdrawals: contract was unpaused', - description: () => 'Contract was resumed', - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/ethereum-steth/src/utils/metrics/metrics.ts b/ethereum-steth/src/utils/metrics/metrics.ts deleted file mode 100644 index 743e4e790..000000000 --- a/ethereum-steth/src/utils/metrics/metrics.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Counter, Gauge, Histogram, Registry, Summary } from 'prom-client' - -export const StatusOK = 'ok' -export const StatusFail = 'fail' -export const HandleBlockLabel = 'handleBlock' -export const HandleTxLabel = 'handleTx' - -export class Metrics { - private readonly registry: Registry - private readonly prefix: string - - public readonly healthStatus: Gauge - public readonly buildInfo: Gauge - - public readonly etherJsRequest: Counter - public readonly networkErrors: Counter - public readonly lastBlockNumber: Gauge - public readonly etherJsDurationHistogram: Histogram - public readonly lastAgentTouch: Gauge - public readonly processedIterations: Counter - public readonly summaryHandlers: Summary - - constructor(registry: Registry, prefix: string) { - this.registry = registry - this.prefix = prefix - - this.buildInfo = new Gauge({ - name: this.prefix + 'build_info', - help: 'Build information', - labelNames: ['commitHash' as const], - registers: [this.registry], - }) - - this.healthStatus = new Gauge({ - name: this.prefix + 'health_status', - help: 'Bot health status', - labelNames: ['instance'] as const, - registers: [this.registry], - }) - - this.etherJsRequest = new Counter({ - name: this.prefix + 'etherjs_request_total', - help: 'Total number of requests via ether.js library', - labelNames: ['method' as const, 'status' as const] as const, - registers: [this.registry], - }) - - this.etherJsDurationHistogram = new Histogram({ - name: this.prefix + 'ether_requests_duration_seconds', - help: 'Histogram of the duration of requests in seconds', - labelNames: ['method', 'status'], - buckets: [0.001, 0.01, 0.1, 0.5, 1, 2.5, 5, 10], - }) - - this.lastAgentTouch = new Gauge({ - name: this.prefix + 'block_timestamp', - help: 'The last agent iteration', - labelNames: ['method' as const] as const, - registers: [this.registry], - }) - - this.lastBlockNumber = new Gauge({ - name: this.prefix + 'last_block_number', - help: 'The last agent block number', - registers: [this.registry], - }) - - this.networkErrors = new Counter({ - name: this.prefix + 'network_errors_total', - help: 'Total number of network errors', - registers: [this.registry], - }) - - this.processedIterations = new Counter({ - name: this.prefix + 'processed_iterations_total', - help: 'Total number of finding iterations', - labelNames: ['method', 'status'], - registers: [this.registry], - }) - - this.summaryHandlers = new Summary({ - name: this.prefix + 'request_processing_seconds', - help: 'Time spent processing request (block or transaction)', - labelNames: ['method'], - registers: [this.registry], - }) - } -} diff --git a/ethereum-steth/src/utils/mutex.ts b/ethereum-steth/src/utils/mutex.ts deleted file mode 100644 index 377f148fe..000000000 --- a/ethereum-steth/src/utils/mutex.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Mutex, MutexInterface, withTimeout } from 'async-mutex' - -export class DataRW { - private mutex: MutexInterface - private value: T[] - - constructor(initialValue: T[]) { - this.mutex = withTimeout(new Mutex(), 100) - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: T[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/ethereum-steth/src/utils/string.ts b/ethereum-steth/src/utils/string.ts deleted file mode 100644 index c4d0d4d6e..000000000 --- a/ethereum-steth/src/utils/string.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ETH_DECIMALS } from './constants' -import BigNumber from 'bignumber.js' - -export function etherscanNft(address: string, id: number | string): string { - const subpath = process.env.FORTA_AGENT_RUN_TEAR == 'testnet' ? 'goerli.' : '' - return `[${id}](https://${subpath}etherscan.io/nft/${address}/${id})` -} - -export function etherscanAddress(address: string): string { - const subpath = process.env.FORTA_AGENT_RUN_TIER == 'testnet' ? 'goerli.' : '' - return `[${address}](https://${subpath}etherscan.io/address/${address})` -} - -export function toEthString(wei: BigNumber): string { - return wei.dividedBy(ETH_DECIMALS).toFixed(3) + ' ETH' -} diff --git a/ethereum-steth/src/utils/time.ts b/ethereum-steth/src/utils/time.ts deleted file mode 100644 index 2b2433be3..000000000 --- a/ethereum-steth/src/utils/time.ts +++ /dev/null @@ -1,32 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} - -export function formatDelay(fullDelaySec: number): string { - const sign = fullDelaySec >= 0 ? 1 : -1 - let delayHours = 0 - let delayMin = Math.floor((sign * fullDelaySec) / 60) - const delaySec = sign * fullDelaySec - delayMin * 60 - if (delayMin >= 60) { - delayHours = Math.floor(delayMin / 60) - delayMin -= delayHours * 60 - } - return ( - (sign == 1 ? '' : '-') + - (delayHours > 0 ? `${delayHours} hrs ` : '') + - (delayMin > 0 ? `${delayMin} min ` : '') + - `${delaySec} sec` - ) -} diff --git a/ethereum-steth/src/utils/version.ts b/ethereum-steth/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/ethereum-steth/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/ethereum-steth/tsconfig.json b/ethereum-steth/tsconfig.json deleted file mode 100644 index 9f1e16f51..000000000 --- a/ethereum-steth/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist" - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/ethereum-steth/yarn.lock b/ethereum-steth/yarn.lock deleted file mode 100644 index 47458ca86..000000000 --- a/ethereum-steth/yarn.lock +++ /dev/null @@ -1,5913 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.7", "@babel/generator@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== - dependencies: - "@babel/types" "^7.24.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" - integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== - -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/template@^7.24.7", "@babel/template@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@faker-js/faker@^8.3.1": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" - integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== - -"@grpc/grpc-js@^1.10.2", "@grpc/grpc-js@^1.3.6": - version "1.10.8" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.8.tgz#99787785cd8335be861afd1cd485ae9f058e4484" - integrity sha512-vYVqYzHicDqyKB+NQhAc54I1QWCBLCrYG6unqOIcBTHx+7x8C9lcoLj3KVJXs2VB4lUbpWY+Kk9NipcbXYWmvg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.13": - version "0.7.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" - integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@opentelemetry/api@^1.4.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" - integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@tsconfig/node20@^20.1.2": - version "20.1.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.4.tgz#3457d42eddf12d3bde3976186ab0cd22b85df928" - integrity sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.17.33": - version "4.19.3" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz#e469a13e4186c9e1c0418fb17be8bc8ff1b19a7a" - integrity sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.11": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.17.5" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.5.tgz#e6c29b58e66995d57cd170ce3e2a61926d55ee04" - integrity sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.14.2": - version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" - integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" - integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== - -acorn@^8.4.1, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -async-mutex@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" - integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserslist@^4.22.2: - version "4.23.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" - integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== - dependencies: - caniuse-lite "^1.0.30001629" - electron-to-chromium "^1.4.796" - node-releases "^2.0.14" - update-browserslist-db "^1.0.16" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001629: - version "1.0.30001632" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz#964207b7cba5851701afb4c8afaf1448db3884b6" - integrity sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorette@2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -debug@4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-extend@^0.6.0, deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.796: - version "1.4.796" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz#48dd6ff634b7f7df6313bd27aaa713f3af4a2b29" - integrity sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA== - -elliptic@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" - integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -ethers@^5.5.1, ethers@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@^2.16.1: - version "2.16.6" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.6.tgz#9d63c5b2a06355d627ae94c37a5cffda5c455d24" - integrity sha512-v7w209VPj4L6pPn/ftFRJu31Oa8QagwcVw7BZmLCUWU4AQoc954rX9ogSIahDf67Pg+GjPbkW/Kn9XWnlWJG0g== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg== - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -getopts@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" - integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -google-protobuf@3.15.8: - version "3.15.8" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe" - integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -grpc-tools@^1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/grpc-tools/-/grpc-tools-1.12.4.tgz#a044c9e8157941033ea7a5f144c2dc9dc4501de4" - integrity sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - -grpc_tools_node_protoc_ts@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz#9a6c1c2f41563a1ab259c0177496d7dfed30dbfe" - integrity sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww== - dependencies: - google-protobuf "3.15.8" - handlebars "4.7.7" - -handlebars@4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-unicode@^2.0.0, has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -iconv-lite@0.4.24, iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore-walk@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== - dependencies: - minimatch "^3.0.4" - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -knex@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/knex/-/knex-3.1.0.tgz#b6ddd5b5ad26a6315234a5b09ec38dc4a370bd8c" - integrity sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw== - dependencies: - colorette "2.0.19" - commander "^10.0.0" - debug "4.3.4" - escalade "^3.1.1" - esm "^3.2.25" - get-package-type "^0.1.0" - getopts "2.3.0" - interpret "^2.2.0" - lodash "^4.17.21" - pg-connection-string "2.6.2" - rechoir "^0.8.0" - resolve-from "^5.0.0" - tarn "^3.0.2" - tildify "2.0.0" - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -nan@^2.12.1: - version "2.19.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.19.0.tgz#bb58122ad55a6c5bc973303908d5b16cfdd5a8c0" - integrity sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -needle@^2.2.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-pre-gyp@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.3.tgz#dcce9ee0aa7d19cd4dcd576ae9a0456d9078b286" - integrity sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-bundled@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pg-connection-string@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475" - integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA== - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.1.tgz#e68935518dd90bb7ec4821ba970e68f8de16e1ac" - integrity sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prom-client@^15.1.2: - version "15.1.2" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.2.tgz#78d79f12c35d395ca97edf7111c18210cf07f815" - integrity sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ== - dependencies: - "@opentelemetry/api" "^1.4.0" - tdigest "^0.1.1" - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.5: - version "7.3.0" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.0.tgz#a32ec0422c039798c41a0700306a6e305b9cb32c" - integrity sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.0.6, readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" - integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^5.3.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0, set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sql-template-strings@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/sql-template-strings/-/sql-template-strings-2.2.2.tgz#3f11508a25addfce217a3042a9d300c3193b96ff" - integrity sha512-UXhXR2869FQaD+GMly8jAMCRZ94nU5KcrFetZfWEMd+LVVG6y0ExgHAhatEcKZ/wk8YcKPdi+hiD2wm75lq3/Q== - -sqlite3@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-4.2.0.tgz#49026d665e9fc4f922e56fb9711ba5b4c85c4901" - integrity sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg== - dependencies: - nan "^2.12.1" - node-pre-gyp "^0.11.0" - -sqlite@3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/sqlite/-/sqlite-3.0.6.tgz#82d15bb45a1ca2a7ac8f7a1079f19dc9abe2ee75" - integrity sha512-5SW7HcN+s3TyqpsxOujXhQDCRSCgsxdiU0peT/Y9CT5T0rAsGLwtpXcMyQ7OzOPQ4YUZ5XiGlrwuuQbszr2xtw== - dependencies: - sqlite3 "^4.0.0" - optionalDependencies: - sql-template-strings "^2.2.2" - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -tar@^6.1.11: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tarn@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.2.tgz#73b6140fbb881b71559c4f8bfde3d9a4b3d27693" - integrity sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ== - -tdigest@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" - integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== - dependencies: - bintrees "1.0.2" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tildify@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" - integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.2: - version "29.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.4.tgz#26f8a55ce31e4d2ef7a1fd47dc7fa127e92793ef" - integrity sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-retry@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.5.tgz#ee4638e66c68bb49da975aa4994d5f16bfb61bc2" - integrity sha512-dFBa4pxMBkt/bjzdBio8EwYfbAdycEAwe0KZgzlUKKwU9Wr1WErK7Hg9QLqJuDDYJXTW4KYZyXAyqYKOdO/ehA== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0, wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -winston-transport@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" - integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" - integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.7.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/ethereum-validators-set/README.md b/ethereum-validators-set/README.md index c2bcb85ce..5a0f28cc5 100644 --- a/ethereum-validators-set/README.md +++ b/ethereum-validators-set/README.md @@ -90,6 +90,10 @@ DAO operations related alerts Alerting for the Staking Router events +### Guardians + +- GUARDIAN-MEMBER-LOW-BALANCE - Guardian has low account balance + ## Development Install deps: diff --git a/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-simpledvt.e2e-spec.ts.snap b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-simpledvt.e2e-spec.ts.snap new file mode 100644 index 000000000..09f716174 --- /dev/null +++ b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-simpledvt.e2e-spec.ts.snap @@ -0,0 +1,177 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`agent-node-operators-registry e2e tests should process tx with added simple dvt clusters 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 48 added +Name: Lido x SSV: Mysterious Manta +Reward address: [0xD0EB99690beda238C185D3D8f7cd35Ec014AD567](https://etherscan.io/address/0xD0EB99690beda238C185D3D8f7cd35Ec014AD567) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "48,Lido x SSV: Mysterious Manta,0xD0EB99690beda238C185D3D8f7cd35Ec014AD567,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 49 added +Name: Lido x SSV: Noble Newt +Reward address: [0x7cFB8250D2CbCC4645342350959633800F3A03A3](https://etherscan.io/address/0x7cFB8250D2CbCC4645342350959633800F3A03A3) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "49,Lido x SSV: Noble Newt,0x7cFB8250D2CbCC4645342350959633800F3A03A3,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 50 added +Name: Lido x SSV: Optimistic Orca +Reward address: [0xc292731e9d1862dCb3D5729F1ADe9760D3f99b43](https://etherscan.io/address/0xc292731e9d1862dCb3D5729F1ADe9760D3f99b43) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "50,Lido x SSV: Optimistic Orca,0xc292731e9d1862dCb3D5729F1ADe9760D3f99b43,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 51 added +Name: Lido x SSV: Playful Penguin +Reward address: [0x9e29400E9E917c0C7c639245c731360fBc8F16AC](https://etherscan.io/address/0x9e29400E9E917c0C7c639245c731360fBc8F16AC) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "51,Lido x SSV: Playful Penguin,0x9e29400E9E917c0C7c639245c731360fBc8F16AC,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 52 added +Name: Lido x SSV: Quiet Quetzal +Reward address: [0x19EcB86A441b6DFFA18379727eC8C0fd737a1140](https://etherscan.io/address/0x19EcB86A441b6DFFA18379727eC8C0fd737a1140) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "52,Lido x SSV: Quiet Quetzal,0x19EcB86A441b6DFFA18379727eC8C0fd737a1140,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 53 added +Name: Lido x SSV: Resilient Rabbit +Reward address: [0xF8bF822F5De86879Fd0C2F9A67761D348d89c343](https://etherscan.io/address/0xF8bF822F5De86879Fd0C2F9A67761D348d89c343) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "53,Lido x SSV: Resilient Rabbit,0xF8bF822F5De86879Fd0C2F9A67761D348d89c343,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 54 added +Name: Lido x SSV: Splendid Swan +Reward address: [0x222186393aA0b2b037ECEdddfDcb66ecA81C8888](https://etherscan.io/address/0x222186393aA0b2b037ECEdddfDcb66ecA81C8888) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "54,Lido x SSV: Splendid Swan,0x222186393aA0b2b037ECEdddfDcb66ecA81C8888,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 55 added +Name: Lido x SSV: Thoughtful Tiger +Reward address: [0x95f8739ae18b5ffCeEa124968988c2287F295914](https://etherscan.io/address/0x95f8739ae18b5ffCeEa124968988c2287F295914) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "55,Lido x SSV: Thoughtful Tiger,0x95f8739ae18b5ffCeEa124968988c2287F295914,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "SIMPLEDVT-NODE-OPERATOR-ADDED", + "description": "SimpleDVT Node operator 56 added +Name: Lido x SSV: Unique Unicorn +Reward address: [0xa3477C96F2b1F7744cFAa854Dd36CDE3dF00b34f](https://etherscan.io/address/0xa3477C96F2b1F7744cFAa854Dd36CDE3dF00b34f) +StakingLimit: 0", + "labels": [], + "metadata": { + "args": "56,Lido x SSV: Unique Unicorn,0xa3477C96F2b1F7744cFAa854Dd36CDE3dF00b34f,0", + }, + "name": "ℹ️ SimpleDVT: Node operator added", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; diff --git a/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-validators.e2e-spec.ts.snap b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-validators.e2e-spec.ts.snap new file mode 100644 index 000000000..ada075805 --- /dev/null +++ b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry-validators.e2e-spec.ts.snap @@ -0,0 +1,161 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`agent-node-operators-registry e2e tests should process tx with a lot of validators exited 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #13 Blockdaemon +New exited: 117", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #20 HashKey Cloud +New exited: 167", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #23 CryptoManufaktur +New exited: 117", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #24 Kukis Global +New exited: 117", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #25 Nethermind +New exited: 116", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #26 ChainSafe +New exited: 216", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #27 Prysm Team at Offchain Labs +New exited: 116", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #28 Sigma Prime +New exited: 116", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-BIG-EXIT", + "description": "Operator: #29 Attestant (BVI) Limited +New exited: 116", + "labels": [], + "metadata": {}, + "name": "⚠️ curated-onchain-v1: operator exited more than 100 validators", + "protocol": "ethereum", + "severity": 1, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; + +exports[`agent-node-operators-registry e2e tests should process tx with removed signing keys 1`] = ` +[ + Finding { + "addresses": [], + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATORS-KEYS-REMOVED", + "description": "Signing keys has been removed for: + Kiln: 50", + "labels": [], + "metadata": {}, + "name": "🚨 curated-onchain-v1: Signing keys removed", + "protocol": "ethereum", + "severity": 4, + "source": {}, + "timestamp": 2023-12-31T00:00:00.000Z, + "type": 4, + "uniqueKey": "", + }, +] +`; diff --git a/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry.e2e-spec.ts.snap b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry.e2e-spec.ts.snap index bde4a5a5b..da1a485a5 100644 --- a/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry.e2e-spec.ts.snap +++ b/ethereum-validators-set/e2e/__snapshots__/agent-node-operators-registry.e2e-spec.ts.snap @@ -1,120 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`agent-node-operators-registry e2e tests should process tx with a lot of validators exited 1`] = ` +exports[`agent-node-operators-registry e2e tests should process tx with added Node operator 1`] = ` [ Finding { "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #13 Blockdaemon -New exited: 117", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #20 HashKey Cloud -New exited: 167", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #23 CryptoManufaktur -New exited: 117", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #24 Kukis Global -New exited: 117", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #25 Nethermind -New exited: 116", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #26 ChainSafe -New exited: 216", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #27 Prysm Team at Offchain Labs -New exited: 116", - "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", - "protocol": "ethereum", - "severity": 1, - "source": {}, - "timestamp": 2023-12-31T00:00:00.000Z, - "type": 4, - "uniqueKey": "", - }, - Finding { - "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #28 Sigma Prime -New exited: 116", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 30 added +Name: Launchnodes +Reward address: [0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561](https://etherscan.io/address/0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561) +StakingLimit: 0", "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", + "metadata": { + "args": "30,Launchnodes,0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561,0", + }, + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -124,12 +23,16 @@ New exited: 116", }, Finding { "addresses": [], - "alertId": "NODE-OPERATORS-BIG-EXIT", - "description": "Operator: #29 Attestant (BVI) Limited -New exited: 116", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 31 added +Name: SenseiNode +Reward address: [0xE556Da28015c04F35A52B3111B9F4120E908056e](https://etherscan.io/address/0xE556Da28015c04F35A52B3111B9F4120E908056e) +StakingLimit: 0", "labels": [], - "metadata": {}, - "name": "⚠️ Curated NO Registry: operator exited more than 100 validators", + "metadata": { + "args": "31,SenseiNode,0xE556Da28015c04F35A52B3111B9F4120E908056e,0", + }, + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -140,20 +43,20 @@ New exited: 116", ] `; -exports[`agent-node-operators-registry e2e tests should process tx with added Node operator 1`] = ` +exports[`agent-node-operators-registry e2e tests should process tx with set NO target limit set 1`] = ` [ Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 30 added -Name: Launchnodes -Reward address: [0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561](https://etherscan.io/address/0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561) + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 32 added +Name: A41 +Reward address: [0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7](https://etherscan.io/address/0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7) StakingLimit: 0", "labels": [], "metadata": { - "args": "30,Launchnodes,0x5a8B929EDBf3CE44526465DD2087EC7EFB59A561,0", + "args": "32,A41,0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7,0", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -163,16 +66,16 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 31 added -Name: SenseiNode -Reward address: [0xE556Da28015c04F35A52B3111B9F4120E908056e](https://etherscan.io/address/0xE556Da28015c04F35A52B3111B9F4120E908056e) + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 33 added +Name: Develp GmbH +Reward address: [0x0a6a0b60fFeF196113b3530781df6e747DdC565e](https://etherscan.io/address/0x0a6a0b60fFeF196113b3530781df6e747DdC565e) StakingLimit: 0", "labels": [], "metadata": { - "args": "31,SenseiNode,0xE556Da28015c04F35A52B3111B9F4120E908056e,0", + "args": "33,Develp GmbH,0x0a6a0b60fFeF196113b3530781df6e747DdC565e,0", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -180,42 +83,39 @@ StakingLimit: 0", "type": 4, "uniqueKey": "", }, -] -`; - -exports[`agent-node-operators-registry e2e tests should process tx with removed signing keys 1`] = ` -[ Finding { "addresses": [], - "alertId": "NODE-OPERATORS-KEYS-REMOVED", - "description": "Signing keys has been removed for: - Kiln: 50", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 34 added +Name: Ebunker +Reward address: [0x2A2245d1f47430b9f60adCFC63D158021E80A728](https://etherscan.io/address/0x2A2245d1f47430b9f60adCFC63D158021E80A728) +StakingLimit: 0", "labels": [], - "metadata": {}, - "name": "🚨 Curated NO Registry: Signing keys removed", + "metadata": { + "args": "34,Ebunker,0x2A2245d1f47430b9f60adCFC63D158021E80A728,0", + }, + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", - "severity": 4, + "severity": 1, "source": {}, "timestamp": 2023-12-31T00:00:00.000Z, "type": 4, "uniqueKey": "", }, -] -`; - -exports[`agent-node-operators-registry e2e tests should process tx with set NO target limit set 1`] = ` -[ Finding { "addresses": [], - "alertId": "NODE-OPERATOR-TARGET-VALIDATORS-COUNT-CHANGED", - "description": "Curated module Node operator 1 target validators count changed to 0", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 35 added +Name: Gateway.fm AS +Reward address: [0x78CEE97C23560279909c0215e084dB293F036774](https://etherscan.io/address/0x78CEE97C23560279909c0215e084dB293F036774) +StakingLimit: 0", "labels": [], "metadata": { - "args": "1,0", + "args": "35,Gateway.fm AS,0x78CEE97C23560279909c0215e084dB293F036774,0", }, - "name": "⚠️ Curated NO Registry: Node operator target validators count changed", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", - "severity": 3, + "severity": 1, "source": {}, "timestamp": 2023-12-31T00:00:00.000Z, "type": 4, @@ -223,16 +123,16 @@ exports[`agent-node-operators-registry e2e tests should process tx with set NO t }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 32 added -Name: A41 -Reward address: [0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7](https://etherscan.io/address/0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7) + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 36 added +Name: Numic +Reward address: [0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC](https://etherscan.io/address/0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC) StakingLimit: 0", "labels": [], "metadata": { - "args": "32,A41,0x2A64944eBFaFF8b6A0d07B222D3d83ac29c241a7,0", + "args": "36,Numic,0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC,0", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -242,16 +142,16 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 33 added -Name: Develp GmbH -Reward address: [0x0a6a0b60fFeF196113b3530781df6e747DdC565e](https://etherscan.io/address/0x0a6a0b60fFeF196113b3530781df6e747DdC565e) + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 37 added +Name: ParaFi Technologies LLC +Reward address: [0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7](https://etherscan.io/address/0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7) StakingLimit: 0", "labels": [], "metadata": { - "args": "33,Develp GmbH,0x0a6a0b60fFeF196113b3530781df6e747DdC565e,0", + "args": "37,ParaFi Technologies LLC,0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7,0", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -261,16 +161,16 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 34 added -Name: Ebunker -Reward address: [0x2A2245d1f47430b9f60adCFC63D158021E80A728](https://etherscan.io/address/0x2A2245d1f47430b9f60adCFC63D158021E80A728) + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-ADDED", + "description": "curated-onchain-v1 Node operator 38 added +Name: RockawayX Infra +Reward address: [0xcA6817DAb36850D58375A10c78703CE49d41D25a](https://etherscan.io/address/0xcA6817DAb36850D58375A10c78703CE49d41D25a) StakingLimit: 0", "labels": [], "metadata": { - "args": "34,Ebunker,0x2A2245d1f47430b9f60adCFC63D158021E80A728,0", + "args": "38,RockawayX Infra,0xcA6817DAb36850D58375A10c78703CE49d41D25a,0", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator added", "protocol": "ethereum", "severity": 1, "source": {}, @@ -278,18 +178,20 @@ StakingLimit: 0", "type": 4, "uniqueKey": "", }, +] +`; + +exports[`agent-node-operators-registry e2e tests should process tx with setting node operator name 1`] = ` +[ Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 35 added -Name: Gateway.fm AS -Reward address: [0x78CEE97C23560279909c0215e084dB293F036774](https://etherscan.io/address/0x78CEE97C23560279909c0215e084dB293F036774) -StakingLimit: 0", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-NAME-SET", + "description": "curated-onchain-v1 Node operator [23 Galaxy] name set to Galaxy", "labels": [], "metadata": { - "args": "35,Gateway.fm AS,0x78CEE97C23560279909c0215e084dB293F036774,0", + "args": "23,Galaxy", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator name set", "protocol": "ethereum", "severity": 1, "source": {}, @@ -299,16 +201,13 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 36 added -Name: Numic -Reward address: [0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC](https://etherscan.io/address/0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC) -StakingLimit: 0", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-NAME-SET", + "description": "curated-onchain-v1 Node operator [36 Pier Two] name set to Pier Two", "labels": [], "metadata": { - "args": "36,Numic,0x0209a89b6d9F707c14eB6cD4C3Fb519280a7E1AC,0", + "args": "36,Pier Two", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator name set", "protocol": "ethereum", "severity": 1, "source": {}, @@ -318,16 +217,13 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 37 added -Name: ParaFi Technologies LLC -Reward address: [0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7](https://etherscan.io/address/0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7) -StakingLimit: 0", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-REWARD-ADDRESS-SET", + "description": "curated-onchain-v1 Node operator [23 Galaxy] reward address set to [0x3C3F243263d3106Fdb31eCf2248f9bC82F723c4B](https://etherscan.io/address/0x3C3F243263d3106Fdb31eCf2248f9bC82F723c4B)", "labels": [], "metadata": { - "args": "37,ParaFi Technologies LLC,0x5Ee590eFfdf9456d5666002fBa05fbA8C3752CB7,0", + "args": "23,0x3C3F243263d3106Fdb31eCf2248f9bC82F723c4B", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator reward address set", "protocol": "ethereum", "severity": 1, "source": {}, @@ -337,16 +233,13 @@ StakingLimit: 0", }, Finding { "addresses": [], - "alertId": "NODE-OPERATOR-ADDED", - "description": "Curated module Node operator 38 added -Name: RockawayX Infra -Reward address: [0xcA6817DAb36850D58375A10c78703CE49d41D25a](https://etherscan.io/address/0xcA6817DAb36850D58375A10c78703CE49d41D25a) -StakingLimit: 0", + "alertId": "CURATED-ONCHAIN-V1-NODE-OPERATOR-REWARD-ADDRESS-SET", + "description": "curated-onchain-v1 Node operator [36 Pier Two] reward address set to [0x35921FB43cB92F5Bfef7cBA1e97Eb5A21Fc2d353](https://etherscan.io/address/0x35921FB43cB92F5Bfef7cBA1e97Eb5A21Fc2d353)", "labels": [], "metadata": { - "args": "38,RockawayX Infra,0xcA6817DAb36850D58375A10c78703CE49d41D25a,0", + "args": "36,0x35921FB43cB92F5Bfef7cBA1e97Eb5A21Fc2d353", }, - "name": "ℹ️ Curated NO Registry: Node operator added", + "name": "ℹ️ curated-onchain-v1: Node operator reward address set", "protocol": "ethereum", "severity": 1, "source": {}, diff --git a/storage-watcher/e2e/agent-storage-watcher.e2e-spec.ts b/ethereum-validators-set/e2e/agent-node-operators-registry-simpledvt.e2e-spec.ts similarity index 70% rename from storage-watcher/e2e/agent-storage-watcher.e2e-spec.ts rename to ethereum-validators-set/e2e/agent-node-operators-registry-simpledvt.e2e-spec.ts index 020e982bd..8cfe553d2 100644 --- a/storage-watcher/e2e/agent-storage-watcher.e2e-spec.ts +++ b/ethereum-validators-set/e2e/agent-node-operators-registry-simpledvt.e2e-spec.ts @@ -8,12 +8,12 @@ import { const TEST_TIMEOUT = 60_000; // ms -describe("agent-storage-watcher e2e tests", () => { - let runBlock: ( - blockHashOrNumber: string | number, +describe("agent-node-operators-registry e2e tests", () => { + let runBlock: (blockHashOrNumber: string | number) => Promise; + let runTransaction: ( + txHash: string, initBlock?: number, ) => Promise; - let runTransaction: (txHash: string) => Promise; let logSpy: jest.SpyInstance; let timeSpy: jest.SpyInstance; @@ -28,7 +28,9 @@ describe("agent-storage-watcher e2e tests", () => { const container = configureContainer() as AwilixContainer; container.register({ agentPath: asFunction( - provideAgentPath("subagents/storage-watcher/agent-storage-watcher"), + provideAgentPath( + "subagents/node-operators-registry/agent-node-operators-registry", + ), ), runTransaction: asFunction(provideRunTransaction), runBlock: asFunction(provideRunBlock), @@ -44,9 +46,12 @@ describe("agent-storage-watcher e2e tests", () => { }); it( - "should process block with critical storage slot value changed", + "should process tx with added simple dvt clusters", async () => { - const findings = await runBlock(16398431, 16398430); + const findings = await runTransaction( + "0xc3338fc9ef0419109b90dcc318ac89bcdb235a1fe7b9960611a7d0666c1e8170", + 20719100, + ); expect(findings).toMatchSnapshot(); }, TEST_TIMEOUT, diff --git a/ethereum-validators-set/e2e/agent-node-operators-registry-validators.e2e-spec.ts b/ethereum-validators-set/e2e/agent-node-operators-registry-validators.e2e-spec.ts new file mode 100644 index 000000000..e23118e35 --- /dev/null +++ b/ethereum-validators-set/e2e/agent-node-operators-registry-validators.e2e-spec.ts @@ -0,0 +1,70 @@ +import { configureContainer, Finding } from "forta-agent"; +import { AwilixContainer, asFunction } from "awilix"; +import { + provideAgentPath, + provideRunBlock, + provideRunTransaction, +} from "./utils"; + +const TEST_TIMEOUT = 60_000; // ms + +describe("agent-node-operators-registry e2e tests", () => { + let runBlock: (blockHashOrNumber: string | number) => Promise; + let runTransaction: ( + txHash: string, + initBlock?: number, + ) => Promise; + let logSpy: jest.SpyInstance; + let timeSpy: jest.SpyInstance; + + beforeAll(() => { + logSpy = jest.spyOn(console, "log"); + logSpy.mockImplementation(() => {}); + timeSpy = jest.spyOn(Date, "now"); + timeSpy.mockImplementation(() => new Date("2023-12-31")); + }); + + beforeEach(async () => { + const container = configureContainer() as AwilixContainer; + container.register({ + agentPath: asFunction( + provideAgentPath( + "subagents/node-operators-registry/agent-node-operators-registry", + ), + ), + runTransaction: asFunction(provideRunTransaction), + runBlock: asFunction(provideRunBlock), + }); + + // https://docs.forta.network/en/latest/cli/#invoke-commands-programmatically + runTransaction = container.resolve("runTransaction"); + runBlock = container.resolve("runBlock"); + }); + + afterAll(() => { + jest.resetAllMocks(); + }); + + it( + "should process tx with removed signing keys", + async () => { + const findings = await runTransaction( + "0x43529ea1c44b6f6134fa045f6af81a1a15be6309a32424ea742fa056977c4010", + ); + expect(findings).toMatchSnapshot(); + }, + TEST_TIMEOUT, + ); + + it( + "should process tx with a lot of validators exited", + async () => { + const findings = await runTransaction( + "0xdc70082a674abb83a94f04ea5b083849ff476ddc2f0fdd2a1cd2f7d2e079592b", + 19454500, + ); + expect(findings).toMatchSnapshot(); + }, + TEST_TIMEOUT, + ); +}); diff --git a/ethereum-validators-set/e2e/agent-node-operators-registry.e2e-spec.ts b/ethereum-validators-set/e2e/agent-node-operators-registry.e2e-spec.ts index 39a8d7230..fd596a6ed 100644 --- a/ethereum-validators-set/e2e/agent-node-operators-registry.e2e-spec.ts +++ b/ethereum-validators-set/e2e/agent-node-operators-registry.e2e-spec.ts @@ -45,22 +45,12 @@ describe("agent-node-operators-registry e2e tests", () => { jest.resetAllMocks(); }); - it( - "should process tx with removed signing keys", - async () => { - const findings = await runTransaction( - "0x43529ea1c44b6f6134fa045f6af81a1a15be6309a32424ea742fa056977c4010", - ); - expect(findings).toMatchSnapshot(); - }, - TEST_TIMEOUT, - ); - it( "should process tx with set NO target limit set", async () => { const findings = await runTransaction( "0xcd406d8439cf7b635ede687ea4fbe6d3e3a7d33e1a16c78ca5ba304ac06cb415", + 18293300, ); expect(findings).toMatchSnapshot(); }, @@ -79,11 +69,11 @@ describe("agent-node-operators-registry e2e tests", () => { ); it( - "should process tx with a lot of validators exited", + "should process tx with setting node operator name", async () => { const findings = await runTransaction( - "0xdc70082a674abb83a94f04ea5b083849ff476ddc2f0fdd2a1cd2f7d2e079592b", - 19454560, + "0x14bd64e4262041d762de83edce9a0b4c88dbb49ef678e3fd524cdc4cfdc3d88c", + 20597472, ); expect(findings).toMatchSnapshot(); }, diff --git a/ethereum-validators-set/package.json b/ethereum-validators-set/package.json index bff468fa8..549744dc5 100644 --- a/ethereum-validators-set/package.json +++ b/ethereum-validators-set/package.json @@ -28,6 +28,7 @@ "enable": "forta-agent enable", "keyfile": "forta-agent keyfile", "test": "jest --passWithNoTests", + "test:debug": "node --inspect-brk node_modules/.bin/jest --runInBand", "test:e2e": "yarn build && jest --config ./e2e/jest.config-e2e.json --passWithNoTests" }, "dependencies": { @@ -40,7 +41,7 @@ "@types/nodemon": "^1.19.0", "jest": "^29.7.0", "nodemon": "^2.0.8", - "prettier": "3.1.0", + "prettier": "^3.2.5", "ts-jest": "^29.1.1", "typescript": "^4.3.4" }, diff --git a/ethereum-validators-set/src/abi/DepositSecurityModule.json b/ethereum-validators-set/src/abi/DepositSecurityModule.json new file mode 100644 index 000000000..fce979394 --- /dev/null +++ b/ethereum-validators-set/src/abi/DepositSecurityModule.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_lido","type":"address"},{"internalType":"address","name":"_depositContract","type":"address"},{"internalType":"address","name":"_stakingRouter","type":"address"},{"internalType":"uint256","name":"_maxDepositsPerBlock","type":"uint256"},{"internalType":"uint256","name":"_minDepositBlockDistance","type":"uint256"},{"internalType":"uint256","name":"_pauseIntentValidityPeriodBlocks","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DepositInactiveModule","type":"error"},{"inputs":[],"name":"DepositNoQuorum","type":"error"},{"inputs":[],"name":"DepositNonceChanged","type":"error"},{"inputs":[],"name":"DepositRootChanged","type":"error"},{"inputs":[],"name":"DepositTooFrequent","type":"error"},{"inputs":[],"name":"DepositUnexpectedBlockHash","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"DuplicateAddress","type":"error"},{"inputs":[],"name":"InvalidSignature","type":"error"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"NotAGuardian","type":"error"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"NotAnOwner","type":"error"},{"inputs":[],"name":"PauseIntentExpired","type":"error"},{"inputs":[],"name":"SignaturesNotSorted","type":"error"},{"inputs":[{"internalType":"string","name":"field","type":"string"}],"name":"ZeroAddress","type":"error"},{"inputs":[{"internalType":"string","name":"parameter","type":"string"}],"name":"ZeroParameter","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"guardian","type":"address"},{"indexed":true,"internalType":"uint24","name":"stakingModuleId","type":"uint24"}],"name":"DepositsPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint24","name":"stakingModuleId","type":"uint24"}],"name":"DepositsUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"GuardianQuorumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guardian","type":"address"}],"name":"GuardianRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MaxDepositsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"MinDepositBlockDistanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newValue","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"PauseIntentValidityPeriodBlocksChanged","type":"event"},{"inputs":[],"name":"ATTEST_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSIT_CONTRACT","outputs":[{"internalType":"contract IDepositContract","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIDO","outputs":[{"internalType":"contract ILido","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAUSE_MESSAGE_PREFIX","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_ROUTER","outputs":[{"internalType":"contract IStakingRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"addGuardians","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakingModuleId","type":"uint256"}],"name":"canDeposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"depositRoot","type":"bytes32"},{"internalType":"uint256","name":"stakingModuleId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"depositCalldata","type":"bytes"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature[]","name":"sortedGuardianSignatures","type":"tuple[]"}],"name":"depositBufferedEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"getGuardianIndex","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardianQuorum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGuardians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinDepositBlockDistance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPauseIntentValidityPeriodBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isGuardian","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"stakingModuleId","type":"uint256"},{"components":[{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"vs","type":"bytes32"}],"internalType":"struct DepositSecurityModule.Signature","name":"sig","type":"tuple"}],"name":"pauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"newQuorum","type":"uint256"}],"name":"removeGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setGuardianQuorum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMaxDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setMinDepositBlockDistance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newValue","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setPauseIntentValidityPeriodBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakingModuleId","type":"uint256"}],"name":"unpauseDeposits","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/ethereum-validators-set/src/abi/OracleReportSanityChecker.json b/ethereum-validators-set/src/abi/OracleReportSanityChecker.json index 33af2c862..bce167bc5 100644 --- a/ethereum-validators-set/src/abi/OracleReportSanityChecker.json +++ b/ethereum-validators-set/src/abi/OracleReportSanityChecker.json @@ -1 +1 @@ -[{"inputs":[{"internalType":"address","name":"_lidoLocator","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"components":[{"internalType":"uint256","name":"churnValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"oneOffCLBalanceDecreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxAccountingExtraDataListItemsCount","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItemCount","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"}],"internalType":"struct LimitsList","name":"_limitsList","type":"tuple"},{"components":[{"internalType":"address[]","name":"allLimitsManagers","type":"address[]"},{"internalType":"address[]","name":"churnValidatorsPerDayLimitManagers","type":"address[]"},{"internalType":"address[]","name":"oneOffCLBalanceDecreaseLimitManagers","type":"address[]"},{"internalType":"address[]","name":"annualBalanceIncreaseLimitManagers","type":"address[]"},{"internalType":"address[]","name":"shareRateDeviationLimitManagers","type":"address[]"},{"internalType":"address[]","name":"maxValidatorExitRequestsPerReportManagers","type":"address[]"},{"internalType":"address[]","name":"maxAccountingExtraDataListItemsCountManagers","type":"address[]"},{"internalType":"address[]","name":"maxNodeOperatorsPerExtraDataItemCountManagers","type":"address[]"},{"internalType":"address[]","name":"requestTimestampMarginManagers","type":"address[]"},{"internalType":"address[]","name":"maxPositiveTokenRebaseManagers","type":"address[]"}],"internalType":"struct OracleReportSanityChecker.ManagersRoster","name":"_managersRoster","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ActualShareRateIsZero","type":"error"},{"inputs":[{"internalType":"uint256","name":"limitPerDay","type":"uint256"},{"internalType":"uint256","name":"exitedPerDay","type":"uint256"}],"name":"ExitedValidatorsLimitExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"churnLimit","type":"uint256"}],"name":"IncorrectAppearedValidators","type":"error"},{"inputs":[{"internalType":"uint256","name":"oneOffCLBalanceDecreaseBP","type":"uint256"}],"name":"IncorrectCLBalanceDecrease","type":"error"},{"inputs":[{"internalType":"uint256","name":"annualBalanceDiff","type":"uint256"}],"name":"IncorrectCLBalanceIncrease","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualELRewardsVaultBalance","type":"uint256"}],"name":"IncorrectELRewardsVaultBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"churnLimit","type":"uint256"}],"name":"IncorrectExitedValidators","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"maxAllowedValue","type":"uint256"}],"name":"IncorrectLimitValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxRequestsCount","type":"uint256"}],"name":"IncorrectNumberOfExitRequestsPerReport","type":"error"},{"inputs":[{"internalType":"uint256","name":"requestCreationBlock","type":"uint256"}],"name":"IncorrectRequestFinalization","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualSharesToBurn","type":"uint256"}],"name":"IncorrectSharesRequestedToBurn","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualWithdrawalVaultBalance","type":"uint256"}],"name":"IncorrectWithdrawalsVaultBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxItemsCount","type":"uint256"},{"internalType":"uint256","name":"receivedItemsCount","type":"uint256"}],"name":"MaxAccountingExtraDataItemsCountExceeded","type":"error"},{"inputs":[],"name":"NegativeTotalPooledEther","type":"error"},{"inputs":[{"internalType":"uint256","name":"simulatedShareRate","type":"uint256"},{"internalType":"uint256","name":"actualShareRate","type":"uint256"}],"name":"TooHighSimulatedShareRate","type":"error"},{"inputs":[],"name":"TooHighTokenRebaseLimit","type":"error"},{"inputs":[{"internalType":"uint256","name":"simulatedShareRate","type":"uint256"},{"internalType":"uint256","name":"actualShareRate","type":"uint256"}],"name":"TooLowSimulatedShareRate","type":"error"},{"inputs":[],"name":"TooLowTokenRebaseLimit","type":"error"},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint256","name":"nodeOpsCount","type":"uint256"}],"name":"TooManyNodeOpsPerExtraDataItem","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"}],"name":"AnnualBalanceIncreaseBPLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"churnValidatorsPerDayLimit","type":"uint256"}],"name":"ChurnValidatorsPerDayLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxAccountingExtraDataListItemsCount","type":"uint256"}],"name":"MaxAccountingExtraDataListItemsCountSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItemCount","type":"uint256"}],"name":"MaxNodeOperatorsPerExtraDataItemCountSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"}],"name":"MaxPositiveTokenRebaseSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"}],"name":"MaxValidatorExitRequestsPerReportSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oneOffCLBalanceDecreaseBPLimit","type":"uint256"}],"name":"OneOffCLBalanceDecreaseBPLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"}],"name":"RequestTimestampMarginSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"}],"name":"SimulatedShareRateDeviationBPLimitSet","type":"event"},{"inputs":[],"name":"ALL_LIMITS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ANNUAL_BALANCE_INCREASE_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CHURN_VALIDATORS_PER_DAY_LIMIT_MANGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ACCOUNTING_EXTRA_DATA_LIST_ITEMS_COUNT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_COUNT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_POSITIVE_TOKEN_REBASE_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_VALIDATOR_EXIT_REQUESTS_PER_REPORT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_OFF_CL_BALANCE_DECREASE_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REQUEST_TIMESTAMP_MARGIN_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHARE_RATE_DEVIATION_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_extraDataListItemsCount","type":"uint256"}],"name":"checkAccountingExtraDataListItemsCount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeElapsed","type":"uint256"},{"internalType":"uint256","name":"_preCLBalance","type":"uint256"},{"internalType":"uint256","name":"_postCLBalance","type":"uint256"},{"internalType":"uint256","name":"_withdrawalVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_elRewardsVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_sharesRequestedToBurn","type":"uint256"},{"internalType":"uint256","name":"_preCLValidators","type":"uint256"},{"internalType":"uint256","name":"_postCLValidators","type":"uint256"}],"name":"checkAccountingOracleReport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exitRequestsCount","type":"uint256"}],"name":"checkExitBusOracleReport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exitedValidatorsCount","type":"uint256"}],"name":"checkExitedValidatorsRatePerDay","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itemIndex","type":"uint256"},{"internalType":"uint256","name":"_nodeOperatorsCount","type":"uint256"}],"name":"checkNodeOperatorsPerExtraDataItemCount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_postTotalPooledEther","type":"uint256"},{"internalType":"uint256","name":"_postTotalShares","type":"uint256"},{"internalType":"uint256","name":"_etherLockedOnWithdrawalQueue","type":"uint256"},{"internalType":"uint256","name":"_sharesBurntDueToWithdrawals","type":"uint256"},{"internalType":"uint256","name":"_simulatedShareRate","type":"uint256"}],"name":"checkSimulatedShareRate","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFinalizableRequestId","type":"uint256"},{"internalType":"uint256","name":"_reportTimestamp","type":"uint256"}],"name":"checkWithdrawalQueueOracleReport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLidoLocator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxPositiveTokenRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleReportLimits","outputs":[{"components":[{"internalType":"uint256","name":"churnValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"oneOffCLBalanceDecreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxAccountingExtraDataListItemsCount","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItemCount","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"}],"internalType":"struct LimitsList","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualBalanceIncreaseBPLimit","type":"uint256"}],"name":"setAnnualBalanceIncreaseBPLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_churnValidatorsPerDayLimit","type":"uint256"}],"name":"setChurnValidatorsPerDayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAccountingExtraDataListItemsCount","type":"uint256"}],"name":"setMaxAccountingExtraDataListItemsCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxValidatorExitRequestsPerReport","type":"uint256"}],"name":"setMaxExitRequestsPerOracleReport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxNodeOperatorsPerExtraDataItemCount","type":"uint256"}],"name":"setMaxNodeOperatorsPerExtraDataItemCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPositiveTokenRebase","type":"uint256"}],"name":"setMaxPositiveTokenRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_oneOffCLBalanceDecreaseBPLimit","type":"uint256"}],"name":"setOneOffCLBalanceDecreaseBPLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"churnValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"oneOffCLBalanceDecreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxAccountingExtraDataListItemsCount","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItemCount","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"}],"internalType":"struct LimitsList","name":"_limitsList","type":"tuple"}],"name":"setOracleReportLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestTimestampMargin","type":"uint256"}],"name":"setRequestTimestampMargin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_simulatedShareRateDeviationBPLimit","type":"uint256"}],"name":"setSimulatedShareRateDeviationBPLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_preTotalPooledEther","type":"uint256"},{"internalType":"uint256","name":"_preTotalShares","type":"uint256"},{"internalType":"uint256","name":"_preCLBalance","type":"uint256"},{"internalType":"uint256","name":"_postCLBalance","type":"uint256"},{"internalType":"uint256","name":"_withdrawalVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_elRewardsVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_sharesRequestedToBurn","type":"uint256"},{"internalType":"uint256","name":"_etherToLockForWithdrawals","type":"uint256"},{"internalType":"uint256","name":"_newSharesToBurnForWithdrawals","type":"uint256"}],"name":"smoothenTokenRebase","outputs":[{"internalType":"uint256","name":"withdrawals","type":"uint256"},{"internalType":"uint256","name":"elRewards","type":"uint256"},{"internalType":"uint256","name":"simulatedSharesToBurn","type":"uint256"},{"internalType":"uint256","name":"sharesToBurn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] +[{"inputs":[{"internalType":"address","name":"_lidoLocator","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"components":[{"internalType":"uint256","name":"exitedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"appearedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxItemsPerExtraDataTransaction","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItem","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"},{"internalType":"uint256","name":"initialSlashingAmountPWei","type":"uint256"},{"internalType":"uint256","name":"inactivityPenaltiesAmountPWei","type":"uint256"},{"internalType":"uint256","name":"clBalanceOraclesErrorUpperBPLimit","type":"uint256"}],"internalType":"struct LimitsList","name":"_limitsList","type":"tuple"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ActualShareRateIsZero","type":"error"},{"inputs":[],"name":"AdminCannotBeZero","type":"error"},{"inputs":[],"name":"CalledNotFromLido","type":"error"},{"inputs":[{"internalType":"uint256","name":"limitPerDay","type":"uint256"},{"internalType":"uint256","name":"exitedPerDay","type":"uint256"}],"name":"ExitedValidatorsLimitExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"appearedValidatorsLimit","type":"uint256"}],"name":"IncorrectAppearedValidators","type":"error"},{"inputs":[{"internalType":"uint256","name":"negativeCLRebaseSum","type":"uint256"},{"internalType":"uint256","name":"maxNegativeCLRebaseSum","type":"uint256"}],"name":"IncorrectCLBalanceDecrease","type":"error"},{"inputs":[{"internalType":"uint256","name":"annualBalanceDiff","type":"uint256"}],"name":"IncorrectCLBalanceIncrease","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualELRewardsVaultBalance","type":"uint256"}],"name":"IncorrectELRewardsVaultBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"exitedValidatorsLimit","type":"uint256"}],"name":"IncorrectExitedValidators","type":"error"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"minAllowedValue","type":"uint256"},{"internalType":"uint256","name":"maxAllowedValue","type":"uint256"}],"name":"IncorrectLimitValue","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxRequestsCount","type":"uint256"}],"name":"IncorrectNumberOfExitRequestsPerReport","type":"error"},{"inputs":[{"internalType":"uint256","name":"requestCreationBlock","type":"uint256"}],"name":"IncorrectRequestFinalization","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualSharesToBurn","type":"uint256"}],"name":"IncorrectSharesRequestedToBurn","type":"error"},{"inputs":[{"internalType":"uint256","name":"simulatedShareRate","type":"uint256"},{"internalType":"uint256","name":"actualShareRate","type":"uint256"}],"name":"IncorrectSimulatedShareRate","type":"error"},{"inputs":[{"internalType":"uint256","name":"actualWithdrawalVaultBalance","type":"uint256"}],"name":"IncorrectWithdrawalsVaultBalance","type":"error"},{"inputs":[{"internalType":"uint256","name":"reportedValue","type":"uint256"},{"internalType":"uint256","name":"provedValue","type":"uint256"},{"internalType":"uint256","name":"limitBP","type":"uint256"}],"name":"NegativeRebaseFailedCLBalanceMismatch","type":"error"},{"inputs":[],"name":"NegativeRebaseFailedSecondOpinionReportIsNotReady","type":"error"},{"inputs":[{"internalType":"uint256","name":"reportedValue","type":"uint256"},{"internalType":"uint256","name":"provedValue","type":"uint256"}],"name":"NegativeRebaseFailedWithdrawalVaultBalanceMismatch","type":"error"},{"inputs":[],"name":"NegativeTotalPooledEther","type":"error"},{"inputs":[],"name":"TooHighTokenRebaseLimit","type":"error"},{"inputs":[],"name":"TooLowTokenRebaseLimit","type":"error"},{"inputs":[{"internalType":"uint256","name":"maxItemsCount","type":"uint256"},{"internalType":"uint256","name":"receivedItemsCount","type":"uint256"}],"name":"TooManyItemsPerExtraDataTransaction","type":"error"},{"inputs":[{"internalType":"uint256","name":"itemIndex","type":"uint256"},{"internalType":"uint256","name":"nodeOpsCount","type":"uint256"}],"name":"TooManyNodeOpsPerExtraDataItem","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"}],"name":"AnnualBalanceIncreaseBPLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"appearedValidatorsPerDayLimit","type":"uint256"}],"name":"AppearedValidatorsPerDayLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"clBalanceOraclesErrorUpperBPLimit","type":"uint256"}],"name":"CLBalanceOraclesErrorUpperBPLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"exitedValidatorsPerDayLimit","type":"uint256"}],"name":"ExitedValidatorsPerDayLimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"inactivityPenaltiesAmountPWei","type":"uint256"}],"name":"InactivityPenaltiesAmountSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"initialSlashingAmountPWei","type":"uint256"}],"name":"InitialSlashingAmountSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxItemsPerExtraDataTransaction","type":"uint256"}],"name":"MaxItemsPerExtraDataTransactionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItem","type":"uint256"}],"name":"MaxNodeOperatorsPerExtraDataItemSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"}],"name":"MaxPositiveTokenRebaseSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"}],"name":"MaxValidatorExitRequestsPerReportSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"refSlot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"clTotalBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"clBalanceDecrease","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxAllowedCLRebaseNegativeSum","type":"uint256"}],"name":"NegativeCLRebaseAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"refSlot","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"clBalanceWei","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"withdrawalVaultBalance","type":"uint256"}],"name":"NegativeCLRebaseConfirmed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"}],"name":"RequestTimestampMarginSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract ISecondOpinionOracle","name":"secondOpinionOracle","type":"address"}],"name":"SecondOpinionOracleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"}],"name":"SimulatedShareRateDeviationBPLimitSet","type":"event"},{"inputs":[],"name":"ALL_LIMITS_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ANNUAL_BALANCE_INCREASE_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"APPEARED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXITED_VALIDATORS_PER_DAY_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SLASHING_AND_PENALTIES_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_ITEMS_PER_EXTRA_DATA_TRANSACTION_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_NODE_OPERATORS_PER_EXTRA_DATA_ITEM_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_POSITIVE_TOKEN_REBASE_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_VALIDATOR_EXIT_REQUESTS_PER_REPORT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REQUEST_TIMESTAMP_MARGIN_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SECOND_OPINION_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SHARE_RATE_DEVIATION_LIMIT_MANAGER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_timeElapsed","type":"uint256"},{"internalType":"uint256","name":"_preCLBalance","type":"uint256"},{"internalType":"uint256","name":"_postCLBalance","type":"uint256"},{"internalType":"uint256","name":"_withdrawalVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_elRewardsVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_sharesRequestedToBurn","type":"uint256"},{"internalType":"uint256","name":"_preCLValidators","type":"uint256"},{"internalType":"uint256","name":"_postCLValidators","type":"uint256"}],"name":"checkAccountingOracleReport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exitRequestsCount","type":"uint256"}],"name":"checkExitBusOracleReport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exitedValidatorsCount","type":"uint256"}],"name":"checkExitedValidatorsRatePerDay","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_extraDataListItemsCount","type":"uint256"}],"name":"checkExtraDataItemsCountPerTransaction","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_itemIndex","type":"uint256"},{"internalType":"uint256","name":"_nodeOperatorsCount","type":"uint256"}],"name":"checkNodeOperatorsPerExtraDataItemCount","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_postTotalPooledEther","type":"uint256"},{"internalType":"uint256","name":"_postTotalShares","type":"uint256"},{"internalType":"uint256","name":"_etherLockedOnWithdrawalQueue","type":"uint256"},{"internalType":"uint256","name":"_sharesBurntDueToWithdrawals","type":"uint256"},{"internalType":"uint256","name":"_simulatedShareRate","type":"uint256"}],"name":"checkSimulatedShareRate","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lastFinalizableRequestId","type":"uint256"},{"internalType":"uint256","name":"_reportTimestamp","type":"uint256"}],"name":"checkWithdrawalQueueOracleReport","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLidoLocator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxPositiveTokenRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOracleReportLimits","outputs":[{"components":[{"internalType":"uint256","name":"exitedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"appearedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxItemsPerExtraDataTransaction","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItem","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"},{"internalType":"uint256","name":"initialSlashingAmountPWei","type":"uint256"},{"internalType":"uint256","name":"inactivityPenaltiesAmountPWei","type":"uint256"},{"internalType":"uint256","name":"clBalanceOraclesErrorUpperBPLimit","type":"uint256"}],"internalType":"struct LimitsList","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReportDataCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reportData","outputs":[{"internalType":"uint64","name":"timestamp","type":"uint64"},{"internalType":"uint64","name":"totalExitedValidators","type":"uint64"},{"internalType":"uint128","name":"negativeCLRebaseWei","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"secondOpinionOracle","outputs":[{"internalType":"contract ISecondOpinionOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_annualBalanceIncreaseBPLimit","type":"uint256"}],"name":"setAnnualBalanceIncreaseBPLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_appearedValidatorsPerDayLimit","type":"uint256"}],"name":"setAppearedValidatorsPerDayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_exitedValidatorsPerDayLimit","type":"uint256"}],"name":"setExitedValidatorsPerDayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_initialSlashingAmountPWei","type":"uint256"},{"internalType":"uint256","name":"_inactivityPenaltiesAmountPWei","type":"uint256"}],"name":"setInitialSlashingAndPenaltiesAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxValidatorExitRequestsPerReport","type":"uint256"}],"name":"setMaxExitRequestsPerOracleReport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxItemsPerExtraDataTransaction","type":"uint256"}],"name":"setMaxItemsPerExtraDataTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxNodeOperatorsPerExtraDataItem","type":"uint256"}],"name":"setMaxNodeOperatorsPerExtraDataItem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPositiveTokenRebase","type":"uint256"}],"name":"setMaxPositiveTokenRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"exitedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"appearedValidatorsPerDayLimit","type":"uint256"},{"internalType":"uint256","name":"annualBalanceIncreaseBPLimit","type":"uint256"},{"internalType":"uint256","name":"simulatedShareRateDeviationBPLimit","type":"uint256"},{"internalType":"uint256","name":"maxValidatorExitRequestsPerReport","type":"uint256"},{"internalType":"uint256","name":"maxItemsPerExtraDataTransaction","type":"uint256"},{"internalType":"uint256","name":"maxNodeOperatorsPerExtraDataItem","type":"uint256"},{"internalType":"uint256","name":"requestTimestampMargin","type":"uint256"},{"internalType":"uint256","name":"maxPositiveTokenRebase","type":"uint256"},{"internalType":"uint256","name":"initialSlashingAmountPWei","type":"uint256"},{"internalType":"uint256","name":"inactivityPenaltiesAmountPWei","type":"uint256"},{"internalType":"uint256","name":"clBalanceOraclesErrorUpperBPLimit","type":"uint256"}],"internalType":"struct LimitsList","name":"_limitsList","type":"tuple"},{"internalType":"contract ISecondOpinionOracle","name":"_secondOpinionOracle","type":"address"}],"name":"setOracleReportLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_requestTimestampMargin","type":"uint256"}],"name":"setRequestTimestampMargin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract ISecondOpinionOracle","name":"_secondOpinionOracle","type":"address"},{"internalType":"uint256","name":"_clBalanceOraclesErrorUpperBPLimit","type":"uint256"}],"name":"setSecondOpinionOracleAndCLBalanceUpperMargin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_simulatedShareRateDeviationBPLimit","type":"uint256"}],"name":"setSimulatedShareRateDeviationBPLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_preTotalPooledEther","type":"uint256"},{"internalType":"uint256","name":"_preTotalShares","type":"uint256"},{"internalType":"uint256","name":"_preCLBalance","type":"uint256"},{"internalType":"uint256","name":"_postCLBalance","type":"uint256"},{"internalType":"uint256","name":"_withdrawalVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_elRewardsVaultBalance","type":"uint256"},{"internalType":"uint256","name":"_sharesRequestedToBurn","type":"uint256"},{"internalType":"uint256","name":"_etherToLockForWithdrawals","type":"uint256"},{"internalType":"uint256","name":"_newSharesToBurnForWithdrawals","type":"uint256"}],"name":"smoothenTokenRebase","outputs":[{"internalType":"uint256","name":"withdrawals","type":"uint256"},{"internalType":"uint256","name":"elRewards","type":"uint256"},{"internalType":"uint256","name":"simulatedSharesToBurn","type":"uint256"},{"internalType":"uint256","name":"sharesToBurn","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}] diff --git a/ethereum-validators-set/src/agent.ts b/ethereum-validators-set/src/agent.ts index 7a190f746..17e6f24ee 100644 --- a/ethereum-validators-set/src/agent.ts +++ b/ethereum-validators-set/src/agent.ts @@ -25,6 +25,7 @@ import * as agentStakingRouter from "./subagents/staking-router/agent-staking-ro import * as agentClusterMultisig from "./subagents/multisig-watchers/agent-cluster-multisig"; import * as agentModuleManager from "./subagents/multisig-watchers/agent-module-manager"; import * as agentSplitterWrapper from "./subagents/splitter-wrapper/agent-splitter-wrapper"; +import * as agentGuardians from "./subagents/guardians/agent-guardians"; import VERSION from "./version"; import { mergeFindings } from "./common/utils"; @@ -53,6 +54,7 @@ const subAgents: SubAgent[] = [ agentClusterMultisig, agentModuleManager, agentSplitterWrapper, + agentGuardians, ].filter((agent: SubAgent) => { if (!RUN_TIER) return true; if (agent.__tier__ == RUN_TIER) return true; diff --git a/ethereum-validators-set/src/common/constants.ts b/ethereum-validators-set/src/common/constants.ts index 0158b3d6e..7a172a6c5 100644 --- a/ethereum-validators-set/src/common/constants.ts +++ b/ethereum-validators-set/src/common/constants.ts @@ -12,9 +12,11 @@ export const STAKING_ROUTER_ADDRESS = export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = "0x55032650b14df07b85bf18a3a3ec8e0af2e028d5"; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = - "0xaE7B191A31f627b4eB1d4DaC64eaB9976995b433"; + "0xae7b191a31f627b4eb1d4dac64eab9976995b433"; +export const CSM_NODE_OPERATORS_REGISTRY_ADDRESS = + "0xda7de2ecddfccc6c3af10108db212acbbf9ea83f"; export const DEPOSIT_SECURITY_ADDRESS = - "0xc77f8768774e1c9244beed705c4354f2113cfc09"; + "0xffa96d84def2ea035c7ab153d8b991128e3d72fd"; export const EL_REWARDS_VAULT_ADDRESS = "0x388c818ca8b9251b393131c08a736a67ccb19297"; export const WITHDRAWAL_QUEUE_ADDRESS = @@ -35,7 +37,7 @@ export const EXITBUS_ORACLE_ADDRESS = export const EXITBUS_HASH_CONSENSUS_ADDRESS = "0x7fadb6358950c5faa66cb5eb8ee5147de3df355a"; export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = - "0x9305c1dbfe22c12c66339184c0025d7006f0f1cc"; + "0x6232397ebac4f5772e53285b26c47914e9461e75"; export const ORACLE_DAEMON_CONFIG_ADDRESS = "0xbf05a929c3d7885a6aead833a992da6e5ac23b09"; export const LEGACY_ORACLE_ADDRESS = diff --git a/ethereum-validators-set/src/common/interfaces.ts b/ethereum-validators-set/src/common/interfaces.ts deleted file mode 100644 index 81039ca01..000000000 --- a/ethereum-validators-set/src/common/interfaces.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface NodeOperatorFullInfo { - name: string; - rewardAddress: string; -} diff --git a/ethereum-validators-set/src/common/staking-modules/base-node-operators-registry.ts b/ethereum-validators-set/src/common/staking-modules/base-node-operators-registry.ts new file mode 100644 index 000000000..441dfc048 --- /dev/null +++ b/ethereum-validators-set/src/common/staking-modules/base-node-operators-registry.ts @@ -0,0 +1,88 @@ +import { ethers } from "forta-agent"; +import NODE_OPERATORS_REGISTRY_ABI from "../../abi/NodeOperatorsRegistry.json"; +import { ethersProvider } from "../../ethers"; +import { + NodeOperatorFullInfo, + NodeOperatorSummary, + NodeOperatorModuleParams, +} from "./interfaces"; + +export abstract class BaseRegistryModule< + ModuleParams extends NodeOperatorModuleParams, +> { + public nodeOperatorNames = new Map(); + public readonly contract: ethers.Contract; + protected readonly batchSize = 20; + + constructor( + public readonly params: ModuleParams, + protected readonly stakingRouter: ethers.Contract, + ) { + this.contract = new ethers.Contract( + this.params.moduleAddress, + NODE_OPERATORS_REGISTRY_ABI, + ethersProvider, + ); + } + + async initialize(currentBlock: number) { + return await this.updateNodeOperatorsInfo(currentBlock); + } + + getOperatorName(nodeOperatorId: string): string { + return ( + this.nodeOperatorNames.get(Number(nodeOperatorId))?.name ?? "undefined" + ); + } + + abstract fetchOperatorName( + operatorId: string, + block: number, + ): Promise; + + async updateNodeOperatorsInfo(block: number) { + const operatorsMap = await this.fetchAllNodeOperatorSummaries(block); + + await Promise.all( + Array.from(operatorsMap.keys()).map(async (operatorId: string) => { + const name = await this.fetchOperatorName(operatorId, block); + const rewardAddress = + this.nodeOperatorNames.get(Number(operatorId))?.rewardAddress || ""; + this.nodeOperatorNames.set(Number(operatorId), { + name, + rewardAddress, + }); + }), + ); + + return operatorsMap; + } + + protected async fetchAllNodeOperatorSummaries( + currentBlock: number, + ): Promise> { + const operatorsMap = new Map(); + const [operatorsCountBN] = + await this.contract.functions.getNodeOperatorsCount({ + blockTag: currentBlock, + }); + const operatorsCount = operatorsCountBN.toNumber(); + + for (let offset = 0; offset < operatorsCount; offset += this.batchSize) { + const batchSize = Math.min(this.batchSize, operatorsCount - offset); + const summaries = await Promise.all( + Array.from({ length: batchSize }, (_, i) => + this.contract.functions.getNodeOperatorSummary(offset + i, { + blockTag: currentBlock, + }), + ), + ); + + summaries.forEach((summary, index) => { + operatorsMap.set(String(offset + index), summary); + }); + } + + return operatorsMap; + } +} diff --git a/ethereum-validators-set/src/common/staking-modules/csm-registry.ts b/ethereum-validators-set/src/common/staking-modules/csm-registry.ts new file mode 100644 index 000000000..5f111c481 --- /dev/null +++ b/ethereum-validators-set/src/common/staking-modules/csm-registry.ts @@ -0,0 +1,8 @@ +import { BaseRegistryModule } from "./base-node-operators-registry"; +import { NodeOperatorModuleParams } from "./interfaces"; + +export class CommunityRegistryModule extends BaseRegistryModule { + async fetchOperatorName(operatorId: string, _block: number): Promise { + return `CSM Operator #${operatorId}`; + } +} diff --git a/ethereum-validators-set/src/common/staking-modules/curated-registry.ts b/ethereum-validators-set/src/common/staking-modules/curated-registry.ts new file mode 100644 index 000000000..990001a28 --- /dev/null +++ b/ethereum-validators-set/src/common/staking-modules/curated-registry.ts @@ -0,0 +1,11 @@ +import { BaseRegistryModule } from "./base-node-operators-registry"; +import { NodeOperatorModuleParams } from "./interfaces"; + +export class CuratedRegistryModule extends BaseRegistryModule { + async fetchOperatorName(operatorId: string, block: number): Promise { + const { name } = await this.contract.getNodeOperator(operatorId, true, { + blockTag: block, + }); + return name; + } +} diff --git a/ethereum-validators-set/src/common/staking-modules/interfaces.ts b/ethereum-validators-set/src/common/staking-modules/interfaces.ts new file mode 100644 index 000000000..6182c6af2 --- /dev/null +++ b/ethereum-validators-set/src/common/staking-modules/interfaces.ts @@ -0,0 +1,22 @@ +export interface NodeOperatorModuleParams { + moduleId: number; + moduleAddress: string; + moduleName: string; + alertPrefix: string; +} + +export interface NodeOperatorFullInfo { + name: string; + rewardAddress: string; +} + +export interface NodeOperatorSummary { + targetLimitMode: number; + targetValidatorsCount: number; + stuckValidatorsCount: number; + refundedValidatorsCount: number; + stuckPenaltyEndTimestamp: number; + totalExitedValidators: number; + totalDepositedValidators: number; + depositableValidatorsCount: number; +} diff --git a/ethereum-validators-set/src/subagents/accounting-oracle/agent-accounting-oracle.ts b/ethereum-validators-set/src/subagents/accounting-oracle/agent-accounting-oracle.ts index 60a9ccaf3..58b78ebf7 100644 --- a/ethereum-validators-set/src/subagents/accounting-oracle/agent-accounting-oracle.ts +++ b/ethereum-validators-set/src/subagents/accounting-oracle/agent-accounting-oracle.ts @@ -38,6 +38,7 @@ const { ACCOUNTING_ORACLE_ADDRESS, MAX_ORACLE_REPORT_MAIN_DATA_SUBMIT_DELAY, MAX_ORACLE_REPORT_EXTRA_DATA_SUBMIT_AFTER_MAIN_DATA_DELAY, + MAX_ORACLE_REPORT_EXTRA_DATA_DELAY_BETWEEN_SUBMITING, ACCOUNTING_ORACLE_EVENTS_OF_NOTICE, } = requireWithTier( module, @@ -76,7 +77,10 @@ export async function initialize( return {}; } -async function getReportMainDataSubmits(blockFrom: number, blockTo: number) { +export async function getReportMainDataSubmits( + blockFrom: number, + blockTo: number, +) { const accountingOracle = new ethers.Contract( ACCOUNTING_ORACLE_ADDRESS, ACCOUNTING_ORACLE_ABI, @@ -93,7 +97,10 @@ async function getReportMainDataSubmits(blockFrom: number, blockTo: number) { ); } -async function getReportExtraDataSubmits(blockFrom: number, blockTo: number) { +export async function getReportExtraDataSubmits( + blockFrom: number, + blockTo: number, +) { const accountingOracle = new ethers.Contract( ACCOUNTING_ORACLE_ADDRESS, ACCOUNTING_ORACLE_ABI, @@ -118,13 +125,13 @@ export async function handleBlock(blockEvent: BlockEvent) { return findings; } -async function handleMainDataReportSubmitted( +export async function handleMainDataReportSubmitted( blockEvent: BlockEvent, findings: Finding[], ) { const now = blockEvent.block.timestamp; const reportMainDataSubmitDelay = - now - lastReportMainDataSubmitTimestamp ?? 0; + now - (lastReportMainDataSubmitTimestamp ?? 0); if ( (reportMainDataSubmitDelay > MAX_ORACLE_REPORT_MAIN_DATA_SUBMIT_DELAY && @@ -133,8 +140,6 @@ async function handleMainDataReportSubmitted( MAX_ORACLE_REPORT_EXTRA_DATA_SUBMIT_AFTER_MAIN_DATA_DELAY && now - lastReportExtraDataSubmitOverdueTimestamp >= TRIGGER_PERIOD) ) { - // fetch events history 1 more time to be sure that there were actually no reports during last 25 hours - // needed to handle situation with the missed TX with prev report const mainDataSubmits = await getReportMainDataSubmits( blockEvent.blockNumber - Math.ceil((24 * ONE_HOUR) / SECONDS_PER_SLOT), blockEvent.blockNumber - 1, @@ -148,9 +153,40 @@ async function handleMainDataReportSubmitted( blockEvent.blockNumber - 1, ); if (extraDataSubmits.length > 0) { - lastReportExtraDataSubmitTimestamp = ( - await extraDataSubmits[extraDataSubmits.length - 1].getBlock() - ).timestamp; + const lastExtraDataSubmit = + extraDataSubmits[extraDataSubmits.length - 1]; + const lastExtraDataSubmitBlock = await lastExtraDataSubmit.getBlock(); + lastReportExtraDataSubmitTimestamp = lastExtraDataSubmitBlock.timestamp; + + const timeSinceLastExtraSubmit = + now - lastReportExtraDataSubmitTimestamp; + const itemsProcessed = + parseInt(lastExtraDataSubmit.args?.itemsProcessed) ?? 0; + const itemsCount = parseInt(lastExtraDataSubmit.args?.itemsCount) ?? 0; + + if ( + timeSinceLastExtraSubmit > + MAX_ORACLE_REPORT_EXTRA_DATA_DELAY_BETWEEN_SUBMITING && + itemsProcessed !== itemsCount + ) { + findings.push( + Finding.fromObject({ + name: "🚨 Accounting Oracle: report EXTRA data submit incomplete", + description: `Time since last extra data submit: ${formatDelay( + timeSinceLastExtraSubmit, + )}. Items processed: ${itemsProcessed}/${itemsCount}.`, + alertId: "ACCOUNTING-ORACLE-EXTRA-DATA-INCOMPLETE", + severity: FindingSeverity.High, + type: FindingType.Degraded, + metadata: { + timeSinceLastExtraSubmit: `${timeSinceLastExtraSubmit}`, + itemProcessed: `${itemsProcessed}`, + itemCount: `${itemsCount}`, + }, + }), + ); + lastReportExtraDataSubmitOverdueTimestamp = now; + } } } diff --git a/ethereum-validators-set/src/subagents/accounting-oracle/constants.goerli.ts b/ethereum-validators-set/src/subagents/accounting-oracle/constants.holesky.ts similarity index 79% rename from ethereum-validators-set/src/subagents/accounting-oracle/constants.goerli.ts rename to ethereum-validators-set/src/subagents/accounting-oracle/constants.holesky.ts index 5d1fd6670..183b7c4cd 100644 --- a/ethereum-validators-set/src/subagents/accounting-oracle/constants.goerli.ts +++ b/ethereum-validators-set/src/subagents/accounting-oracle/constants.holesky.ts @@ -11,14 +11,16 @@ export const ACCOUNTING_ORACLE_ADDRESS = accountingOracleAddress; export const ACCOUNTING_HASH_CONSENSUS_ADDRESS = accountingHashConsensusAddress; export const ACCOUNTING_ORACLE_MEMBERS = new Map([ - ["0xa8af49fb44aaa8eeca9ae918bb7c05e2e71c9de9", "Chorus One"], + ["0xf0f23944efc5a63c53632c571e7377b85d5e6b6f", "Chorus One"], ["0xb29dd2f6672c0dff2d2f173087739a42877a5172", "Staking Facilities"], - ["0xfda7e01b2718c511bf016030010572e833c7ae6a", "P2P Validator"], + ["0x31fa51343297ffce0cc1e67a50b2d3428057d1b1", "P2P Validator"], ["0xd3b1e36a372ca250eeff61f90e833ca070559970", "Stakefish"], - ["0x3799bda7b884d33f79cec926af21160dc47fbe05", "Rated"], ["0x4c75fa734a39f3a21c57e583c1c29942f021c6b7", "bloXroute"], ["0x81e411f1bfda43493d7994f82fb61a415f6b8fd4", "Instadapp"], ["0x3ff28f2ede8358e288798afc23ee299a503ad5c9", "Kyber Network"], + ["0xf7ae520e99ed3c41180b5e12681d31aa7302e4e5", "Chainlayer"], + ["0x12a1d74f8697b9f4f1eebb0a9d0fB6a751366399", "Lido"], + ["0xd892c09b556b547c80b7d8c8cb8d75bf541B2284", "Lido Valset"], ]); export const ACCOUNTING_HASH_CONSENSUS_EVENTS_OF_NOTICE = diff --git a/ethereum-validators-set/src/subagents/accounting-oracle/constants.ts b/ethereum-validators-set/src/subagents/accounting-oracle/constants.ts index a7e97dc8f..6e0cf3472 100644 --- a/ethereum-validators-set/src/subagents/accounting-oracle/constants.ts +++ b/ethereum-validators-set/src/subagents/accounting-oracle/constants.ts @@ -24,10 +24,10 @@ export const ACCOUNTING_ORACLE_MEMBERS = new Map([ ["0x404335bce530400a5814375e7ec1fb55faff3ea2", "Staking Facilities"], ["0x007de4a5f7bc37e2f26c0cb2e8a95006ee9b89b5", "P2P Validator"], ["0x946d3b081ed19173dc83cd974fc69e1e760b7d78", "Stakefish"], - ["0xec4bfbaf681eb505b94e4a7849877dc6c600ca3a", "Rated"], ["0x61c91ecd902eb56e314bb2d5c5c07785444ea1c8", "bloXroute"], - ["0x1ca0fec59b86f549e1f1184d97cb47794c8af58d", "Instadapp"], + ["0x73181107c8d9ed4ce0bbef7a0b4ccf3320c41d12", "Instadapp"], ["0xa7410857abbf75043d61ea54e07d57a6eb6ef186", "Kyber Network"], + ["0xe57b3792adcc5da47ef4ff588883f0ee0c9835c9", "Matrixedlink"], ]); export const FETCH_BALANCES_BLOCK_INTERVAL = 1000; @@ -43,6 +43,7 @@ export const MAX_REPORT_SUBMIT_SKIP_BLOCKS_MEDIUM = Math.floor( export const MAX_ORACLE_REPORT_MAIN_DATA_SUBMIT_DELAY = ONE_DAY + 15 * 60; // 24h 15m export const MAX_ORACLE_REPORT_EXTRA_DATA_SUBMIT_AFTER_MAIN_DATA_DELAY = 20 * 60; // 20m +export const MAX_ORACLE_REPORT_EXTRA_DATA_DELAY_BETWEEN_SUBMITING = 10 * 60; // 10m export const MIN_ORACLE_BALANCE_INFO = 0.3; // 0.3 ETH diff --git a/ethereum-validators-set/src/subagents/exitbus-oracle/agent-exitbus-oracle.ts b/ethereum-validators-set/src/subagents/exitbus-oracle/agent-exitbus-oracle.ts index b6dba34cf..5ea079ff9 100644 --- a/ethereum-validators-set/src/subagents/exitbus-oracle/agent-exitbus-oracle.ts +++ b/ethereum-validators-set/src/subagents/exitbus-oracle/agent-exitbus-oracle.ts @@ -33,6 +33,8 @@ import { } from "../../common/constants"; import BigNumber from "bignumber.js"; import WITHDRAWAL_QUEUE_ABI from "../../abi/WithdrawalQueueERC721.json"; +import { CommunityRegistryModule } from "../../common/staking-modules/csm-registry"; +import { CuratedRegistryModule } from "../../common/staking-modules/curated-registry"; // re-fetched from history on startup let lastReportSubmitTimestamp = 0; @@ -62,7 +64,7 @@ const { EXIT_REQUESTS_AND_QUEUE_DIFF_RATE_MEDIUM_HIGH_THRESHOLD, ORACLE_REPORT_SANITY_CHECKER_ADDRESS, EXIT_REQUESTS_COUNT_THRESHOLD_PERCENT, - STAKING_MODULES, + CSM_NODE_OPERATOR_REGISTRY_MODULE_ID, BLOCK_INTERVAL, } = requireWithTier( module, @@ -72,42 +74,9 @@ const { const log = (text: string) => console.log(`[${name}] ${text}`); -interface NodeOperatorModuleParams { - moduleAddress: string; - moduleName: string; -} - -class NodeOperatorsRegistryModuleContext { - public nodeOperatorNames = new Map(); - public readonly contract: ethers.Contract; - - constructor(public readonly params: NodeOperatorModuleParams) { - this.contract = new ethers.Contract( - params.moduleAddress, - NODE_OPERATORS_REGISTRY_ABI, - ethersProvider, - ); - } - - public async updateNoNames(block: number) { - // limit=1000 is times higher than possible number of the NOs in the registry - const nodeOperatorIDs = await this.contract.getNodeOperatorIds(0, 1000, { - blockTag: block, - }); - await Promise.all( - nodeOperatorIDs.map(async (id: BigNumber) => { - const { name } = await this.contract.getNodeOperator(id, true, { - blockTag: block, - }); - this.nodeOperatorNames.set(id.toNumber(), name); - }), - ); - } -} - const stakingModulesOperatorRegistry = new Map< number, - NodeOperatorsRegistryModuleContext + CuratedRegistryModule | CommunityRegistryModule >(); export async function initialize( @@ -121,32 +90,32 @@ export async function initialize( ethersProvider, ); - const moduleIds: { stakingModuleIds: BigNumber[] } = - await stakingRouter.functions.getStakingModuleIds({ - blockTag: currentBlock, - }); + const [modules] = await stakingRouter.functions.getStakingModules({ + blockTag: currentBlock, + }); stakingModulesOperatorRegistry.clear(); - for (const { moduleId, moduleAddress, moduleName } of STAKING_MODULES) { - if (!moduleAddress) { - console.log(`${moduleName} is not supported on this network for ${name}`); - continue; - } - const moduleExists = moduleIds.stakingModuleIds.some( - (stakingModuleId) => stakingModuleId.toString() === moduleId.toString(), - ); - if (!moduleExists) { - continue; + for (const { id, stakingModuleAddress, name } of modules) { + const moduleId = id as number; + const moduleName = name as string; + const moduleAddress = (stakingModuleAddress as string).toLowerCase(); + const alertPrefix = `${moduleName.replace(" ", "-").toUpperCase()}-`; + + let registry: CommunityRegistryModule | CommunityRegistryModule; + if (moduleId === CSM_NODE_OPERATOR_REGISTRY_MODULE_ID) { + registry = new CommunityRegistryModule( + { moduleAddress, moduleId, moduleName, alertPrefix }, + stakingRouter, + ); + } else { + registry = new CuratedRegistryModule( + { moduleAddress, moduleId, moduleName, alertPrefix }, + stakingRouter, + ); } - const nor = new NodeOperatorsRegistryModuleContext({ - moduleAddress, - moduleName, - }); - await nor.updateNoNames(currentBlock); - - stakingModulesOperatorRegistry.set(moduleId, nor); + stakingModulesOperatorRegistry.set(moduleId, registry); } const block48HoursAgo = @@ -207,7 +176,7 @@ export async function initialize( ); for await (const nor of stakingModulesOperatorRegistry.values()) { - await nor.updateNoNames(currentBlock); + await nor.initialize(currentBlock); } return { @@ -258,7 +227,7 @@ export async function handleBlock(blockEvent: BlockEvent) { // Update NO names each 100 blocks if (blockEvent.blockNumber % BLOCK_INTERVAL) { for await (const nor of stakingModulesOperatorRegistry.values()) { - await nor.updateNoNames(blockEvent.blockNumber); + await nor.updateNodeOperatorsInfo(blockEvent.blockNumber); } } @@ -484,9 +453,12 @@ async function handleProcessingStarted( } } -function prepareExitsDigest(exitRequests: LogDescription[]): string { +async function prepareExitsDigest( + exitRequests: LogDescription[], + blockNumber: number, +): Promise { let digest = new Map>(); - exitRequests.forEach((request: any) => { + for (const request of exitRequests) { let args = request.args; let nodeOperatorId = Number(args.nodeOperatorId); let name = String(args.nodeOperatorId); @@ -496,14 +468,14 @@ function prepareExitsDigest(exitRequests: LogDescription[]): string { ); if (stakingModule) { stakingModuleName = stakingModule.params.moduleName; - name = stakingModule.nodeOperatorNames.get(nodeOperatorId) || name; + name = stakingModule.getOperatorName(name); } let moduleDigest = digest.get(stakingModuleName) || new Map(); let prevModuleExitsCount = moduleDigest.get(name) || 0; moduleDigest.set(name, prevModuleExitsCount + 1); digest.set(stakingModuleName, moduleDigest); - }); + } let digestStr = ""; for (let [moduleName, moduleDigest] of digest.entries()) { digestStr += `\n**Module**: ${moduleName}`; @@ -533,7 +505,7 @@ async function handleExitRequest( if (exitRequests.length == 0) { digest = "No validator exits requested"; } else { - digest = prepareExitsDigest(exitRequests); + digest = await prepareExitsDigest(exitRequests, txEvent.blockNumber); } findings.push( Finding.fromObject({ diff --git a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.goerli.ts b/ethereum-validators-set/src/subagents/exitbus-oracle/constants.goerli.ts deleted file mode 100644 index 7744c1697..000000000 --- a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.goerli.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { - EXITBUS_HASH_CONSENSUS_EVENTS_OF_NOTICE as hashConsensusEvents, - EXITBUS_ORACLE_EVENTS_OF_NOTICE as oracleEvents, -} from "./constants"; - -import { - LIDO_STETH_ADDRESS as lidoStethAddress, - CURATED_NODE_OPERATORS_REGISTRY_ADDRESS as norAddress, - WITHDRAWALS_QUEUE_ADDRESS as wqAddress, - EXITBUS_ORACLE_ADDRESS as ebOracleAddress, - EXITBUS_HASH_CONSENSUS_ADDRESS as ebHashAddress, - ORACLE_REPORT_SANITY_CHECKER_ADDRESS as checkerAddress, - WITHDRAWALS_VAULT_ADDRESS as wdVaultAddress, - EL_REWARDS_VAULT_ADDRESS as elVaultAddress, -} from "../../common/constants.goerli"; - -export const CL_GENESIS_TIMESTAMP = 1616508000; - -export const EXITBUS_ORACLE_ADDRESS = ebOracleAddress; -export const EXITBUS_HASH_CONSENSUS_ADDRESS = ebHashAddress; -export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = checkerAddress; -export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = norAddress; - -export const LIDO_STETH_ADDRESS = lidoStethAddress; - -export const WITHDRAWALS_QUEUE_ADDRESS = wqAddress; -export const WITHDRAWALS_VAULT_ADDRESS = wdVaultAddress; -export const EL_REWARDS_VAULT_ADDRESS = elVaultAddress; - -export const EXIT_REQUESTS_AND_QUEUE_DIFF_RATE_INFO_THRESHOLD = 2; -export const EXIT_REQUESTS_AND_QUEUE_DIFF_RATE_MEDIUM_HIGH_THRESHOLD = 4; - -export const EXITBUS_ORACLE_MEMBERS = new Map([ - ["0xa8af49fb44aaa8eeca9ae918bb7c05e2e71c9de9", "Chorus One"], - ["0xb29dd2f6672c0dff2d2f173087739a42877a5172", "Staking Facilities"], - ["0xfda7e01b2718c511bf016030010572e833c7ae6a", "P2P Validator"], - ["0xd3b1e36a372ca250eeff61f90e833ca070559970", "Stakefish"], - ["0x3799bda7b884d33f79cec926af21160dc47fbe05", "Rated"], - ["0x4c75fa734a39f3a21c57e583c1c29942f021c6b7", "bloXroute"], - ["0x81e411f1bfda43493d7994f82fb61a415f6b8fd4", "Instadapp"], - ["0x3ff28f2ede8358e288798afc23ee299a503ad5c9", "Kyber Network"], -]); - -export const STAKING_MODULES: { moduleAddress: string; moduleName: string }[] = - [ - { - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - }, - ]; - -export const EXITBUS_HASH_CONSENSUS_EVENTS_OF_NOTICE = hashConsensusEvents.map( - (event) => ({ - ...event, - address: EXITBUS_HASH_CONSENSUS_ADDRESS, - }), -); - -export const EXITBUS_ORACLE_EVENTS_OF_NOTICE = oracleEvents.map((event) => ({ - ...event, - address: EXITBUS_ORACLE_ADDRESS, -})); diff --git a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.holesky.ts b/ethereum-validators-set/src/subagents/exitbus-oracle/constants.holesky.ts index a972317a5..b7ea90216 100644 --- a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/exitbus-oracle/constants.holesky.ts @@ -35,27 +35,21 @@ export const EXIT_REQUESTS_AND_QUEUE_DIFF_RATE_INFO_THRESHOLD = 2; export const EXIT_REQUESTS_AND_QUEUE_DIFF_RATE_MEDIUM_HIGH_THRESHOLD = 4; export const EXITBUS_ORACLE_MEMBERS = new Map([ - ["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399", "oracle1"], - ["0xD892c09b556b547c80B7d8c8cB8d75bf541B2284", "oracle2"], - ["0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5", "oracle3"], + ["0xf0f23944efc5a63c53632c571e7377b85d5e6b6f", "Chorus One"], + ["0xb29dd2f6672c0dff2d2f173087739a42877a5172", "Staking Facilities"], + ["0x31fa51343297ffce0cc1e67a50b2d3428057d1b1", "P2P Validator"], + ["0xd3b1e36a372ca250eeff61f90e833ca070559970", "Stakefish"], + ["0x4c75fa734a39f3a21c57e583c1c29942f021c6b7", "bloXroute"], + ["0x81e411f1bfda43493d7994f82fb61a415f6b8fd4", "Instadapp"], + ["0x3ff28f2ede8358e288798afc23ee299a503ad5c9", "Kyber Network"], + ["0xf7ae520e99ed3c41180b5e12681d31aa7302e4e5", "Chainlayer"], + ["0x12a1d74f8697b9f4f1eebb0a9d0fB6a751366399", "Lido"], + ["0xd892c09b556b547c80b7d8c8cb8d75bf541B2284", "Lido Valset"], ]); -export const STAKING_MODULES: { - moduleAddress: string; - moduleName: string; - moduleId: number; -}[] = [ - { - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - moduleId: 1, - }, - { - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - moduleId: 2, - }, -]; +export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; +export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 4; export const EXITBUS_HASH_CONSENSUS_EVENTS_OF_NOTICE = hashConsensusEvents.map( (event) => ({ diff --git a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.ts b/ethereum-validators-set/src/subagents/exitbus-oracle/constants.ts index 3293d9795..e03673865 100644 --- a/ethereum-validators-set/src/subagents/exitbus-oracle/constants.ts +++ b/ethereum-validators-set/src/subagents/exitbus-oracle/constants.ts @@ -53,28 +53,15 @@ export const EXITBUS_ORACLE_MEMBERS = new Map([ ["0x404335bce530400a5814375e7ec1fb55faff3ea2", "Staking Facilities"], ["0x007de4a5f7bc37e2f26c0cb2e8a95006ee9b89b5", "P2P Validator"], ["0x946d3b081ed19173dc83cd974fc69e1e760b7d78", "Stakefish"], - ["0xec4bfbaf681eb505b94e4a7849877dc6c600ca3a", "Rated"], ["0x61c91ecd902eb56e314bb2d5c5c07785444ea1c8", "bloXroute"], - ["0x1ca0fec59b86f549e1f1184d97cb47794c8af58d", "Instadapp"], + ["0x73181107c8d9ed4ce0bbef7a0b4ccf3320c41d12", "Instadapp"], ["0xa7410857abbf75043d61ea54e07d57a6eb6ef186", "Kyber Network"], + ["0xe57b3792adcc5da47ef4ff588883f0ee0c9835c9", "Matrixedlink"], ]); -export const STAKING_MODULES: { - moduleAddress: string; - moduleName: string; - moduleId: number; -}[] = [ - { - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - moduleId: 1, - }, - { - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - moduleId: 2, - }, -]; +export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; +export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 3; export const FETCH_BALANCES_BLOCK_INTERVAL = 1000; diff --git a/ethereum-validators-set/src/subagents/guardians/agent-guardians.ts b/ethereum-validators-set/src/subagents/guardians/agent-guardians.ts new file mode 100644 index 000000000..ac3b10acb --- /dev/null +++ b/ethereum-validators-set/src/subagents/guardians/agent-guardians.ts @@ -0,0 +1,195 @@ +import { + BlockEvent, + Finding, + FindingSeverity, + FindingType, + ethers, +} from "forta-agent"; +import { + etherscanAddress, + RedefineMode, + requireWithTier, +} from "../../common/utils"; +import { ethersProvider } from "../../ethers"; +import DEPOSIT_SECURITY_MODULE_ABI from "../../abi/DepositSecurityModule.json"; +import type * as Constants from "./constants"; +import BigNumber from "bignumber.js"; +import { ETH_DECIMALS, ONE_DAY } from "../../common/constants"; + +export const name = "Guardians"; + +// Store the last alert timestamp for each guardian +const guardiansBalanceLastAlert: Map = new Map(); + +// Constants related to the Guardian balance thresholds +const { + DEPOSIT_SECURITY_ADDRESS, + GUARDIAN_ETH_BALANCE_INFO_THRESHOLD, + GUARDIAN_ETH_BALANCE_WARN_THRESHOLD, +} = requireWithTier( + module, + `./constants`, + RedefineMode.Merge, +); + +// Initialize the DSM contract +const dsmContract = new ethers.Contract( + DEPOSIT_SECURITY_ADDRESS, + DEPOSIT_SECURITY_MODULE_ABI, + ethersProvider, +); + +/** + * Initialize function that is executed once when the agent is started. + * Can be used to set up any necessary state or resources. + * + * @param {number} currentBlock - The current block number when the agent starts. + * @returns {Promise} An object of initial state (currently unused). + */ +export async function initialize( + currentBlock: number, +): Promise<{ [key: string]: string }> { + console.log(`[${name}]`); + return {}; +} + +/** + * This handler is triggered for each new block. + * It checks the balance of all guardians and raises alerts if necessary. + * + * @param {BlockEvent} blockEvent - The current block event. + * @returns {Promise} A list of findings generated during this block. + */ +export async function handleBlock(blockEvent: BlockEvent): Promise { + const findings: Finding[] = []; + + // Fetch the list of guardians from the contract + const [guardianList] = await getGuardianList(blockEvent.blockNumber); + + if (guardianList.length < 1) { + return findings; // No guardians to check + } + + // Process each guardian's balance + for (const guardianAddress of guardianList) { + const finding = await handleGuardianBalance(guardianAddress, blockEvent); + if (finding) { + findings.push(finding); + } + } + + return findings; +} + +/** + * Retrieves the list of guardians from the DSM contract. + * + * @param {number} blockNumber - The block number to query the state at. + * @returns {Promise} The list of guardian addresses. + */ +async function getGuardianList(blockNumber: number): Promise { + return dsmContract.functions.getGuardians({ blockTag: blockNumber }); +} + +/** + * Checks the balance of a guardian and raises an alert if it falls below a threshold. + * + * @param {string} guardianAddress - The address of the guardian to check. + * @param {BlockEvent} blockEvent - The current block event. + * @returns {Promise} A Finding if the balance is low, otherwise null. + */ +async function handleGuardianBalance( + guardianAddress: string, + blockEvent: BlockEvent, +): Promise { + const now = blockEvent.block.timestamp; + const lastAlert = guardiansBalanceLastAlert.get(guardianAddress) || 0; + + // Skip if the last alert was sent within the one day + if (now <= lastAlert + ONE_DAY) { + return null; + } + + const ethBalance = await getGuardianEthBalance( + guardianAddress, + blockEvent.blockNumber, + ); + + // Check if the balance is below the info threshold + if (ethBalance.isLessThanOrEqualTo(GUARDIAN_ETH_BALANCE_INFO_THRESHOLD)) { + const severity = determineSeverity(ethBalance); + const finding = createLowBalanceFinding( + guardianAddress, + ethBalance, + severity, + ); + + // Update the timestamp of the last alert for this guardian + guardiansBalanceLastAlert.set(guardianAddress, now); + + return finding; + } + + return null; +} + +/** + * Fetches the current ETH balance of a guardian. + * + * @param {string} guardianAddress - The address of the guardian. + * @param {number} blockNumber - The block number to query the state at. + * @returns {Promise} The guardian's ETH balance as a BigNumber. + */ +async function getGuardianEthBalance( + guardianAddress: string, + blockNumber: number, +): Promise { + const balance = await ethersProvider.getBalance(guardianAddress, blockNumber); + return new BigNumber(String(balance)).div(ETH_DECIMALS); +} + +/** + * Determines the severity of the alert based on the guardian's ETH balance. + * + * @param {BigNumber} ethBalance - The guardian's ETH balance. + * @returns {FindingSeverity} The severity level of the alert. + */ +function determineSeverity(ethBalance: BigNumber): FindingSeverity { + return ethBalance.isLessThanOrEqualTo(GUARDIAN_ETH_BALANCE_WARN_THRESHOLD) + ? FindingSeverity.High + : FindingSeverity.Info; +} + +/** + * Creates a finding for a low balance alert. + * + * @param {string} guardianAddress - The address of the guardian. + * @param {BigNumber} ethBalance - The ETH balance of the guardian. + * @param {FindingSeverity} severity - The severity level of the alert. + * @returns {Finding} A new Finding object with the alert details. + */ +function createLowBalanceFinding( + guardianAddress: string, + ethBalance: BigNumber, + severity: FindingSeverity, +): Finding { + return Finding.fromObject({ + name: "⚠️ Low balance of Guardian Member", + description: + `Balance of ${etherscanAddress(guardianAddress)} ` + + `${ethBalance.toFixed(4)} ETH. This is rather low!`, + alertId: "GUARDIAN-MEMBER-LOW-BALANCE", + severity, + type: FindingType.Info, + metadata: { + guardian: guardianAddress, + balance: `${ethBalance}`, + }, + }); +} + +// Required for Dependency Injection (DI) to retrieve handlers in the case of direct agent use +exports.default = { + handleBlock, + // initialize, // SDK won't provide any arguments to the function +}; diff --git a/ethereum-validators-set/src/subagents/guardians/constants.holesky.ts b/ethereum-validators-set/src/subagents/guardians/constants.holesky.ts new file mode 100644 index 000000000..fba3fa9dc --- /dev/null +++ b/ethereum-validators-set/src/subagents/guardians/constants.holesky.ts @@ -0,0 +1,3 @@ +import { DEPOSIT_SECURITY_ADDRESS as dsmAddress } from "../../common/constants.holesky"; + +export const DEPOSIT_SECURITY_ADDRESS = dsmAddress; diff --git a/ethereum-validators-set/src/subagents/guardians/constants.ts b/ethereum-validators-set/src/subagents/guardians/constants.ts new file mode 100644 index 000000000..5d2724992 --- /dev/null +++ b/ethereum-validators-set/src/subagents/guardians/constants.ts @@ -0,0 +1,5 @@ +import { DEPOSIT_SECURITY_ADDRESS as dsmAddress } from "../../common/constants"; + +export const DEPOSIT_SECURITY_ADDRESS = dsmAddress; +export const GUARDIAN_ETH_BALANCE_INFO_THRESHOLD = 0.3; +export const GUARDIAN_ETH_BALANCE_WARN_THRESHOLD = 0.2; diff --git a/ethereum-validators-set/src/subagents/lido-report/agent-lido-report.ts b/ethereum-validators-set/src/subagents/lido-report/agent-lido-report.ts index 09316cfaf..03ee12a0e 100644 --- a/ethereum-validators-set/src/subagents/lido-report/agent-lido-report.ts +++ b/ethereum-validators-set/src/subagents/lido-report/agent-lido-report.ts @@ -30,6 +30,9 @@ import { ONE_YEAR, SECONDS_PER_SLOT, } from "../../common/constants"; +import { BaseRegistryModuleContext } from "./staking-modules/base-node-operators-registry"; +import { CommunityRegistryModuleContext } from "./staking-modules/csm-registry"; +import { CuratedRegistryModuleContext } from "./staking-modules/curated-registry"; const { LIDO_STETH_ADDRESS, ACCOUNTING_ORACLE_ADDRESS, @@ -38,7 +41,7 @@ const { EL_REWARDS_VAULT_ADDRESS, WITHDRAWALS_VAULT_ADDRESS, BURNER_ADDRESS, - STAKING_MODULES, + CSM_NODE_OPERATOR_REGISTRY_MODULE_ID, ACCOUNTING_ORACLE_EXTRA_DATA_SUBMITTED_EVENT, LIDO_ETHDESTRIBUTED_EVENT, LIDO_ELREWARDSRECEIVED_EVENT, @@ -63,67 +66,7 @@ const { export const name = "LidoReport"; -interface NodeOperatorModuleParams { - moduleId: number; - moduleName: string; - alertPrefix: string; -} - -class NodeOperatorsRegistryModuleContext { - // re-fetched from history on startup - public lastAllExited = 0; - public lastAllStuck = 0; - public lastAllRefunded = 0; - - public nodeOperatorNames = new Map(); - - constructor(public readonly params: NodeOperatorModuleParams) {} - - async initialize(currentBlock: number) { - const { allExited, allStuck, allRefunded } = - await this.getSummaryDigest(currentBlock); - this.lastAllExited = allExited; - this.lastAllStuck = allStuck; - this.lastAllRefunded = allRefunded; - - const withdrawalsQueue = new ethers.Contract( - WITHDRAWAL_QUEUE_ADDRESS, - WITHDRAWAL_QUEUE_ABI, - ethersProvider, - ); - } - - async getSummaryDigest(block: number) { - const stakingRouter = new ethers.Contract( - STAKING_ROUTER_ADDRESS, - STAKING_ROUTER_ABI, - ethersProvider, - ); - - const [operators] = await stakingRouter.functions.getAllNodeOperatorDigests( - this.params.moduleId, - { blockTag: block }, - ); - - let allExited = 0; - let allStuck = 0; - let allRefunded = 0; - - operators.forEach((digest: any) => { - allStuck += Number(digest.summary.stuckValidatorsCount); - allRefunded += Number(digest.summary.refundedValidatorsCount); - allExited += Number(digest.summary.totalExitedValidators); - }); - - return { - allExited, - allStuck, - allRefunded, - }; - } -} - -const stakingModulesOperatorRegistry: NodeOperatorsRegistryModuleContext[] = []; +const stakingModulesOperatorRegistry: BaseRegistryModuleContext[] = []; let lastRebaseEventTimestamp = 0; let lastELOverfillAlertTimestamp = 0; @@ -148,31 +91,40 @@ export async function initialize( stakingModulesOperatorRegistry.length = 0; - const moduleIds: { stakingModuleIds: BigNumber[] } = - await stakingRouter.functions.getStakingModuleIds({ - blockTag: currentBlock, - }); - - for (const { moduleId, moduleName, alertPrefix } of STAKING_MODULES) { - if (!moduleId) { - console.log(`${moduleName} is not supported on this network for ${name}`); - continue; - } + const [modules] = await stakingRouter.functions.getStakingModules({ + blockTag: currentBlock, + }); - const moduleExists = moduleIds.stakingModuleIds.some( - (stakingModuleId) => stakingModuleId.toString() === moduleId.toString(), - ); - if (!moduleExists) { - continue; + for (const { id, name, stakingModuleAddress } of modules) { + const moduleId = id as number; + const moduleName = name as string; + const moduleAddress = (stakingModuleAddress as string).toLowerCase(); + const alertPrefix = `${moduleName.replace(" ", "-").toUpperCase()}-`; + + let stakingModule: BaseRegistryModuleContext; + if (moduleId === CSM_NODE_OPERATOR_REGISTRY_MODULE_ID) { + stakingModule = new CommunityRegistryModuleContext( + { + moduleId, + moduleAddress, + moduleName, + alertPrefix, + }, + stakingRouter, + ); + } else { + stakingModule = new CuratedRegistryModuleContext( + { + moduleId, + moduleAddress, + moduleName, + alertPrefix, + }, + stakingRouter, + ); } - stakingModulesOperatorRegistry.push( - new NodeOperatorsRegistryModuleContext({ - moduleId, - moduleName, - alertPrefix, - }), - ); + stakingModulesOperatorRegistry.push(stakingModule); } await Promise.all( @@ -415,7 +367,7 @@ export async function handleTransaction(txEvent: TransactionEvent) { async function handleExitedStuckRefundedKeysDigest( txEvent: TransactionEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { const { allExited, allStuck, allRefunded } = await norContext.getSummaryDigest(txEvent.blockNumber); diff --git a/ethereum-validators-set/src/subagents/lido-report/constants.holesky.ts b/ethereum-validators-set/src/subagents/lido-report/constants.holesky.ts index ca7fde0db..05026936e 100644 --- a/ethereum-validators-set/src/subagents/lido-report/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/lido-report/constants.holesky.ts @@ -25,19 +25,4 @@ export const OVERFILL_ALERT_TRIGGER_EVERY = 2 * ONE_HOUR; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; -export const STAKING_MODULES: { - moduleId: number; - moduleName: string; - alertPrefix: string; -}[] = [ - { - moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleName: "Curated", - alertPrefix: "", - }, - { - moduleId: SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 4; diff --git a/ethereum-validators-set/src/subagents/lido-report/constants.ts b/ethereum-validators-set/src/subagents/lido-report/constants.ts index 3afe22c1e..9a850af93 100644 --- a/ethereum-validators-set/src/subagents/lido-report/constants.ts +++ b/ethereum-validators-set/src/subagents/lido-report/constants.ts @@ -19,23 +19,7 @@ export const BURNER_ADDRESS = burnerAddress; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; export const SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; - -export const STAKING_MODULES: { - moduleId: number | null; - moduleName: string; - alertPrefix: string; -}[] = [ - { - moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleName: "Curated", - alertPrefix: "", - }, - { - moduleId: SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 3; export const LIDO_ETHDESTRIBUTED_EVENT = "event ETHDistributed(uint256 indexed reportTimestamp, uint256 preCLBalance, uint256 postCLBalance, uint256 withdrawalsWithdrawn, uint256 executionLayerRewardsWithdrawn, uint256 postBufferedEther)"; diff --git a/ethereum-validators-set/src/subagents/lido-report/staking-modules/base-node-operators-registry.ts b/ethereum-validators-set/src/subagents/lido-report/staking-modules/base-node-operators-registry.ts new file mode 100644 index 000000000..1ad577e94 --- /dev/null +++ b/ethereum-validators-set/src/subagents/lido-report/staking-modules/base-node-operators-registry.ts @@ -0,0 +1,47 @@ +import { NodeOperatorModuleParams } from "../../../common/staking-modules/interfaces"; +import { BaseRegistryModule } from "../../../common/staking-modules/base-node-operators-registry"; +import { NodeOperatorSummary } from "../../../common/staking-modules/interfaces"; + +export abstract class BaseRegistryModuleContext extends BaseRegistryModule { + // re-fetched from history on startup + public lastAllExited = 0; + public lastAllStuck = 0; + public lastAllRefunded = 0; + + async initialize(currentBlock: number) { + const operatorsMap = await super.initialize(currentBlock); + + const { allExited, allStuck, allRefunded } = + await this.getSummaryDigest(currentBlock); + this.lastAllExited = allExited; + this.lastAllStuck = allStuck; + this.lastAllRefunded = allRefunded; + + return operatorsMap; + } + + async getSummaryDigest(block: number) { + const operatorsSummaryMap = await this.updateNodeOperatorsInfo(block); + return await this.getSummaryDigestFromOperatorsSummary(operatorsSummaryMap); + } + + protected async getSummaryDigestFromOperatorsSummary( + operatorsSummaryMap: Map, + ) { + let allExited = 0; + let allStuck = 0; + let allRefunded = 0; + + operatorsSummaryMap.forEach((summary: NodeOperatorSummary) => { + allStuck += Number(summary.stuckValidatorsCount); + allRefunded += Number(summary.refundedValidatorsCount); + allExited += Number(summary.totalExitedValidators); + }); + + return { + allExited, + allStuck, + allRefunded, + }; + } +} diff --git a/ethereum-validators-set/src/subagents/lido-report/staking-modules/csm-registry.ts b/ethereum-validators-set/src/subagents/lido-report/staking-modules/csm-registry.ts new file mode 100644 index 000000000..c60878012 --- /dev/null +++ b/ethereum-validators-set/src/subagents/lido-report/staking-modules/csm-registry.ts @@ -0,0 +1,7 @@ +import { BaseRegistryModuleContext } from "./base-node-operators-registry"; + +export class CommunityRegistryModuleContext extends BaseRegistryModuleContext { + async fetchOperatorName(operatorId: string, _block: number): Promise { + return `CSM Operator #${operatorId}`; + } +} diff --git a/ethereum-validators-set/src/subagents/lido-report/staking-modules/curated-registry.ts b/ethereum-validators-set/src/subagents/lido-report/staking-modules/curated-registry.ts new file mode 100644 index 000000000..e83369362 --- /dev/null +++ b/ethereum-validators-set/src/subagents/lido-report/staking-modules/curated-registry.ts @@ -0,0 +1,10 @@ +import { BaseRegistryModuleContext } from "./base-node-operators-registry"; + +export class CuratedRegistryModuleContext extends BaseRegistryModuleContext { + async fetchOperatorName(operatorId: string, block: number): Promise { + const { name } = await this.contract.getNodeOperator(operatorId, true, { + blockTag: block, + }); + return name; + } +} diff --git a/ethereum-validators-set/src/subagents/multisig-watchers/agent-cluster-multisig.ts b/ethereum-validators-set/src/subagents/multisig-watchers/agent-cluster-multisig.ts index 84e3e683d..2b88cb47c 100644 --- a/ethereum-validators-set/src/subagents/multisig-watchers/agent-cluster-multisig.ts +++ b/ethereum-validators-set/src/subagents/multisig-watchers/agent-cluster-multisig.ts @@ -18,7 +18,7 @@ import { GnosisSafeFortaHandler } from "./gnosis-safe-handler"; const { ARAGON_ACL_ADDRESS, STAKING_ROUTER_ADDRESS, - STAKING_MODULES, + SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, BLOCKCHAIN_INFO, SET_PERMISSION_EVENT, } = requireWithTier( @@ -150,29 +150,19 @@ export async function initialize( ethersProvider, ); - const moduleIds: { stakingModuleIds: BigNumber[] } = - await stakingRouter.functions.getStakingModuleIds({ - blockTag: currentBlock, - }); - stakingModuleManagersMultisigList.length = 0; - for (const { - moduleId, - moduleAddress, - moduleName, - alertPrefix, - } of STAKING_MODULES) { - if (!moduleId) { - console.warn( - `Multisig monitoring is not supported for ${moduleName} module`, - ); - continue; - } - const moduleExists = moduleIds.stakingModuleIds.some( - (stakingModuleId) => stakingModuleId.toString() === moduleId.toString(), - ); - if (!moduleExists) { + const [modules] = await stakingRouter.functions.getStakingModules({ + blockTag: currentBlock, + }); + + for (const { id, name, stakingModuleAddress } of modules) { + const moduleId = id as number; + const moduleName = name as string; + const moduleAddress = (stakingModuleAddress as string).toLowerCase(); + const alertPrefix = moduleName.replace(" ", "-").toUpperCase(); + + if (moduleId !== SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID) { continue; } diff --git a/ethereum-validators-set/src/subagents/multisig-watchers/constants.holesky.ts b/ethereum-validators-set/src/subagents/multisig-watchers/constants.holesky.ts index fb7acbbf4..8749885be 100644 --- a/ethereum-validators-set/src/subagents/multisig-watchers/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/multisig-watchers/constants.holesky.ts @@ -5,19 +5,13 @@ import { STAKING_ROUTER_ADDRESS as srAddress, } from "../../common/constants.holesky"; -export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_MODULE_ID = 2; +export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; +export const SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 4; + export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = curatedNorAddress; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = simpleDvtNorAddress; export const STAKING_ROUTER_ADDRESS = srAddress; export const ARAGON_ACL_ADDRESS = aclContractAddress; -export const STAKING_MODULES = [ - { - moduleId: SIMPLEDVT_NODE_OPERATORS_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; - export const MODULE_MANAGERS = []; diff --git a/ethereum-validators-set/src/subagents/multisig-watchers/constants.ts b/ethereum-validators-set/src/subagents/multisig-watchers/constants.ts index 8382200fe..527d85590 100644 --- a/ethereum-validators-set/src/subagents/multisig-watchers/constants.ts +++ b/ethereum-validators-set/src/subagents/multisig-watchers/constants.ts @@ -1,4 +1,3 @@ -import { FindingSeverity } from "forta-agent"; import { ARAGON_ACL_ADDRESS as aclContractAddress, CURATED_NODE_OPERATORS_REGISTRY_ADDRESS as curatedNorAddress, @@ -6,10 +5,11 @@ import { STAKING_ROUTER_ADDRESS as srAddress, MODULE_MANAGER_MULTISIG_ADDRESS as moduleManagerMultisigAddress, } from "../../common/constants"; -import { SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID } from "../lido-report/constants"; export const ARAGON_ACL_ADDRESS = aclContractAddress; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; +export const SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 3; export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = curatedNorAddress; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = simpleDvtNorAddress; export const STAKING_ROUTER_ADDRESS = srAddress; @@ -18,15 +18,6 @@ export const MODULE_MANAGER_MULTISIG_ADDRESS = moduleManagerMultisigAddress; export const SET_PERMISSION_EVENT = "event SetPermission(address indexed entity, address indexed app, bytes32 indexed role, bool allowed)"; -export const STAKING_MODULES = [ - { - moduleId: SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; - export const MODULE_MANAGERS = [ { moduleManagerAddress: MODULE_MANAGER_MULTISIG_ADDRESS, diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/agent-node-operators-registry.ts b/ethereum-validators-set/src/subagents/node-operators-registry/agent-node-operators-registry.ts index 13fd61de4..b2d30ad73 100644 --- a/ethereum-validators-set/src/subagents/node-operators-registry/agent-node-operators-registry.ts +++ b/ethereum-validators-set/src/subagents/node-operators-registry/agent-node-operators-registry.ts @@ -17,20 +17,22 @@ import { import type * as Constants from "./constants"; import STAKING_ROUTER_ABI from "../../abi/StakingRouter.json"; import OBOL_LIDO_SPLIT_FACTORY_ABI from "../../abi/obol-splits/ObolLidoSplitFactory.json"; -import NODE_OPERATORS_REGISTRY_ABI from "../../abi/NodeOperatorsRegistry.json"; import EASY_TRACK_ABI from "../../abi/EasyTrack.json"; import { ethersProvider } from "../../ethers"; -import { getEventsOfNoticeForStakingModule } from "./utils"; import BigNumber from "bignumber.js"; -import { NodeOperatorFullInfo } from "../../common/interfaces"; +import { BaseRegistryModuleContext } from "./staking-modules/base-node-operators-registry"; +import { CuratedRegistryModuleContext } from "./staking-modules/curated/curated-registry"; +import { CommunityRegistryModuleContext } from "./staking-modules/csm/csm-registry"; +import { NodeOperatorShortDigest } from "./staking-modules/interfaces"; const { EASY_TRACK_ADDRESS, STAKING_ROUTER_ADDRESS, MOTION_ENACTED_EVENT, SIGNING_KEY_REMOVED_EVENT, NODE_OPERATOR_VETTED_KEYS_COUNT_EVENT, - STAKING_MODULES, + SET_VETTED_VALIDATORS_LIMITS_ADDRESS, SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, + CSM_NODE_OPERATOR_REGISTRY_MODULE_ID, NODE_OPERATORS_REGISTRY_EXITED_CHANGED_EVENT, NODE_OPERATORS_REGISTRY_STUCK_CHANGED_EVENT, NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD, @@ -50,31 +52,6 @@ const { export const name = "NodeOperatorsRegistry"; -interface NodeOperatorShortDigest { - stuck: number; - refunded: number; - exited: number; - isStuckRefunded: boolean; - stuckPenaltyEndTimestamp: number; -} - -interface EventsOfNotice { - address: string; - event: string; - alertId: string; - description: (args: any, names: Map) => string; - severity: FindingSeverity; -} - -interface NodeOperatorModuleParams { - moduleId: number; - moduleAddress: string; - alertPrefix: string; - moduleName: string; - setVettedValidatorsLimitsAddress?: string; - eventsOfNotice: EventsOfNotice[]; -} - class ObolLidoSplitFactoryCluster { public readonly contract: ethers.Contract; @@ -90,105 +67,7 @@ class ObolLidoSplitFactoryCluster { } } -class NodeOperatorsRegistryModuleContext { - public nodeOperatorDigests = new Map(); - public nodeOperatorNames = new Map(); - public closestPenaltyEndTimestamp = 0; - public penaltyEndAlertTriggeredAt = 0; - public targetShare: number = 0; - public readonly contract: ethers.Contract; - - constructor( - public readonly params: NodeOperatorModuleParams, - private readonly stakingRouter: ethers.Contract, - ) { - this.contract = new ethers.Contract( - this.params.moduleAddress, - NODE_OPERATORS_REGISTRY_ABI, - ethersProvider, - ); - } - - async initialize(currentBlock: number) { - const [operators] = - await this.stakingRouter.functions.getAllNodeOperatorDigests( - this.params.moduleId, - { blockTag: currentBlock }, - ); - - const operatorsSummaries = await Promise.all( - operators.map((digest: any) => - this.contract.functions.getNodeOperatorSummary(digest.id, { - blockTag: currentBlock, - }), - ), - ); - - const stuckOperatorsEndTimestampMap = new Map( - operators.map((digest: any, index: number) => [ - String(digest.id), - Number(operatorsSummaries[index].stuckPenaltyEndTimestamp), - ]), - ); - - for (const digest of operators) { - this.nodeOperatorDigests.set(String(digest.id), { - stuck: Number(digest.summary.stuckValidatorsCount), - refunded: Number(digest.summary.refundedValidatorsCount), - exited: Number(digest.summary.totalExitedValidators), - isStuckRefunded: - Number(digest.summary.refundedValidatorsCount) >= - Number(digest.summary.stuckValidatorsCount), - stuckPenaltyEndTimestamp: - stuckOperatorsEndTimestampMap.get(String(digest.id)) ?? 0, - }); - } - - await this.updateNodeOperatorsInfo(currentBlock); - } - - getOperatorName(nodeOperatorId: string): string { - return ( - this.nodeOperatorNames.get(Number(nodeOperatorId))?.name ?? "undefined" - ); - } - - async updateNodeOperatorsInfo(block: number) { - const nodeOperatorsRegistry = new ethers.Contract( - this.params.moduleAddress, - NODE_OPERATORS_REGISTRY_ABI, - ethersProvider, - ); - - const [operators] = - await this.stakingRouter.functions.getAllNodeOperatorDigests( - this.params.moduleId, - { blockTag: block }, - ); - const [srModule] = await this.stakingRouter.functions.getStakingModule( - this.params.moduleId, - { blockTag: block }, - ); - this.targetShare = srModule.targetShare; - - await Promise.all( - operators.map(async (operator: any) => { - const { name, rewardAddress } = - await nodeOperatorsRegistry.getNodeOperator( - String(operator.id), - true, - { blockTag: block }, - ); - this.nodeOperatorNames.set(Number(operator.id), { - name, - rewardAddress, - }); - }), - ); - } -} - -const stakingModulesOperatorRegistry: NodeOperatorsRegistryModuleContext[] = []; +const stakingModulesOperatorRegistry: BaseRegistryModuleContext[] = []; const stakingRouter = new ethers.Contract( STAKING_ROUTER_ADDRESS, STAKING_ROUTER_ABI, @@ -203,10 +82,9 @@ export async function initialize( stakingModulesOperatorRegistry.length = 0; - const moduleIds: { stakingModuleIds: BigNumber[] } = - await stakingRouter.functions.getStakingModuleIds({ - blockTag: currentBlock, - }); + const [modules] = await stakingRouter.functions.getStakingModules({ + blockTag: currentBlock, + }); for (const { clusterName, @@ -217,43 +95,48 @@ export async function initialize( ); } - for (const { - moduleId, - moduleAddress, - moduleName, - alertPrefix, - setVettedValidatorsLimitsAddress, - } of STAKING_MODULES) { - if (!moduleId) { - console.log(`${moduleName} is not supported on this network for ${name}`); - continue; - } - - const moduleExists = moduleIds.stakingModuleIds.some( - (stakingModuleId) => stakingModuleId.toString() === moduleId.toString(), - ); - if (!moduleExists) { - continue; - } + for (const { id, stakingModuleAddress, name } of modules) { + const moduleId = id as number; + const moduleName = name as string; + const moduleAddress = (stakingModuleAddress as string).toLowerCase(); + const alertPrefix = `${moduleName.replace(" ", "-").toUpperCase()}-`; - stakingModulesOperatorRegistry.push( - new NodeOperatorsRegistryModuleContext( + let stakingModule: BaseRegistryModuleContext; + if (moduleId === SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID) { + stakingModule = new CuratedRegistryModuleContext( { moduleId, moduleAddress, moduleName, alertPrefix, - setVettedValidatorsLimitsAddress, - eventsOfNotice: getEventsOfNoticeForStakingModule({ - moduleId, - moduleAddress, - moduleName, - alertPrefix, - }), + setVettedValidatorsLimitsAddress: + SET_VETTED_VALIDATORS_LIMITS_ADDRESS, }, stakingRouter, - ), - ); + ); + } else if (moduleId === CSM_NODE_OPERATOR_REGISTRY_MODULE_ID) { + stakingModule = new CommunityRegistryModuleContext( + { + moduleId, + moduleAddress, + moduleName, + alertPrefix, + }, + stakingRouter, + ); + } else { + stakingModule = new CuratedRegistryModuleContext( + { + moduleId, + moduleAddress, + moduleName, + alertPrefix, + }, + stakingRouter, + ); + } + + stakingModulesOperatorRegistry.push(stakingModule); } await Promise.all( @@ -269,7 +152,12 @@ export async function handleTransaction(txEvent: TransactionEvent) { const findings: Finding[] = []; for (const norContext of stakingModulesOperatorRegistry) { - handleEventsOfNotice(txEvent, findings, norContext.params.eventsOfNotice); + handleEventsOfNotice( + txEvent, + findings, + norContext.eventsOfNotice, + norContext.nodeOperatorNames, + ); const stuckEvents = txEvent.filterLog( NODE_OPERATORS_REGISTRY_STUCK_CHANGED_EVENT, @@ -280,7 +168,9 @@ export async function handleTransaction(txEvent: TransactionEvent) { handleExitedCountChanged(txEvent, stuckEvents, findings, norContext); handleStuckStateChanged(stuckEvents, findings, norContext); await handleSigningKeysRemoved(txEvent, findings, norContext); - handleStakeLimitSet(txEvent, findings, norContext); + if (norContext.params.moduleId !== CSM_NODE_OPERATOR_REGISTRY_MODULE_ID) { + handleStakeLimitSet(txEvent, findings, norContext); + } handleSetRewardAddress(txEvent, findings, norContext); } @@ -290,7 +180,7 @@ export async function handleTransaction(txEvent: TransactionEvent) { async function handleSetRewardAddress( txEvent: TransactionEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { if ( norContext.params.moduleId !== SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID @@ -387,7 +277,7 @@ function handleExitedCountChanged( txEvent: TransactionEvent, stuckEvents: LogDescription[], findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { const exitEvents = txEvent.filterLog( NODE_OPERATORS_REGISTRY_EXITED_CHANGED_EVENT, @@ -403,7 +293,7 @@ function handleExitedCountChanged( if (newExited > NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD) { findings.push( Finding.fromObject({ - name: `⚠️ ${norContext.params.moduleName} NO Registry: operator exited more than ${NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD} validators`, + name: `⚠️ ${norContext.params.moduleName}: operator exited more than ${NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD} validators`, description: `Operator: #${nodeOperatorId} ${norContext.getOperatorName( nodeOperatorId, )}\nNew exited: ${newExited}`, @@ -424,7 +314,7 @@ function handleExitedCountChanged( if (lastDigest.stuck > 0 && actualStuckCount == 0) { findings.push( Finding.fromObject({ - name: `ℹ️ ${norContext.params.moduleName} NO Registry: operator exited all stuck keys 🎉`, + name: `ℹ️ ${norContext.params.moduleName} : operator exited all stuck keys 🎉`, description: `Operator: #${nodeOperatorId} ${norContext.getOperatorName( nodeOperatorId, )}\nStuck exited: ${lastDigest.stuck}`, @@ -436,7 +326,7 @@ function handleExitedCountChanged( } else if (lastDigest.stuck - actualStuckCount > 0) { findings.push( Finding.fromObject({ - name: `ℹ️ ${norContext.params.moduleName} NO Registry: operator exited some stuck keys`, + name: `ℹ️ ${norContext.params.moduleName} : operator exited some stuck keys`, description: `Operator: #${nodeOperatorId} ${norContext.getOperatorName( nodeOperatorId, )}\nStuck exited: ${lastDigest.stuck - actualStuckCount} of ${ @@ -459,7 +349,7 @@ function handleExitedCountChanged( function handleStuckStateChanged( events: LogDescription[], findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { if (!events) return; for (const event of events) { @@ -473,7 +363,7 @@ function handleStuckStateChanged( if (newStuck > NODE_OPERATOR_NEW_STUCK_KEYS_THRESHOLD) { findings.push( Finding.fromObject({ - name: `⚠️ ${norContext.params.moduleName} NO Registry: operator have new stuck keys`, + name: `⚠️ ${norContext.params.moduleName} : operator have new stuck keys`, description: `Operator: #${nodeOperatorId} ${norContext.getOperatorName( nodeOperatorId, )}\nNew stuck: ${stuckValidatorsCount}`, @@ -492,7 +382,7 @@ function handleStuckStateChanged( ) { findings.push( Finding.fromObject({ - name: `ℹ️ ${norContext.params.moduleName} NO Registry: operator refunded all stuck keys 🎉`, + name: `ℹ️ ${norContext.params.moduleName} : operator refunded all stuck keys 🎉`, description: `Operator: #${nodeOperatorId} ${norContext.getOperatorName( nodeOperatorId, )}\nRefunded: ${refundedValidatorsCount}`, @@ -517,12 +407,13 @@ function handleStuckStateChanged( async function handleSigningKeysRemoved( txEvent: TransactionEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { const moduleAddress = norContext.params.moduleAddress; if (moduleAddress in txEvent.addresses) { let digest = new Map(); const events = txEvent.filterLog(SIGNING_KEY_REMOVED_EVENT, moduleAddress); + if (events.length > 0) { events.forEach((event) => { const noName = norContext.getOperatorName(event.args.operatorId); @@ -531,7 +422,7 @@ async function handleSigningKeysRemoved( }); findings.push( Finding.fromObject({ - name: `🚨 ${norContext.params.moduleName} NO Registry: Signing keys removed`, + name: `🚨 ${norContext.params.moduleName}: Signing keys removed`, description: `Signing keys has been removed for:` + `\n ${Array.from(digest.entries()) @@ -554,7 +445,7 @@ async function handleSigningKeysRemoved( async function handleActiveMotionsWhenSigningKeysRemoved( txEvent: TransactionEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { const { setVettedValidatorsLimitsAddress } = norContext.params; if (!setVettedValidatorsLimitsAddress) { @@ -579,7 +470,7 @@ async function handleActiveMotionsWhenSigningKeysRemoved( const motionId = (motion?.id as BigNumber).toNumber(); findings.push( Finding.fromObject({ - name: `🚨 ${norContext.params.moduleName} NO Registry: SetVettedValidatorsLimits motion active 🚨`, + name: `🚨 ${norContext.params.moduleName} : SetVettedValidatorsLimits motion active 🚨`, description: `SigningKeyRemoved event and ongoing SetVettedValidatorsLimits motion may indicate ` + `circumventing of DAO validator keys approval.` + @@ -595,7 +486,7 @@ async function handleActiveMotionsWhenSigningKeysRemoved( function handleStakeLimitSet( txEvent: TransactionEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { const moduleAddress = norContext.params.moduleAddress; if (moduleAddress in txEvent.addresses) { @@ -636,7 +527,7 @@ export async function handleBlock(blockEvent: BlockEvent) { handleStuckPenaltyEnd(blockEvent, findings, nodeOperatorRegistry), ); const currentTargetShareHandlers = stakingModulesOperatorRegistry - .filter((nor) => nor.targetShare < BASIS_POINTS_MULTIPLIER) + .filter((nor) => nor.stakeShareLimit < BASIS_POINTS_MULTIPLIER) .map(async (nodeOperatorRegistry) => { const totalActiveValidators = await getTotalActiveValidators(blockEvent); @@ -681,7 +572,7 @@ async function getTotalActiveValidators(blockEvent: BlockEvent) { async function handleStakingModuleTargetShare( blockEvent: BlockEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, totalActiveValidators: number, ) { const summary = await norContext.contract.getStakingModuleSummary({ @@ -703,7 +594,7 @@ async function handleStakingModuleTargetShare( const currentTargetShare = Math.ceil( (moduleActiveValidators / totalActiveValidators) * BASIS_POINTS_MULTIPLIER, ); - const diffTargetShare = currentTargetShare - norContext.targetShare; + const diffTargetShare = currentTargetShare - norContext.stakeShareLimit; if (diffTargetShare <= 0) { return; } @@ -713,11 +604,11 @@ async function handleStakingModuleTargetShare( }%%`; const description = `The module has ${moduleActiveValidators} active validators against ${totalActiveValidators}\n` + - `Current targetShare: ${currentTargetShare}, the module targetShare: ${norContext.targetShare}`; + `Current stakeShareLimit: ${currentTargetShare}, the module stakeShareLimit: ${norContext.stakeShareLimit}`; if (diffTargetShare > TARGET_SHARE_THRESHOLD_PANIC) { findings.push( Finding.fromObject({ - name: `🚨 ${norContext.params.moduleName} NO Registry: ${title}`, + name: `🚨 ${norContext.params.moduleName} : ${title}`, description, alertId: `${norContext.params.alertPrefix}TARGET-SHARE-PANIC`, severity: FindingSeverity.High, @@ -730,7 +621,7 @@ async function handleStakingModuleTargetShare( if (diffTargetShare > TARGET_SHARE_THRESHOLD_NOTICE) { findings.push( Finding.fromObject({ - name: `⚠️ ${norContext.params.moduleName} NO Registry: ${title}`, + name: `⚠️ ${norContext.params.moduleName} : ${title}`, description, alertId: `${norContext.params.alertPrefix}TARGET-SHARE-NOTICE`, severity: FindingSeverity.Info, @@ -743,7 +634,7 @@ async function handleStakingModuleTargetShare( async function handleStuckPenaltyEnd( blockEvent: BlockEvent, findings: Finding[], - norContext: NodeOperatorsRegistryModuleContext, + norContext: BaseRegistryModuleContext, ) { let description = ""; let currentClosestPenaltyEndTimestamp = 0; @@ -773,7 +664,7 @@ async function handleStuckPenaltyEnd( description += "\nNote: don't forget to call `clearNodeOperatorPenalty`"; findings.push( Finding.fromObject({ - name: `ℹ️ ${norContext.params.moduleName} NO Registry: operator stuck penalty ended`, + name: `ℹ️ ${norContext.params.moduleName} : operator stuck penalty ended`, description: description, alertId: `${norContext.params.alertPrefix}NODE-OPERATORS-STUCK-PENALTY-ENDED`, severity: FindingSeverity.Info, diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/constants.holesky.ts b/ethereum-validators-set/src/subagents/node-operators-registry/constants.holesky.ts index f85217f59..14bbd47ea 100644 --- a/ethereum-validators-set/src/subagents/node-operators-registry/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/node-operators-registry/constants.holesky.ts @@ -24,21 +24,7 @@ export const NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD = 5; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; - -export const STAKING_MODULES = [ - { - moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - alertPrefix: "", - }, - { - moduleId: SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 4; export const OBOL_LIDO_SPLIT_FACTORY_CLUSTERS = [ { diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/constants.ts b/ethereum-validators-set/src/subagents/node-operators-registry/constants.ts index 7107c66a7..8079dca0c 100644 --- a/ethereum-validators-set/src/subagents/node-operators-registry/constants.ts +++ b/ethereum-validators-set/src/subagents/node-operators-registry/constants.ts @@ -13,6 +13,7 @@ export const STUCK_PENALTY_ENDED_TRIGGER_PERIOD = ONE_DAY; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; export const SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 3; export const EASY_TRACK_ADDRESS = easyTrackAddress; export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = curatedNorAddress; @@ -23,6 +24,8 @@ export const SPLIT_WALLET_FACTORY_SSV_CLUSTER_ADDRESS = splitWalletFactorySsvClusterAddress; export const STAKING_ROUTER_ADDRESS = srAddress; export const BLOCK_INTERVAL = 100; +export const SET_VETTED_VALIDATORS_LIMITS_ADDRESS = + setVettedValidatorsLimitsSDvtAddress; // basis points export const BASIS_POINTS_MULTIPLIER = 100_00; @@ -45,22 +48,6 @@ export const NODE_OPERATOR_REWARD_ADDRESS_SET_EVENT = export const NODE_OPERATOR_BIG_EXITED_COUNT_THRESHOLD = 100; export const NODE_OPERATOR_NEW_STUCK_KEYS_THRESHOLD = 5; -export const STAKING_MODULES = [ - { - moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - alertPrefix: "", - }, - { - moduleId: SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - setVettedValidatorsLimitsAddress: setVettedValidatorsLimitsSDvtAddress, - }, -]; - export const OBOL_LIDO_SPLIT_FACTORY_CLUSTERS = [ { clusterName: "OBOL", diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/base-node-operators-registry.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/base-node-operators-registry.ts new file mode 100644 index 000000000..7948f820b --- /dev/null +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/base-node-operators-registry.ts @@ -0,0 +1,57 @@ +import { ethers } from "forta-agent"; +import { NodeOperatorFullInfo } from "../../../common/staking-modules/interfaces"; +import { + EventsOfNotice, + NodeOperatorModuleParams, + NodeOperatorShortDigest, +} from "./interfaces"; +import { BaseRegistryModule } from "../../../common/staking-modules/base-node-operators-registry"; + +export abstract class BaseRegistryModuleContext extends BaseRegistryModule { + public nodeOperatorDigests = new Map(); + public nodeOperatorNames = new Map(); + public closestPenaltyEndTimestamp = 0; + public penaltyEndAlertTriggeredAt = 0; + public stakeShareLimit: number = 0; + + constructor( + public readonly params: NodeOperatorModuleParams, + public readonly eventsOfNotice: EventsOfNotice[], + protected readonly stakingRouter: ethers.Contract, + ) { + super(params, stakingRouter); + } + + async initialize(currentBlock: number) { + const operatorsMap = await super.initialize(currentBlock); + + for (const [operatorId, summary] of operatorsMap.entries()) { + this.nodeOperatorDigests.set(String(operatorId), { + stuck: Number(summary.stuckValidatorsCount), + refunded: Number(summary.refundedValidatorsCount), + exited: Number(summary.totalExitedValidators), + isStuckRefunded: + Number(summary.refundedValidatorsCount) >= + Number(summary.stuckValidatorsCount), + stuckPenaltyEndTimestamp: Number(summary.stuckPenaltyEndTimestamp), + }); + } + + return operatorsMap; + } + + abstract fetchOperatorName( + operatorId: string, + block: number, + ): Promise; + + async updateNodeOperatorsInfo(block: number) { + const [srModule] = await this.stakingRouter.functions.getStakingModule( + this.params.moduleId, + { blockTag: block }, + ); + this.stakeShareLimit = srModule.stakeShareLimit; + + return super.updateNodeOperatorsInfo(block); + } +} diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/csm-registry.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/csm-registry.ts new file mode 100644 index 000000000..11db73209 --- /dev/null +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/csm-registry.ts @@ -0,0 +1,23 @@ +import { ethers } from "forta-agent"; +import { BaseRegistryModuleContext } from "../base-node-operators-registry"; +import { NodeOperatorModuleParams } from "../interfaces"; +import { getEventsOfNoticeForStakingModule } from "./events-of-notice"; + +export class CommunityRegistryModuleContext extends BaseRegistryModuleContext { + constructor( + public readonly params: NodeOperatorModuleParams, + protected readonly stakingRouter: ethers.Contract, + ) { + super( + params, + getEventsOfNoticeForStakingModule({ + ...params, + }), + stakingRouter, + ); + } + + async fetchOperatorName(operatorId: string, _block: number): Promise { + return `CSM Operator #${operatorId}`; + } +} diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/events-of-notice.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/events-of-notice.ts new file mode 100644 index 000000000..5d0b09bca --- /dev/null +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/csm/events-of-notice.ts @@ -0,0 +1,27 @@ +import { FindingSeverity } from "forta-agent"; +import { StakingModule } from "../interfaces"; + +export const getEventsOfNoticeForStakingModule = ( + stakingModule: StakingModule, +) => { + const { moduleAddress, moduleName, alertPrefix } = stakingModule; + return [ + { + address: moduleAddress, + event: + "event TargetValidatorsCountChanged(uint256 indexed nodeOperatorId, uint256 targetValidatorsCount, uint256 targetLimitMode)", + alertId: `${alertPrefix}NODE-OPERATOR-TARGET-VALIDATORS-COUNT-CHANGED`, + name: `⚠️ ${moduleName}: Node operator target validators count changed`, + description: (args: any) => + `${moduleName} ` + + `Node operator ${args.nodeOperatorId} ` + + `target validators count changed to ${args.targetValidatorsCount}` + + `${ + args.targetLimitMode + ? " with targetLimitMode = " + args.targetLimitMode + : "" + }`, + severity: FindingSeverity.Medium, + }, + ]; +}; diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/curated-registry.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/curated-registry.ts new file mode 100644 index 000000000..c399d62f2 --- /dev/null +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/curated-registry.ts @@ -0,0 +1,35 @@ +import { ethers } from "forta-agent"; +import { ethersProvider } from "../../../../ethers"; +import NODE_OPERATORS_REGISTRY_ABI from "../../../../abi/NodeOperatorsRegistry.json"; +import { BaseRegistryModuleContext } from "../base-node-operators-registry"; +import { NodeOperatorModuleParams } from "../interfaces"; +import { getEventsOfNoticeForStakingModule } from "./events-of-notice"; + +export class CuratedRegistryModuleContext extends BaseRegistryModuleContext { + constructor( + public readonly params: NodeOperatorModuleParams, + protected readonly stakingRouter: ethers.Contract, + ) { + super( + params, + getEventsOfNoticeForStakingModule({ + ...params, + }), + stakingRouter, + ); + } + + async fetchOperatorName(operatorId: string, block: number): Promise { + const nodeOperatorsRegistry = new ethers.Contract( + this.params.moduleAddress, + NODE_OPERATORS_REGISTRY_ABI, + ethersProvider, + ); + const { name } = await nodeOperatorsRegistry.getNodeOperator( + operatorId, + true, + { blockTag: block }, + ); + return name; + } +} diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/utils.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/events-of-notice.ts similarity index 61% rename from ethereum-validators-set/src/subagents/node-operators-registry/utils.ts rename to ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/events-of-notice.ts index 40f11062f..d79e906a0 100644 --- a/ethereum-validators-set/src/subagents/node-operators-registry/utils.ts +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/curated/events-of-notice.ts @@ -1,14 +1,9 @@ import { FindingSeverity } from "forta-agent"; import BigNumber from "bignumber.js"; -import { etherscanAddress } from "../../common/utils"; -import { ETH_DECIMALS } from "../../common/constants"; - -interface StakingModule { - moduleId: number; - moduleAddress: string; - alertPrefix: string; - moduleName: string; -} +import { etherscanAddress } from "../../../../common/utils"; +import { ETH_DECIMALS } from "../../../../common/constants"; +import { NodeOperatorFullInfo } from "../../../../common/staking-modules/interfaces"; +import { StakingModule } from "../interfaces"; export const getEventsOfNoticeForStakingModule = ( stakingModule: StakingModule, @@ -18,13 +13,18 @@ export const getEventsOfNoticeForStakingModule = ( { address: moduleAddress, event: - "event TargetValidatorsCountChanged(uint256 indexed nodeOperatorId, uint256 targetValidatorsCount)", + "event TargetValidatorsCountChanged(uint256 indexed nodeOperatorId, uint256 targetValidatorsCount, uint256 targetLimitMode)", alertId: `${alertPrefix}NODE-OPERATOR-TARGET-VALIDATORS-COUNT-CHANGED`, - name: `⚠️ ${moduleName} NO Registry: Node operator target validators count changed`, + name: `⚠️ ${moduleName}: Node operator target validators count changed`, description: (args: any) => - `${moduleName} module ` + + `${moduleName} ` + `Node operator ${args.nodeOperatorId} ` + - `target validators count changed to ${args.targetValidatorsCount}`, + `target validators count changed to ${args.targetValidatorsCount}` + + `${ + args.targetLimitMode + ? " with targetLimitMode = " + args.targetLimitMode + : "" + }`, severity: FindingSeverity.Medium, }, { @@ -32,9 +32,9 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorAdded(uint256 nodeOperatorId, string name, address rewardAddress, uint64 stakingLimit)", alertId: `${alertPrefix}NODE-OPERATOR-ADDED`, - name: `ℹ️ ${moduleName} NO Registry: Node operator added`, + name: `ℹ️ ${moduleName}: Node operator added`, description: (args: any) => - `${moduleName} module ` + + `${moduleName} ` + `Node operator ${args.nodeOperatorId} added\n` + `Name: ${args.name}\n` + `Reward address: ${etherscanAddress(args.rewardAddress)}\n` + @@ -46,12 +46,12 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorActiveSet(uint256 indexed nodeOperatorId, bool active)", alertId: `${alertPrefix}NODE-OPERATOR-ACTIVE-SET`, - name: `ℹ️ ${moduleName} NO Registry: Node operator active set`, - description: (args: any, names: Map) => - `${moduleName} module ` + - `Node operator [${args.nodeOperatorId} ${names.get( - Number(args.nodeOperatorId), - )}] active status set to ${args.active}`, + name: `ℹ️ ${moduleName}: Node operator active set`, + description: (args: any, names: Map) => + `${moduleName} ` + + `Node operator [${args.nodeOperatorId} ${ + names.get(Number(args.nodeOperatorId))?.name + }] active status set to ${args.active}`, severity: FindingSeverity.Info, }, { @@ -59,12 +59,12 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorNameSet(uint256 indexed nodeOperatorId, string name)", alertId: `${alertPrefix}NODE-OPERATOR-NAME-SET`, - name: `ℹ️ ${moduleName} NO Registry: Node operator name set`, - description: (args: any, names: Map) => - `${moduleName} module ` + - `Node operator [${args.nodeOperatorId} ${names.get( - Number(args.nodeOperatorId), - )}] name set to ${args.name}`, + name: `ℹ️ ${moduleName}: Node operator name set`, + description: (args: any, names: Map) => + `${moduleName} ` + + `Node operator [${args.nodeOperatorId} ${ + names.get(Number(args.nodeOperatorId))?.name + }] name set to ${args.name}`, severity: FindingSeverity.Info, }, { @@ -72,12 +72,12 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorRewardAddressSet(uint256 indexed nodeOperatorId, address rewardAddress)", alertId: `${alertPrefix}NODE-OPERATOR-REWARD-ADDRESS-SET`, - name: `ℹ️ ${moduleName} NO Registry: Node operator reward address set`, - description: (args: any, names: Map) => - `${moduleName} module ` + - `Node operator [${args.nodeOperatorId} ${names.get( - Number(args.nodeOperatorId), - )}] reward address set to ${etherscanAddress(args.rewardAddress)}`, + name: `ℹ️ ${moduleName}: Node operator reward address set`, + description: (args: any, names: Map) => + `${moduleName} ` + + `Node operator [${args.nodeOperatorId} ${ + names.get(Number(args.nodeOperatorId))?.name + }] reward address set to ${etherscanAddress(args.rewardAddress)}`, severity: FindingSeverity.Info, }, { @@ -85,19 +85,19 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorTotalKeysTrimmed(uint256 indexed nodeOperatorId, uint64 totalKeysTrimmed)", alertId: `${alertPrefix}NODE-OPERATOR-KEYS-TRIMMED`, - name: `⚠️ ${moduleName} NO Registry: Node operator total keys trimmed`, - description: (args: any, names: Map) => - `${moduleName} module ` + - `Node operator [${args.nodeOperatorId}: ${names.get( - Number(args.nodeOperatorId), - )}] total keys trimmed ${args.totalKeysTrimmed}`, + name: `⚠️ ${moduleName}: Node operator total keys trimmed`, + description: (args: any, names: Map) => + `${moduleName} ` + + `Node operator [${args.nodeOperatorId}: ${ + names.get(Number(args.nodeOperatorId))?.name + }] total keys trimmed ${args.totalKeysTrimmed}`, severity: FindingSeverity.Info, }, { address: moduleAddress, event: "event StakingModuleTypeSet(bytes32 moduleType)", alertId: `${alertPrefix}STAKING-MODULE-TYPE-SET`, - name: `⚠️ ${moduleName} NO Registry: Staking module type set`, + name: `⚠️ ${moduleName}: Staking module type set`, description: (args: any) => `Staking module type set to ${args.moduleType}`, severity: FindingSeverity.Info, @@ -106,7 +106,7 @@ export const getEventsOfNoticeForStakingModule = ( address: moduleAddress, event: "event LocatorContractSet(address locatorAddress)", alertId: `${alertPrefix}NOR-LOCATOR-CONTRACT-SET`, - name: `⚠️ ${moduleName} NO Registry: Locator contract set`, + name: `⚠️ ${moduleName}: Locator contract set`, description: (args: any) => `Locator contract set to ${etherscanAddress(args.locatorAddress)}`, severity: FindingSeverity.High, @@ -115,7 +115,7 @@ export const getEventsOfNoticeForStakingModule = ( address: moduleAddress, event: "event StuckPenaltyDelayChanged(uint256 stuckPenaltyDelay)", alertId: `${alertPrefix}NOR-STUCK-PENALTY-DELAY-CHANGED`, - name: `⚠️ ${moduleName} NO Registry: Stuck penalty delay changed`, + name: `⚠️ ${moduleName}: Stuck penalty delay changed`, description: (args: any) => `Stuck penalty delay changed to ${args.stuckPenaltyDelay}`, severity: FindingSeverity.High, @@ -125,9 +125,9 @@ export const getEventsOfNoticeForStakingModule = ( event: "event NodeOperatorPenalized(address indexed recipientAddress, uint256 sharesPenalizedAmount)", alertId: `${alertPrefix}NOR-NODE-OPERATOR-PENALIZED`, - name: `⚠️ ${moduleName} NO Registry: Node operator penalized`, + name: `⚠️ ${moduleName}: Node operator penalized`, description: (args: any) => - `${moduleName} module ` + + `${moduleName} ` + `Node operator ${etherscanAddress( args.recipientAddress, )} penalized with ${new BigNumber(args.sharesPenalizedAmount.toString()) diff --git a/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/interfaces.ts b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/interfaces.ts new file mode 100644 index 000000000..f3ed6cfe5 --- /dev/null +++ b/ethereum-validators-set/src/subagents/node-operators-registry/staking-modules/interfaces.ts @@ -0,0 +1,33 @@ +import { FindingSeverity } from "forta-agent"; +import { NodeOperatorFullInfo } from "../../../common/staking-modules/interfaces"; + +export interface NodeOperatorShortDigest { + stuck: number; + refunded: number; + exited: number; + isStuckRefunded: boolean; + stuckPenaltyEndTimestamp: number; +} + +export interface EventsOfNotice { + address: string; + event: string; + alertId: string; + description: (args: any, names: Map) => string; + severity: FindingSeverity; +} + +export interface NodeOperatorModuleParams { + moduleId: number; + moduleAddress: string; + alertPrefix: string; + moduleName: string; + setVettedValidatorsLimitsAddress?: string; +} + +export interface StakingModule { + moduleId: number; + moduleAddress: string; + alertPrefix: string; + moduleName: string; +} diff --git a/ethereum-validators-set/src/subagents/sanity-checker/constants.ts b/ethereum-validators-set/src/subagents/sanity-checker/constants.ts index ced245372..6d2e9fb21 100644 --- a/ethereum-validators-set/src/subagents/sanity-checker/constants.ts +++ b/ethereum-validators-set/src/subagents/sanity-checker/constants.ts @@ -3,8 +3,10 @@ import { ORACLE_REPORT_SANITY_CHECKER_ADDRESS as checkerAddress } from "../../co export const ORACLE_REPORT_SANITY_CHECKER_ADDRESS = checkerAddress; export const ORACLE_REPORT_SANITY_CHECKER_LIMITS_EVENTS = { - "event ChurnValidatorsPerDayLimitSet(uint256 churnValidatorsPerDayLimit)": - "churnValidatorsPerDayLimit", + "event ExitedValidatorsPerDayLimitSet(uint256 exitedValidatorsPerDayLimit)": + "exitedValidatorsPerDayLimit", + "event AppearedValidatorsPerDayLimitSet(uint256 appearedValidatorsPerDayLimit)": + "appearedValidatorsPerDayLimit", "event OneOffCLBalanceDecreaseBPLimitSet(uint256 oneOffCLBalanceDecreaseBPLimit)": "oneOffCLBalanceDecreaseBPLimit", "event AnnualBalanceIncreaseBPLimitSet(uint256 annualBalanceIncreaseBPLimit)": @@ -21,4 +23,10 @@ export const ORACLE_REPORT_SANITY_CHECKER_LIMITS_EVENTS = { "requestTimestampMargin", "event MaxPositiveTokenRebaseSet(uint256 maxPositiveTokenRebase)": "maxPositiveTokenRebase", + "event InitialSlashingAmountSet(uint256 initialSlashingAmountPWei)": + "initialSlashingAmountPWei", + "event InactivityPenaltiesAmountSet(uint256 inactivityPenaltiesAmountPWei)": + "inactivityPenaltiesAmountPWei", + "event CLBalanceOraclesErrorUpperBPLimitSet(uint256 clBalanceOraclesErrorUpperBPLimit)": + "clBalanceOraclesErrorUpperBPLimit", }; diff --git a/ethereum-validators-set/src/subagents/set-ops/agent-set-ops.ts b/ethereum-validators-set/src/subagents/set-ops/agent-set-ops.ts index 5a4cbb61e..6d49cdf97 100644 --- a/ethereum-validators-set/src/subagents/set-ops/agent-set-ops.ts +++ b/ethereum-validators-set/src/subagents/set-ops/agent-set-ops.ts @@ -29,11 +29,11 @@ const { MEV_RELAY_COUNT_THRESHOLD_INFO, MEV_RELAY_COUNT_REPORT_WINDOW, MEV_ALLOWED_LIST_ADDRESS, - STAKING_MODULES, MIN_AVAILABLE_KEYS_COUNT, MEV_ALLOWED_LIST_EVENTS_OF_NOTICE, BLOCK_CHECK_INTERVAL, STAKING_ROUTER_ADDRESS, + CSM_NODE_OPERATOR_REGISTRY_MODULE_ID, } = requireWithTier( module, "./constants", @@ -67,27 +67,19 @@ export async function initialize( STAKING_ROUTER_ABI, ethersProvider, ); - const moduleIds: { stakingModuleIds: BigNumber[] } = - await stakingRouter.functions.getStakingModuleIds({ - blockTag: currentBlock, - }); + + const [modules] = await stakingRouter.functions.getStakingModules({ + blockTag: currentBlock, + }); stakingModulesOperatorRegistry.length = 0; - for (const { - moduleId, - moduleAddress, - moduleName, - alertPrefix, - } of STAKING_MODULES) { - if (!moduleAddress) { - console.log(`${moduleName} is not supported on this network for ${name}`); - continue; - } + for (const { id, stakingModuleAddress, name } of modules) { + const moduleId = id as number; + const moduleName = name as string; + const moduleAddress = (stakingModuleAddress as string).toLowerCase(); + const alertPrefix = `${moduleName.replace(" ", "-").toUpperCase()}-`; - const moduleExists = moduleIds.stakingModuleIds.some( - (stakingModuleId) => stakingModuleId.toString() === moduleId.toString(), - ); - if (!moduleExists) { + if (moduleId === CSM_NODE_OPERATOR_REGISTRY_MODULE_ID) { continue; } diff --git a/ethereum-validators-set/src/subagents/set-ops/constants.holesky.ts b/ethereum-validators-set/src/subagents/set-ops/constants.holesky.ts index da4153cb7..e6c9618fa 100644 --- a/ethereum-validators-set/src/subagents/set-ops/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/set-ops/constants.holesky.ts @@ -32,6 +32,9 @@ export const ENS_BASE_REGISTRAR_ADDRESS = ensRegistrarAddress; export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = curatedNorAddress; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = simpleDvtNorAddress; export const STAKING_ROUTER_ADDRESS = srAddress; +export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; +export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 4; export const MEV_ALLOWED_LIST_EVENTS_OF_NOTICE = mevAllowedListEvents.map( (event) => ({ @@ -41,16 +44,19 @@ export const MEV_ALLOWED_LIST_EVENTS_OF_NOTICE = mevAllowedListEvents.map( ); export const STAKING_MODULES: { + moduleId: number; moduleAddress: string; moduleName: string; alertPrefix: string; }[] = [ { + moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, moduleName: "Curated", alertPrefix: "", }, { + moduleId: SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID, moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, moduleName: "SimpleDVT", alertPrefix: "SDVT-", diff --git a/ethereum-validators-set/src/subagents/set-ops/constants.ts b/ethereum-validators-set/src/subagents/set-ops/constants.ts index c18fb625a..142497414 100644 --- a/ethereum-validators-set/src/subagents/set-ops/constants.ts +++ b/ethereum-validators-set/src/subagents/set-ops/constants.ts @@ -39,6 +39,7 @@ export const CURATED_NODE_OPERATORS_REGISTRY_ADDRESS = curatedNorAddress; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS = simpleDvtNorAddress; export const CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID = 1; export const SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; +export const CSM_NODE_OPERATOR_REGISTRY_MODULE_ID = 3; export const STAKING_ROUTER_ADDRESS = srAddress; export const MIN_AVAILABLE_KEYS_COUNT = 1000; @@ -99,23 +100,3 @@ export const MEV_ALLOWED_LIST_EVENTS_OF_NOTICE = [ severity: FindingSeverity.High, }, ]; - -export const STAKING_MODULES: { - moduleId: number; - moduleAddress: string; - moduleName: string; - alertPrefix: string; -}[] = [ - { - moduleId: CURATED_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: CURATED_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "Curated", - alertPrefix: "", - }, - { - moduleId: SIMPLE_DVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; diff --git a/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.spec.ts b/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.spec.ts new file mode 100644 index 000000000..183b62834 --- /dev/null +++ b/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.spec.ts @@ -0,0 +1,191 @@ +import { handleCreateObolLidoSplitEvent } from "./agent-splitter-wrapper"; +import { ARAGON_AGENT_ADDRESS } from "./constants"; + +const splitWalletContract = { + filters: { + CreateSplit: jest.fn(), + }, + queryFilter: jest.fn(), +} as any; + +const createSplitWalletIface = { + decodeFunctionData: jest.fn(), +} as any; + +describe("handleCreateObolLidoSplitEvent", () => { + const splitWalletAddress = "0x123"; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it("should return null when all conditions are met", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + ["0xacc1", "0xacc2"], + [500000, 500000], + 0, // distributorFee === 0 + "0x00", // controller.isZero() === true + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toBeNull(); + }); + + it("should return splitWalletParams when total percent allocations is not 1e6", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + ["0xacc1", "0xacc2"], + [400000, 500000], + 0, + "0x00", + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toEqual({ + accounts: ["0xacc1", "0xacc2"], + percentAllocations: [400000, 500000], + distributorFee: 0, + controller: "0x00", + }); + }); + + it("should return splitWalletParams when distributorFee is not 0", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + ["0xacc1", "0xacc2"], + [500000, 500000], + 100, + "0x00", + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toEqual({ + accounts: ["0xacc1", "0xacc2"], + percentAllocations: [500000, 500000], + distributorFee: 100, + controller: "0x00", + }); + }); + + it("should return splitWalletParams when controller is not zero", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + ["0xacc1", "0xacc2"], + [500000, 500000], + 0, + "0x01", + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toEqual({ + accounts: ["0xacc1", "0xacc2"], + percentAllocations: [500000, 500000], + distributorFee: 0, + controller: "0x01", + }); + }); + + it("should return null when percentAllocations consists of 7 elements and is evenly distributed", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + ["0xacc1", "0xacc2", "0xacc3", "0xacc4", "0xacc5", "0xacc6", "0xacc7"], + [142857, 142857, 142857, 142857, 142857, 142857, 142858], + 0, // distributorFee === 0 + "0x00", // controller.isZero() === true + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toBeNull(); + }); + + it("should return null when ARAGON_AGENT_ADDRESS has 250000 and the total is 1e6 with specific distribution", async () => { + const createdSplitMock = { + getTransaction: jest.fn().mockResolvedValue({ + data: "0xdata", + }), + }; + + splitWalletContract.filters.CreateSplit.mockReturnValue("filter"); + splitWalletContract.queryFilter.mockResolvedValue([createdSplitMock]); + createSplitWalletIface.decodeFunctionData.mockReturnValue([ + [ + "0xacc1", + ARAGON_AGENT_ADDRESS, + "0xacc3", + "0xacc4", + "0xacc5", + "0xacc6", + "0xacc7", + "0xacc8", + ], + [107143, 250000, 107143, 107143, 107143, 107143, 107143, 107142], + 0, // distributorFee === 0 + "0x00", // controller.isZero() === true + ]); + + const result = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); + + expect(result).toBeNull(); + }); +}); diff --git a/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.ts b/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.ts index 77ecc6e5a..035ab7f14 100644 --- a/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.ts +++ b/ethereum-validators-set/src/subagents/splitter-wrapper/agent-splitter-wrapper.ts @@ -9,8 +9,27 @@ import { getFindingOfBadSplitWalletParams, SplitWalletParams } from "./utils"; export const name = "SplitterWrapper"; -const { OBOL_LIDO_SPLIT_FACTORY_CLUSTERS, SPLIT_MAIN_0XSPLIT_ADDRESS } = - requireWithTier(module, `./constants`, RedefineMode.Merge); +const { + OBOL_LIDO_SPLIT_FACTORY_CLUSTERS, + SPLIT_MAIN_0XSPLIT_ADDRESS, + ARAGON_AGENT_ADDRESS, +} = requireWithTier( + module, + `./constants`, + RedefineMode.Merge, +); + +const clusterSplitWalletFactories: ObolLidoSplitFactoryCluster[] = []; + +const createSplitWalletIface = new ethers.utils.Interface([ + "function createSplit(address[] accounts,uint32[] percentAllocations,uint32 distributorFee,address controller)", +]); + +const splitWalletContract = new ethers.Contract( + SPLIT_MAIN_0XSPLIT_ADDRESS, + SPLIT_MAIN_ABI, + ethersProvider, +); class ObolLidoSplitFactoryCluster { public readonly contract: ethers.Contract; @@ -44,8 +63,11 @@ class ObolLidoSplitFactoryCluster { continue; } - const malformedSplitWalletParams = - await handleCreateObolLidoSplitEvent(splitWalletAddress); + const malformedSplitWalletParams = await handleCreateObolLidoSplitEvent( + splitWalletAddress, + splitWalletContract, + createSplitWalletIface, + ); if (malformedSplitWalletParams) { findings.push( getFindingOfBadSplitWalletParams( @@ -61,18 +83,6 @@ class ObolLidoSplitFactoryCluster { } } -const clusterSplitWalletFactories: ObolLidoSplitFactoryCluster[] = []; - -const createSplitWalletIface = new ethers.utils.Interface([ - "function createSplit(address[] accounts,uint32[] percentAllocations,uint32 distributorFee,address controller)", -]); - -const splitWalletContract = new ethers.Contract( - SPLIT_MAIN_0XSPLIT_ADDRESS, - SPLIT_MAIN_ABI, - ethersProvider, -); - export async function initialize( currentBlock: number, ): Promise<{ [key: string]: string }> { @@ -100,8 +110,10 @@ export async function handleTransaction(txEvent: TransactionEvent) { return findings.flat(); } -async function handleCreateObolLidoSplitEvent( +export async function handleCreateObolLidoSplitEvent( splitWalletAddress: string, + splitWalletContract: ethers.Contract, + createSplitWalletIface: ethers.utils.Interface, ): Promise { const filterCreateSplit = splitWalletContract.filters.CreateSplit(splitWalletAddress); @@ -132,9 +144,24 @@ async function handleCreateObolLidoSplitEvent( return splitWalletParams; } - if (totalPercent % accounts.length === 0) { - const is100percent = percentAllocations.some( - (percent) => percentAllocations[0] !== percent, + const hasException = accounts.includes(ARAGON_AGENT_ADDRESS); + + if (hasException) { + const nonAgentAllocations = accounts + .map((account, index) => + account === ARAGON_AGENT_ADDRESS ? 0 : percentAllocations[index], + ) + .reduce((acc, percent) => acc + percent, 0); + + if ( + nonAgentAllocations !== + 1e6 - percentAllocations[accounts.indexOf(ARAGON_AGENT_ADDRESS)] + ) { + return splitWalletParams; + } + } else if (totalPercent % accounts.length === 0) { + const is100percent = percentAllocations.every( + (percent) => percentAllocations[0] === percent, ); if (!is100percent) { return splitWalletParams; diff --git a/ethereum-validators-set/src/subagents/splitter-wrapper/constants.holesky.ts b/ethereum-validators-set/src/subagents/splitter-wrapper/constants.holesky.ts index c8d74e255..435e188ac 100644 --- a/ethereum-validators-set/src/subagents/splitter-wrapper/constants.holesky.ts +++ b/ethereum-validators-set/src/subagents/splitter-wrapper/constants.holesky.ts @@ -4,6 +4,7 @@ import { SPLIT_MAIN_0XSPLIT_ADDRESS as splitMainAddress, SPLIT_WALLET_FACTORY_OBOL_CLUSTER_ADDRESS as splitWalletFactoryObolClusterAddress, SPLIT_WALLET_FACTORY_SSV_CLUSTER_ADDRESS as splitWalletFactorySsvClusterAddress, + ARAGON_AGENT_ADDRESS as aragonAclAddress, } from "../../common/constants.holesky"; export const SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID = 2; @@ -14,15 +15,7 @@ export const SPLIT_WALLET_FACTORY_OBOL_CLUSTER_ADDRESS = splitWalletFactoryObolClusterAddress; export const SPLIT_WALLET_FACTORY_SSV_CLUSTER_ADDRESS = splitWalletFactorySsvClusterAddress; - -export const STAKING_MODULES = [ - { - moduleId: SIMPLEDVT_NODE_OPERATOR_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; +export const ARAGON_AGENT_ADDRESS = aragonAclAddress; export const OBOL_LIDO_SPLIT_FACTORY_CLUSTERS = [ { diff --git a/ethereum-validators-set/src/subagents/splitter-wrapper/constants.ts b/ethereum-validators-set/src/subagents/splitter-wrapper/constants.ts index 4ef531f68..26c4128a8 100644 --- a/ethereum-validators-set/src/subagents/splitter-wrapper/constants.ts +++ b/ethereum-validators-set/src/subagents/splitter-wrapper/constants.ts @@ -4,6 +4,7 @@ import { SPLIT_MAIN_0XSPLIT_ADDRESS as splitMainAddress, SPLIT_WALLET_FACTORY_OBOL_CLUSTER_ADDRESS as splitWalletFactoryObolClusterAddress, SPLIT_WALLET_FACTORY_SSV_CLUSTER_ADDRESS as splitWalletFactorySsvClusterAddress, + ARAGON_AGENT_ADDRESS as aragonAclAddress, } from "../../common/constants"; export const SIMPLEDVT_NODE_OPERATORS_REGISTRY_MODULE_ID = null; @@ -14,19 +15,11 @@ export const SPLIT_WALLET_FACTORY_OBOL_CLUSTER_ADDRESS = splitWalletFactoryObolClusterAddress; export const SPLIT_WALLET_FACTORY_SSV_CLUSTER_ADDRESS = splitWalletFactorySsvClusterAddress; +export const ARAGON_AGENT_ADDRESS = aragonAclAddress; export const NODE_OPERATOR_REWARD_ADDRESS_SET_EVENT = "event NodeOperatorRewardAddressSet(uint256 indexed nodeOperatorId, address rewardAddress)"; -export const STAKING_MODULES = [ - { - moduleId: SIMPLEDVT_NODE_OPERATORS_REGISTRY_MODULE_ID, - moduleAddress: SIMPLEDVT_NODE_OPERATORS_REGISTRY_ADDRESS, - moduleName: "SimpleDVT", - alertPrefix: "SDVT-", - }, -]; - export const OBOL_LIDO_SPLIT_FACTORY_CLUSTERS = [ { clusterName: "OBOL", diff --git a/ethereum-validators-set/src/subagents/staking-router/constants.ts b/ethereum-validators-set/src/subagents/staking-router/constants.ts index 7563f6626..5b09a2c9d 100644 --- a/ethereum-validators-set/src/subagents/staking-router/constants.ts +++ b/ethereum-validators-set/src/subagents/staking-router/constants.ts @@ -55,6 +55,30 @@ export const STAKING_ROUTER_EVENTS_OF_NOTICE = [ `Staking module ID: ${args.stakingModuleId}\nUnreported exited validators count: ${args.unreportedExitedValidatorsCount}`, severity: FindingSeverity.High, }, + { + address: STAKING_ROUTER_ADDRESS, + event: + "event StakingModuleMaxDepositsPerBlockSet(uint256 indexed stakingModuleId, uint256 maxDepositsPerBlock, address setBy)", + alertId: "STAKING-ROUTER-MODULE-MAX-DEPOSITS-PER-BLOCK-SET", + name: "⚠️ Staking Router: staking module max deposits per block set", + description: (args: any) => + `ID: ${args.stakingModuleId}\nMax deposits per block: ${ + args.maxDepositsPerBlock + }\nSet by: ${etherscanAddress(args.setBy)}`, + severity: FindingSeverity.High, + }, + { + address: STAKING_ROUTER_ADDRESS, + event: + "event StakingModuleMinDepositBlockDistanceSet(uint256 indexed stakingModuleId, uint256 minDepositBlockDistance, address setBy)", + alertId: "STAKING-ROUTER-MODULE-MIN-DEPOSIT-BLOCK-DISTANCE-SET", + name: "⚠️ Staking Router: staking module min deposit block distance set", + description: (args: any) => + `ID: ${args.stakingModuleId}\nMin deposit block distance set: ${ + args.minDepositBlockDistance + }\nSet by: ${etherscanAddress(args.setBy)}`, + severity: FindingSeverity.High, + }, { address: STAKING_ROUTER_ADDRESS, event: @@ -84,12 +108,14 @@ export const STAKING_ROUTER_EVENTS_OF_NOTICE = [ { address: STAKING_ROUTER_ADDRESS, event: - "event StakingModuleTargetShareSet(uint256 indexed stakingModuleId, uint256 targetShare, address setBy)", + "event StakingModuleShareLimitSet(uint256 indexed stakingModuleId, uint256 stakeShareLimit, uint256 priorityExitShareThreshold, address setBy)", alertId: "STAKING-ROUTER-MODULE-TARGET-SHARE-SET", - name: "⚠️ Staking Router: staking module target share set", + name: "⚠️ Staking Router: staking module share limit set", description: (args: any) => - `ID: ${args.stakingModuleId}\nTarget share: ${ - args.targetShare + `ID: ${args.stakingModuleId}\n Stake share limit: ${ + args.stakeShareLimit + }\nPriority exit share threshold: ${ + args.priorityExitShareThreshold }\nSet by: ${etherscanAddress(args.setBy)}`, severity: FindingSeverity.High, }, diff --git a/ethereum-validators-set/yarn.lock b/ethereum-validators-set/yarn.lock index 35381c316..cdafb510a 100644 --- a/ethereum-validators-set/yarn.lock +++ b/ethereum-validators-set/yarn.lock @@ -3017,10 +3017,10 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -prettier@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" - integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== +prettier@^3.2.5: + version "3.3.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105" + integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" diff --git a/l2-bridge-arbitrum/.dockerignore b/l2-bridge-arbitrum/.dockerignore deleted file mode 100644 index 4514cae5a..000000000 --- a/l2-bridge-arbitrum/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.yarn/ -!.yarn/releases/ -dist/ -forta.config.json diff --git a/l2-bridge-arbitrum/.env.sample b/l2-bridge-arbitrum/.env.sample deleted file mode 100644 index 9593fcda2..000000000 --- a/l2-bridge-arbitrum/.env.sample +++ /dev/null @@ -1,15 +0,0 @@ -APP_NAME=l2-bridge-arbitrum -INSTANCE=forta - -HTTP_PORT=3000 -LOG_FORMAT=simple -LOG_LEVEL=debug -ETHEREUM_RPC_URL=https://eth.drpc.com -ARBITRUM_RPC_URL=https://arbitrum.drpc.com - -USE_FORTA_RPC_URL=true - -## FORTA compatible env names -NODE_ENV=local -AGENT_GRPC_PORT=50051 -FORTA_CHAIN_ID=42161 \ No newline at end of file diff --git a/l2-bridge-arbitrum/.eslintignore b/l2-bridge-arbitrum/.eslintignore deleted file mode 100644 index a096acf71..000000000 --- a/l2-bridge-arbitrum/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/l2-bridge-arbitrum/.eslintrc.json b/l2-bridge-arbitrum/.eslintrc.json deleted file mode 100644 index 1262ce136..000000000 --- a/l2-bridge-arbitrum/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error", - "semi": "off" - } -} diff --git a/l2-bridge-arbitrum/.gitignore b/l2-bridge-arbitrum/.gitignore deleted file mode 100644 index e498c8f4d..000000000 --- a/l2-bridge-arbitrum/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -/coverage/ - -tools/vendor -bin - -.env \ No newline at end of file diff --git a/l2-bridge-arbitrum/.prettierignore b/l2-bridge-arbitrum/.prettierignore deleted file mode 100644 index a096acf71..000000000 --- a/l2-bridge-arbitrum/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/l2-bridge-arbitrum/.prettierrc.json b/l2-bridge-arbitrum/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/l2-bridge-arbitrum/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/l2-bridge-arbitrum/Dockerfile b/l2-bridge-arbitrum/Dockerfile deleted file mode 100644 index 24fe2097c..000000000 --- a/l2-bridge-arbitrum/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.15.0-alpine3.20 AS base - -RUN apk add --no-cache g++=13.2.1_git20240309-r0 make=4.4.1-r2 - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" - -ENV APP_NAME=l2-bridge-arbitrum -ENV NODE_ENV=production -ENV ETHEREUM_RPC_URL=https://eth.drpc.org -ENV ARBITRUM_RPC_URL=https://arbitrum.drpc.org - -ENV AGENT_GRPC_PORT=50051 -ENV HTTP_PORT=3000 -ENV LOG_FORMAT=simple -ENV LOG_LEVEL=info -ENV INSTANCE=forta -ENV USE_FORTA_RPC_URL=true - -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:docker:prod"] \ No newline at end of file diff --git a/l2-bridge-arbitrum/Makefile b/l2-bridge-arbitrum/Makefile deleted file mode 100644 index 8b12e9335..000000000 --- a/l2-bridge-arbitrum/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Makefile - -.PHONY: gen_proto_prod -gen_proto_prod: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./dist/generated/proto \ - --grpc_out=grpc_js:./dist/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - -I ./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_js -gen_js: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./src/generated/proto \ - --grpc_out=grpc_js:./src/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_ts -gen_ts: - # generate d.ts codes - yarn grpc_tools_node_protoc \ - --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts \ - --ts_out=grpc_js:./src/generated/proto \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -tools: - cd tools && go mod tidy && go mod vendor && go mod verify && go generate -tags tools -.PHONY: tools - -.PHONY: check_alerts_syntax -check_alerts_syntax: - ./bin/promtool check rules ./alerts.yml - -.PHONY: test_alerts -test_alerts: - bin/promtool test rules ./alerts_tests.yml \ No newline at end of file diff --git a/l2-bridge-arbitrum/README.md b/l2-bridge-arbitrum/README.md deleted file mode 100644 index 6fbf554ed..000000000 --- a/l2-bridge-arbitrum/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Lido Detection Bot for Arbitrum part of L2 bridge - -## Supported chains - -- Arbitrum - -## Alerts - -1. Bridge events - 1. 🚨🚨🚨 Arbitrum bridge wstETH:stEth balance mismatch - 2. 🚨🚨🚨 Arbitrum bridge LDO balance mismatch - 3. 🚨 Arbitrum L2 Bridge: Deposits Disabled - 4. 🚨 Arbitrum L2 Bridge: Role Admin changed - 5. 🚨 Arbitrum L2 Bridge: Withdrawals Disabled - 6. ⚠️ Arbitrum L2 Bridge: Role granted - 7. ⚠️ Arbitrum L2 Bridge: Role revoked - 8. ℹ️ Arbitrum L2 Bridge: Deposits Enabled - 9. ℹ️ Arbitrum L2 Bridge: Withdrawals Enabled -2. Gov Events - 1. 🚨 Arbitrum Gov Bridge: Ethereum Governance Executor Updated - 2. 🚨 Arbitrum Gov Bridge: Guardian Updated - 3. ⚠️ Arbitrum Gov Bridge: Delay Updated - 4. ⚠️ Arbitrum Gov Bridge: Grace Period Updated - 5. ⚠️ Arbitrum Gov Bridge: Min Delay Updated - 6. ⚠️ Arbitrum Gov Bridge: Max Delay Updated - 7. ℹ️ Arbitrum Gov Bridge: Action set queued - 8. ℹ️ Arbitrum Gov Bridge: Action set executed - 9. ℹ️ Arbitrum Gov Bridge: Action set canceled -3. Proxy events - 1. 🚨 Arbitrum: Proxy ossified - 2. 🚨 Arbitrum: Proxy admin changed - 3. 🚨 Arbitrum: Proxy implementation changed - 4. 🚨 Arbitrum: Proxy upgraded - 5. 🚨 Arbitrum: Proxy beacon upgraded -4. Monitor Withdrawals - 1. ⚠️ Arbitrum: Huge withdrawals during the last ... diff --git a/l2-bridge-arbitrum/jest.config.js b/l2-bridge-arbitrum/jest.config.js deleted file mode 100644 index 9dfeb5d27..000000000 --- a/l2-bridge-arbitrum/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['dist'], -} diff --git a/l2-bridge-arbitrum/package.json b/l2-bridge-arbitrum/package.json deleted file mode 100644 index b714feda1..000000000 --- a/l2-bridge-arbitrum/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "lido-l2-bridge-arbitrum-bot", - "version": "0.0.1", - "description": "Lido Detection Bot for Arbitrum part of L2 bridge", - "chainIds": [ - 42161 - ], - "chainSettings": { - "default": { - "shards": 1, - "target": 5 - } - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "build": "tsc && yarn run copy-version && mkdir dist/generated/proto && make gen_proto_prod", - "copy-version": "cp version.json dist", - "start": "ts-node src/main.ts", - "start:prod": "node dist/main.js", - "start:docker:prod": "node src/main.js", - "push": "yarn run update-version && forta-agent push", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated/typechain ./src/brief/abi/*", - "generate-proto": "make gen_ts && make gen_js", - "eslint:lint": "eslint ./src", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src README.md", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types && yarn generate-proto" - }, - "dependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@grpc/grpc-js": "^1.10.2", - "@types/lodash": "^4.14.202", - "@types/node": "^20.14.2", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "dotenv": "^16.4.5", - "ethers": "^5.5.1", - "express": "^4.19.2", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "lodash": "^4.17.21", - "prom-client": "^15.1.2", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@faker-js/faker": "^8.3.1", - "@jest/globals": "^29.7.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.11", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "grpc-tools": "^1.12.4", - "grpc_tools_node_protoc_ts": "^5.3.3", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.1.0", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.2", - "ts-node": "^10.9.2", - "typechain": "^8.3.2", - "typescript": "^5.3.2" - }, - "packageManager": "yarn@1.22.22" -} diff --git a/l2-bridge-arbitrum/src/brief/abi/ArbERC20.json b/l2-bridge-arbitrum/src/brief/abi/ArbERC20.json deleted file mode 100644 index 90534ebe1..000000000 --- a/l2-bridge-arbitrum/src/brief/abi/ArbERC20.json +++ /dev/null @@ -1,475 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeBurn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Address", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "bridgeInit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isMaster", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1Address", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Gateway", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "nonces", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "deadline", - "type": "uint256" - }, - { - "internalType": "uint8", - "name": "v", - "type": "uint8" - }, - { - "internalType": "bytes32", - "name": "r", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "s", - "type": "bytes32" - } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "transferAndCall", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/l2-bridge-arbitrum/src/brief/abi/ERC20Bridged.json b/l2-bridge-arbitrum/src/brief/abi/ERC20Bridged.json deleted file mode 100644 index 5569dc148..000000000 --- a/l2-bridge-arbitrum/src/brief/abi/ERC20Bridged.json +++ /dev/null @@ -1,350 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeBurn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "bridge_", - "type": "address" - } - ], - "name": "setBridge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/l2-bridge-arbitrum/src/brief/abi/L2ERC20TokenGateway.json b/l2-bridge-arbitrum/src/brief/abi/L2ERC20TokenGateway.json deleted file mode 100644 index f96b580ae..000000000 --- a/l2-bridge-arbitrum/src/brief/abi/L2ERC20TokenGateway.json +++ /dev/null @@ -1,798 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "L2ERC20TokenGateway", - "sourceName": "contracts/arbitrum/L2ERC20TokenGateway.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "arbSys_", - "type": "address" - }, - { - "internalType": "address", - "name": "router_", - "type": "address" - }, - { - "internalType": "address", - "name": "counterpartGateway_", - "type": "address" - }, - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "l2Token_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ErrorAccountIsZeroAddress", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorAlreadyInitialized", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL1Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL2Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWrongCrossDomainSender", - "type": "error" - }, - { - "inputs": [], - "name": "ExtraDataNotEmpty", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "DepositFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "DepositsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "DepositsEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "TxToL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "l2ToL1Id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "exitNum", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "WithdrawalInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "WithdrawalsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "WithdrawalsEnabled", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "arbSys", - "outputs": [ - { - "internalType": "contract IArbSys", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - } - ], - "name": "calculateL2TokenAddress", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "counterpartGateway", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "disableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "from_", - "type": "address" - }, - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "finalizeInboundTransfer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "from_", - "type": "address" - }, - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "name": "getOutboundCalldata", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isDepositsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isWithdrawalsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "name": "outboundTransfer", - "outputs": [ - { - "internalType": "bytes", - "name": "res", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6101206040523480156200001257600080fd5b50604051620021a6380380620021a683398101604081905262000035916200007b565b6001600160a01b03918216608052811660a05291821660c052811660e0521661010052620000eb565b80516001600160a01b03811681146200007657600080fd5b919050565b600080600080600060a086880312156200009457600080fd5b6200009f866200005e565b9450620000af602087016200005e565b9350620000bf604087016200005e565b9250620000cf606087016200005e565b9150620000df608087016200005e565b90509295509295909350565b60805160a05160c05160e0516101005161203062000176600039600081816101f6015261158001526000818161027301528181610768015261105d01526000818161059e0152610f4d0152600081816102ff0152818161083801528181610b5b0152610ff701526000818161050f015281816106e301528181610b060152610ec301526120306000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806391d14854116100f9578063c4d66de811610097578063e3b523e311610071578063e3b523e31461056a578063e8bac93b14610591578063f887ea4014610599578063fadcc54a146105c057600080fd5b8063c4d66de814610531578063d2ce7d6514610544578063d547741f1461055757600080fd5b8063a7e28d48116100d3578063a7e28d48146104e7578063ac67e1af146104fa578063ad960ce114610502578063c01e1bd61461050a57600080fd5b806391d14854146103d6578063a0c76a961461041a578063a217fddf146104df57600080fd5b8063392e53cd116101665780635e4c57a4116101405780635e4c57a4146103505780635ed2c220146103585780636f18bd22146103885780638d7601c0146103af57600080fd5b8063392e53cd146102d057806356eff267146102fa5780635777bf501461032157600080fd5b80632db09c1c116101a25780632db09c1c1461026e5780632e567b36146102955780632f2ff15d146102aa57806336568abe146102bd57600080fd5b806301ffc9a7146101c95780631057d40f146101f1578063248a9ca31461023d575b600080fd5b6101dc6101d7366004611983565b6105e7565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026061024b3660046119c5565b60009081526020819052604090206001015490565b6040519081526020016101e8565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102a86102a3366004611a49565b610680565b005b6102a86102b8366004611ace565b61091c565b6102a86102cb366004611ace565b610946565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5460ff166101dc565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff166101dc565b6102a86109fe565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff166101dc565b6102607f63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d681565b6102607f94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c81565b6101dc6103e4366004611ace565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6104d2610428366004611bc2565b506040805173ffffffffffffffffffffffffffffffffffffffff95861660248201529385166044850152919093166064830152608482019290925260a060a4820152600060c4808301919091528251808303909101815260e49091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2e567b360000000000000000000000000000000000000000000000000000000017905290565b6040516101e89190611cfe565b610260600081565b6102186104f5366004611d11565b610b02565b6102a8610b87565b6102a8610c86565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102a861053f366004611d11565b610d86565b6104d2610552366004611d2e565b610e5c565b6102a8610565366004611ace565b6111d1565b6102607f9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d81565b6102a86111f6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102607f4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061067a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff166106e0576040517fa185a6b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610766576040517ffe15603f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000003373ffffffffffffffffffffffffffffffffffffffff731111000000000000000000000000000000001111830116146107ec576040517fe36e2eb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8c2a993e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f00000000000000000000000000000000000000000000000000000000000000001690638c2a993e90604401600060405180830381600087803b15801561087c57600080fd5b505af1158015610890573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fc7f2e9c55c40a50fbc217dfc70cd39a222940dfa62145aa0ca49eb9535d4fcb28860405161090a91815260200190565b60405180910390a45050505050505050565b600082815260208190526040902060010154610937816112fc565b6109418383611309565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109fa82826113f9565b5050565b7f4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a610a28816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff1615610a89576040517f4f2c8be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560405133907fc36a428b063177e3f28b3b5d340c08f77827847b2ee30114ccf0c40e519c420a90600090a250565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b7f57507f0000000000000000000000000000000000000000000000000000000000000000919050565b506000919050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff16610be7576040517fa185a6b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6610c11816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405133907f9ca4d309bbfd23c65db3dc38c1712862f5812c7139937e2655de86e803f73bb990600090a250565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff16610ce7576040517f77d195b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c610d11816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16905560405133907f644eeba8ede48fefc32ada09fb240c5f6c0f06507ab1d296d5af41f1521d9fcb90600090a250565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba805460ff1615610de3576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dee6000836114b0565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815560405173ffffffffffffffffffffffffffffffffffffffff8316907f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e690600090a25050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5460609062010000900460ff16610ec0576040517f77d195b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f46576040517ffe15603f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fa87f000000000000000000000000000000000000000000000000000000000000000086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114ba92505050565b6040517f74f4f54700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152602482018b90529192507f0000000000000000000000000000000000000000000000000000000000000000909116906374f4f54790604401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506000611142827f000000000000000000000000000000000000000000000000000000000000000061113d8e868f8f60405180602001604052806000815250506040805173ffffffffffffffffffffffffffffffffffffffff95861660248201529385166044850152919093166064830152608482019290925260a060a4820152600060c4808301919091528251808303909101815260e49091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2e567b360000000000000000000000000000000000000000000000000000000017905290565b611540565b6040805173ffffffffffffffffffffffffffffffffffffffff8e81168252600060208301529181018c90529192508291818d16918516907f3073a74ecb728d10be779fe19a74a1428e20468f5b4d167bf9c73d9067847d739060600160405180910390a46040805160208101839052016040516020818303038152906040529350505050979650505050505050565b6000828152602081905260409020600101546111ec816112fc565b61094183836113f9565b7f9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d611220816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff1615611282576040517ff74ad25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017905560405133907fb2ed3603bd9051f0182ebfb75f12a21059b4d31b578a2a05c8d0245e9e2d320490600090a250565b6113068133611669565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109fa5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561139b3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156109fa5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6109fa8282611309565b600060603373ffffffffffffffffffffffffffffffffffffffff851614156114fa57828060200190518101906114f09190611db4565b9092509050611500565b50339050815b805115611539576040517f78b01b1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b6040517f928c169a00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063928c169a906115b79086908690600401611e41565b6020604051808303816000875af11580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa9190611e78565b9050808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2b986d32a0536b7e19baa48ab949fec7b903b7fad7730820b20632d100cc3a688560405161165a9190611cfe565b60405180910390a49392505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109fa576116bf8173ffffffffffffffffffffffffffffffffffffffff166014611739565b6116ca836020611739565b6040516020016116db929190611e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526109e791600401611cfe565b60606000611748836002611f41565b611753906002611f7e565b67ffffffffffffffff81111561176b5761176b611afe565b6040519080825280601f01601f191660200182016040528015611795576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106117cc576117cc611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061182f5761182f611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061186b846002611f41565b611876906001611f7e565b90505b6001811115611913577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106118b7576118b7611f96565b1a60f81b8282815181106118cd576118cd611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361190c81611fc5565b9050611879565b50831561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109e7565b9392505050565b60006020828403121561199557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461197c57600080fd5b6000602082840312156119d757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461130657600080fd5b60008083601f840112611a1257600080fd5b50813567ffffffffffffffff811115611a2a57600080fd5b602083019150836020828501011115611a4257600080fd5b9250929050565b60008060008060008060a08789031215611a6257600080fd5b8635611a6d816119de565b95506020870135611a7d816119de565b94506040870135611a8d816119de565b935060608701359250608087013567ffffffffffffffff811115611ab057600080fd5b611abc89828a01611a00565b979a9699509497509295939492505050565b60008060408385031215611ae157600080fd5b823591506020830135611af3816119de565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b7457611b74611afe565b604052919050565b600067ffffffffffffffff821115611b9657611b96611afe565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600080600060a08688031215611bda57600080fd5b8535611be5816119de565b94506020860135611bf5816119de565b93506040860135611c05816119de565b925060608601359150608086013567ffffffffffffffff811115611c2857600080fd5b8601601f81018813611c3957600080fd5b8035611c4c611c4782611b7c565b611b2d565b818152896020838501011115611c6157600080fd5b816020840160208301376000602083830101528093505050509295509295909350565b60005b83811015611c9f578181015183820152602001611c87565b83811115611cae576000848401525b50505050565b60008151808452611ccc816020860160208601611c84565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061197c6020830184611cb4565b600060208284031215611d2357600080fd5b813561197c816119de565b600080600080600080600060c0888a031215611d4957600080fd5b8735611d54816119de565b96506020880135611d64816119de565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115611d9557600080fd5b611da18a828b01611a00565b989b979a50959850939692959293505050565b60008060408385031215611dc757600080fd5b8251611dd2816119de565b602084015190925067ffffffffffffffff811115611def57600080fd5b8301601f81018513611e0057600080fd5b8051611e0e611c4782611b7c565b818152866020838501011115611e2357600080fd5b611e34826020830160208601611c84565b8093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611e706040830184611cb4565b949350505050565b600060208284031215611e8a57600080fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611ec9816017850160208801611c84565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611f06816028840160208801611c84565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611f7957611f79611f12565b500290565b60008219821115611f9157611f91611f12565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081611fd457611fd4611f12565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220ac372dda50088fa65ff409b460dde04c1df1ba74edb3693a1efe0971b34cd48564736f6c634300080a0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806391d14854116100f9578063c4d66de811610097578063e3b523e311610071578063e3b523e31461056a578063e8bac93b14610591578063f887ea4014610599578063fadcc54a146105c057600080fd5b8063c4d66de814610531578063d2ce7d6514610544578063d547741f1461055757600080fd5b8063a7e28d48116100d3578063a7e28d48146104e7578063ac67e1af146104fa578063ad960ce114610502578063c01e1bd61461050a57600080fd5b806391d14854146103d6578063a0c76a961461041a578063a217fddf146104df57600080fd5b8063392e53cd116101665780635e4c57a4116101405780635e4c57a4146103505780635ed2c220146103585780636f18bd22146103885780638d7601c0146103af57600080fd5b8063392e53cd146102d057806356eff267146102fa5780635777bf501461032157600080fd5b80632db09c1c116101a25780632db09c1c1461026e5780632e567b36146102955780632f2ff15d146102aa57806336568abe146102bd57600080fd5b806301ffc9a7146101c95780631057d40f146101f1578063248a9ca31461023d575b600080fd5b6101dc6101d7366004611983565b6105e7565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b61026061024b3660046119c5565b60009081526020819052604090206001015490565b6040519081526020016101e8565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102a86102a3366004611a49565b610680565b005b6102a86102b8366004611ace565b61091c565b6102a86102cb366004611ace565b610946565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5460ff166101dc565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff166101dc565b6102a86109fe565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff166101dc565b6102607f63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d681565b6102607f94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c81565b6101dc6103e4366004611ace565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b6104d2610428366004611bc2565b506040805173ffffffffffffffffffffffffffffffffffffffff95861660248201529385166044850152919093166064830152608482019290925260a060a4820152600060c4808301919091528251808303909101815260e49091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2e567b360000000000000000000000000000000000000000000000000000000017905290565b6040516101e89190611cfe565b610260600081565b6102186104f5366004611d11565b610b02565b6102a8610b87565b6102a8610c86565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102a861053f366004611d11565b610d86565b6104d2610552366004611d2e565b610e5c565b6102a8610565366004611ace565b6111d1565b6102607f9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d81565b6102a86111f6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b6102607f4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061067a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff166106e0576040517fa185a6b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610766576040517ffe15603f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000003373ffffffffffffffffffffffffffffffffffffffff731111000000000000000000000000000000001111830116146107ec576040517fe36e2eb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f8c2a993e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f00000000000000000000000000000000000000000000000000000000000000001690638c2a993e90604401600060405180830381600087803b15801561087c57600080fd5b505af1158015610890573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fc7f2e9c55c40a50fbc217dfc70cd39a222940dfa62145aa0ca49eb9535d4fcb28860405161090a91815260200190565b60405180910390a45050505050505050565b600082815260208190526040902060010154610937816112fc565b6109418383611309565b505050565b73ffffffffffffffffffffffffffffffffffffffff811633146109f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6109fa82826113f9565b5050565b7f4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a610a28816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff1615610a89576040517f4f2c8be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905560405133907fc36a428b063177e3f28b3b5d340c08f77827847b2ee30114ccf0c40e519c420a90600090a250565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b7f57507f0000000000000000000000000000000000000000000000000000000000000000919050565b506000919050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba54610100900460ff16610be7576040517fa185a6b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6610c11816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405133907f9ca4d309bbfd23c65db3dc38c1712862f5812c7139937e2655de86e803f73bb990600090a250565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff16610ce7576040517f77d195b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c610d11816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff16905560405133907f644eeba8ede48fefc32ada09fb240c5f6c0f06507ab1d296d5af41f1521d9fcb90600090a250565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba805460ff1615610de3576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dee6000836114b0565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117815560405173ffffffffffffffffffffffffffffffffffffffff8316907f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e690600090a25050565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5460609062010000900460ff16610ec0576040517f77d195b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f46576040517ffe15603f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fa87f000000000000000000000000000000000000000000000000000000000000000086868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114ba92505050565b6040517f74f4f54700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152602482018b90529192507f0000000000000000000000000000000000000000000000000000000000000000909116906374f4f54790604401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b505050506000611142827f000000000000000000000000000000000000000000000000000000000000000061113d8e868f8f60405180602001604052806000815250506040805173ffffffffffffffffffffffffffffffffffffffff95861660248201529385166044850152919093166064830152608482019290925260a060a4820152600060c4808301919091528251808303909101815260e49091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2e567b360000000000000000000000000000000000000000000000000000000017905290565b611540565b6040805173ffffffffffffffffffffffffffffffffffffffff8e81168252600060208301529181018c90529192508291818d16918516907f3073a74ecb728d10be779fe19a74a1428e20468f5b4d167bf9c73d9067847d739060600160405180910390a46040805160208101839052016040516020818303038152906040529350505050979650505050505050565b6000828152602081905260409020600101546111ec816112fc565b61094183836113f9565b7f9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d611220816112fc565b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba5462010000900460ff1615611282576040517ff74ad25400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f013e929b381f2fbbac854bd18fb8231dc73c4a2eab0d4cbb4db9436b6ff9b2ba80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff166201000017905560405133907fb2ed3603bd9051f0182ebfb75f12a21059b4d31b578a2a05c8d0245e9e2d320490600090a250565b6113068133611669565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109fa5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561139b3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156109fa5760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6109fa8282611309565b600060603373ffffffffffffffffffffffffffffffffffffffff851614156114fa57828060200190518101906114f09190611db4565b9092509050611500565b50339050815b805115611539576040517f78b01b1e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5092915050565b6040517f928c169a00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063928c169a906115b79086908690600401611e41565b6020604051808303816000875af11580156115d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fa9190611e78565b9050808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f2b986d32a0536b7e19baa48ab949fec7b903b7fad7730820b20632d100cc3a688560405161165a9190611cfe565b60405180910390a49392505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166109fa576116bf8173ffffffffffffffffffffffffffffffffffffffff166014611739565b6116ca836020611739565b6040516020016116db929190611e91565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526109e791600401611cfe565b60606000611748836002611f41565b611753906002611f7e565b67ffffffffffffffff81111561176b5761176b611afe565b6040519080825280601f01601f191660200182016040528015611795576020820181803683370190505b5090507f3000000000000000000000000000000000000000000000000000000000000000816000815181106117cc576117cc611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061182f5761182f611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061186b846002611f41565b611876906001611f7e565b90505b6001811115611913577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106118b7576118b7611f96565b1a60f81b8282815181106118cd576118cd611f96565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361190c81611fc5565b9050611879565b50831561197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016109e7565b9392505050565b60006020828403121561199557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461197c57600080fd5b6000602082840312156119d757600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461130657600080fd5b60008083601f840112611a1257600080fd5b50813567ffffffffffffffff811115611a2a57600080fd5b602083019150836020828501011115611a4257600080fd5b9250929050565b60008060008060008060a08789031215611a6257600080fd5b8635611a6d816119de565b95506020870135611a7d816119de565b94506040870135611a8d816119de565b935060608701359250608087013567ffffffffffffffff811115611ab057600080fd5b611abc89828a01611a00565b979a9699509497509295939492505050565b60008060408385031215611ae157600080fd5b823591506020830135611af3816119de565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b7457611b74611afe565b604052919050565b600067ffffffffffffffff821115611b9657611b96611afe565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600080600080600060a08688031215611bda57600080fd5b8535611be5816119de565b94506020860135611bf5816119de565b93506040860135611c05816119de565b925060608601359150608086013567ffffffffffffffff811115611c2857600080fd5b8601601f81018813611c3957600080fd5b8035611c4c611c4782611b7c565b611b2d565b818152896020838501011115611c6157600080fd5b816020840160208301376000602083830101528093505050509295509295909350565b60005b83811015611c9f578181015183820152602001611c87565b83811115611cae576000848401525b50505050565b60008151808452611ccc816020860160208601611c84565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061197c6020830184611cb4565b600060208284031215611d2357600080fd5b813561197c816119de565b600080600080600080600060c0888a031215611d4957600080fd5b8735611d54816119de565b96506020880135611d64816119de565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115611d9557600080fd5b611da18a828b01611a00565b989b979a50959850939692959293505050565b60008060408385031215611dc757600080fd5b8251611dd2816119de565b602084015190925067ffffffffffffffff811115611def57600080fd5b8301601f81018513611e0057600080fd5b8051611e0e611c4782611b7c565b818152866020838501011115611e2357600080fd5b611e34826020830160208601611c84565b8093505050509250929050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611e706040830184611cb4565b949350505050565b600060208284031215611e8a57600080fd5b5051919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611ec9816017850160208801611c84565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351611f06816028840160208801611c84565b01602801949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611f7957611f79611f12565b500290565b60008219821115611f9157611f91611f12565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081611fd457611fd4611f12565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220ac372dda50088fa65ff409b460dde04c1df1ba74edb3693a1efe0971b34cd48564736f6c634300080a0033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/l2-bridge-arbitrum/src/brief/abi/OssifiableProxy.json b/l2-bridge-arbitrum/src/brief/abi/OssifiableProxy.json deleted file mode 100644 index 78296f939..000000000 --- a/l2-bridge-arbitrum/src/brief/abi/OssifiableProxy.json +++ /dev/null @@ -1,187 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ErrorNotAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorProxyIsOssified", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "ProxyOssified", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAdmin_", - "type": "address" - } - ], - "name": "proxy__changeAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getIsOssified", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__ossify", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation_", - "type": "address" - } - ], - "name": "proxy__upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "setupCalldata_", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "forceCall_", - "type": "bool" - } - ], - "name": "proxy__upgradeToAndCall", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] diff --git a/l2-bridge-arbitrum/src/brief/proto/agent.proto b/l2-bridge-arbitrum/src/brief/proto/agent.proto deleted file mode 100644 index 95b9af4b6..000000000 --- a/l2-bridge-arbitrum/src/brief/proto/agent.proto +++ /dev/null @@ -1,348 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -import public "alert.proto"; - -option go_package = "./;protocol"; - - -service Agent { - rpc Initialize (InitializeRequest) returns (InitializeResponse) {} - rpc EvaluateTx (EvaluateTxRequest) returns (EvaluateTxResponse) {} - rpc EvaluateBlock (EvaluateBlockRequest) returns (EvaluateBlockResponse) {} - rpc EvaluateAlert (EvaluateAlertRequest) returns (EvaluateAlertResponse) {} - rpc HealthCheck (HealthCheckRequest) returns (HealthCheckResponse) {} -} - -message Error { - string message = 1; -} - -enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; -} - -message HealthCheckRequest {} - -message HealthCheckResponse { - enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; - } - - ResponseStatus status = 1; - repeated Error errors = 2; -} - -message InitializeRequest { - string agentId = 1; - string proxyHost = 2; - int32 shardId = 3; -} - -message InitializeResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated string addresses = 3; - AlertConfig alertConfig = 4; -} - -message AlertConfig { - repeated CombinerBotSubscription subscriptions = 1; -} - -message CombinerBotSubscription { - string botId = 1; - string alertId = 2; - repeated string alertIds = 3; - uint64 chainId = 4; -} - -message EvaluateTxRequest { - string requestId = 1; - TransactionEvent event = 2; - int32 shardId = 3; -} - -message EvaluateBlockRequest { - string requestId = 1; - BlockEvent event = 2; - int32 shardId = 3; -} - -message EvaluateAlertRequest { - string requestId = 1; - AlertEvent event = 2; - string targetBotId = 3; - int32 shardId = 4; -} - -message EvaluateTxResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateBlockResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateAlertResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message BlockEvent { - enum EventType { - BLOCK = 0; - REORG = 1 [deprecated = true]; - } - message Network { - string chainId = 1; - } - - message EthBlock { - string difficulty = 1; - string extraData = 2; - string gasLimit = 3; - string gasUsed = 4; - string hash = 5; - string logsBloom = 6; - string miner = 7; - string mixHash = 8; - string nonce = 9; - string number = 10; - string parentHash = 11; - string receiptsRoot = 12; - string sha3Uncles = 13; - string size = 14; - string stateRoot = 15; - string timestamp = 16; - string totalDifficulty = 17; - repeated string transactions = 18; - string transactionsRoot = 19; - repeated string uncles = 20; - string baseFeePerGas = 21; - } - - EventType type = 1; - string blockHash = 2; - string blockNumber = 3; - Network network = 4; - EthBlock block = 5; - TrackingTimestamps timestamps = 6; -} - -message TransactionEvent { - - enum EventType { - BLOCK = 0; - REORG = 1; - } - - message Network { - string chainId = 1; - } - - message EthBlock { - string blockHash = 1; - string blockNumber = 2; - string blockTimestamp = 3; - string baseFeePerGas = 4; - } - - message EthTransaction { - string type = 1; - string nonce = 2; - string gasPrice = 3; - string gas = 4; - string value = 5; - string input = 6; - string v = 7; - string r = 8; - string s = 9; - string to = 10; - string hash = 11; - string from = 12; - string maxFeePerGas = 13; - string maxPriorityFeePerGas = 14; - } - - message Log { - string address = 1; - repeated string topics = 2; - string data = 3; - string blockNumber = 4; - string transactionHash = 5; - string transactionIndex = 6; - string blockHash = 7; - string logIndex = 8; - bool removed = 9; - } - - message EthReceipt { - string root = 1; - string status = 2; - string cumulativeGasUsed = 3; - string logsBloom = 4; - repeated Log logs = 5; - string transactionHash = 6; - string contractAddress = 7; - string gasUsed = 8; - string blockHash = 9; - string blockNumber = 10; - string transactionIndex = 11; - } - - message TraceAction { - string callType = 1; - string to = 2; - string input = 3; - string from = 4; - string value = 5; - string init = 6; - string address = 7; - string balance = 8; - string refundAddress = 9; - } - - message TraceResult { - string gasUsed = 1; - string address = 2; - string code = 3; - string output = 4; - } - - message Trace { - TraceAction action = 1; - string blockHash = 2; - int64 blockNumber = 3; - TraceResult result = 4; - int64 subtraces = 5; - repeated int64 traceAddress = 6; - string transactionHash = 7; - int64 transactionPosition = 8; - string type = 9; - string error = 10; - } - - EventType type = 1; - EthTransaction transaction = 2; - EthReceipt receipt = 3 [deprecated = true]; - Network network = 4; - repeated Trace traces = 5; - map addresses = 6; - EthBlock block = 7; - repeated Log logs = 8; - bool isContractDeployment = 9; - string contractAddress = 10; - TrackingTimestamps timestamps = 11; - map txAddresses = 12; -} - -message AlertEvent { - message Alert { - message Contract { - string name = 1; - string projectId = 2; - } - - message Project { - string id = 1; - } - - message Block { - uint64 number = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Bot { - repeated string chainIds = 1; - string createdAt = 2; - string description = 3; - string developer = 4; - string DocReference = 5; - bool enabled = 6; - string id = 7; - string image = 8; - string name = 9; - string reference = 10; - string repository = 11; - repeated string projects = 12; - repeated string scanNodes = 13; - string version = 14; - } - - message SourceAlertEvent { - string botId = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Source { - string transactionHash = 1; - Bot bot = 2; - Block block = 3; - SourceAlertEvent sourceAlert = 4; - } - - message Label { - string label = 1; - float confidence = 2; - string entity = 3; - string entityType = 4; - bool remove = 5; - repeated string metadata = 6; - string uniqueKey = 7; - } - - // Unique string to identify this class of finding, - // primarily used to group similar findings for the end user - string alertId = 1; - // List of addresses involved in the alert - repeated string addresses = 2; - // List of contracts related to the alert - repeated Contract contracts = 3; - // Timestamp when the alert was published - string createdAt = 4; - string description = 5; - string hash = 6; - map metadata = 7; - string name = 8; - repeated Project projects = 9; - int32 scanNodeCount = 10; - string severity = 11; - Source source = 12; - string findingType = 13; - repeated string relatedAlerts = 14; - uint64 chainId = 15; - repeated Label labels = 16; - bool truncated = 17; - BloomFilter addressBloomFilter = 18; - } - - Alert alert = 1; - TrackingTimestamps timestamps = 2; -} diff --git a/l2-bridge-arbitrum/src/brief/proto/alert.proto b/l2-bridge-arbitrum/src/brief/proto/alert.proto deleted file mode 100644 index 16c089991..000000000 --- a/l2-bridge-arbitrum/src/brief/proto/alert.proto +++ /dev/null @@ -1,179 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -option go_package = "./;protocol"; - -message TrackingTimestamps { - string block = 1; - string feed = 2; - string botRequest = 3; - string botResponse = 4; - string sourceAlert = 5; -} - -enum AlertType { - UNKNOWN_ALERT_TYPE = 0; - TRANSACTION = 1; - BLOCK = 2; - PRIVATE = 3; - COMBINATION = 4; - API = 5; -} - -message AgentInfo { - string image = 1; - string imageHash = 2; - string id = 3; - bool isTest = 4; - string manifest = 5; -} - -message ScannerInfo { - string address = 1; -} - -message AlertResponse { - repeated SignedAlert alerts = 1; - string nextPageToken = 2; -} - -message Signature { - string signature = 1; - string algorithm = 2; - string signer = 3; -} - -message BloomFilter { - string k = 1; - string m = 2; - string bitset = 3; - uint32 itemCount = 4; -} - -message Alert { - string id = 1; - AlertType type = 2; - Finding finding = 3; - string timestamp = 4; - map metadata = 5; - AgentInfo agent = 6; - map tags = 7; - ScannerInfo scanner = 8; - TrackingTimestamps timestamps = 9; - bool truncated = 10; - BloomFilter addressBloomFilter = 11; -} - -message SignedAlert { - Alert alert = 1; - Signature signature = 2; - string chainId = 3; - string blockNumber = 4; - string publishedWithTx = 5; -} - -message Label { - enum EntityType { - UNKNOWN_ENTITY_TYPE = 0; - ADDRESS = 1; - TRANSACTION = 2; - BLOCK = 3; - URL = 4; - } - - EntityType entityType = 1; - string entity = 2; - reserved 3; - float confidence = 4; - reserved 5; - bool remove = 6; - string label = 7; - repeated string metadata = 8; - string uniqueKey = 9; -} - -message Source { - message TransactionSource { - uint64 chainId = 1; - string hash = 2; - } - - message BlockSource { - uint64 chainId = 1; - string hash = 2; - uint64 number = 3; - } - - message URLSource { - string url = 1; - } - - message ChainSource { - uint64 chainId = 1; - } - - message AlertSource { - string id = 1; - } - - message CustomSource { - string name = 1; - string value = 2; - } - - repeated TransactionSource transactions = 1; - repeated BlockSource blocks = 2; - repeated URLSource urls = 3; - repeated ChainSource chains = 4; - repeated AlertSource alerts = 5; - repeated CustomSource customSources = 6; -} - -message Finding { - enum Severity { - UNKNOWN = 0; - INFO = 1; - LOW = 2; - MEDIUM = 3; - HIGH = 4; - CRITICAL = 5; - } - - enum FindingType { - UNKNOWN_TYPE = 0; - EXPLOIT = 1; - SUSPICIOUS = 2; - DEGRADED = 3; - INFORMATION = 4; - SCAM = 5; - } - - string protocol = 1; - Severity severity = 2; - map metadata = 3; - FindingType type = 4; - string alertId = 5; - string name = 6; - string description = 7; - reserved 8; - bool private = 9; - repeated string addresses = 10; - map indicators = 11; - repeated Label labels = 12; - repeated string relatedAlerts = 13; - string uniqueKey = 14; - Source source = 15; - string timestamp = 16; -} - -message APIAlert { - message APIAlertAgent { - string id = 1; - } - string id = 1; - AlertType type = 2; - Finding finding = 3; - APIAlertAgent agent = 4; - string timestamp = 5; -} \ No newline at end of file diff --git a/l2-bridge-arbitrum/src/clients/arbitrum_client.spec.ts b/l2-bridge-arbitrum/src/clients/arbitrum_client.spec.ts deleted file mode 100644 index 425935ad7..000000000 --- a/l2-bridge-arbitrum/src/clients/arbitrum_client.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { ArbERC20__factory, ERC20Bridged__factory, L2ERC20TokenGateway__factory } from '../generated/typechain' -import { ArbitrumClient } from './arbitrum_client' -import { Address, ETH_DECIMALS } from '../utils/constants' -import { ethers } from 'forta-agent' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import * as E from 'fp-ts/Either' -import { Metrics } from '../utils/metrics/metrics' -import BigNumber from 'bignumber.js' - -const TEST_TIMEOUT = 120_000 - -describe('arbitrumProvider', () => { - const config = new Config() - const adr: Address = Address - - const arbitrumProvider = new ethers.providers.JsonRpcProvider(config.arbitrumRpcUrl, config.chainId) - - const l2Bridge = L2ERC20TokenGateway__factory.connect(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, arbitrumProvider) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.ARBITRUM_WSTETH_BRIDGED.address, arbitrumProvider) - const bridgedLdoRunner = ArbERC20__factory.connect(adr.ARBITRUM_LDO_BRIDGED_ADDRESS, arbitrumProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - const l2Client = new ArbitrumClient(arbitrumProvider, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - - const l2BlockNumber = 228_303_887 - test( - 'getWithdrawalEvents is 1', - async () => { - const wEvents = await l2Client.getWithdrawalEvents(228_029_924, 228_029_924) - if (E.isLeft(wEvents)) { - throw wEvents.left - } - - expect(wEvents.right.length).toEqual(1) - }, - TEST_TIMEOUT, - ) - - test( - 'getWithdrawalRecords is 4 wstEth', - async () => { - const wEvents = await l2Client.getWithdrawalEvents(227_842_886, 228_029_924) - if (E.isLeft(wEvents)) { - throw wEvents.left - } - - const wRecords = await l2Client.getWithdrawalRecords(wEvents.right) - if (E.isLeft(wRecords)) { - throw wRecords.left - } - - expect(wRecords.right[0].amount.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('4')) - }, - TEST_TIMEOUT, - ) - - test( - 'getBlockNumber', - async () => { - const blockNumber = await l2Client.getBlockNumber() - if (E.isLeft(blockNumber)) { - throw blockNumber.left - } - - expect(Number.isInteger(blockNumber.right)).toBe(true) - }, - TEST_TIMEOUT, - ) - - test( - 'getWstEthTotalSupply is 64_352.622267221200683868 wstEth', - async () => { - const wstBalance = await l2Client.getWstEthTotalSupply(l2BlockNumber) - if (E.isLeft(wstBalance)) { - throw wstBalance.left - } - - expect(wstBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('64352.622267221200683868')) - }, - TEST_TIMEOUT, - ) - - test( - 'getLdoTotalSupply is 92_8089.575013945159998755 ldo', - async () => { - const ldoBalance = await l2Client.getLdoTotalSupply(l2BlockNumber) - if (E.isLeft(ldoBalance)) { - throw ldoBalance.left - } - - expect(ldoBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('928089.575013945159998755')) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-arbitrum/src/clients/arbitrum_client.ts b/l2-bridge-arbitrum/src/clients/arbitrum_client.ts deleted file mode 100644 index de7404d15..000000000 --- a/l2-bridge-arbitrum/src/clients/arbitrum_client.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { Block } from '@ethersproject/abstract-provider' -import { ethers } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { WithdrawalRecord } from '../entity/blockDto' -import BigNumber from 'bignumber.js' -import { ArbERC20, ERC20Bridged, L2ERC20TokenGateway as L2BridgeRunner } from '../generated/typechain' -import { NetworkError } from '../utils/errors' -import { WithdrawalInitiatedEvent } from '../generated/typechain/L2ERC20TokenGateway' -import { IMonitorWithdrawalsClient } from '../services/monitor_withdrawals' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { IL2BridgeBalanceClient } from '../services/bridge_balance' - -export class ArbitrumClient implements IMonitorWithdrawalsClient, IL2BridgeBalanceClient { - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly l2BridgeRunner: L2BridgeRunner - private readonly metrics: Metrics - - private readonly bridgedWstEthRunner: ERC20Bridged - private readonly bridgedLdoRunner: ArbERC20 - - constructor( - jsonRpcProvider: ethers.providers.JsonRpcProvider, - metrics: Metrics, - l2BridgeRunner: L2BridgeRunner, - bridgedWstEthRunner: ERC20Bridged, - bridgedLdoRunner: ArbERC20, - ) { - this.jsonRpcProvider = jsonRpcProvider - this.metrics = metrics - this.l2BridgeRunner = l2BridgeRunner - this.bridgedWstEthRunner = bridgedWstEthRunner - this.bridgedLdoRunner = bridgedLdoRunner - } - - public async getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWithdrawalEvents.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - return await this.l2BridgeRunner.queryFilter( - this.l2BridgeRunner.filters.WithdrawalInitiated(), - fromBlockNumber, - toBlockNumber, - ) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch withdrawEvents`)) - } - } - - public async getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWithdrawalRecords.name }).startTimer() - - const out: WithdrawalRecord[] = [] - - for (const withdrawEvent of withdrawalEvents) { - if (withdrawEvent.args) { - let block: Block - try { - block = await retryAsync( - async (): Promise => { - return await withdrawEvent.getBlock() - }, - { delay: 500, maxTry: 5 }, - ) - - const record: WithdrawalRecord = { - timestamp: block.timestamp, - amount: new BigNumber(String(withdrawEvent.args.amount)), - } - - out.push(record) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalRecords.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch block from withdrawEvent`)) - } - } - } - - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } - - public async getBlockNumber(): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getBlockNumber.name }).startTimer() - try { - const latestBlockNumber = await this.jsonRpcProvider.getBlockNumber() - - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(latestBlockNumber) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } - - public async getWstEthTotalSupply(l2blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWstEthTotalSupply.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedWstEthRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getWstEthTotalSupply.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWstEthTotalSupply.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call bridgedWstEthRunner.functions.totalSupply`)) - } - } - - public async getLdoTotalSupply(l2blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getLdoTotalSupply.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedLdoRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getLdoTotalSupply.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getLdoTotalSupply.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call bridgedLdoRunner.functions.totalSupply`)) - } - } -} diff --git a/l2-bridge-arbitrum/src/clients/eth_client.spec.ts b/l2-bridge-arbitrum/src/clients/eth_client.spec.ts deleted file mode 100644 index 6e099739b..000000000 --- a/l2-bridge-arbitrum/src/clients/eth_client.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { ethers } from 'forta-agent' -import { ERC20Bridged__factory } from '../generated/typechain' -import { ETHProvider } from './eth_provider_client' -import { Config } from '../utils/env/env' -import { Address, ETH_DECIMALS } from '../utils/constants' -import promClient from 'prom-client' -import { Metrics } from '../utils/metrics/metrics' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' - -const TEST_TIMEOUT = 120_000 - -describe('ethProvider', () => { - const config = new Config() - - const adr = Address - - const mainnet = 1 - const ethProvider = new ethers.providers.JsonRpcProvider(config.ethereumRpcUrl, mainnet) - - const wSthEthRunner = ERC20Bridged__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ldoRunner = ERC20Bridged__factory.connect(adr.L1_LDO_ADDRESS, ethProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - - const l1Client = new ETHProvider(metrics, wSthEthRunner, ldoRunner, ethProvider) - const l1BlockNumber = 20_183_793 - - test( - 'getWstEthBalance is 66_725.331301424290867528 wstEth', - async () => { - const wStethBalance = await l1Client.getWstEthBalance(l1BlockNumber, adr.ARBITRUM_L1_TOKEN_BRIDGE) - if (E.isLeft(wStethBalance)) { - throw wStethBalance.left - } - - expect(wStethBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('66725.331301424290867528')) - }, - TEST_TIMEOUT, - ) - - test( - 'getLDOBalance is 89_0572.571209700629591106 LDO', - async () => { - const ldoBalance = await l1Client.getLDOBalance(l1BlockNumber, adr.ARBITRUM_L1_LDO_BRIDGE) - if (E.isLeft(ldoBalance)) { - throw ldoBalance.left - } - - expect(ldoBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('890572.571209700629591106')) - }, - TEST_TIMEOUT, - ) - - test( - 'getBlockNumber', - async () => { - const blockNumber = await l1Client.getBlockNumber() - if (E.isLeft(blockNumber)) { - throw blockNumber.left - } - - expect(Number.isInteger(blockNumber.right)).toBe(true) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-arbitrum/src/clients/eth_provider_client.ts b/l2-bridge-arbitrum/src/clients/eth_provider_client.ts deleted file mode 100644 index 045bda17d..000000000 --- a/l2-bridge-arbitrum/src/clients/eth_provider_client.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { IL1BridgeBalanceClient } from '../services/bridge_balance' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' -import { retryAsync } from 'ts-retry' -import { ERC20Bridged } from '../generated/typechain' -import { NetworkError } from '../utils/errors' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { ethers } from 'ethers' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IL1BridgeBalanceClient { - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly wStEthRunner: ERC20Bridged - private readonly ldoRunner: ERC20Bridged - private readonly metrics: Metrics - - constructor( - metric: Metrics, - wStEthRunner: ERC20Bridged, - ldoRunner: ERC20Bridged, - jsonRpcProvider: ethers.providers.JsonRpcProvider, - ) { - this.metrics = metric - this.wStEthRunner = wStEthRunner - this.ldoRunner = ldoRunner - this.jsonRpcProvider = jsonRpcProvider - } - - public async getWstEthBalance( - l1blockNumber: number, - arbitrumL1TokenBridge: string, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWstEthBalance.name }).startTimer() - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.wStEthRunner.functions.balanceOf(arbitrumL1TokenBridge, { - blockTag: l1blockNumber, - }) - - this.metrics.etherJsRequest.labels({ method: this.getWstEthBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWstEthBalance.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wStEthRunner.functions.balanceOf`)) - } - } - - public async getLDOBalance(l1blockNumber: number, arbitrumL1LdoBridge: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getLDOBalance.name }).startTimer() - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.ldoRunner.functions.balanceOf(arbitrumL1LdoBridge, { - blockTag: l1blockNumber, - }) - - this.metrics.etherJsRequest.labels({ method: this.getLDOBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getLDOBalance.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call ldoRunner.functions.balanceOf`)) - } - } - - public async getBlockNumber(): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getBlockNumber.name }).startTimer() - try { - const latestBlockNumber = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlockNumber() - }, - { delay: DELAY_IN_500MS, maxTry: 10 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(latestBlockNumber) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } -} diff --git a/l2-bridge-arbitrum/src/clients/proxy_contract_client.spec.ts b/l2-bridge-arbitrum/src/clients/proxy_contract_client.spec.ts deleted file mode 100644 index 94fa49654..000000000 --- a/l2-bridge-arbitrum/src/clients/proxy_contract_client.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { OssifiableProxy__factory } from '../generated/typechain' -import { Address } from '../utils/constants' -import { ethers } from 'forta-agent' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import * as E from 'fp-ts/Either' -import { Metrics } from '../utils/metrics/metrics' -import { ProxyContractClient } from './proxy_contract_client' - -const TEST_TIMEOUT = 120_000 - -describe('ProxyContractClient', () => { - const config = new Config() - const adr: Address = Address - - const arbitrumProvider = new ethers.providers.JsonRpcProvider(config.arbitrumRpcUrl, config.chainId) - - const l2BlockNumber = 121_951_308 - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - - const wstProxy = new ProxyContractClient( - adr.ARBITRUM_WSTETH_BRIDGED.name, - OssifiableProxy__factory.connect(adr.ARBITRUM_WSTETH_BRIDGED.address, arbitrumProvider), - metrics, - ) - - const l2TokenGateway = new ProxyContractClient( - adr.ARBITRUM_L2_TOKEN_GATEWAY.name, - OssifiableProxy__factory.connect(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, arbitrumProvider), - metrics, - ) - - test( - 'getProxyAdmin wst - 0x1dcA41859Cd23b526CBe74dA8F48aC96e14B1A29', - async () => { - const proxyAdmin = await wstProxy.getProxyAdmin(l2BlockNumber) - if (E.isLeft(proxyAdmin)) { - throw proxyAdmin.left - } - - expect(proxyAdmin.right).toEqual('0x1dcA41859Cd23b526CBe74dA8F48aC96e14B1A29') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyImplementation wst - 0x0fBcbaEA96Ce0cF7Ee00A8c19c3ab6f5Dc8E1921', - async () => { - const proxyImpl = await wstProxy.getProxyImplementation(l2BlockNumber) - if (E.isLeft(proxyImpl)) { - throw proxyImpl.left - } - - expect(proxyImpl.right).toEqual('0x0fBcbaEA96Ce0cF7Ee00A8c19c3ab6f5Dc8E1921') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyAdmin l2TokenGateway - 0x1dcA41859Cd23b526CBe74dA8F48aC96e14B1A29', - async () => { - const proxyAdmin = await l2TokenGateway.getProxyAdmin(l2BlockNumber) - if (E.isLeft(proxyAdmin)) { - throw proxyAdmin.left - } - - expect(proxyAdmin.right).toEqual('0x1dcA41859Cd23b526CBe74dA8F48aC96e14B1A29') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyImplementation l2TokenGateway - 0xe75886DE20dF66827e321EfdB88726e6Baa4b0A7', - async () => { - const proxyImpl = await l2TokenGateway.getProxyImplementation(l2BlockNumber) - if (E.isLeft(proxyImpl)) { - throw proxyImpl.left - } - - expect(proxyImpl.right).toEqual('0xe75886DE20dF66827e321EfdB88726e6Baa4b0A7') - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-arbitrum/src/clients/proxy_contract_client.ts b/l2-bridge-arbitrum/src/clients/proxy_contract_client.ts deleted file mode 100644 index 8a9c0c601..000000000 --- a/l2-bridge-arbitrum/src/clients/proxy_contract_client.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { OssifiableProxy } from '../generated/typechain' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { NetworkError } from '../utils/errors' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' - -export abstract class IProxyContractClient { - abstract getName(): string - - abstract getAddress(): string - - abstract getProxyAdmin(blockNumber: number): Promise> - - abstract getProxyImplementation(blockNumber: number): Promise> -} - -export class ProxyContractClient implements IProxyContractClient { - private readonly name: string - private readonly proxyAdminContract: OssifiableProxy - private readonly metrics: Metrics - - constructor(name: string, proxyAdmin: OssifiableProxy, metric: Metrics) { - this.name = name - this.proxyAdminContract = proxyAdmin - this.metrics = metric - } - - public getName(): string { - return this.name - } - - public getAddress(): string { - return this.proxyAdminContract.address - } - - public async getProxyAdmin(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getProxyAdmin.name }).startTimer() - - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.proxy__getAdmin({ - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getProxyAdmin.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(resp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getProxyAdmin.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch admin`)) - } - } - - public async getProxyImplementation(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getProxyImplementation.name }).startTimer() - - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.proxy__getImplementation({ - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getProxyImplementation.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(resp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getProxyImplementation.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch implementation`)) - } - } -} diff --git a/l2-bridge-arbitrum/src/entity/blockDto.ts b/l2-bridge-arbitrum/src/entity/blockDto.ts deleted file mode 100644 index f1d026922..000000000 --- a/l2-bridge-arbitrum/src/entity/blockDto.ts +++ /dev/null @@ -1,13 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type BlockDto = { - number: number - timestamp: number - parentHash: string - hash: string -} - -export type WithdrawalRecord = { - timestamp: number - amount: BigNumber -} diff --git a/l2-bridge-arbitrum/src/entity/events.ts b/l2-bridge-arbitrum/src/entity/events.ts deleted file mode 100644 index c8d3780e4..000000000 --- a/l2-bridge-arbitrum/src/entity/events.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Log } from '@ethersproject/abstract-provider' -import BigNumber from 'bignumber.js' -import * as agent_pb from '../generated/proto/agent_pb' -import { TransactionEvent } from '../generated/proto/agent_pb' -import { Finding } from '../generated/proto/alert_pb' - -export type EventOfNotice = { - name: string - address: string - event: string - alertId: string - description: CallableFunction - severity: Finding.Severity - type: Finding.FindingType -} - -export type Metadata = { [key: string]: string } - -export type TransactionDto = { - logs: Log[] - to: string | null - block: { - timestamp: number - number: number - } -} - -export function newTransactionDto(request: agent_pb.EvaluateTxRequest): TransactionDto { - const txEvent = request.getEvent() - const transaction = txEvent.getTransaction() - const logList = >txEvent.getLogsList() - const block = txEvent.getBlock() - - const logs: Log[] = [] - for (const l of logList) { - logs.push({ - blockNumber: new BigNumber(l.getBlocknumber(), 10).toNumber(), - blockHash: l.getTransactionhash(), - transactionIndex: new BigNumber(l.getTransactionindex(), 10).toNumber(), - removed: l.getRemoved(), - address: l.getAddress(), - data: l.getData(), - topics: l.getTopicsList(), - transactionHash: l.getTransactionhash(), - logIndex: new BigNumber(l.getLogindex(), 10).toNumber(), - }) - } - - return { - logs: logs, - to: transaction.getTo() ? transaction.getTo().toLowerCase() : null, - block: { - number: new BigNumber(block.getBlocknumber(), 10).toNumber(), - timestamp: new BigNumber(block.getBlocktimestamp(), 10).toNumber(), - }, - } -} diff --git a/l2-bridge-arbitrum/src/generated/proto/.gitignore b/l2-bridge-arbitrum/src/generated/proto/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/l2-bridge-arbitrum/src/generated/proto/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/l2-bridge-arbitrum/src/generated/typechain/.gitignore b/l2-bridge-arbitrum/src/generated/typechain/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/l2-bridge-arbitrum/src/generated/typechain/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/l2-bridge-arbitrum/src/handlers/alert.handler.ts b/l2-bridge-arbitrum/src/handlers/alert.handler.ts deleted file mode 100644 index 2ee864d13..000000000 --- a/l2-bridge-arbitrum/src/handlers/alert.handler.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { EvaluateAlertRequest, EvaluateAlertResponse, ResponseStatus } from '../generated/proto/agent_pb' - -export class AlertHandler { - public handleAlert() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new EvaluateAlertResponse() - resp.setStatus(ResponseStatus.SUCCESS) - resp.setFindingsList([]) - resp.setTimestamp(new Date().toISOString()) - - callback(null, resp) - } - } -} diff --git a/l2-bridge-arbitrum/src/handlers/block.handler.ts b/l2-bridge-arbitrum/src/handlers/block.handler.ts deleted file mode 100644 index e8e4b51f6..000000000 --- a/l2-bridge-arbitrum/src/handlers/block.handler.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { BlockEvent, EvaluateBlockRequest, EvaluateBlockResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import BigNumber from 'bignumber.js' -import { Finding } from '../generated/proto/alert_pb' -import { HandleBlockLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from '../services/monitor_withdrawals' -import { BlockDto } from '../entity/blockDto' -import { ProxyWatcher } from '../services/proxy_watcher' -import { BridgeBalanceSrv } from '../services/bridge_balance' -import { ETHProvider } from '../clients/eth_provider_client' -import * as E from 'fp-ts/Either' -import { networkAlert } from '../utils/errors' - -export class BlockHandler { - private logger: Logger - private metrics: Metrics - private readonly proxyWatchers: ProxyWatcher[] - private WithdrawalsSrv: MonitorWithdrawals - private bridgeBalanceSrv: BridgeBalanceSrv - private healthChecker: HealthChecker - private ethProvider: ETHProvider - - private onAppStartFindings: Finding[] = [] - - constructor( - logger: Logger, - metrics: Metrics, - proxyWatchers: ProxyWatcher[], - WithdrawalsSrv: MonitorWithdrawals, - bridgeBalanceSrv: BridgeBalanceSrv, - healthChecker: HealthChecker, - ethProvider: ETHProvider, - onAppStartFindings: Finding[], - ) { - this.logger = logger - this.metrics = metrics - this.proxyWatchers = proxyWatchers - this.WithdrawalsSrv = WithdrawalsSrv - this.bridgeBalanceSrv = bridgeBalanceSrv - this.healthChecker = healthChecker - this.ethProvider = ethProvider - this.onAppStartFindings = onAppStartFindings - } - - public handleBlock() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - this.metrics.lastAgentTouch.labels({ method: HandleBlockLabel }).set(new Date().getTime()) - const end = this.metrics.summaryHandlers.labels({ method: HandleBlockLabel }).startTimer() - - const event = call.request.getEvent() - const block = event.getBlock() - - const l2blockDtoEvent: BlockDto = { - number: new BigNumber(block.getNumber(), 10).toNumber(), - timestamp: new BigNumber(block.getTimestamp(), 10).toNumber(), - parentHash: block.getParenthash(), - hash: block.getHash(), - } - - const findings: Finding[] = [] - - this.logger.info(`#arbitrum block: ${l2blockDtoEvent.number}`) - const startTime = new Date().getTime() - - if (this.onAppStartFindings.length > 0) { - findings.push(...this.onAppStartFindings) - this.onAppStartFindings = [] - } - - const l1BlockNumber = await this.ethProvider.getBlockNumber() - if (E.isLeft(l1BlockNumber)) { - this.logger.warn(`#ETH block skipped`) - findings.push( - networkAlert( - l1BlockNumber.left, - `Error in ${BlockHandler.name}.${this.ethProvider.getBlockNumber.name}:80`, - `Could not call clientL1.getBlockNumber`, - ), - ) - } - - if (E.isRight(l1BlockNumber)) { - this.logger.info(`#ETH block: ${l1BlockNumber.right}`) - const bridgeBalanceFindings = await this.bridgeBalanceSrv.handleBlock( - l1BlockNumber.right, - l2blockDtoEvent.number, - ) - findings.push(...bridgeBalanceFindings) - } - - for (const proxyWatcher of this.proxyWatchers) { - const fnds = await proxyWatcher.handleL2Block(l2blockDtoEvent.number) - findings.push(...fnds) - } - - const withdrawalsFindings = this.WithdrawalsSrv.handleL2Block(l2blockDtoEvent) - findings.push(...withdrawalsFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusFail }).inc() - - const blockResponse = new EvaluateBlockResponse() - blockResponse.setStatus(ResponseStatus.SUCCESS) - blockResponse.setPrivate(false) - blockResponse.setFindingsList(findings) - const m = blockResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - this.logger.info(elapsedTime('handleBlock', startTime) + '\n') - this.metrics.lastBlockNumber.set(l2blockDtoEvent.number) - - end() - callback(null, blockResponse) - } - } -} diff --git a/l2-bridge-arbitrum/src/handlers/health.handler.ts b/l2-bridge-arbitrum/src/handlers/health.handler.ts deleted file mode 100644 index 403730746..000000000 --- a/l2-bridge-arbitrum/src/handlers/health.handler.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import * as agent_pb from '../generated/proto/agent_pb' -import { HealthCheckRequest, HealthCheckResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { Metrics } from '../utils/metrics/metrics' -import express, { Request, Response } from 'express' -import BigNumber from 'bignumber.js' -import { Logger } from 'winston' - -export class HealthHandler { - private healthChecker: HealthChecker - private metrics: Metrics - private logger: Logger - private readonly ethereumRpcUrl: string - private readonly chainId: number - - constructor(healthChecker: HealthChecker, metrics: Metrics, logger: Logger, ethereumRpcUrl: string, chainId: number) { - this.healthChecker = healthChecker - this.metrics = metrics - this.logger = logger - this.ethereumRpcUrl = ethereumRpcUrl - this.chainId = chainId - } - - public healthGrpc() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new HealthCheckResponse() - resp.setStatus(ResponseStatus.SUCCESS) - this.metrics.healthStatus.set(1) - - if (!this.healthChecker.isHealth()) { - const e: agent_pb.Error = new agent_pb.Error() - e.setMessage('There is too much network errors') - - const errList: Array = [] - errList.push(e) - - resp.setErrorsList(errList) - this.metrics.healthStatus.set(0) - } - - callback(null, resp) - } - } - - public healthHttp(): express.Handler { - return async (req: Request, res: Response) => { - try { - type data = { - jsonrpc: string - id: number - result: string - } - - const resp = await fetch(this.ethereumRpcUrl, { - method: 'POST', - body: JSON.stringify({ - method: 'eth_chainId', - }), - }) - - // @ts-expect-error @typescript-eslint/ban-ts-comment - const data: data = await resp.json() - const chainId = new BigNumber(data.result) - if (chainId.toNumber() === this.chainId) { - return res.status(200).send('ok') - } - } catch (e) { - this.logger.error(e) - } - - return res.status(503).send('not ok') - } - } -} diff --git a/l2-bridge-arbitrum/src/handlers/init.handler.ts b/l2-bridge-arbitrum/src/handlers/init.handler.ts deleted file mode 100644 index 6d44cb14d..000000000 --- a/l2-bridge-arbitrum/src/handlers/init.handler.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { InitializeRequest, InitializeResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { Logger } from 'winston' -import Version from '../utils/version' -import { elapsedTime } from '../utils/time' -import { Finding } from '../generated/proto/alert_pb' - -export class InitHandler { - private readonly logger: Logger - private readonly appName: string - - private onAppStartFindings: Finding[] = [] - - constructor(appName: string, logger: Logger, onAppStartFindings: Finding[]) { - this.appName = appName - this.logger = logger - this.onAppStartFindings = onAppStartFindings - } - - public handleInit() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const startTime = new Date().getTime() - - const f: Finding = new Finding() - f.setName(`${this.appName} launched`) - f.setDescription(`Version: ${Version.desc}`) - f.setAlertid('LIDO-AGENT-LAUNCHED') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('version.commitHash', Version.commitHash) - m.set('version.commitMsg', Version.commitMsg) - - this.logger.info(elapsedTime('L2 bridge arbitrum started', startTime) + '\n') - - this.onAppStartFindings.push(f) - const resp = new InitializeResponse() - resp.setStatus(ResponseStatus.SUCCESS) - - callback(null, resp) - } - } -} diff --git a/l2-bridge-arbitrum/src/handlers/tx.handler.ts b/l2-bridge-arbitrum/src/handlers/tx.handler.ts deleted file mode 100644 index b104d0634..000000000 --- a/l2-bridge-arbitrum/src/handlers/tx.handler.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { EvaluateTxRequest, EvaluateTxResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { newTransactionDto } from '../entity/events' -import { Finding } from '../generated/proto/alert_pb' -import { HandleTxLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from '../services/monitor_withdrawals' -import { EventWatcher } from '../services/event_watcher' - -export class TxHandler { - private metrics: Metrics - private bridgeWatcher: EventWatcher - private govWatcher: EventWatcher - private proxyWatcher: EventWatcher - private WithdrawalsSrv: MonitorWithdrawals - private healthChecker: HealthChecker - - constructor( - metrics: Metrics, - bridgeWatcher: EventWatcher, - govWatcher: EventWatcher, - proxyWatcher: EventWatcher, - WithdrawalsSrv: MonitorWithdrawals, - healthChecker: HealthChecker, - ) { - this.metrics = metrics - this.bridgeWatcher = bridgeWatcher - this.WithdrawalsSrv = WithdrawalsSrv - this.govWatcher = govWatcher - this.proxyWatcher = proxyWatcher - this.healthChecker = healthChecker - } - - public handleTx() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const end = this.metrics.summaryHandlers.labels({ method: HandleTxLabel }).startTimer() - this.metrics.lastAgentTouch.labels({ method: HandleTxLabel }).set(new Date().getTime()) - - const txEvent = newTransactionDto(call.request) - - const findings: Finding[] = [] - - const bridgeFindings = this.bridgeWatcher.handleL2Logs(txEvent.logs) - const govFindings = this.govWatcher.handleL2Logs(txEvent.logs) - const proxyFindings = this.proxyWatcher.handleL2Logs(txEvent.logs) - this.WithdrawalsSrv.handleTransaction(txEvent) - - findings.push(...bridgeFindings, ...govFindings, ...proxyFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusFail }).inc() - - const txResponse = new EvaluateTxResponse() - txResponse.setStatus(ResponseStatus.SUCCESS) - txResponse.setPrivate(false) - txResponse.setFindingsList(findings) - const m = txResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - end() - callback(null, txResponse) - } - } -} diff --git a/l2-bridge-arbitrum/src/main.ts b/l2-bridge-arbitrum/src/main.ts deleted file mode 100644 index fdb4a3487..000000000 --- a/l2-bridge-arbitrum/src/main.ts +++ /dev/null @@ -1,201 +0,0 @@ -import * as grpc from '@grpc/grpc-js' -import { either as E } from 'fp-ts' -import { BlockHandler } from './handlers/block.handler' -import { HealthHandler } from './handlers/health.handler' -import { InitHandler } from './handlers/init.handler' -import { AgentService } from './generated/proto/agent_grpc_pb' -import express, { Express, Request, Response } from 'express' -import Version from './utils/version' -import { Finding } from './generated/proto/alert_pb' -import { Config } from './utils/env/env' -import * as Winston from 'winston' -import { Address } from './utils/constants' -import promClient from 'prom-client' -import { Metrics } from './utils/metrics/metrics' -import { getEthersProvider } from 'forta-agent/dist/sdk/utils' -import { MonitorWithdrawals } from './services/monitor_withdrawals' -import { ArbitrumClient } from './clients/arbitrum_client' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' -import { TxHandler } from './handlers/tx.handler' -import { ProxyWatcher } from './services/proxy_watcher' -import { ProxyContractClient } from './clients/proxy_contract_client' -import process from 'process' -import { EventWatcher } from './services/event_watcher' -import { getL2BridgeEvents } from './utils/events/bridge_events' -import { getGovEvents } from './utils/events/gov_events' -import { getProxyAdminEvents } from './utils/events/proxy_admin_events' -import { AlertHandler } from './handlers/alert.handler' -import { BridgeBalanceSrv } from './services/bridge_balance' -import { ETHProvider } from './clients/eth_provider_client' -import { ethers } from 'forta-agent' -import { - ArbERC20__factory, - ERC20Bridged__factory, - L2ERC20TokenGateway__factory, - OssifiableProxy__factory, -} from './generated/typechain' - -const main = async () => { - const config = new Config() - console.log(config) - - const logger: Winston.Logger = Winston.createLogger({ - format: config.logFormat === 'simple' ? Winston.format.simple() : Winston.format.json(), - transports: [new Winston.transports.Console()], - }) - - const defaultRegistry = promClient - defaultRegistry.collectDefaultMetrics({ - prefix: config.promPrefix, - }) - - const customRegister = new promClient.Registry() - const mergedRegistry = promClient.Registry.merge([defaultRegistry.register, customRegister]) - mergedRegistry.setDefaultLabels({ instance: config.instance, dataProvider: config.dataProvider }) - - const metrics = new Metrics(mergedRegistry, config.promPrefix) - - const arbitrumProvider = new ethers.providers.JsonRpcProvider(config.arbitrumRpcUrl, config.chainId) - let nodeClient = getEthersProvider() - if (!config.useFortaProvider) { - nodeClient = arbitrumProvider - } - - const adr: Address = Address - - const onAppFindings: Finding[] = [] - const healthChecker = new HealthChecker(logger, metrics, BorderTime, MaxNumberErrorsPerBorderTime) - - const l2Bridge = L2ERC20TokenGateway__factory.connect(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, nodeClient) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.ARBITRUM_WSTETH_BRIDGED.address, nodeClient) - const bridgedLdoRunner = ArbERC20__factory.connect(adr.ARBITRUM_LDO_BRIDGED_ADDRESS, nodeClient) - - const arbitrumClient = new ArbitrumClient(nodeClient, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - const withdrawalsSrv = new MonitorWithdrawals(arbitrumClient, adr.ARBITRUM_L2_TOKEN_GATEWAY.address, logger) - - const proxyWatchers: ProxyWatcher[] = [ - new ProxyWatcher( - new ProxyContractClient( - adr.ARBITRUM_WSTETH_BRIDGED.name, - OssifiableProxy__factory.connect(adr.ARBITRUM_WSTETH_BRIDGED.address, nodeClient), - metrics, - ), - logger, - ), - new ProxyWatcher( - new ProxyContractClient( - adr.ARBITRUM_L2_TOKEN_GATEWAY.name, - OssifiableProxy__factory.connect(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, nodeClient), - metrics, - ), - logger, - ), - ] - - const bridgeEventWatcher = new EventWatcher( - 'BridgeEventWatcher', - getL2BridgeEvents(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, adr.RolesMap), - ) - const govEventWatcher = new EventWatcher('GovEventWatcher', getGovEvents(adr.GOV_BRIDGE_ADDRESS)) - const proxyEventWatcher = new EventWatcher( - 'ProxyEventWatcher', - getProxyAdminEvents(adr.ARBITRUM_WSTETH_BRIDGED, adr.ARBITRUM_L2_TOKEN_GATEWAY), - ) - - const mainnet = 1 - const ethProvider = new ethers.providers.JsonRpcProvider(config.ethereumRpcUrl, mainnet) - - const wSthEthRunner = ERC20Bridged__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ldoRunner = ERC20Bridged__factory.connect(adr.L1_LDO_ADDRESS, ethProvider) - - const l1Client = new ETHProvider(metrics, wSthEthRunner, ldoRunner, ethProvider) - const bridgeBalanceSrv = new BridgeBalanceSrv( - logger, - l1Client, - adr.ARBITRUM_L1_TOKEN_BRIDGE, - adr.ARBITRUM_L1_LDO_BRIDGE, - arbitrumClient, - ) - - const gRPCserver = new grpc.Server() - const blockH = new BlockHandler( - logger, - metrics, - proxyWatchers, - withdrawalsSrv, - bridgeBalanceSrv, - healthChecker, - l1Client, - onAppFindings, - ) - - const txH = new TxHandler( - metrics, - bridgeEventWatcher, - govEventWatcher, - proxyEventWatcher, - withdrawalsSrv, - healthChecker, - ) - const healthH = new HealthHandler(healthChecker, metrics, logger, config.ethereumRpcUrl, config.chainId) - const initH = new InitHandler(config.appName, logger, onAppFindings) - const alertH = new AlertHandler() - - gRPCserver.addService(AgentService, { - initialize: initH.handleInit(), - evaluateBlock: blockH.handleBlock(), - evaluateTx: txH.handleTx(), - healthCheck: healthH.healthGrpc(), - // not used, but required for grpc contract - evaluateAlert: alertH.handleAlert(), - }) - - const latestL2BlockNumber = await arbitrumClient.getBlockNumber() - if (E.isLeft(latestL2BlockNumber)) { - logger.error(latestL2BlockNumber.left) - - process.exit(1) - } - - const withdrawalsSrvErr = await withdrawalsSrv.initialize(latestL2BlockNumber.right) - if (E.isLeft(withdrawalsSrvErr)) { - logger.error('Could not init withdrawalsSrvErr', withdrawalsSrvErr.left) - - process.exit(1) - } - - for (const proxyWatcher of proxyWatchers) { - const proxyWatcherErr = await proxyWatcher.initialize(latestL2BlockNumber.right) - if (proxyWatcherErr !== null) { - logger.error('Could not init proxyWatcherSrv', proxyWatcherErr.message) - - process.exit(1) - } - } - - metrics.buildInfo.set({ commitHash: Version.commitHash }, 1) - - gRPCserver.bindAsync(`0.0.0.0:${config.grpcPort}`, grpc.ServerCredentials.createInsecure(), (err, port) => { - if (err != null) { - logger.error(err) - - process.exit(1) - } - logger.info(`${config.appName} is listening on ${port}`) - }) - - const httpService: Express = express() - - httpService.get('/metrics', async (req: Request, res: Response) => { - res.set('Content-Type', mergedRegistry.contentType) - res.send(await mergedRegistry.metrics()) - }) - - httpService.get('/health', healthH.healthHttp()) - - httpService.listen(config.httpPort, () => { - logger.info(`Http server is running at http://localhost:${config.httpPort}`) - }) -} - -main() diff --git a/l2-bridge-arbitrum/src/services/bridge_balance.ts b/l2-bridge-arbitrum/src/services/bridge_balance.ts deleted file mode 100644 index a7d617278..000000000 --- a/l2-bridge-arbitrum/src/services/bridge_balance.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { ETH_DECIMALS } from '../utils/constants' -import { networkAlert } from '../utils/errors' -import { Finding } from '../generated/proto/alert_pb' - -export abstract class IL1BridgeBalanceClient { - abstract getWstEthBalance(l1blockNumber: number, address: string): Promise> - abstract getLDOBalance(l1blockNumber: number, arbitrumL1LdoBridge: string): Promise> -} - -export abstract class IL2BridgeBalanceClient { - abstract getWstEthTotalSupply(l1blockNumber: number): Promise> - abstract getLdoTotalSupply(l2blockNumber: number): Promise> -} - -export class BridgeBalanceSrv { - private name = `BridgeBalanceSrv` - private readonly logger: Logger - private readonly clientL1: IL1BridgeBalanceClient - private readonly clientL2: IL2BridgeBalanceClient - - private readonly arbitrumL1TokenBridge: string - private readonly arbitrumL1LdoBridge: string - - constructor( - logger: Logger, - clientL1: IL1BridgeBalanceClient, - arbitrumL1TokenBridge: string, - arbitrumL1LdoBridge: string, - clientL2: IL2BridgeBalanceClient, - ) { - this.logger = logger - this.clientL1 = clientL1 - this.clientL2 = clientL2 - this.arbitrumL1TokenBridge = arbitrumL1TokenBridge - this.arbitrumL1LdoBridge = arbitrumL1LdoBridge - } - - async handleBlock(l1BlockNumber: number, l2BlockNumber: number): Promise { - const start = new Date().getTime() - - const out: Finding[] = [] - const [wStethFindings, ldoFindings] = await Promise.all([ - this.handleBridgeBalanceWstETH(l1BlockNumber, l2BlockNumber), - this.handleBridgeBalanceLDO(l1BlockNumber, l2BlockNumber), - ]) - - out.push(...wStethFindings, ...ldoFindings) - - this.logger.info(elapsedTime(this.name + '.' + this.handleBlock.name, start)) - return out - } - - private async handleBridgeBalanceWstETH(l1BlockNumber: number, l2BlockNumber: number): Promise { - const [wstETHBalance_onL1arbitrumBridge, wstETHTotalSupply_onarbitrum] = await Promise.all([ - this.clientL1.getWstEthBalance(l1BlockNumber, this.arbitrumL1TokenBridge), - this.clientL2.getWstEthTotalSupply(l2BlockNumber), - ]) - - const out: Finding[] = [] - if (E.isRight(wstETHTotalSupply_onarbitrum) && E.isRight(wstETHBalance_onL1arbitrumBridge)) { - if (wstETHTotalSupply_onarbitrum.right.isGreaterThan(wstETHBalance_onL1arbitrumBridge.right)) { - const f = new Finding() - - f.setName(`🚨🚨🚨 Arbitrum bridge wstETH:stEth balance mismatch`) - f.setDescription( - `Total supply of bridged wstETH is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${wstETHTotalSupply_onarbitrum.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${wstETHBalance_onL1arbitrumBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `arbitrum: ${l2BlockNumber}\n`, - ) - f.setSeverity(Finding.Severity.CRITICAL) - f.setAlertid('OP-STETH-BRIDGE-BALANCE-MISMATCH') - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('arbitrum') - - out.push(f) - } - } else { - if (E.isLeft(wstETHBalance_onL1arbitrumBridge)) { - out.push( - networkAlert( - wstETHBalance_onL1arbitrumBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:46`, - `Could not call clientL1.getWstEthBalance`, - ), - ) - - if (E.isLeft(wstETHTotalSupply_onarbitrum)) { - out.push( - networkAlert( - wstETHTotalSupply_onarbitrum.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:46`, - `Could not call clientL2.getWstEthTotalSupply`, - ), - ) - } - } - } - - return out - } - - private async handleBridgeBalanceLDO(l1BlockNumber: number, l2BlockNumber: number): Promise { - const [ldoBalance_onL1arbitrumBridge, ldoTotalSupply_onarbitrum] = await Promise.all([ - this.clientL1.getLDOBalance(l1BlockNumber, this.arbitrumL1LdoBridge), - this.clientL2.getLdoTotalSupply(l2BlockNumber), - ]) - - const out: Finding[] = [] - - if (E.isRight(ldoBalance_onL1arbitrumBridge) && E.isRight(ldoTotalSupply_onarbitrum)) { - if (ldoTotalSupply_onarbitrum.right.isGreaterThan(ldoBalance_onL1arbitrumBridge.right)) { - const f = new Finding() - - f.setName(`🚨🚨🚨 Arbitrum bridge LDO balance mismatch`) - f.setDescription( - `Total supply of bridged LDO is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${ldoTotalSupply_onarbitrum.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${ldoBalance_onL1arbitrumBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `arbitrum: ${l2BlockNumber}\n`, - ) - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setSeverity(Finding.Severity.CRITICAL) - f.setAlertid('OP-LDO-BRIDGE-BALANCE-MISMATCH') - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('arbitrum') - - out.push(f) - } - } else { - if (E.isLeft(ldoBalance_onL1arbitrumBridge)) { - out.push( - networkAlert( - ldoBalance_onL1arbitrumBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceLDO.name}:103`, - `Could not call clientL1.getLDOBalance`, - ), - ) - - if (E.isLeft(ldoTotalSupply_onarbitrum)) { - out.push( - networkAlert( - ldoTotalSupply_onarbitrum.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceLDO.name}:102`, - `Could not call clientL2.getLdoTotalSupply`, - ), - ) - } - } - } - - return out - } -} diff --git a/l2-bridge-arbitrum/src/services/event_watcher.ts b/l2-bridge-arbitrum/src/services/event_watcher.ts deleted file mode 100644 index 5036e4e23..000000000 --- a/l2-bridge-arbitrum/src/services/event_watcher.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { EventOfNotice } from '../entity/events' -import { Log } from '@ethersproject/abstract-provider' -import { ethers } from 'ethers' -import { Finding } from '../generated/proto/alert_pb' - -export class EventWatcher { - private readonly name: string - private readonly eventsToFinding: EventOfNotice[] - - constructor(botName: string, events: EventOfNotice[]) { - this.name = botName - this.eventsToFinding = events - } - - public getName(): string { - return this.name - } - - public handleL2Logs(l2logs: Log[]): Finding[] { - const addresses: string[] = [] - - for (const l2log of l2logs) { - addresses.push(l2log.address.toLowerCase()) - } - - const findings: Finding[] = [] - for (const eventToFinding of this.eventsToFinding) { - const ind = addresses.indexOf(eventToFinding.address) - if (ind >= 0) { - for (const log of l2logs) { - if (log.address.toLowerCase() !== eventToFinding.address.toLowerCase()) { - continue - } - - const parser = new ethers.utils.Interface([eventToFinding.event]) - try { - const logDesc = parser.parseLog(log) - const f: Finding = new Finding() - - f.setName(eventToFinding.name) - f.setDescription(eventToFinding.description(logDesc.args)) - f.setAlertid(eventToFinding.alertId) - f.setSeverity(eventToFinding.severity) - f.setType(eventToFinding.type) - f.setProtocol('arbitrum') - - const m = f.getMetadataMap() - m.set('args', String(logDesc.args)) - - findings.push(f) - } catch (e) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - } - } - } - } - - return findings - } -} diff --git a/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.spec.ts b/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 977b86c2c..000000000 --- a/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { networkAlert } from '../../utils/errors' -import { HealthChecker } from './health-checker.srv' -import promClient from 'prom-client' -import * as Winston from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc')] - const borderTime = 1_000 - const timeForNextCheck = 250 - - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.ts b/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 5f07ca97a..000000000 --- a/l2-bridge-arbitrum/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { NetworkErrorFinding } from '../../utils/errors' -import { Finding } from '../../generated/proto/alert_pb' -import { Logger } from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - private logger: Logger - private metrics: Metrics - - constructor(logger: Logger, metrics: Metrics, borderTime: number, maxCountErrors: number) { - this.logger = logger - this.metrics = metrics - - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): number { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.getAlertid() === NetworkErrorFinding) { - this.logger.warn(f.getName(), { - desc: f.getDescription(), - err: { - stack: f.getMetadataMap()['stack'], - msg: f.getMetadataMap()['message'], - err: f.getMetadataMap()['name'], - }, - }) - errCount += 1 - - this.metrics.networkErrors.inc() - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return errCount - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - - return errCount - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/l2-bridge-arbitrum/src/services/monitor_withdrawals.spec.ts b/l2-bridge-arbitrum/src/services/monitor_withdrawals.spec.ts deleted file mode 100644 index d03d5986c..000000000 --- a/l2-bridge-arbitrum/src/services/monitor_withdrawals.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { ArbERC20__factory, ERC20Bridged__factory, L2ERC20TokenGateway__factory } from '../generated/typechain' -import { Address } from '../utils/constants' -import { ethers } from 'ethers' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import { Metrics } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from './monitor_withdrawals' -import { TransactionDto } from '../entity/events' -import { ArbitrumClient } from '../clients/arbitrum_client' -import * as Winston from 'winston' -import BigNumber from 'bignumber.js' -import { WithdrawalRecord } from '../entity/blockDto' - -const TEST_TIMEOUT = 120_000 - -describe('monitor_withdrawals', () => { - const config = new Config() - const adr: Address = Address - - const logger: Winston.Logger = Winston.createLogger({ - format: config.logFormat === 'simple' ? Winston.format.simple() : Winston.format.json(), - transports: [new Winston.transports.Console()], - }) - - const arbitrumProvider = new ethers.providers.JsonRpcProvider(config.arbitrumRpcUrl, config.chainId) - - const l2Bridge = L2ERC20TokenGateway__factory.connect(adr.ARBITRUM_L2_TOKEN_GATEWAY.address, arbitrumProvider) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.ARBITRUM_WSTETH_BRIDGED.address, arbitrumProvider) - const bridgedLdoRunner = ArbERC20__factory.connect(adr.ARBITRUM_LDO_BRIDGED_ADDRESS, arbitrumProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - const l2Client = new ArbitrumClient(arbitrumProvider, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - - const withdrawalsSrv = new MonitorWithdrawals(l2Client, adr.ARBITRUM_L2_TOKEN_GATEWAY.address, logger) - - test( - 'handleTransaction is 1.732302579999414411', - async () => { - const trx = await arbitrumProvider.getTransaction( - '0x1a2c17ed5ba462c26e8a1797f3a1f99a7708e659ddf033c46e95dd3f240fe883', - ) - - const receipt = await trx.wait() - const block = await arbitrumProvider.getBlock(receipt.blockHash) - - const logs = await arbitrumProvider.getLogs({ - blockHash: '0xb713ad11db2444ea29b823d84c8480c6fe7e478f307f59b070a835ad9f114f73', - }) - - const trxDto: TransactionDto = { - logs: logs, - to: trx.to ? trx.to.toLowerCase() : null, - block: { - number: new BigNumber(block.number, 10).toNumber(), - timestamp: block.timestamp, - }, - } - - const withdrawalRecord = withdrawalsSrv.handleTransaction(trxDto) - if (withdrawalRecord === null) { - throw new Error('Could not parse log') - } - - const expectedAmount = new BigNumber('1732302579999414411') - - const expected: WithdrawalRecord = { - timestamp: block.timestamp, - amount: expectedAmount, - } - - expect(withdrawalRecord).toEqual(expected) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-arbitrum/src/services/monitor_withdrawals.ts b/l2-bridge-arbitrum/src/services/monitor_withdrawals.ts deleted file mode 100644 index d3c3fa0c0..000000000 --- a/l2-bridge-arbitrum/src/services/monitor_withdrawals.ts +++ /dev/null @@ -1,166 +0,0 @@ -import BigNumber from 'bignumber.js' -import { BlockDto, WithdrawalRecord } from '../entity/blockDto' -import * as E from 'fp-ts/Either' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import { NetworkError } from '../utils/errors' -import { WithdrawalInitiatedEvent } from '../generated/typechain/L2ERC20TokenGateway' -import { Finding } from '../generated/proto/alert_pb' -import { TransactionDto } from '../entity/events' -import { ethers } from 'forta-agent' -import { ETH_DECIMALS } from '../utils/constants' - -// 10k wstETH -const MAX_WITHDRAWALS_10K_WstEth = 10_000 - -export type MonitorWithdrawalsInitResp = { - currentWithdrawals: string -} - -export const HOURS_48 = 60 * 60 * 24 * 2 -export const AVG_BLOCK_TIME_2SECONDS: number = 2 //s - -export abstract class IMonitorWithdrawalsClient { - public abstract getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> - - public abstract getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> -} - -export class MonitorWithdrawals { - private readonly name: string = 'WithdrawalsMonitor' - private readonly withdrawalInitiatedEvent = - 'event WithdrawalInitiated(address l1Token, address indexed from, address indexed to, uint256 indexed l2ToL1Id, uint256 exitNum, uint256 amount)' - - private readonly logger: Logger - private readonly arbitrumL2TokenGateway: string - private readonly withdrawalsClient: IMonitorWithdrawalsClient - - private withdrawalStore: WithdrawalRecord[] = [] - private toManyWithdrawalsTimestamp = 0 - - constructor(withdrawalsClient: IMonitorWithdrawalsClient, arbitrumL2TokenGateway: string, logger: Logger) { - this.withdrawalsClient = withdrawalsClient - this.arbitrumL2TokenGateway = arbitrumL2TokenGateway - this.logger = logger - } - - public getName(): string { - return this.name - } - - public async initialize(currentBlock: number): Promise> { - // 48 hours - const pastBlock = currentBlock - Math.ceil(HOURS_48 / AVG_BLOCK_TIME_2SECONDS) - - const withdrawalEvents = await this.withdrawalsClient.getWithdrawalEvents(pastBlock, currentBlock - 1) - if (E.isLeft(withdrawalEvents)) { - return withdrawalEvents - } - - const withdrawalRecords = await this.withdrawalsClient.getWithdrawalRecords(withdrawalEvents.right) - if (E.isLeft(withdrawalRecords)) { - return withdrawalRecords - } - - const withdrawalsSum = new BigNumber(0) - for (const wc of withdrawalRecords.right) { - withdrawalsSum.plus(wc.amount) - this.withdrawalStore.push(wc) - } - - this.logger.info(`${MonitorWithdrawals.name} started on block ${currentBlock}`) - return E.right({ - currentWithdrawals: withdrawalsSum.div(ETH_DECIMALS).toFixed(2), - }) - } - - public handleL2Block(l2BlockDto: BlockDto): Finding[] { - const start = new Date().getTime() - - const out: Finding[] = [] - - // remove withdrawals records older than MAX_WITHDRAWALS_WINDOW - const withdrawalsCache: WithdrawalRecord[] = [] - for (const wc of this.withdrawalStore) { - if (l2BlockDto.timestamp - HOURS_48 < wc.timestamp) { - withdrawalsCache.push(wc) - } - } - - this.withdrawalStore = withdrawalsCache - - const withdrawalsSum = new BigNumber(0) - for (const wc of this.withdrawalStore) { - withdrawalsSum.plus(wc.amount) - } - - // block number condition is meant to "sync" agents alerts - if ( - withdrawalsSum.div(ETH_DECIMALS).isGreaterThanOrEqualTo(MAX_WITHDRAWALS_10K_WstEth) && - l2BlockDto.number % 10 === 0 - ) { - const period = - l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp < HOURS_48 - ? l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp - : HOURS_48 - - const f: Finding = new Finding() - f.setName(`⚠️ arbitrum: Huge withdrawals during the last ` + `${Math.floor(period / (60 * 60))} hour(s)`) - f.setDescription( - `There were withdrawals requests from L2 to L1 for the ` + - `${withdrawalsSum.div(ETH_DECIMALS).toFixed(4)} wstETH in total`, - ) - f.setAlertid('HUGE-WITHDRAWALS-FROM-L2') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('arbitrum') - - out.push(f) - - this.toManyWithdrawalsTimestamp = l2BlockDto.timestamp - - const tmp: WithdrawalRecord[] = [] - for (const wc of this.withdrawalStore) { - if (l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp < wc.timestamp) { - tmp.push(wc) - } - } - - this.withdrawalStore = tmp - } - - this.logger.info(elapsedTime(MonitorWithdrawals.name + '.' + this.handleL2Block.name, start)) - return out - } - - public handleTransaction(txDto: TransactionDto): WithdrawalRecord | null { - for (const log of txDto.logs) { - if (log.address.toLowerCase() !== this.arbitrumL2TokenGateway.toLowerCase()) { - continue - } - - const parser = new ethers.utils.Interface([this.withdrawalInitiatedEvent]) - try { - const logDesc = parser.parseLog(log) - - const out: WithdrawalRecord = { - timestamp: txDto.block.timestamp, - amount: new BigNumber(String(logDesc.args.amount)), - } - - this.withdrawalStore.push(out) - - return out - } catch (e) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - } - } - - return null - } -} diff --git a/l2-bridge-arbitrum/src/services/proxy_watcher.ts b/l2-bridge-arbitrum/src/services/proxy_watcher.ts deleted file mode 100644 index c774889be..000000000 --- a/l2-bridge-arbitrum/src/services/proxy_watcher.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { IProxyContractClient } from '../clients/proxy_contract_client' -import * as E from 'fp-ts/Either' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import { networkAlert } from '../utils/errors' -import { Finding } from '../generated/proto/alert_pb' - -export class ProxyWatcher { - private readonly name: string = 'ProxyWatcher' - - private lastImpl: string = '' - private lastAdmin: string = '' - - private readonly proxyContract: IProxyContractClient - private readonly logger: Logger - - constructor(proxyContract: IProxyContractClient, logger: Logger) { - this.proxyContract = proxyContract - this.logger = logger - } - - public getName(): string { - return this.proxyContract.getName() + `(${this.proxyContract.getAddress()}).` + this.name - } - - public getAdmin(): string { - return this.lastAdmin.toLowerCase() - } - - public getImpl(): string { - return this.lastImpl.toLowerCase() - } - - public setAdmin(admin: string) { - this.lastAdmin = admin.toLowerCase() - } - - public setImpl(impl: string) { - this.lastImpl = impl.toLowerCase() - } - - async initialize(currentL2Block: number): Promise { - const [lastImpl, lastAdmin] = await Promise.all([ - this.proxyContract.getProxyImplementation(currentL2Block), - this.proxyContract.getProxyAdmin(currentL2Block), - ]) - - if (E.isLeft(lastImpl)) { - return lastImpl.left - } - - if (E.isLeft(lastAdmin)) { - return lastAdmin.left - } - - this.setImpl(lastImpl.right) - this.setAdmin(lastAdmin.right) - - this.logger.info(`${this.getName()}. started on block ${currentL2Block}`) - - return null - } - - async handleL2Block(l2blockNumber: number): Promise { - const start = new Date().getTime() - - const BLOCK_INTERVAL = 25 - const out: Finding[] = [] - - if (l2blockNumber % BLOCK_INTERVAL === 0) { - const [impl, admin] = await Promise.all([ - this.handleProxyImplementationChanges(l2blockNumber), - this.handleProxyAdminChanges(l2blockNumber), - ]) - - out.push(...impl, ...admin) - } - - this.logger.info(this.getName() + '.impl = ' + this.getImpl()) - this.logger.info(this.getName() + '.adm = ' + this.getAdmin()) - this.logger.info(elapsedTime(this.proxyContract.getName() + `.` + this.handleL2Block.name, start)) - return out - } - - private async handleProxyImplementationChanges(l2BlockNumber: number): Promise { - const out: Finding[] = [] - - const newImpl = await this.proxyContract.getProxyImplementation(l2BlockNumber) - if (E.isLeft(newImpl)) { - return [ - networkAlert( - newImpl.left, - `Error in ${this.getName()}.${this.handleProxyImplementationChanges.name}:98`, - `Could not fetch proxyImplementation on ${l2BlockNumber}`, - ), - ] - } - - if (newImpl.right.toLowerCase() != this.getImpl().toLowerCase()) { - const f: Finding = new Finding() - - f.setName('🚨 arbitrum: Proxy implementation changed') - f.setDescription( - `Proxy implementation for ${this.proxyContract.getName()}(${this.proxyContract.getAddress()}) ` + - `was changed form ${this.getImpl()} to ${newImpl}` + - `\n(detected by func call)`, - ) - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('arbitrum') - - const m = f.getMetadataMap() - m.set('newImpl', newImpl.right) - m.set('lastImpl', this.getImpl()) - - out.push(f) - - this.setImpl(newImpl.right.toLowerCase()) - } - - return out - } - - private async handleProxyAdminChanges(l2blockNumber: number): Promise { - const out: Finding[] = [] - - const newAdmin = await this.proxyContract.getProxyAdmin(l2blockNumber) - if (E.isLeft(newAdmin)) { - return [ - networkAlert( - newAdmin.left, - `Error in ${this.getName()}.${this.handleProxyAdminChanges.name}:138`, - `Could not fetch getProxyAdmin on ${l2blockNumber}`, - ), - ] - } - - if (newAdmin.right.toLowerCase() != this.getAdmin().toLowerCase()) { - const f: Finding = new Finding() - f.setName('🚨 arbitrum: Proxy admin changed') - f.setDescription( - `Proxy admin for ${this.proxyContract.getName()}(${this.proxyContract.getAddress()}) ` + - `was changed from ${this.getAdmin()} to ${newAdmin}` + - `\n(detected by func call)`, - ) - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('arbitrum') - - const m = f.getMetadataMap() - m.set('newAdmin', newAdmin.right) - m.set('lastAdmin', this.getAdmin()) - - this.setAdmin(newAdmin.right.toLowerCase()) - - out.push(f) - } - - return out - } -} diff --git a/l2-bridge-arbitrum/src/utils/constants.ts b/l2-bridge-arbitrum/src/utils/constants.ts deleted file mode 100644 index 04798565d..000000000 --- a/l2-bridge-arbitrum/src/utils/constants.ts +++ /dev/null @@ -1,62 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ContractInfo = { - address: string - name: string -} - -export type Address = { - L1_LDO_ADDRESS: string - L1_WSTETH_ADDRESS: string - ARBITRUM_L1_TOKEN_BRIDGE: string - ARBITRUM_L1_LDO_BRIDGE: string - GOV_BRIDGE_ADDRESS: string - RolesMap: RoleHashToNameMap - ARBITRUM_L2_TOKEN_GATEWAY: ContractInfo - ARBITRUM_WSTETH_BRIDGED: ContractInfo - ARBITRUM_LDO_BRIDGED_ADDRESS: string -} - -export type RoleHashToNameMap = Map -export const ETH_DECIMALS = new BigNumber(10).pow(18) - -const L1_LDO_ADDRESS = '0x5a98fcbea516cf06857215779fd812ca3bef1b32' -const L1_WSTETH_ADDRESS = '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' - -const ARBITRUM_L1_TOKEN_BRIDGE = `0x0f25c1dc2a9922304f2eac71dca9b07e310e8e5a` -const ARBITRUM_L1_LDO_BRIDGE = `0xa3a7b6f88361f48403514059f1f16c8e78d60eec` -const GOV_BRIDGE_ADDRESS: string = '0x1dcA41859Cd23b526CBe74dA8F48aC96e14B1A29' - -const ARBITRUM_WSTETH_BRIDGED = '0x5979d7b546e38e414f7e9822514be443a4800529' -const ARBITRUM_LDO_BRIDGED_ADDRESS = '0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60' -const ARBITRUM_L2_TOKEN_GATEWAY = '0x07d4692291b9e30e326fd31706f686f83f331b82' - -const DEPOSITS_DISABLER_ROLE_HASH: string = '0x63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6' -const DEPOSITS_ENABLER_ROLE_HASH: string = '0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a' -const WITHDRAWALS_ENABLER_ROLE_HASH: string = '0x9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d' -const WITHDRAWALS_DISABLER_ROLE_HASH: string = '0x94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c' -const DEFAULT_ADMIN_ROLE_HASH: string = '0x0000000000000000000000000000000000000000000000000000000000000000' - -export const Address: Address = { - L1_LDO_ADDRESS: L1_LDO_ADDRESS, - L1_WSTETH_ADDRESS: L1_WSTETH_ADDRESS, - ARBITRUM_L1_TOKEN_BRIDGE: ARBITRUM_L1_TOKEN_BRIDGE, - ARBITRUM_L1_LDO_BRIDGE: ARBITRUM_L1_LDO_BRIDGE, - GOV_BRIDGE_ADDRESS: GOV_BRIDGE_ADDRESS, - ARBITRUM_WSTETH_BRIDGED: { - name: 'ARBITRUM_WSTETH_BRIDGED', - address: ARBITRUM_WSTETH_BRIDGED, - }, - ARBITRUM_L2_TOKEN_GATEWAY: { - name: 'ARBITRUM_L2_TOKEN_GATEWAY', - address: ARBITRUM_L2_TOKEN_GATEWAY, - }, - RolesMap: new Map([ - [DEPOSITS_ENABLER_ROLE_HASH, 'DEPOSITS ENABLER ROLE'], - [DEPOSITS_DISABLER_ROLE_HASH, 'DEPOSITS DISABLER ROLE'], - [WITHDRAWALS_ENABLER_ROLE_HASH, 'WITHDRAWALS ENABLER ROLE'], - [WITHDRAWALS_DISABLER_ROLE_HASH, 'WITHDRAWALS DISABLER ROLE'], - [DEFAULT_ADMIN_ROLE_HASH, 'DEFAULT ADMIN ROLE'], - ]), - ARBITRUM_LDO_BRIDGED_ADDRESS: ARBITRUM_LDO_BRIDGED_ADDRESS, -} diff --git a/l2-bridge-arbitrum/src/utils/env/env.ts b/l2-bridge-arbitrum/src/utils/env/env.ts deleted file mode 100644 index badd095d6..000000000 --- a/l2-bridge-arbitrum/src/utils/env/env.ts +++ /dev/null @@ -1,50 +0,0 @@ -import 'dotenv/config' - -export class Config { - public readonly appName: string - public readonly nodeEnv: string - public readonly instance: string - public readonly ethereumRpcUrl: string - public readonly arbitrumRpcUrl: string - public readonly dataProvider: string - - public readonly grpcPort: number - public readonly httpPort: number - public readonly logFormat: string - public readonly logLevel: string - - public readonly chainId: number - public readonly promPrefix: string - public readonly useFortaProvider: boolean - - constructor() { - this.appName = process.env.APP_NAME || 'l2-bridge-arbitrum' - this.nodeEnv = process.env.NODE_ENV || 'production' - this.instance = process.env.INSTANCE || 'forta' - - this.grpcPort = parseInt(process.env.AGENT_GRPC_PORT!, 10) || 50051 - this.httpPort = parseInt(process.env.HTTP_PORT!, 10) || 3000 - this.logFormat = process.env.LOG_FORMAT || 'simple' - this.logLevel = process.env.LOG_LEVEL || 'info' - - this.chainId = parseInt(process.env.FORTA_CHAIN_ID!, 10) || 42161 - this.ethereumRpcUrl = process.env.ETHEREUM_RPC_URL || 'https://eth.drpc.org' - this.arbitrumRpcUrl = process.env.ARBITRUM_RPC_URL || 'https://arbitrum.drpc.org' - - this.promPrefix = this.appName.replaceAll('-', '_') - - if (process.env.USE_FORTA_RPC_URL === undefined) { - this.useFortaProvider = false - } else { - this.useFortaProvider = JSON.parse(process.env.USE_FORTA_RPC_URL) - } - - const urlRegex = /^(?:https?:\/\/)?(?:www\.)?([^/\n]+)/ - - this.dataProvider = '' - const match = this.arbitrumRpcUrl.match(urlRegex) - if (match) { - this.dataProvider = match[1] - } - } -} diff --git a/l2-bridge-arbitrum/src/utils/errors.ts b/l2-bridge-arbitrum/src/utils/errors.ts deleted file mode 100644 index ed0183cb7..000000000 --- a/l2-bridge-arbitrum/src/utils/errors.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Finding } from '../generated/proto/alert_pb' - -export const NetworkErrorFinding = 'NETWORK-ERROR' - -export function networkAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid(NetworkErrorFinding) - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export function dbAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid('DB-ERROR') - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - this.cause = e.cause - } else { - this.message = `${e}` - } - } -} diff --git a/l2-bridge-arbitrum/src/utils/events/bridge_events.ts b/l2-bridge-arbitrum/src/utils/events/bridge_events.ts deleted file mode 100644 index 169a07c07..000000000 --- a/l2-bridge-arbitrum/src/utils/events/bridge_events.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import { Result } from '@ethersproject/abi/lib' - -export function getL2BridgeEvents(arbitrum_L2_TOKEN_GATEWAY: string, RolesMap: Map): EventOfNotice[] { - return [ - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event Initialized(address indexed admin)', - alertId: 'L2-BRIDGE-IMPLEMENTATION-INITIALIZED', - name: '🚨🚨🚨 Arbitrum L2 Bridge: Implementation initialized', - description: (args: Result) => - `Implementation of the arbitrum L2 Bridge was initialized by ${args.admin}\n` + - `NOTE: This is not the thing that should be left unacted! ` + - `Make sure that this call was made by Lido!`, - severity: Finding.Severity.CRITICAL, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event DepositsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-DEPOSITS-DISABLED', - name: '🚨 arbitrum L2 Bridge: Deposits Disabled', - description: (args: Result) => `Deposits were disabled by ${args.disabler}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: - 'event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)', - alertId: 'L2-BRIDGE-ROLE-ADMIN-CHANGED', - name: '🚨 Arbitrum L2 Bridge: Role Admin changed', - description: (args: Result) => - `Role Admin for role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was changed from ${args.previousAdminRole} to ${args.newAdminRole}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event WithdrawalsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-DISABLED', - name: '🚨 Arbitrum L2 Bridge: Withdrawals Disabled', - description: (args: Result) => `Withdrawals were disabled by ${args.enabler}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-GRANTED', - name: '⚠️ Arbitrum L2 Bridge: Role granted', - description: (args: Result) => - `Role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was granted to ${args.account} by ${args.sender}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-REVOKED', - name: '⚠️ Arbitrum L2 Bridge: Role revoked', - description: (args: Result) => - `Role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was revoked to ${args.account} by ${args.sender}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event DepositsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-DEPOSITS-ENABLED', - name: 'ℹ️ Arbitrum L2 Bridge: Deposits Enabled', - description: (args: Result) => `Deposits were enabled by ${args.enabler}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - - { - address: arbitrum_L2_TOKEN_GATEWAY, - event: 'event WithdrawalsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-ENABLED', - name: 'ℹ️ Arbitrum L2 Bridge: Withdrawals Enabled', - description: (args: Result) => `Withdrawals were enabled by ${args.enabler}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-arbitrum/src/utils/events/gov_events.ts b/l2-bridge-arbitrum/src/utils/events/gov_events.ts deleted file mode 100644 index 5ab6a0c7f..000000000 --- a/l2-bridge-arbitrum/src/utils/events/gov_events.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import { Result } from '@ethersproject/abi/lib' - -export function getGovEvents(GOV_BRIDGE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event EthereumGovernanceExecutorUpdate(address oldEthereumGovernanceExecutor, address newEthereumGovernanceExecutor)', - alertId: 'GOV-BRIDGE-EXEC-UPDATED', - name: '🚨 Arbitrum Gov Bridge: Ethereum Governance Executor Updated', - description: (args: Result) => - `Ethereum Governance Executor was updated from ` + - `${args.oldEthereumGovernanceExecutor} to ${args.newEthereumGovernanceExecutor}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GuardianUpdate(address oldGuardian, address newGuardian)', - alertId: 'GOV-BRIDGE-GUARDIAN-UPDATED', - name: '🚨 Arbitrum Gov Bridge: Guardian Updated', - description: (args: Result) => `Guardian was updated from ` + `${args.oldGuardian} to ${args.newGuardian}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event DelayUpdate(uint256 oldDelay, uint256 newDelay)', - alertId: 'GOV-BRIDGE-DELAY-UPDATED', - name: '⚠️ Arbitrum Gov Bridge: Delay Updated', - description: (args: Result) => `Delay was updated from ` + `${args.oldDelay} to ${args.newDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GracePeriodUpdate(uint256 oldGracePeriod, uint256 newGracePeriod)', - alertId: 'GOV-BRIDGE-GRACE-PERIOD-UPDATED', - name: '⚠️ Arbitrum Gov Bridge: Grace Period Updated', - description: (args: Result) => - `Grace Period was updated from ` + `${args.oldGracePeriod} to ${args.newGracePeriod}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MinimumDelayUpdate(uint256 oldMinimumDelay, uint256 newMinimumDelay)', - alertId: 'GOV-BRIDGE-MIN-DELAY-UPDATED', - name: '⚠️ Arbitrum Gov Bridge: Min Delay Updated', - description: (args: Result) => - `Min Delay was updated from ` + `${args.oldMinimumDelay} to ${args.newMinimumDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MaximumDelayUpdate(uint256 oldMaximumDelay, uint256 newMaximumDelay)', - alertId: 'GOV-BRIDGE-MAX-DELAY-UPDATED', - name: '⚠️ Arbitrum Gov Bridge: Max Delay Updated', - description: (args: Result) => - `Max Delay was updated from ` + `${args.oldMaximumDelay} to ${args.newMaximumDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event ActionsSetQueued(uint256 indexed id, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, bool[] withDelegatecalls, uint256 executionTime)', - alertId: 'GOV-BRIDGE-ACTION-SET-QUEUED', - name: ' ℹ️ Arbitrum Gov Bridge: Action set queued', - description: (args: Result) => `Action set ${args.id} was queued`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetExecuted(uint256 indexed id, address indexed initiatorExecution, bytes[] returnedData)', - alertId: 'GOV-BRIDGE-ACTION-SET-EXECUTED', - name: ' ℹ️ Arbitrum Gov Bridge: Action set executed', - description: (args: Result) => `Action set ${args.id} was executed`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetCanceled(uint256 indexed id)', - alertId: 'GOV-BRIDGE-ACTION-SET-CANCELED', - name: ' ℹ️ Arbitrum Gov Bridge: Action set canceled', - description: (args: Result) => `Action set ${args.id} was canceled`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-arbitrum/src/utils/events/proxy_admin_events.ts b/l2-bridge-arbitrum/src/utils/events/proxy_admin_events.ts deleted file mode 100644 index 0554c4045..000000000 --- a/l2-bridge-arbitrum/src/utils/events/proxy_admin_events.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import FindingType = Finding.FindingType -import { ContractInfo } from '../constants' -import { Result } from '@ethersproject/abi/lib' - -export function getProxyAdminEvents( - ARBITRUM_WSTETH_BRIDGED: ContractInfo, - ARBITRUM_L2_TOKEN_GATEWAY: ContractInfo, -): EventOfNotice[] { - return [ - { - address: ARBITRUM_WSTETH_BRIDGED.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Arbitrum: Proxy ossified', - description: () => - `Proxy for ${ARBITRUM_WSTETH_BRIDGED.name}(${ARBITRUM_WSTETH_BRIDGED.address}) was ossified` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_WSTETH_BRIDGED.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Arbitrum: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${ARBITRUM_WSTETH_BRIDGED.name}(${ARBITRUM_WSTETH_BRIDGED.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_WSTETH_BRIDGED.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Arbitrum: Proxy upgraded', - description: (args: Result) => - `Proxy for ${ARBITRUM_WSTETH_BRIDGED.name}(${ARBITRUM_WSTETH_BRIDGED.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_WSTETH_BRIDGED.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Arbitrum: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${ARBITRUM_WSTETH_BRIDGED.name}(${ARBITRUM_WSTETH_BRIDGED.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - //--- - { - address: ARBITRUM_L2_TOKEN_GATEWAY.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Arbitrum: Proxy ossified', - description: () => - `Proxy for ${ARBITRUM_L2_TOKEN_GATEWAY.name}(${ARBITRUM_L2_TOKEN_GATEWAY.address}) was ossified` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_L2_TOKEN_GATEWAY.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Arbitrum: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${ARBITRUM_L2_TOKEN_GATEWAY.name}(${ARBITRUM_L2_TOKEN_GATEWAY.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_L2_TOKEN_GATEWAY.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Arbitrum: Proxy upgraded', - description: (args: Result) => - `Proxy for ${ARBITRUM_L2_TOKEN_GATEWAY.name}(${ARBITRUM_L2_TOKEN_GATEWAY.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: ARBITRUM_L2_TOKEN_GATEWAY.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Arbitrum: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${ARBITRUM_L2_TOKEN_GATEWAY.name}(${ARBITRUM_L2_TOKEN_GATEWAY.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-arbitrum/src/utils/metrics/metrics.ts b/l2-bridge-arbitrum/src/utils/metrics/metrics.ts deleted file mode 100644 index 743e4e790..000000000 --- a/l2-bridge-arbitrum/src/utils/metrics/metrics.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Counter, Gauge, Histogram, Registry, Summary } from 'prom-client' - -export const StatusOK = 'ok' -export const StatusFail = 'fail' -export const HandleBlockLabel = 'handleBlock' -export const HandleTxLabel = 'handleTx' - -export class Metrics { - private readonly registry: Registry - private readonly prefix: string - - public readonly healthStatus: Gauge - public readonly buildInfo: Gauge - - public readonly etherJsRequest: Counter - public readonly networkErrors: Counter - public readonly lastBlockNumber: Gauge - public readonly etherJsDurationHistogram: Histogram - public readonly lastAgentTouch: Gauge - public readonly processedIterations: Counter - public readonly summaryHandlers: Summary - - constructor(registry: Registry, prefix: string) { - this.registry = registry - this.prefix = prefix - - this.buildInfo = new Gauge({ - name: this.prefix + 'build_info', - help: 'Build information', - labelNames: ['commitHash' as const], - registers: [this.registry], - }) - - this.healthStatus = new Gauge({ - name: this.prefix + 'health_status', - help: 'Bot health status', - labelNames: ['instance'] as const, - registers: [this.registry], - }) - - this.etherJsRequest = new Counter({ - name: this.prefix + 'etherjs_request_total', - help: 'Total number of requests via ether.js library', - labelNames: ['method' as const, 'status' as const] as const, - registers: [this.registry], - }) - - this.etherJsDurationHistogram = new Histogram({ - name: this.prefix + 'ether_requests_duration_seconds', - help: 'Histogram of the duration of requests in seconds', - labelNames: ['method', 'status'], - buckets: [0.001, 0.01, 0.1, 0.5, 1, 2.5, 5, 10], - }) - - this.lastAgentTouch = new Gauge({ - name: this.prefix + 'block_timestamp', - help: 'The last agent iteration', - labelNames: ['method' as const] as const, - registers: [this.registry], - }) - - this.lastBlockNumber = new Gauge({ - name: this.prefix + 'last_block_number', - help: 'The last agent block number', - registers: [this.registry], - }) - - this.networkErrors = new Counter({ - name: this.prefix + 'network_errors_total', - help: 'Total number of network errors', - registers: [this.registry], - }) - - this.processedIterations = new Counter({ - name: this.prefix + 'processed_iterations_total', - help: 'Total number of finding iterations', - labelNames: ['method', 'status'], - registers: [this.registry], - }) - - this.summaryHandlers = new Summary({ - name: this.prefix + 'request_processing_seconds', - help: 'Time spent processing request (block or transaction)', - labelNames: ['method'], - registers: [this.registry], - }) - } -} diff --git a/l2-bridge-arbitrum/src/utils/mutex.ts b/l2-bridge-arbitrum/src/utils/mutex.ts deleted file mode 100644 index 377f148fe..000000000 --- a/l2-bridge-arbitrum/src/utils/mutex.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Mutex, MutexInterface, withTimeout } from 'async-mutex' - -export class DataRW { - private mutex: MutexInterface - private value: T[] - - constructor(initialValue: T[]) { - this.mutex = withTimeout(new Mutex(), 100) - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: T[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/l2-bridge-arbitrum/src/utils/time.ts b/l2-bridge-arbitrum/src/utils/time.ts deleted file mode 100644 index 2b2433be3..000000000 --- a/l2-bridge-arbitrum/src/utils/time.ts +++ /dev/null @@ -1,32 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} - -export function formatDelay(fullDelaySec: number): string { - const sign = fullDelaySec >= 0 ? 1 : -1 - let delayHours = 0 - let delayMin = Math.floor((sign * fullDelaySec) / 60) - const delaySec = sign * fullDelaySec - delayMin * 60 - if (delayMin >= 60) { - delayHours = Math.floor(delayMin / 60) - delayMin -= delayHours * 60 - } - return ( - (sign == 1 ? '' : '-') + - (delayHours > 0 ? `${delayHours} hrs ` : '') + - (delayMin > 0 ? `${delayMin} min ` : '') + - `${delaySec} sec` - ) -} diff --git a/l2-bridge-arbitrum/src/utils/version.ts b/l2-bridge-arbitrum/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/l2-bridge-arbitrum/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/l2-bridge-arbitrum/tsconfig.json b/l2-bridge-arbitrum/tsconfig.json deleted file mode 100644 index 9f1e16f51..000000000 --- a/l2-bridge-arbitrum/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist" - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/l2-bridge-arbitrum/yarn.lock b/l2-bridge-arbitrum/yarn.lock deleted file mode 100644 index 847ed3cb2..000000000 --- a/l2-bridge-arbitrum/yarn.lock +++ /dev/null @@ -1,5571 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.7", "@babel/generator@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== - dependencies: - "@babel/types" "^7.24.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" - integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== - -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/template@^7.24.7", "@babel/template@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@faker-js/faker@^8.3.1": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" - integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== - -"@grpc/grpc-js@^1.10.2", "@grpc/grpc-js@^1.3.6": - version "1.10.10" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.10.tgz#476d315feeb9dbb0f2d6560008c92688c30f13e0" - integrity sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.13": - version "0.7.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" - integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@opentelemetry/api@^1.4.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" - integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@tsconfig/node20@^20.1.2": - version "20.1.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.4.tgz#3457d42eddf12d3bde3976186ab0cd22b85df928" - integrity sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.11": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.17.5" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.5.tgz#e6c29b58e66995d57cd170ce3e2a61926d55ee04" - integrity sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.14.2": - version "20.14.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.8.tgz#45c26a2a5de26c3534a9504530ddb3b27ce031ac" - integrity sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" - integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -async-mutex@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" - integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserslist@^4.22.2: - version "4.23.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" - integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== - dependencies: - caniuse-lite "^1.0.30001629" - electron-to-chromium "^1.4.796" - node-releases "^2.0.14" - update-browserslist-db "^1.0.16" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001629: - version "1.0.30001636" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" - integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.796: - version "1.4.811" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.811.tgz#031c8b101e7d0a7cde1dfdb0623dbdb5e19655cd" - integrity sha512-CDyzcJ5XW78SHzsIOdn27z8J4ist8eaFLhdto2hSMSJQgsiwvbv2fbizcKUICryw1Wii1TI/FEkvzvJsR3awrA== - -elliptic@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" - integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -ethers@^5.5.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@^2.16.1: - version "2.16.6" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.6.tgz#9d63c5b2a06355d627ae94c37a5cffda5c455d24" - integrity sha512-v7w209VPj4L6pPn/ftFRJu31Oa8QagwcVw7BZmLCUWU4AQoc954rX9ogSIahDf67Pg+GjPbkW/Kn9XWnlWJG0g== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -google-protobuf@3.15.8: - version "3.15.8" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe" - integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -grpc-tools@^1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/grpc-tools/-/grpc-tools-1.12.4.tgz#a044c9e8157941033ea7a5f144c2dc9dc4501de4" - integrity sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - -grpc_tools_node_protoc_ts@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz#9a6c1c2f41563a1ab259c0177496d7dfed30dbfe" - integrity sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww== - dependencies: - google-protobuf "3.15.8" - handlebars "4.7.7" - -handlebars@4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.4.tgz#c34dcd8eb46a05723ccde60cbdd25addcc8725e4" - integrity sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prom-client@^15.1.2: - version "15.1.2" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.2.tgz#78d79f12c35d395ca97edf7111c18210cf07f815" - integrity sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ== - dependencies: - "@opentelemetry/api" "^1.4.0" - tdigest "^0.1.1" - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.5: - version "7.3.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tar@^6.1.11: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tdigest@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" - integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== - dependencies: - bintrees "1.0.2" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.2: - version "29.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.5.tgz#d6c0471cc78bffa2cb4664a0a6741ef36cfe8f69" - integrity sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-retry@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.5.tgz#ee4638e66c68bb49da975aa4994d5f16bfb61bc2" - integrity sha512-dFBa4pxMBkt/bjzdBio8EwYfbAdycEAwe0KZgzlUKKwU9Wr1WErK7Hg9QLqJuDDYJXTW4KYZyXAyqYKOdO/ehA== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507" - integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -winston-transport@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" - integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" - integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.7.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/l2-bridge-base/.dockerignore b/l2-bridge-base/.dockerignore deleted file mode 100644 index 4514cae5a..000000000 --- a/l2-bridge-base/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.yarn/ -!.yarn/releases/ -dist/ -forta.config.json diff --git a/l2-bridge-base/.eslintrc.json b/l2-bridge-base/.eslintrc.json deleted file mode 100644 index 867579eb0..000000000 --- a/l2-bridge-base/.eslintrc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error" - } -} diff --git a/l2-bridge-base/.gitignore b/l2-bridge-base/.gitignore deleted file mode 100644 index a18706e38..000000000 --- a/l2-bridge-base/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -src/generated diff --git a/l2-bridge-base/.prettierrc.json b/l2-bridge-base/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/l2-bridge-base/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/l2-bridge-base/Dockerfile b/l2-bridge-base/Dockerfile deleted file mode 100644 index f08dc7db8..000000000 --- a/l2-bridge-base/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.11.1-alpine3.19 AS base - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build -# Build app -RUN yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" -ENV NODE_ENV=production -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:prod"] \ No newline at end of file diff --git a/l2-bridge-base/README.md b/l2-bridge-base/README.md deleted file mode 100644 index 0c514d882..000000000 --- a/l2-bridge-base/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Lido Detection Bot for base part of L2 bridge - -## Supported chains - -- Ethereum mainnet, Base network - -## Alerts - -1. Bridge events - 1. 🚨🚨🚨 Base bridge balance mismatch 🚨🚨🚨 - 2. 🚨 Base L2 Bridge: Withdrawals Disabled - 3. 🚨 Base L2 Bridge: Implementation initialized - 4. 🚨 Base L2 Bridge: Deposits Disabled - 5. 🚨 Base L2 Bridge: Role Admin changed - 6. ⚠️ Base L2 Bridge: Role granted - 7. ⚠️ Base L2 Bridge: Role revoked - 8. ℹ️ Base L2 Bridge: Deposits Enabled - 9. ℹ️ Base L2 Bridge: Withdrawals Enabled -2. Gov Events - 1. 🚨 Base Gov Bridge: Ethereum Governance Executor Updated - 2. 🚨 Base Gov Bridge: Guardian Updated - 3. ⚠️ Base Gov Bridge: Delay Updated - 4. ⚠️ Base Gov Bridge: Grace Period Updated - 5. ⚠️ Base Gov Bridge: Min Delay Updated - 6. ⚠️ Base Gov Bridge: Max Delay Updated - 7. ℹ️ Base Gov Bridge: Action set queued - 8. ℹ️ Base Gov Bridge: Action set executed - 9. ℹ️ Base Gov Bridge: Action set canceled -3. Proxy events - 1. 🚨 Base: Proxy admin changed - 2. 🚨 Base: Proxy upgraded - 3. 🚨 Base: Proxy beacon upgraded - 4. 🚨 Base: Proxy ossified -4. Monitor Withdrawals - 1. ⚠️ Base: Huge withdrawals during the last ... - -## Development - -cp `forta.config.example.json forta.config.json` and set `jsonRpcUrl` to your Base blockchain JSON-RPC provider. Install deps: - -``` -yarn install -``` - -Running in a live mode: - -``` -yarn start:dev -``` - -Testing on a specific block/range/transaction: - -``` -yarn block 5764029 -yarn range '5764000..5764029' -yarn tx 0x5e7e3adcbe9645ca65703055bf3a5355225ee61eda0b24ebcad36f69869e7a01 -``` diff --git a/l2-bridge-base/jest.config.js b/l2-bridge-base/jest.config.js deleted file mode 100644 index 9dfeb5d27..000000000 --- a/l2-bridge-base/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['dist'], -} diff --git a/l2-bridge-base/package.json b/l2-bridge-base/package.json deleted file mode 100644 index 088b9a2d1..000000000 --- a/l2-bridge-base/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "lido-l2-bridge-base", - "version": "0.0.1", - "description": "Lido Detection Bot for base part of L2 bridge", - "license": "MIT", - "chainIds": [ - 1 - ], - "chainSettings": { - "default": { - "shards": 1, - "target": 5 - } - }, - "engines": { - "node": ">=20.0" - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "build": "tsc && yarn run copy-version", - "copy-version": "cp version.json dist", - "start": "yarn run update-version && yarn run start:dev", - "start:dev": "nodemon --watch src --watch forta.config.json -e js,ts,json --exec \"yarn run build && forta-agent run\"", - "start:prod": "forta-agent run --prod", - "tx": "yarn run build && forta-agent run --tx", - "block": "yarn run build && forta-agent run --block", - "range": "yarn run build && forta-agent run --range", - "alert": "yarn run build && forta-agent run --alert", - "sequence": "yarn run build && forta-agent run --sequence", - "file": "yarn run build && forta-agent run --file", - "publish": "yarn run update-version && forta-agent publish", - "info": "forta-agent info", - "logs": "forta-agent logs", - "push": "yarn run update-version && forta-agent push", - "disable": "forta-agent disable", - "enable": "forta-agent enable", - "keyfile": "forta-agent keyfile", - "stake": "forta-agent stake", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated ./src/abi/*", - "eslint:lint": "eslint ./src ", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src README.md", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types" - }, - "dependencies": { - "@types/lodash": "^4.14.202", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "ethers": "^5.5.1", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "lodash": "^4.17.21", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/jest": "^29.5.10", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.1.0", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.1", - "typechain": "^8.3.2", - "typescript": "^5.3.3" - }, - "packageManager": "yarn@1.22.21" -} diff --git a/l2-bridge-base/src/abi/ERC20Short.json b/l2-bridge-base/src/abi/ERC20Short.json deleted file mode 100644 index 81b8dd008..000000000 --- a/l2-bridge-base/src/abi/ERC20Short.json +++ /dev/null @@ -1,34 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/l2-bridge-base/src/abi/L2Bridge.json b/l2-bridge-base/src/abi/L2Bridge.json deleted file mode 100644 index fe6487047..000000000 --- a/l2-bridge-base/src/abi/L2Bridge.json +++ /dev/null @@ -1,499 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "address", "name": "arbSys_", "type": "address" }, - { "internalType": "address", "name": "router_", "type": "address" }, - { - "internalType": "address", - "name": "counterpartGateway_", - "type": "address" - }, - { "internalType": "address", "name": "l1Token_", "type": "address" }, - { "internalType": "address", "name": "l2Token_", "type": "address" } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { "inputs": [], "name": "ErrorAccountIsZeroAddress", "type": "error" }, - { "inputs": [], "name": "ErrorAlreadyInitialized", "type": "error" }, - { "inputs": [], "name": "ErrorDepositsDisabled", "type": "error" }, - { "inputs": [], "name": "ErrorDepositsEnabled", "type": "error" }, - { "inputs": [], "name": "ErrorUnsupportedL1Token", "type": "error" }, - { "inputs": [], "name": "ErrorUnsupportedL2Token", "type": "error" }, - { "inputs": [], "name": "ErrorWithdrawalsDisabled", "type": "error" }, - { "inputs": [], "name": "ErrorWithdrawalsEnabled", "type": "error" }, - { "inputs": [], "name": "ErrorWrongCrossDomainSender", "type": "error" }, - { "inputs": [], "name": "ExtraDataNotEmpty", "type": "error" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "DepositFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "DepositsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "DepositsEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "TxToL1", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "l2ToL1Id", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "exitNum", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "WithdrawalInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "WithdrawalsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "WithdrawalsEnabled", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_DISABLER_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_ENABLER_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_DISABLER_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_ENABLER_ROLE", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "arbSys", - "outputs": [{ "internalType": "contract IArbSys", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "l1Token_", "type": "address" }], - "name": "calculateL2TokenAddress", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "counterpartGateway", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "disableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "l1Token_", "type": "address" }, - { "internalType": "address", "name": "from_", "type": "address" }, - { "internalType": "address", "name": "to_", "type": "address" }, - { "internalType": "uint256", "name": "amount_", "type": "uint256" }, - { "internalType": "bytes", "name": "", "type": "bytes" } - ], - "name": "finalizeInboundTransfer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "l1Token_", "type": "address" }, - { "internalType": "address", "name": "from_", "type": "address" }, - { "internalType": "address", "name": "to_", "type": "address" }, - { "internalType": "uint256", "name": "amount_", "type": "uint256" }, - { "internalType": "bytes", "name": "", "type": "bytes" } - ], - "name": "getOutboundCalldata", - "outputs": [{ "internalType": "bytes", "name": "", "type": "bytes" }], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [{ "internalType": "bytes32", "name": "role", "type": "bytes32" }], - "name": "getRoleAdmin", - "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "hasRole", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "admin_", "type": "address" }], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isDepositsEnabled", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isWithdrawalsEnabled", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1Token", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Token", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "l1Token_", "type": "address" }, - { "internalType": "address", "name": "to_", "type": "address" }, - { "internalType": "uint256", "name": "amount_", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "uint256", "name": "", "type": "uint256" }, - { "internalType": "bytes", "name": "data_", "type": "bytes" } - ], - "name": "outboundTransfer", - "outputs": [{ "internalType": "bytes", "name": "res", "type": "bytes" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "bytes32", "name": "role", "type": "bytes32" }, - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [{ "internalType": "address", "name": "", "type": "address" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], - "name": "supportsInterface", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - } -] diff --git a/l2-bridge-base/src/abi/ProxyShortABI.json b/l2-bridge-base/src/abi/ProxyShortABI.json deleted file mode 100644 index b73d7c162..000000000 --- a/l2-bridge-base/src/abi/ProxyShortABI.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "inputs": [], - "name": "proxy__getAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/l2-bridge-base/src/agent.spec.ts b/l2-bridge-base/src/agent.spec.ts deleted file mode 100644 index 2386c8ccd..000000000 --- a/l2-bridge-base/src/agent.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { App } from './app' -import * as E from 'fp-ts/Either' -import { Finding } from 'forta-agent' -import BigNumber from 'bignumber.js' - -describe('agent-base functional test', () => { - test('should process app on 13_022_644 and 13_022_720 (25 l2 blocks)', async () => { - const app = await App.getInstance() - - const l1Block = 19_632_237 - const l2StartBlock = 13_022_720 - const l2EndBlock = 13_022_745 - const l2BlocksDto = await app.baseClient.fetchL2Blocks(l2StartBlock, l2EndBlock) - - for (const proxyWatcher of app.proxyWatchers) { - const err = await proxyWatcher.initialize(l2StartBlock) - if (err !== null) { - throw null - } - } - - const monitorWithdrawalsInitResp = await app.monitorWithdrawals.initialize(l2StartBlock) - if (E.isLeft(monitorWithdrawalsInitResp)) { - throw monitorWithdrawalsInitResp.left - } - - const l2logs = await app.blockSrv.getL2Logs(l2BlocksDto) - if (E.isLeft(l2logs)) { - throw l2logs.left - } - - const l2BlockNumberSet: Set = new Set() - for (const l2log of l2logs.right) { - l2BlockNumberSet.add(new BigNumber(l2log.blockNumber, 10).toNumber()) - } - - const bridgeEventFindings = app.bridgeWatcher.handleL2Logs(l2logs.right) - const govEventFindings = app.govWatcher.handleL2Logs(l2logs.right) - const proxyAdminEventFindings = app.proxyEventWatcher.handleL2Logs(l2logs.right) - const monitorWithdrawalsFindings = app.monitorWithdrawals.handleL2Blocks(l2logs.right, l2BlocksDto) - const proxyWatcherFindings: Finding[] = [] - - const l2BlockNumbers = Array.from(l2BlockNumberSet).toSorted((a, b) => a - b) - - for (const proxyWatcher of app.proxyWatchers) { - const fnds = await proxyWatcher.handleL2Blocks(l2BlockNumbers) - proxyWatcherFindings.push(...fnds) - } - - const bridgeBalanceFindings = await app.bridgeBalanceSrc.handleBlock(l1Block, l2BlockNumbers) - - const findings: Finding[] = [] - findings.push( - ...bridgeEventFindings, - ...govEventFindings, - ...proxyAdminEventFindings, - ...monitorWithdrawalsFindings, - ...proxyWatcherFindings, - ...bridgeBalanceFindings, - ) - - expect(findings.length).toEqual(0) - }, 360_000) -}) diff --git a/l2-bridge-base/src/agent.ts b/l2-bridge-base/src/agent.ts deleted file mode 100644 index 37dbcdc34..000000000 --- a/l2-bridge-base/src/agent.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { BlockEvent, Finding, FindingSeverity, FindingType, HandleBlock, HealthCheck } from 'forta-agent' -import * as process from 'process' -import { InitializeResponse } from 'forta-agent/dist/sdk/initialize.response' -import { Initialize } from 'forta-agent/dist/sdk/handlers' -import * as E from 'fp-ts/Either' -import VERSION from './utils/version' -import { App } from './app' -import { elapsedTime } from './utils/time' -import BigNumber from 'bignumber.js' - -export function initialize(): Initialize { - type Metadata = { [key: string]: string } - - const metadata: Metadata = { - 'version.commitHash': VERSION.commitHash, - 'version.commitMsg': VERSION.commitMsg, - } - - return async function (): Promise { - const app = await App.getInstance() - - const token = await App.getJwt() - if (E.isLeft(token)) { - app.logger.error(token.left) - - process.exit(1) - } - - const latestL2Block = await app.baseClient.getLatestL2Block() - if (E.isLeft(latestL2Block)) { - app.logger.error(latestL2Block.left) - process.exit(1) - } - - const agents: string[] = [] - for (const proxyWatcher of app.proxyWatchers) { - const proxyWatcherErr = await proxyWatcher.initialize(latestL2Block.right.number) - if (proxyWatcherErr !== null) { - app.logger.error(proxyWatcherErr) - process.exit(1) - } - - metadata[`${proxyWatcher.getName()}.lastAdmin`] = proxyWatcher.getAdmin() - metadata[`${proxyWatcher.getName()}.lastImpl`] = proxyWatcher.getImpl() - - agents.push(proxyWatcher.getName()) - } - - const monitorWithdrawalsInitResp = await app.monitorWithdrawals.initialize(latestL2Block.right.number) - if (E.isLeft(monitorWithdrawalsInitResp)) { - app.logger.error(monitorWithdrawalsInitResp.left) - - process.exit(1) - } - - metadata[`${app.monitorWithdrawals.getName()}.currentWithdrawals`] = - monitorWithdrawalsInitResp.right.currentWithdrawals - - agents.push(app.monitorWithdrawals.getName()) - - metadata.agents = '[' + agents.toString() + ']' - - await app.findingsRW.write([ - Finding.fromObject({ - name: `Agent launched`, - description: `Version: ${VERSION.desc}`, - alertId: 'LIDO-AGENT-LAUNCHED', - severity: FindingSeverity.Info, - type: FindingType.Info, - metadata, - }), - ]) - - app.logger.info('Bot initialization is done!') - } -} - -let isHandleBLockRunning: boolean = false -export const handleBlock = (): HandleBlock => { - return async function (blockEvent: BlockEvent): Promise { - const startTime = new Date().getTime() - if (isHandleBLockRunning) { - return [] - } - - isHandleBLockRunning = true - const app = await App.getInstance() - - const findings: Finding[] = [] - const findingsAsync = await app.findingsRW.read() - if (findingsAsync.length > 0) { - findings.push(...findingsAsync) - } - - const l2blocksDto = await app.blockSrv.getL2Blocks() - if (E.isLeft(l2blocksDto)) { - isHandleBLockRunning = false - return [l2blocksDto.left] - } - app.logger.info( - `ETH block ${blockEvent.blockNumber.toString()}. Fetched base blocks from ${l2blocksDto.right[0].number} to ${ - l2blocksDto.right[l2blocksDto.right.length - 1].number - }. Total: ${l2blocksDto.right.length}`, - ) - - const l2logs = await app.blockSrv.getL2Logs(l2blocksDto.right) - if (E.isLeft(l2logs)) { - isHandleBLockRunning = false - return [l2logs.left] - } - - const bridgeEventFindings = app.bridgeWatcher.handleL2Logs(l2logs.right) - const govEventFindings = app.govWatcher.handleL2Logs(l2logs.right) - const proxyAdminEventFindings = app.proxyEventWatcher.handleL2Logs(l2logs.right) - const monitorWithdrawalsFindings = app.monitorWithdrawals.handleL2Blocks(l2logs.right, l2blocksDto.right) - - const l2BlockNumberSet: Set = new Set() - for (const l2log of l2logs.right) { - l2BlockNumberSet.add(new BigNumber(l2log.blockNumber, 10).toNumber()) - } - - const l2BlockNumbers = Array.from(l2BlockNumberSet).toSorted((a, b) => a - b) - const proxyWatcherFindings: Finding[] = [] - - for (const proxyWatcher of app.proxyWatchers) { - const fnds = await proxyWatcher.handleL2Blocks(l2BlockNumbers) - proxyWatcherFindings.push(...fnds) - } - - const bridgeBalanceFindings = await app.bridgeBalanceSrc.handleBlock(blockEvent.block.number, l2BlockNumbers) - - findings.push( - ...bridgeEventFindings, - ...govEventFindings, - ...proxyAdminEventFindings, - ...monitorWithdrawalsFindings, - ...proxyWatcherFindings, - ...bridgeBalanceFindings, - ) - - app.healthChecker.check(findings) - - app.logger.info(elapsedTime('handleBlock', startTime) + '\n') - isHandleBLockRunning = false - return findings - } -} - -export const healthCheck = (): HealthCheck => { - return async function (): Promise { - const app = await App.getInstance() - - if (!app.healthChecker.isHealth()) { - return ['There is too much network errors'] - } - - return [] - } -} - -export default { - initialize: initialize(), - handleBlock: handleBlock(), - healthCheck: healthCheck(), -} diff --git a/l2-bridge-base/src/app.ts b/l2-bridge-base/src/app.ts deleted file mode 100644 index f103a2737..000000000 --- a/l2-bridge-base/src/app.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { ethers, fetchJwt, getJsonRpcUrl } from 'forta-agent' -import { BaseClient } from './clients/base_client' -import { EventWatcher } from './services/event_watcher' -import { getL2BridgeEvents } from './utils/events/bridge_events' -import { getGovEvents } from './utils/events/gov_events' -import { getProxyAdminEvents } from './utils/events/proxy_admin_events' -import { ProxyContractClient } from './clients/proxy_contract_client' -import { Address } from './utils/constants' -import { ERC20Short__factory, L2Bridge__factory, ProxyShortABI__factory } from './generated' -import { BlockClient } from './clients/base_block_client' -import { ProxyWatcher } from './services/proxy_watcher' -import { MonitorWithdrawals } from './services/monitor_withdrawals' -import { FindingsRW } from './utils/mutex' -import * as Winston from 'winston' -import { Logger } from 'winston' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' -import { verifyJwt } from 'forta-agent/dist/sdk/jwt' -import * as E from 'fp-ts/Either' -import { BridgeBalanceSrv } from './services/bridge_balance' -import { ETHProvider } from './clients/eth_provider_client' - -export type Container = { - ethClient: ETHProvider - baseClient: BaseClient - proxyWatchers: ProxyWatcher[] - monitorWithdrawals: MonitorWithdrawals - blockSrv: BlockClient - bridgeWatcher: EventWatcher - bridgeBalanceSrc: BridgeBalanceSrv - govWatcher: EventWatcher - proxyEventWatcher: EventWatcher - findingsRW: FindingsRW - logger: Logger - healthChecker: HealthChecker -} - -export class App { - private static instance: Container - - private constructor() {} - - public static async getJwt(): Promise> { - let token: string - try { - token = await fetchJwt({}) - } catch (e) { - return E.left(new Error(`Could not fetch jwt. Cause ${e}`)) - } - - if (process.env.NODE_ENV === 'production') { - try { - const isTokenOk = await verifyJwt(token) - if (!isTokenOk) { - return E.left(new Error(`Token verification failed`)) - } - } catch (e) { - return E.left(new Error(`Token verification failed`)) - } - } - - return E.right(token) - } - - public static async getInstance(): Promise { - if (!App.instance) { - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - const baseNetworkID = 8453 - const baseProvider = new ethers.providers.JsonRpcProvider('https://base.llamarpc.com', baseNetworkID) - const adr: Address = Address - - const l2Bridge = L2Bridge__factory.connect(adr.BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS, baseProvider) - const bridgedWSthEthRunner = ERC20Short__factory.connect(adr.BASE_WSTETH_ADDRESS, baseProvider) - const baseClient = new BaseClient(baseProvider, l2Bridge, logger, bridgedWSthEthRunner) - - const bridgeEventWatcher = new EventWatcher( - 'BridgeEventWatcher', - getL2BridgeEvents(adr.BASE_L2ERC20_TOKEN_BRIDGED, adr.RolesMap), - logger, - ) - const govEventWatcher = new EventWatcher('GovEventWatcher', getGovEvents(adr.BASE_GOV_EXECUTOR_ADDRESS), logger) - const proxyEventWatcher = new EventWatcher( - 'ProxyEventWatcher', - getProxyAdminEvents(adr.BASE_L2ERC20_TOKEN_BRIDGED, adr.BASE_WSTETH_BRIDGED), - logger, - ) - - const proxyWatchers: ProxyWatcher[] = [ - new ProxyWatcher( - new ProxyContractClient( - adr.BASE_L2ERC20_TOKEN_BRIDGED, - ProxyShortABI__factory.connect(adr.BASE_L2ERC20_TOKEN_BRIDGED.address, baseProvider), - ), - logger, - ), - new ProxyWatcher( - new ProxyContractClient( - adr.BASE_WSTETH_BRIDGED, - ProxyShortABI__factory.connect(adr.BASE_WSTETH_BRIDGED.address, baseProvider), - ), - logger, - ), - ] - - const blockSrv: BlockClient = new BlockClient(baseClient, logger) - - const monitorWithdrawals = new MonitorWithdrawals(baseClient, adr.BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS, logger) - - const mainnet = 1 - const drpcUrl = 'https://eth.drpc.org/' - const ethProvider = new ethers.providers.FallbackProvider([ - new ethers.providers.JsonRpcProvider(getJsonRpcUrl(), mainnet), - new ethers.providers.JsonRpcProvider(drpcUrl, mainnet), - ]) - - const wSthEthRunner = ERC20Short__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ethClient = new ETHProvider(logger, wSthEthRunner) - const bridgeBalanceSrv = new BridgeBalanceSrv( - logger, - ethClient, - adr.BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS, - baseClient, - ) - - App.instance = { - ethClient: ethClient, - baseClient: baseClient, - proxyWatchers: proxyWatchers, - monitorWithdrawals: monitorWithdrawals, - blockSrv: blockSrv, - bridgeWatcher: bridgeEventWatcher, - bridgeBalanceSrc: bridgeBalanceSrv, - govWatcher: govEventWatcher, - proxyEventWatcher: proxyEventWatcher, - findingsRW: new FindingsRW([]), - logger: logger, - healthChecker: new HealthChecker(BorderTime, MaxNumberErrorsPerBorderTime), - } - } - - return App.instance - } -} diff --git a/l2-bridge-base/src/clients/base_block_client.ts b/l2-bridge-base/src/clients/base_block_client.ts deleted file mode 100644 index f7f4cbc13..000000000 --- a/l2-bridge-base/src/clients/base_block_client.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { BlockDto } from '../entity/blockDto' -import { IBaseClient } from './base_client' -import { Log } from '@ethersproject/abstract-provider' -import { Finding } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import { networkAlert } from '../utils/finding.helpers' - -export class BlockClient { - private provider: IBaseClient - private logger: Logger - private cachedBlockDto: BlockDto | undefined = undefined - - constructor(provider: IBaseClient, logger: Logger) { - this.provider = provider - this.logger = logger - } - - public async getL2Blocks(): Promise> { - const start = new Date().getTime() - const blocks = await this.fetchL2Blocks() - this.logger.info(elapsedTime(BlockClient.name + '.' + this.getL2Blocks.name, start)) - - return blocks - } - - public async getL2Logs(workingBlocks: BlockDto[]): Promise> { - const start = new Date().getTime() - const logs = await this.fetchL2Logs(workingBlocks) - this.logger.info(elapsedTime(BlockClient.name + '.' + this.getL2Logs.name, start)) - - return logs - } - - private async fetchL2Blocks(): Promise> { - const out: BlockDto[] = [] - - if (this.cachedBlockDto === undefined) { - const block = await this.provider.getLatestL2Block() - if (E.isLeft(block)) { - return E.left( - networkAlert( - block.left, - `Error in ${BlockClient.name}.${this.getL2Blocks.name}:40`, - `Could not call provider.getLatestBlock`, - 0, - ), - ) - } - - this.cachedBlockDto = { - number: block.right.number, - timestamp: block.right.timestamp, - } - - out.push(this.cachedBlockDto) - } else { - const latestBlock = await this.provider.getLatestL2Block() - if (E.isLeft(latestBlock)) { - this.cachedBlockDto = undefined - return E.left( - networkAlert( - latestBlock.left, - `Error in ${BlockClient.name}.${this.getL2Blocks.name}:59`, - `Could not call provider.getLatestBlock`, - 0, - ), - ) - } - - const blocks = await this.provider.fetchL2Blocks(this.cachedBlockDto.number, latestBlock.right.number - 1) - for (const block of blocks) { - out.push({ - number: block.number, - timestamp: block.timestamp, - }) - } - - this.cachedBlockDto = { - number: latestBlock.right.number, - timestamp: latestBlock.right.timestamp, - } - - // hint: we requested blocks like [cachedBlockDto.number, latestBlock.number) - // and here we do [cachedBlockDto.number, latestBlock.number] - out.push({ - number: latestBlock.right.number, - timestamp: latestBlock.right.timestamp, - }) - } - - return E.right(out) - } - - private async fetchL2Logs(workingBlocks: BlockDto[]): Promise> { - const logs = await this.provider.getL2Logs(workingBlocks[0].number, workingBlocks[workingBlocks.length - 1].number) - if (E.isLeft(logs)) { - return E.left( - networkAlert( - logs.left, - `Error in ${BlockClient.name}.${this.getL2Logs.name}:76`, - `Could not call provider.getLogs`, - workingBlocks[workingBlocks.length - 1].number, - ), - ) - } - - return E.right(logs.right) - } -} diff --git a/l2-bridge-base/src/clients/base_client.spec.ts b/l2-bridge-base/src/clients/base_client.spec.ts deleted file mode 100644 index 2d744982a..000000000 --- a/l2-bridge-base/src/clients/base_client.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { App } from '../app' -import * as E from 'fp-ts/Either' -import { ETH_DECIMALS } from '../utils/constants' -import BigNumber from 'bignumber.js' - -describe('base provider tests', () => { - test('should fetch block logs', async () => { - const app = await App.getInstance() - - const latestBlock = await app.baseClient.getLatestL2Block() - if (E.isLeft(latestBlock)) { - throw latestBlock - } - - const blocksDto = await app.baseClient.getL2Logs(latestBlock.right.number, latestBlock.right.number) - if (E.isLeft(blocksDto)) { - throw blocksDto - } - - expect(blocksDto.right.length).toBeGreaterThan(1) - }, 120_000) - - test('getWstEthTotalSupply is 1696.070092078019991932 wsETH', async () => { - const app = await App.getInstance() - - const baseBlockNumber = 13_022_744 - const balance = await app.baseClient.getWstEthTotalSupply(baseBlockNumber) - if (E.isLeft(balance)) { - throw balance.left - } - - expect(balance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('11430.956916416032084584')) - }, 120_000) -}) diff --git a/l2-bridge-base/src/clients/base_client.ts b/l2-bridge-base/src/clients/base_client.ts deleted file mode 100644 index 630e509bd..000000000 --- a/l2-bridge-base/src/clients/base_client.ts +++ /dev/null @@ -1,259 +0,0 @@ -import { Block, Log } from '@ethersproject/abstract-provider' -import { ethers } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { NetworkError } from '../utils/error' -import { WithdrawalRecord } from '../entity/blockDto' -import BigNumber from 'bignumber.js' -import { Logger } from 'winston' -import { L2Bridge, WithdrawalInitiatedEvent } from '../generated/L2Bridge' -import { IL2BridgeBalanceClient } from '../services/bridge_balance' -import { ERC20Short as BridgedWstEthRunner } from '../generated' - -export abstract class IMonitorWithdrawalsClient { - public abstract getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> - - public abstract getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> -} - -export abstract class IBaseClient { - public abstract fetchL2Blocks(startBlock: number, endBlock: number): Promise - - public abstract getL2Logs(startBlock: number, endBlock: number): Promise> - - public abstract getLatestL2Block(): Promise> -} - -export class BaseClient implements IBaseClient, IMonitorWithdrawalsClient, IL2BridgeBalanceClient { - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly l2Bridge: L2Bridge - private readonly logger: Logger - private readonly bridgedWstEthRunner: BridgedWstEthRunner - - constructor( - jsonRpcProvider: ethers.providers.JsonRpcProvider, - baseTokenBridge: L2Bridge, - logger: Logger, - bridgedWstEthRunner: BridgedWstEthRunner, - ) { - this.jsonRpcProvider = jsonRpcProvider - this.l2Bridge = baseTokenBridge - this.logger = logger - this.bridgedWstEthRunner = bridgedWstEthRunner - } - - public async fetchL2Blocks(startBlock: number, endBlock: number): Promise { - const batchRequests = [] - for (let i = startBlock; i <= endBlock; i++) { - batchRequests.push({ - jsonrpc: '2.0', - method: 'eth_getBlockByNumber', - params: [`0x${i.toString(16)}`, false], - id: i, // Use a unique identifier for each request - }) - } - const formatter = new ethers.providers.Formatter() - const doRequest = (request: unknown[]): Promise => { - return retryAsync( - async (): Promise => { - const response: Response = await fetch(this.jsonRpcProvider.connection.url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(request), - }) - - if (!response.ok) { - throw new NetworkError(`Status: ${response.status}, request: ${JSON.stringify(request)}`, 'FetchBlocksErr') - } - - const result: Block[] = [] - const objects = (await response.json()) as unknown[] - - for (const obj of objects) { - if (Object.prototype.hasOwnProperty.call(obj, 'result')) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - result.push(formatter.block(obj.result)) - } else { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - throw new Error(obj.error.message) - } - } - - return result - }, - { delay: 500, maxTry: 5 }, - ) - } - - const chunkSize = 15 - const out: Block[] = [] - - let allowedExtraRequest: number = 30 - for (let i = 0; i < batchRequests.length; i += chunkSize) { - const request = batchRequests.slice(i, i + chunkSize) - try { - const blocks = await doRequest(request) - out.push(...blocks) - } catch (e) { - this.logger.warn(`${e}`) - if (allowedExtraRequest === 0) { - break - } - - batchRequests.push(...request) - allowedExtraRequest -= 1 - } - } - - return out - } - - public async getL2Logs(startBlock: number, endBlock: number): Promise> { - const logs: Log[] = [] - const batchSize = 15 - - for (let i = startBlock; i <= endBlock; i += batchSize) { - const start = i - const end = Math.min(i + batchSize - 1, endBlock) - - let chunkLogs: Log[] = [] - try { - chunkLogs = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.send('eth_getLogs', [ - { - fromBlock: `0x${start.toString(16)}`, - toBlock: `0x${end.toString(16)}`, - }, - ]) - }, - { delay: 1000, maxTry: 5 }, - ) - } catch (e) { - this.logger.warn( - `Could not fetch blocks logs. cause: ${e}, startBlock: ${start}, toBlock: ${end}. Total ${end - start}`, - ) - - continue - } - - logs.push(...chunkLogs) - } - - return E.right(logs) - } - - public async getLatestL2Block(): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlock('latest') - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(out) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch latest block`)) - } - } - - public async getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - const fetchEvents = (start: number, end: number): Promise => { - return retryAsync( - async (): Promise => { - return await this.l2Bridge.queryFilter(this.l2Bridge.filters.WithdrawalInitiated(), start, end) - }, - { delay: 500, maxTry: 5 }, - ) - } - - const batchRequests: number[] = [] - for (let i = fromBlockNumber; i <= toBlockNumber; i++) { - batchRequests.push(i) - } - - const chunkSize = 125 - const out: WithdrawalInitiatedEvent[] = [] - - const batchPromises: Promise[] = [] - - for (let i = 0; i < batchRequests.length; i += chunkSize) { - const request = batchRequests.slice(i, i + chunkSize) - batchPromises.push(fetchEvents(request[0], request[request.length - 1])) - } - - try { - const arrayOfEvents = await Promise.all(batchPromises) - for (const events of arrayOfEvents) { - out.push(...events) - } - - return E.right(out) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch Withdrawal initiated events`)) - } - } - - public async getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> { - const out: WithdrawalRecord[] = [] - - for (const withdrawEvent of withdrawalEvents) { - if (withdrawEvent.args) { - let block: Block - try { - block = await retryAsync( - async (): Promise => { - return await withdrawEvent.getBlock() - }, - { delay: 500, maxTry: 5 }, - ) - - const record: WithdrawalRecord = { - timestamp: block.timestamp, - amount: new BigNumber(String(withdrawEvent.args.amount)), - } - - out.push(record) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch block from withdrawEvent`)) - } - } - } - - return E.right(out) - } - - public async getWstEthTotalSupply(l2blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedWstEthRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - return E.left(new NetworkError(e, `Could not call bridgedWstEthRunner.functions.totalSupply`)) - } - } -} diff --git a/l2-bridge-base/src/clients/eth_provider.spec.ts b/l2-bridge-base/src/clients/eth_provider.spec.ts deleted file mode 100644 index 7b3df5c61..000000000 --- a/l2-bridge-base/src/clients/eth_provider.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { App } from '../app' -import * as E from 'fp-ts/Either' -import { Address, ETH_DECIMALS } from '../utils/constants' -import BigNumber from 'bignumber.js' - -describe('eth provider tests', () => { - test('getBalanceByBlockHash is 10786.9163900726000737487 wsETH', async () => { - const app = await App.getInstance() - const adr = Address - - const blockNumber = 19_619_102 - const balance = await app.ethClient.getWstEthBalance(blockNumber, adr.BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS) - if (E.isLeft(balance)) { - throw balance.left - } - - expect(balance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('10786.916390072600073748')) - }, 120_000) -}) diff --git a/l2-bridge-base/src/clients/eth_provider_client.ts b/l2-bridge-base/src/clients/eth_provider_client.ts deleted file mode 100644 index b0a214cf9..000000000 --- a/l2-bridge-base/src/clients/eth_provider_client.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Logger } from 'winston' -import { IL1BridgeBalanceClient } from '../services/bridge_balance' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' -import { NetworkError } from '../utils/error' -import { retryAsync } from 'ts-retry' -import { ERC20Short as wStEthRunner } from '../generated' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IL1BridgeBalanceClient { - private readonly wStEthRunner: wStEthRunner - private readonly logger: Logger - - constructor(logger: Logger, wStEthRunner: wStEthRunner) { - this.wStEthRunner = wStEthRunner - this.logger = logger - } - - public async getWstEthBalance(l1blockNumber: number, address: string): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.wStEthRunner.functions.balanceOf(address, { - blockTag: l1blockNumber, - }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - return E.left(new NetworkError(e, `Could not call wStEthRunner.functions.balanceOf`)) - } - } -} diff --git a/l2-bridge-base/src/clients/proxy_contract_client.ts b/l2-bridge-base/src/clients/proxy_contract_client.ts deleted file mode 100644 index 14f799b5a..000000000 --- a/l2-bridge-base/src/clients/proxy_contract_client.ts +++ /dev/null @@ -1,72 +0,0 @@ -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { ProxyShortABI } from '../generated' -import { OProxyContract } from '../utils/constants' - -export abstract class IProxyContractClient { - abstract getName(): string - - abstract getAddress(): string - - abstract getProxyAdmin(blockNumber: number): Promise> - - abstract getProxyImplementation(blockNumber: number): Promise> -} - -export class ProxyContractClient implements IProxyContractClient { - private readonly proxyContract: OProxyContract - private readonly contract: ProxyShortABI - - constructor(proxyContract: OProxyContract, contract: ProxyShortABI) { - if (proxyContract.address !== contract.address) { - throw Error( - `Could not create instance of ProxyAdmin: ${proxyContract.name}. Cause: ${proxyContract.address} != ${contract.address} address`, - ) - } - - this.proxyContract = proxyContract - this.contract = contract - } - - public getName(): string { - return this.proxyContract.name - } - - public getAddress(): string { - return this.contract.address - } - - public async getProxyAdmin(blockNumber: number): Promise> { - try { - const resp = await retryAsync( - async (): Promise => { - return await this.contract.proxy__getAdmin({ - blockTag: blockNumber, - }) - }, - { delay: 1000, maxTry: 5 }, - ) - - return E.right(resp) - } catch (e) { - return E.left(new Error(`Could not fetch admin. cause ${e}`)) - } - } - - public async getProxyImplementation(blockNumber: number): Promise> { - try { - const resp = await retryAsync( - async (): Promise => { - return await this.contract.proxy__getImplementation({ - blockTag: blockNumber, - }) - }, - { delay: 1000, maxTry: 5 }, - ) - - return E.right(resp) - } catch (e) { - return E.left(new Error(`Could not fetch implementation. cause ${e}`)) - } - } -} diff --git a/l2-bridge-base/src/entity/blockDto.ts b/l2-bridge-base/src/entity/blockDto.ts deleted file mode 100644 index 55e099bfa..000000000 --- a/l2-bridge-base/src/entity/blockDto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type BlockDto = { - number: number - timestamp: number -} - -export type WithdrawalRecord = { - timestamp: number - amount: BigNumber -} diff --git a/l2-bridge-base/src/entity/events.ts b/l2-bridge-base/src/entity/events.ts deleted file mode 100644 index c806a8c67..000000000 --- a/l2-bridge-base/src/entity/events.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' - -export type EventOfNotice = { - name: string - address: string - event: string - alertId: string - description: CallableFunction - severity: FindingSeverity - type: FindingType - uniqueKey: string -} diff --git a/l2-bridge-base/src/services/bridge_balance.ts b/l2-bridge-base/src/services/bridge_balance.ts deleted file mode 100644 index 1b687f1b9..000000000 --- a/l2-bridge-base/src/services/bridge_balance.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { getUniqueKey, networkAlert } from '../utils/finding.helpers' -import { ETH_DECIMALS } from '../utils/constants' - -export abstract class IL1BridgeBalanceClient { - abstract getWstEthBalance(l1blockNumber: number, address: string): Promise> -} - -export abstract class IL2BridgeBalanceClient { - abstract getWstEthTotalSupply(l1blockNumber: number): Promise> -} - -export class BridgeBalanceSrv { - private name = `BridgeBalanceSrv` - private readonly logger: Logger - private readonly clientL1: IL1BridgeBalanceClient - private readonly clientL2: IL2BridgeBalanceClient - - private readonly baseL1TokenBridge: string - - constructor( - logger: Logger, - clientL1: IL1BridgeBalanceClient, - baseL1TokenBridge: string, - clientL2: IL2BridgeBalanceClient, - ) { - this.logger = logger - this.clientL1 = clientL1 - this.clientL2 = clientL2 - this.baseL1TokenBridge = baseL1TokenBridge - } - - async handleBlock(l1BlockNumber: number, l2BlockNumbers: number[]): Promise { - const start = new Date().getTime() - - const findings = await this.handleBridgeBalanceWstETH(l1BlockNumber, l2BlockNumbers) - - this.logger.info(elapsedTime(this.name + '.' + this.handleBlock.name, start)) - return findings - } - - private async handleBridgeBalanceWstETH(l1BlockNumber: number, l2BlockNumbers: number[]): Promise { - const wstETHBalance_onL1BaseBridge = await this.clientL1.getWstEthBalance(l1BlockNumber, this.baseL1TokenBridge) - - const out: Finding[] = [] - if (E.isLeft(wstETHBalance_onL1BaseBridge)) { - return [ - networkAlert( - wstETHBalance_onL1BaseBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:36`, - `Could not call clientL1.getWstEth`, - l1BlockNumber, - ), - ] - } - - for (const l2blockNumber of l2BlockNumbers) { - const wstETHTotalSupply_onBase = await this.clientL2.getWstEthTotalSupply(l2blockNumber) - - if (E.isLeft(wstETHTotalSupply_onBase)) { - out.push( - networkAlert( - wstETHTotalSupply_onBase.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:36`, - `Could not call clientL2.getWstEth`, - l2blockNumber, - ), - ) - - continue - } - - if (wstETHTotalSupply_onBase.right.isGreaterThan(wstETHBalance_onL1BaseBridge.right)) { - out.push( - Finding.fromObject({ - name: `🚨🚨🚨 Base bridge balance mismatch 🚨🚨🚨`, - description: - `Total supply of bridged wstETH is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${wstETHTotalSupply_onBase.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${wstETHBalance_onL1BaseBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `Base: ${l2blockNumber}\n`, - alertId: 'BRIDGE-BALANCE-MISMATCH', - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - uniqueKey: getUniqueKey('74c4c184-bc7f-4634-8043-b2a8c4f377cb', l1BlockNumber + l2blockNumber), - }), - ) - } - } - - return out - } -} diff --git a/l2-bridge-base/src/services/event_watcher.ts b/l2-bridge-base/src/services/event_watcher.ts deleted file mode 100644 index 24047d6af..000000000 --- a/l2-bridge-base/src/services/event_watcher.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { EventOfNotice } from '../entity/events' -import { Log } from '@ethersproject/abstract-provider' -import { filterLog, Finding } from 'forta-agent' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import { getUniqueKey } from '../utils/finding.helpers' - -export class EventWatcher { - private readonly name: string - private readonly eventsToFinding: EventOfNotice[] - private readonly logger: Logger - - constructor(botName: string, events: EventOfNotice[], logger: Logger) { - this.name = botName - this.eventsToFinding = events - this.logger = logger - } - - public getName(): string { - return this.name - } - - handleL2Logs(l2logs: Log[]): Finding[] { - const start = new Date().getTime() - const addresses: string[] = [] - - for (const l2log of l2logs) { - addresses.push(l2log.address) - } - - const findings: Finding[] = [] - for (const eventToFinding of this.eventsToFinding) { - const ind = addresses.indexOf(eventToFinding.address) - if (ind >= 0) { - const filteredEvents = filterLog(l2logs, eventToFinding.event, eventToFinding.address) - - for (const event of filteredEvents) { - findings.push( - Finding.fromObject({ - name: eventToFinding.name, - description: eventToFinding.description(event.args), - alertId: eventToFinding.alertId, - severity: eventToFinding.severity, - type: eventToFinding.type, - metadata: { args: String(event.args) }, - uniqueKey: getUniqueKey(eventToFinding.uniqueKey, l2logs[ind].blockNumber), - }), - ) - } - } - } - - this.logger.info(elapsedTime(this.getName() + '.' + this.handleL2Logs.name, start)) - return findings - } -} diff --git a/l2-bridge-base/src/services/health-checker/health-checker.srv.spec.ts b/l2-bridge-base/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 81d4aa7bb..000000000 --- a/l2-bridge-base/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { networkAlert } from '../../utils/finding.helpers' -import { HealthChecker } from './health-checker.srv' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc', 100_000)] - const borderTime = 1_000 - const timeForNextCheck = 250 - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1001), - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1002), - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1003), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/l2-bridge-base/src/services/health-checker/health-checker.srv.ts b/l2-bridge-base/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 347dd17ff..000000000 --- a/l2-bridge-base/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Finding } from 'forta-agent' -import { NetworkErrorFinding } from '../../utils/finding.helpers' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - - constructor(borderTime: number, maxCountErrors: number) { - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): void { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.alertId === NetworkErrorFinding) { - errCount += 1 - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/l2-bridge-base/src/services/monitor_withdrawals.ts b/l2-bridge-base/src/services/monitor_withdrawals.ts deleted file mode 100644 index ffbcd53a2..000000000 --- a/l2-bridge-base/src/services/monitor_withdrawals.ts +++ /dev/null @@ -1,182 +0,0 @@ -import BigNumber from 'bignumber.js' -import { filterLog, Finding, FindingSeverity, FindingType } from 'forta-agent' -import { BlockDto, WithdrawalRecord } from '../entity/blockDto' -import { Log } from '@ethersproject/abstract-provider' -import * as E from 'fp-ts/Either' -import { IMonitorWithdrawalsClient } from '../clients/base_client' -import { Logger } from 'winston' -import { dateTimeFormat, elapsedTime } from '../utils/time' -import { getUniqueKey } from '../utils/finding.helpers' - -// 12 hours -const HOURS_12 = 60 * 60 * 12 -const AVG_BLOCK_TIME_2SECONDS: number = 2 //s -const ETH_DECIMALS = new BigNumber(10).pow(18) -// 10k wstETH -const MAX_WITHDRAWALS_10K_WstEth = 10_000 - -export type MonitorWithdrawalsInitResp = { - currentWithdrawals: string -} - -export class MonitorWithdrawals { - private name: string = 'WithdrawalsMonitor' - - private readonly l2Erc20TokenGatewayAddress: string - private readonly withdrawalInitiatedEvent: string = - 'event WithdrawalInitiated(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data)' - - private readonly logger: Logger - private readonly withdrawalsClient: IMonitorWithdrawalsClient - - private withdrawalsStore: WithdrawalRecord[] = [] - private manyWithdrawalsTimestamp = 0 - - constructor(withdrawalsClient: IMonitorWithdrawalsClient, l2Erc20TokenGatewayAddress: string, logger: Logger) { - this.withdrawalsClient = withdrawalsClient - this.l2Erc20TokenGatewayAddress = l2Erc20TokenGatewayAddress - this.logger = logger - } - - public getName(): string { - return this.name - } - - public async initialize(l2BlockNumber: number): Promise> { - // 12 hours - const pastl2Block = l2BlockNumber - Math.ceil(HOURS_12 / AVG_BLOCK_TIME_2SECONDS) - - const withdrawalEvents = await this.withdrawalsClient.getWithdrawalEvents(pastl2Block, l2BlockNumber - 1) - if (E.isLeft(withdrawalEvents)) { - return withdrawalEvents - } - - const withdrawalRecords = await this.withdrawalsClient.getWithdrawalRecords(withdrawalEvents.right) - if (E.isLeft(withdrawalRecords)) { - return withdrawalRecords - } - - const withdrawalsSum = new BigNumber(0) - for (const wc of withdrawalRecords.right) { - withdrawalsSum.plus(wc.amount) - this.withdrawalsStore.push(wc) - } - - this.logger.info(`${MonitorWithdrawals.name} started on block ${l2BlockNumber}`) - return E.right({ - currentWithdrawals: withdrawalsSum.div(ETH_DECIMALS).toFixed(2), - }) - } - - public handleL2Blocks(l2logs: Log[], l2blocksDto: BlockDto[]): Finding[] { - const start = new Date().getTime() - - // adds records into withdrawalsCache - const withdrawalRecords = this.getWithdrawalRecords(l2logs, l2blocksDto) - if (withdrawalRecords.length !== 0) { - this.logger.info(`Withdrawals count = ${withdrawalRecords.length}`) - } - this.withdrawalsStore.push(...withdrawalRecords) - - const out: Finding[] = [] - - for (const l2block of l2blocksDto) { - // remove withdrawals records older than HOURS_12 - const withdrawalRecords: WithdrawalRecord[] = [] - for (const wc of this.withdrawalsStore) { - if (l2block.timestamp - HOURS_12 < wc.timestamp) { - withdrawalRecords.push(wc) - } - } - - this.withdrawalsStore = withdrawalRecords - - const withdrawalsSum = new BigNumber(0) - for (const wc of this.withdrawalsStore) { - withdrawalsSum.plus(wc.amount) - } - - // block number condition is meant to "sync" agents alerts - if ( - withdrawalsSum.dividedBy(ETH_DECIMALS).isGreaterThanOrEqualTo(MAX_WITHDRAWALS_10K_WstEth) && - l2block.number % 10 === 0 - ) { - const period = - l2block.timestamp - this.manyWithdrawalsTimestamp < HOURS_12 - ? l2block.timestamp - this.manyWithdrawalsTimestamp - : HOURS_12 - - const uniqueKey = '2b55f8b9-c65c-4b91-82cd-d9f6ea426be3' - - const finding: Finding = Finding.fromObject({ - name: `⚠️ Base: Huge withdrawals during the last ` + `${Math.floor(period / (60 * 60))} hour(s)`, - description: - `There were withdrawals requests from L2 to L1 for the ` + - `${withdrawalsSum.dividedBy(ETH_DECIMALS).toFixed(4)} wstETH in total`, - alertId: 'HUGE-WITHDRAWALS-FROM-L2', - severity: FindingSeverity.Medium, - type: FindingType.Suspicious, - uniqueKey: getUniqueKey(uniqueKey, l2block.number), - }) - - out.push(finding) - - this.manyWithdrawalsTimestamp = l2block.timestamp - - const tmp: WithdrawalRecord[] = [] - for (const wc of this.withdrawalsStore) { - if (l2block.timestamp - this.manyWithdrawalsTimestamp < wc.timestamp) { - tmp.push(wc) - } - } - - this.withdrawalsStore = tmp - } - } - - for (const r of withdrawalRecords) { - this.logger.info( - r.amount.dividedBy(ETH_DECIMALS).toString() + ' ' + dateTimeFormat.format(new Date(r.timestamp * 1000)), - ) - } - this.logger.info(elapsedTime(MonitorWithdrawals.name + '.' + this.handleL2Blocks.name, start)) - - return out - } - - private getWithdrawalRecords(l2logs: Log[], l2blocksDto: BlockDto[]): WithdrawalRecord[] { - const blockNumberToBlock = new Map() - const logIndexToLogs = new Map() - const addresses: string[] = [] - - for (const l2log of l2logs) { - logIndexToLogs.set(l2log.logIndex, l2log) - addresses.push(l2log.address.toLowerCase()) - } - - for (const l2blockDto of l2blocksDto) { - blockNumberToBlock.set(l2blockDto.number, l2blockDto) - } - - const out: WithdrawalRecord[] = [] - if (this.l2Erc20TokenGatewayAddress in addresses) { - const events = filterLog(l2logs, this.withdrawalInitiatedEvent, this.l2Erc20TokenGatewayAddress.toLowerCase()) - - for (const event of events) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const log: Log = logIndexToLogs.get(event.logIndex) - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const blockDto: BlockDto = blockNumberToBlock.get(log.blockNumber) - - out.push({ - timestamp: blockDto.timestamp, - amount: new BigNumber(String(event.args.amount)), - }) - } - } - - return out - } -} diff --git a/l2-bridge-base/src/services/proxy_watcher.ts b/l2-bridge-base/src/services/proxy_watcher.ts deleted file mode 100644 index c6409c308..000000000 --- a/l2-bridge-base/src/services/proxy_watcher.ts +++ /dev/null @@ -1,158 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { IProxyContractClient } from '../clients/proxy_contract_client' -import * as E from 'fp-ts/Either' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import { getUniqueKey, networkAlert } from '../utils/finding.helpers' - -export class ProxyWatcher { - private readonly name: string = 'ProxyWatcher' - - private lastImpl: string = '' - private lastAdmin: string = '' - - private readonly proxyContract: IProxyContractClient - private readonly logger: Logger - - constructor(proxyContract: IProxyContractClient, logger: Logger) { - this.proxyContract = proxyContract - this.logger = logger - } - - public getName(): string { - return this.proxyContract.getName() + `(${this.proxyContract.getAddress()}).` + this.name - } - - public getAdmin(): string { - return this.lastAdmin.toLowerCase() - } - - public getImpl(): string { - return this.lastImpl.toLowerCase() - } - - public setAdmin(admin: string) { - this.lastAdmin = admin.toLowerCase() - } - - public setImpl(impl: string) { - this.lastImpl = impl.toLowerCase() - } - - async initialize(currentL2Block: number): Promise { - const [lastImpl, lastAdmin] = await Promise.all([ - this.proxyContract.getProxyImplementation(currentL2Block), - this.proxyContract.getProxyAdmin(currentL2Block), - ]) - - if (E.isLeft(lastImpl)) { - return lastImpl.left - } - - if (E.isLeft(lastAdmin)) { - return lastAdmin.left - } - - this.setImpl(lastImpl.right) - this.setAdmin(lastAdmin.right) - - this.logger.info(`${this.getName()}. started on block ${currentL2Block}`) - - return null - } - - async handleL2Blocks(l2blockNumbers: number[]): Promise { - const start = new Date().getTime() - - const BLOCK_INTERVAL = 25 - const out: Finding[] = [] - - for (const l2blockNumber of l2blockNumbers) { - if (l2blockNumber % BLOCK_INTERVAL === 0) { - const [impl, admin] = await Promise.all([ - this.handleProxyImplementationChanges(l2blockNumber), - this.handleProxyAdminChanges(l2blockNumber), - ]) - - out.push(...impl, ...admin) - } - } - - this.logger.info(this.getName() + '.impl = ' + this.getImpl()) - this.logger.info(this.getName() + '.adm = ' + this.getAdmin()) - this.logger.info(elapsedTime(this.proxyContract.getName() + `.` + this.handleL2Blocks.name, start)) - return out - } - - private async handleProxyImplementationChanges(l2BlockNumber: number): Promise { - const out: Finding[] = [] - - const newImpl = await this.proxyContract.getProxyImplementation(l2BlockNumber) - if (E.isLeft(newImpl)) { - return [ - networkAlert( - newImpl.left, - `Error in ${this.getName()}.${this.handleProxyImplementationChanges.name}:88`, - `Could not fetch proxyImplementation on ${l2BlockNumber}`, - l2BlockNumber, - ), - ] - } - - if (newImpl.right.toLowerCase() != this.getImpl()) { - out.push( - Finding.fromObject({ - name: '🚨 Base: Proxy implementation changed', - description: - `Proxy implementation for ${this.proxyContract.getName()}(${this.proxyContract.getName()}) ` + - `was changed form ${this.getImpl()} to ${newImpl.right}` + - `\n(detected by func call)`, - alertId: 'PROXY-UPGRADED', - severity: FindingSeverity.High, - type: FindingType.Info, - metadata: { newImpl: newImpl.right, lastImpl: this.getImpl() }, - uniqueKey: getUniqueKey(this.proxyContract.getAddress(), l2BlockNumber), - }), - ) - this.setImpl(newImpl.right) - } - - return out - } - - private async handleProxyAdminChanges(l2blockNumber: number): Promise { - const out: Finding[] = [] - - const newAdmin = await this.proxyContract.getProxyAdmin(l2blockNumber) - if (E.isLeft(newAdmin)) { - return [ - networkAlert( - newAdmin.left, - `Error in ${this.getName()}.${this.handleProxyAdminChanges.name}:126`, - `Could not fetch getProxyAdmin on ${l2blockNumber}`, - l2blockNumber, - ), - ] - } - - if (newAdmin.right.toLowerCase() != this.getAdmin()) { - out.push( - Finding.fromObject({ - name: '🚨 Base: Proxy admin changed', - description: - `Proxy admin for ${this.proxyContract.getName()}(${this.proxyContract.getAddress()}) ` + - `was changed from ${this.getAdmin()} to ${newAdmin.right}` + - `\n(detected by func call)`, - alertId: 'PROXY-ADMIN-CHANGED', - severity: FindingSeverity.High, - type: FindingType.Info, - metadata: { newAdmin: newAdmin.right, lastAdmin: this.getAdmin() }, - uniqueKey: getUniqueKey(this.proxyContract.getAddress(), l2blockNumber), - }), - ) - - this.setAdmin(newAdmin.right) - } - return out - } -} diff --git a/l2-bridge-base/src/utils/constants.ts b/l2-bridge-base/src/utils/constants.ts deleted file mode 100644 index 6fe37f7a1..000000000 --- a/l2-bridge-base/src/utils/constants.ts +++ /dev/null @@ -1,57 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type RoleHashToName = Map - -export type OProxyContract = { - name: string - address: string -} - -export type BASE_L2ERC20_TOKEN_BRIDGED_TYPE = OProxyContract -export type BASE_WSTETH_BRIDGED_TYPE = OProxyContract - -export type Address = { - L1_WSTETH_ADDRESS: string - BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS: string - BASE_GOV_EXECUTOR_ADDRESS: string - BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS: string - BASE_WSTETH_ADDRESS: string - BASE_L2ERC20_TOKEN_BRIDGED: BASE_L2ERC20_TOKEN_BRIDGED_TYPE - BASE_WSTETH_BRIDGED: BASE_WSTETH_BRIDGED_TYPE - RolesMap: RoleHashToName -} - -const L1_WSTETH_ADDRESS = '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' -const BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS = '0x9de443adc5a411e83f1878ef24c3f52c61571e72' -const BASE_GOV_EXECUTOR_ADDRESS: string = '0x0e37599436974a25ddeedf795c848d30af46eacf' -const BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS: string = '0xac9d11cd4d7ef6e54f14643a393f68ca014287ab' -const BASE_WSTETH_ADDRESS: string = '0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452' -const DEPOSITS_DISABLER_ROLE_HASH: string = '0x63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6' -const DEPOSITS_ENABLER_ROLE_HASH: string = '0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a' -const WITHDRAWALS_ENABLER_ROLE_HASH: string = '0x9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d' -const WITHDRAWALS_DISABLER_ROLE_HASH: string = '0x94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c' -const DEFAULT_ADMIN_ROLE_HASH: string = '0x0000000000000000000000000000000000000000000000000000000000000000' - -export const ETH_DECIMALS = new BigNumber(10).pow(18) -export const Address: Address = { - L1_WSTETH_ADDRESS: L1_WSTETH_ADDRESS, - BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS: BASE_L1ERC20_TOKEN_BRIDGE_ADDRESS, - BASE_GOV_EXECUTOR_ADDRESS: BASE_GOV_EXECUTOR_ADDRESS, - BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS: BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS, - BASE_WSTETH_ADDRESS: BASE_WSTETH_ADDRESS, - BASE_L2ERC20_TOKEN_BRIDGED: { - name: 'BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS', - address: BASE_L2ERC20_TOKEN_BRIDGE_ADDRESS, - }, - BASE_WSTETH_BRIDGED: { - name: 'BASE_WSTETH_ADDRESS', - address: BASE_WSTETH_ADDRESS, - }, - RolesMap: new Map([ - [DEPOSITS_ENABLER_ROLE_HASH, 'DEPOSITS ENABLER ROLE'], - [DEPOSITS_DISABLER_ROLE_HASH, 'DEPOSITS DISABLER ROLE'], - [WITHDRAWALS_ENABLER_ROLE_HASH, 'WITHDRAWALS ENABLER ROLE'], - [WITHDRAWALS_DISABLER_ROLE_HASH, 'WITHDRAWALS DISABLER ROLE'], - [DEFAULT_ADMIN_ROLE_HASH, 'DEFAULT ADMIN ROLE'], - ]), -} diff --git a/l2-bridge-base/src/utils/error.ts b/l2-bridge-base/src/utils/error.ts deleted file mode 100644 index a7bab5321..000000000 --- a/l2-bridge-base/src/utils/error.ts +++ /dev/null @@ -1,16 +0,0 @@ -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - } else { - this.message = `${e}` - } - } -} diff --git a/l2-bridge-base/src/utils/events/bridge_events.ts b/l2-bridge-base/src/utils/events/bridge_events.ts deleted file mode 100644 index 8fa148518..000000000 --- a/l2-bridge-base/src/utils/events/bridge_events.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { OProxyContract, RoleHashToName } from '../constants' - -export function getL2BridgeEvents( - L2_ERC20_TOKEN_GATEWAY: OProxyContract, - RolesAddrToNameMap: RoleHashToName, -): EventOfNotice[] { - return [ - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: - 'event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)', - alertId: 'L2-BRIDGE-ROLE-ADMIN-CHANGED', - name: '🚨 Base L2 Bridge: Role Admin changed', - description: (args: Result) => - `Role Admin for role ${args.role}(${RolesAddrToNameMap.get(args.role) || 'unknown'}) ` + - `was changed from ${args.previousAdminRole} to ${args.newAdminRole}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: `944ab955-07dc-45e8-9ab0-4ea99add30b7`, - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event WithdrawalsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-DISABLED', - name: '🚨 Base L2 Bridge: Withdrawals Disabled', - description: (args: Result) => `Withdrawals were disabled by ${args.enabler}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: `47c31672-d4b7-4923-8def-98e3958dbbde`, - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event Initialized(address indexed admin)', - alertId: 'L2-BRIDGE-IMPLEMENTATION-INITIALIZED', - name: '🚨 Base L2 Bridge: Implementation initialized', - description: (args: Result) => - `Implementation of the Base L2 Bridge was initialized by ${args.admin}\n` + - `NOTE: This is not the thing that should be left unacted!\n` + - `Make sure that this call was made by Lido!`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: `c768e8e9-a216-40ac-b610-834272344e94`, - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event DepositsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-DEPOSITS-DISABLED', - name: '🚨 Base L2 Bridge: Deposits Disabled', - description: (args: Result) => `Deposits were disabled by ${args.disabler}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '6a768bc1-4e08-4924-a2e0-5ef7ddc8ceec', - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-GRANTED', - name: '⚠️ Base L2 Bridge: Role granted', - description: (args: Result) => - `Role ${args.role}(${RolesAddrToNameMap.get(args.role) || 'unknown'}) ` + - `was granted to ${args.account} by ${args.sender}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '77aedba1-41ac-423a-8a78-6526d357d6b3', - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-REVOKED', - name: '⚠️ Base L2 Bridge: Role revoked', - description: (args: Result) => - `Role ${args.role}(${RolesAddrToNameMap.get(args.role) || 'unknown'}) ` + - `was revoked to ${args.account} by ${args.sender}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '9f09b503-b447-4b13-9673-4ee3a425c7fb', - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event DepositsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-DEPOSITS-ENABLED', - name: 'ℹ️ Base L2 Bridge: Deposits Enabled', - description: (args: Result) => `Deposits were enabled by ${args.enabler}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: 'a1b8afc8-c2d5-48d1-accb-f5ca986248b8', - }, - { - address: L2_ERC20_TOKEN_GATEWAY.address, - event: 'event WithdrawalsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-ENABLED', - name: 'ℹ️ Base L2 Bridge: Withdrawals Enabled', - description: (args: Result) => `Withdrawals were enabled by ${args.enabler}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '0ae20245-7906-4765-a227-5f79b346a230', - }, - ] -} diff --git a/l2-bridge-base/src/utils/events/gov_events.ts b/l2-bridge-base/src/utils/events/gov_events.ts deleted file mode 100644 index 3643edd9c..000000000 --- a/l2-bridge-base/src/utils/events/gov_events.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' - -export function getGovEvents(GOV_BRIDGE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event EthereumGovernanceExecutorUpdate(address oldEthereumGovernanceExecutor, address newEthereumGovernanceExecutor)', - alertId: 'GOV-BRIDGE-EXEC-UPDATED', - name: '🚨 Base Gov Bridge: Ethereum Governance Executor Updated', - description: (args: Result) => - `Ethereum Governance Executor was updated from ` + - `${args.oldEthereumGovernanceExecutor} to ${args.newEthereumGovernanceExecutor}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '791bebd4-fe0f-4ea0-86d1-6a28ef573f2f', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GuardianUpdate(address oldGuardian, address newGuardian)', - alertId: 'GOV-BRIDGE-GUARDIAN-UPDATED', - name: '🚨 Base Gov Bridge: Guardian Updated', - description: (args: Result) => `Guardian was updated from ` + `${args.oldGuardian} to ${args.newGuardian}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '36956c95-272a-4cfa-9f5b-cde0c6f13a11', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event DelayUpdate(uint256 oldDelay, uint256 newDelay)', - alertId: 'GOV-BRIDGE-DELAY-UPDATED', - name: '⚠️ Base Gov Bridge: Delay Updated', - description: (args: Result) => `Delay was updated from ` + `${args.oldDelay} to ${args.newDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: 'bfd1f027-b6be-4685-881c-2bb8c94de4e7', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GracePeriodUpdate(uint256 oldGracePeriod, uint256 newGracePeriod)', - alertId: 'GOV-BRIDGE-GRACE-PERIOD-UPDATED', - name: '⚠️ Base Gov Bridge: Grace Period Updated', - description: (args: Result) => - `Grace Period was updated from ` + `${args.oldGracePeriod} to ${args.newGracePeriod}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: 'e8c5ddaf-77d7-4344-b480-d1dbcf16e838', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MinimumDelayUpdate(uint256 oldMinimumDelay, uint256 newMinimumDelay)', - alertId: 'GOV-BRIDGE-MIN-DELAY-UPDATED', - name: '⚠️ Base Gov Bridge: Min Delay Updated', - description: (args: Result) => - `Min Delay was updated from ` + `${args.oldMinimumDelay} to ${args.newMinimumDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: 'e3801901-2425-40bd-8eda-d2d9cf1dbe2a', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MaximumDelayUpdate(uint256 oldMaximumDelay, uint256 newMaximumDelay)', - alertId: 'GOV-BRIDGE-MAX-DELAY-UPDATED', - name: '⚠️ Base Gov Bridge: Max Delay Updated', - description: (args: Result) => - `Max Delay was updated from ` + `${args.oldMaximumDelay} to ${args.newMaximumDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '57d80797-7221-4757-8b8a-2a593ba16b6b', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event ActionsSetQueued(uint256 indexed id, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, bool[] withDelegatecalls, uint256 executionTime)', - alertId: 'GOV-BRIDGE-ACTION-SET-QUEUED', - name: 'ℹ️ Base Gov Bridge: Action set queued', - description: (args: Result) => `Action set ${args.id} was queued`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '70d4fbdc-30e4-49c0-aee5-c94b208d80bc', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetExecuted(uint256 indexed id, address indexed initiatorExecution, bytes[] returnedData)', - alertId: 'GOV-BRIDGE-ACTION-SET-EXECUTED', - name: 'ℹ️ Base Gov Bridge: Action set executed', - description: (args: Result) => `Action set ${args.id} was executed`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: 'cdbd1924-9d38-4b48-ba12-45271b5c83e9', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetCanceled(uint256 indexed id)', - alertId: 'GOV-BRIDGE-ACTION-SET-CANCELED', - name: 'ℹ️ Base Gov Bridge: Action set canceled', - description: (args: Result) => `Action set ${args.id} was canceled`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '581ece43-0cdf-44f9-9ee7-fefe00a8f185', - }, - ] -} diff --git a/l2-bridge-base/src/utils/events/proxy_admin_events.ts b/l2-bridge-base/src/utils/events/proxy_admin_events.ts deleted file mode 100644 index f699afbbe..000000000 --- a/l2-bridge-base/src/utils/events/proxy_admin_events.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { OProxyContract } from '../constants' -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' - -export function getProxyAdminEvents( - L2ERC20_Token_Gateway: OProxyContract, - BASE_WST_ETH_BRIDGED: OProxyContract, -): EventOfNotice[] { - return [ - { - address: L2ERC20_Token_Gateway.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Base: Proxy ossified', - description: () => - `Proxy for ${L2ERC20_Token_Gateway.name}(${L2ERC20_Token_Gateway.address}) was ossified` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'add047d4-ad28-47c9-9543-55e20c55f182', - }, - { - address: L2ERC20_Token_Gateway.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Base: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${L2ERC20_Token_Gateway.name}(${L2ERC20_Token_Gateway.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '1a79879e-12eb-4749-917e-cd8163bbc136', - }, - { - address: L2ERC20_Token_Gateway.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Base: Proxy upgraded', - description: (args: Result) => - `Proxy for ${L2ERC20_Token_Gateway.name}(${L2ERC20_Token_Gateway.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'b272e522-55af-46a6-8c10-16e9538c10b2', - }, - { - address: L2ERC20_Token_Gateway.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Base: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${L2ERC20_Token_Gateway.name}(${L2ERC20_Token_Gateway.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '3c806ac9-e51d-4d11-9f5c-03346d3bf9c0', - }, - { - address: BASE_WST_ETH_BRIDGED.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Base: Proxy ossified', - description: () => - `Proxy for ${BASE_WST_ETH_BRIDGED.name}(${BASE_WST_ETH_BRIDGED.address}) was ossified` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '858282d8-2039-4a5a-8894-19854991773e', - }, - { - address: BASE_WST_ETH_BRIDGED.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Base: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${BASE_WST_ETH_BRIDGED.name}(${BASE_WST_ETH_BRIDGED.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'cb522da7-f0ab-460e-bc10-eb1c6d0938b8', - }, - { - address: BASE_WST_ETH_BRIDGED.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Base: Proxy upgraded', - description: (args: Result) => - `Proxy for ${BASE_WST_ETH_BRIDGED.name}(${BASE_WST_ETH_BRIDGED.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '3fe4f5de-1773-4ae9-9254-eb93f7682046', - }, - { - address: BASE_WST_ETH_BRIDGED.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Base: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${BASE_WST_ETH_BRIDGED.name}(${BASE_WST_ETH_BRIDGED.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '1b1c492f-6d2b-4cc7-a9b0-1db92307d508', - }, - ] -} diff --git a/l2-bridge-base/src/utils/mutex.ts b/l2-bridge-base/src/utils/mutex.ts deleted file mode 100644 index 45f803417..000000000 --- a/l2-bridge-base/src/utils/mutex.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Mutex } from 'async-mutex' -import { Finding } from 'forta-agent' - -export class FindingsRW { - private mutex: Mutex - private value: Finding[] - - constructor(initialValue: Finding[]) { - this.mutex = new Mutex() - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: Finding[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/l2-bridge-base/src/utils/time.ts b/l2-bridge-base/src/utils/time.ts deleted file mode 100644 index 5f26f5e02..000000000 --- a/l2-bridge-base/src/utils/time.ts +++ /dev/null @@ -1,28 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} - -export const dateTimeFormat = new Intl.DateTimeFormat('RU', { - year: '2-digit', - month: '2-digit', - day: '2-digit', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - timeZoneName: 'short', - formatMatcher: 'basic', - hour12: false, - timeZone: 'UTC', -}) diff --git a/l2-bridge-base/src/utils/version.ts b/l2-bridge-base/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/l2-bridge-base/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/l2-bridge-base/tsconfig.json b/l2-bridge-base/tsconfig.json deleted file mode 100644 index 9f1e16f51..000000000 --- a/l2-bridge-base/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist" - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/l2-bridge-base/yarn.lock b/l2-bridge-base/yarn.lock deleted file mode 100644 index ac61af71d..000000000 --- a/l2-bridge-base/yarn.lock +++ /dev/null @@ -1,4732 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== - dependencies: - "@babel/types" "^7.24.0" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== - dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@grpc/grpc-js@^1.3.6": - version "1.10.6" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.6.tgz#1e3eb1af911dc888fbef7452f56a7573b8284d54" - integrity sha512-xP58G7wDQ4TCmN/cMUHh00DS7SRDv/+lC+xFLrTkMIN8h55X5NhZMLYbvy7dSELP15qlI6hPhNCRWVMtZMwqLA== - dependencies: - "@grpc/proto-loader" "^0.7.10" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.10": - version "0.7.12" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.12.tgz#787b58e3e3771df30b1567c057b6ab89e3a42911" - integrity sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.4" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node20@^20.1.2": - version "20.1.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.4.tgz#3457d42eddf12d3bde3976186ab0cd22b85df928" - integrity sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== - dependencies: - "@babel/types" "^7.20.7" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.10": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.17.0" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3" - integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=13.7.0": - version "20.12.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" - integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -async-mutex@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" - integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.6.8" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.8.tgz#66d294951f5d988a00e87a0ffb955316a619ea66" - integrity sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserslist@^4.22.2: - version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" - integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== - dependencies: - caniuse-lite "^1.0.30001587" - electron-to-chromium "^1.4.668" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001587: - version "1.0.30001608" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001608.tgz#7ae6e92ffb300e4b4ec2f795e0abab456ec06cc0" - integrity sha512-cjUJTQkk9fQlJR2s4HMuPMvTiRggl0rAVMtthQuyOlDWuqHXqN8azLq+pi8B2TjwKJ32diHjUqRIKeFX4z1FoA== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.668: - version "1.4.733" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.733.tgz#708d51ce01a7ed3b401d5ced85e9f5d504fd4217" - integrity sha512-gUI9nhI2iBGF0OaYYLKOaOtliFMl+Bt1rY7VmEjwxOxqoYLub/D9xmduPEhbw2imE6gYkJKhIE5it+KE2ulVxQ== - -elliptic@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" - integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethers@^5.5.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -fp-ts@^2.16.1: - version "2.16.5" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.5.tgz#d79b97168aeafcf9612f18bbc017f513ecb20ac9" - integrity sha512-N8T8PwMSeTKKtkm9lkj/zSTAnPC/aJIIrQhnHxxkL0KLsRCNUPANksJOlMXxcKKCo7H1ORP3No9EMD+fP0tsdA== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-gyp-build@^4.2.0: - version "4.8.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" - integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.0.tgz#ff7394f2450eb6a5e96fe4180acd5176b29799c9" - integrity sha512-xqlktYlDMCepBJd43ZQhjWwMw2obW/JRvkrLxq5RCNcuDDX1DbcPT+qT1IlIIdf+DhnWs90JpTMe+Y5KxOchvA== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.4: - version "7.2.6" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.6.tgz#4a0ccd79eb292717aacf07530a07e0ed20278215" - integrity sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.1: - version "29.1.2" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.2.tgz#7613d8c81c43c8cb312c6904027257e814c40e09" - integrity sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-retry@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.5.tgz#ee4638e66c68bb49da975aa4994d5f16bfb61bc2" - integrity sha512-dFBa4pxMBkt/bjzdBio8EwYfbAdycEAwe0KZgzlUKKwU9Wr1WErK7Hg9QLqJuDDYJXTW4KYZyXAyqYKOdO/ehA== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.3: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -winston-transport@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" - integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" - integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.7.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/l2-bridge-ethereum/.gitignore b/l2-bridge-ethereum/.gitignore index f73222b7d..a18706e38 100644 --- a/l2-bridge-ethereum/.gitignore +++ b/l2-bridge-ethereum/.gitignore @@ -6,3 +6,4 @@ forta.config.json *.log version.json .DS_Store +src/generated diff --git a/l2-bridge-ethereum/jest.config.js b/l2-bridge-ethereum/jest.config.js new file mode 100644 index 000000000..33239e0bd --- /dev/null +++ b/l2-bridge-ethereum/jest.config.js @@ -0,0 +1,6 @@ +/** @type {import("ts-jest").JestConfigWithTsJest} */ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + testPathIgnorePatterns: ["dist"], +}; diff --git a/l2-bridge-ethereum/package.json b/l2-bridge-ethereum/package.json index a57f3a41b..93ecdd343 100644 --- a/l2-bridge-ethereum/package.json +++ b/l2-bridge-ethereum/package.json @@ -32,14 +32,19 @@ "prettier:check": "prettier --check .", "prettier:format": "prettier --write .", "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format" + "format": "yarn run eslint:format && yarn run prettier:format", + "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated ./src/abi/*", + "postinstall": "yarn generate-types" }, "dependencies": { "bignumber.js": "^9.0.1", "forta-agent": "^0.1.48" }, "devDependencies": { - "@types/jest": "^27.0.1", + "@jest/globals": "^29.7.0", + "@tsconfig/node20": "^20.1.4", + "@typechain/ethers-v5": "^11.1.2", + "@types/jest": "^29.5.12", "@types/nodemon": "^1.19.0", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", @@ -47,11 +52,12 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-jest": "^27.6.0", "eslint-plugin-prettier": "^5.0.1", - "jest": "^27.0.6", + "jest": "^29.7.0", "nodemon": "^2.0.8", "prettier": "^3.1.0", - "ts-jest": "^27.0.3", - "typescript": "^4.3.4" + "ts-jest": "^29.2.4", + "typechain": "^8.3.2", + "typescript": "^5.3.2" }, "packageManager": "yarn@3.3.0" } diff --git a/l2-bridge-ethereum/src/abi/BaseAdapter.json b/l2-bridge-ethereum/src/abi/BaseAdapter.json new file mode 100644 index 000000000..901167cf7 --- /dev/null +++ b/l2-bridge-ethereum/src/abi/BaseAdapter.json @@ -0,0 +1,163 @@ +[ + { + "type": "function", + "name": "BASE_GAS_LIMIT", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "CROSS_CHAIN_CONTROLLER", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IBaseCrossChainController" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "adapterName", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "forwardMessage", + "inputs": [ + { + "name": "receiver", + "type": "address", + "internalType": "address" + }, + { + "name": "executionGasLimit", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "destinationChainId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "message", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getTrustedRemoteByChainId", + "inputs": [ + { + "name": "chainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "infraToNativeChainId", + "inputs": [ + { + "name": "infraChainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nativeToInfraChainId", + "inputs": [ + { + "name": "nativeChainId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setupPayments", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "SetTrustedRemote", + "inputs": [ + { + "name": "originChainId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "originForwarder", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + } +] diff --git a/l2-bridge-ethereum/src/abi/CrossChainController.json b/l2-bridge-ethereum/src/abi/CrossChainController.json new file mode 100644 index 000000000..ffcbf2813 --- /dev/null +++ b/l2-bridge-ethereum/src/abi/CrossChainController.json @@ -0,0 +1,1884 @@ +{ + "abi": [ + { "type": "receive", "stateMutability": "payable" }, + { + "type": "function", + "name": "allowReceiverBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdaptersInput", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "approveSenders", + "inputs": [{ "name": "senders", "type": "address[]", "internalType": "address[]" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "deliverEnvelope", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "disableBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.BridgeAdapterToDisable[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "disallowReceiverBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "emergencyEtherTransfer", + "inputs": [ + { "name": "to", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "emergencyTokenTransfer", + "inputs": [ + { "name": "erc20Token", "type": "address", "internalType": "address" }, + { "name": "to", "type": "address", "internalType": "address" }, + { "name": "amount", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "enableBridgeAdapters", + "inputs": [ + { + "name": "bridgeAdapters", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "components": [ + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "forwardMessage", + "inputs": [ + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ], + "outputs": [ + { "name": "", "type": "bytes32", "internalType": "bytes32" }, + { "name": "", "type": "bytes32", "internalType": "bytes32" } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "getConfigurationByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.ReceiverConfiguration", + "components": [ + { "name": "requiredConfirmation", "type": "uint8", "internalType": "uint8" }, + { "name": "validityTimestamp", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentEnvelopeNonce", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getCurrentTransactionNonce", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getEnvelopeState", + "inputs": [{ "name": "envelopeId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "uint8", "internalType": "enum ICrossChainReceiver.EnvelopeState" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getEnvelopeState", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "uint8", "internalType": "enum ICrossChainReceiver.EnvelopeState" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getForwarderBridgeAdaptersByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ChainIdBridgeConfig[]", + "components": [ + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getReceiverBridgeAdaptersByChain", + "inputs": [{ "name": "chainId", "type": "uint256", "internalType": "uint256" }], + "outputs": [{ "name": "", "type": "address[]", "internalType": "address[]" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getSupportedChains", + "inputs": [], + "outputs": [{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTransactionState", + "inputs": [ + { + "name": "transaction", + "type": "tuple", + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "components": [ + { "name": "confirmations", "type": "uint8", "internalType": "uint8" }, + { "name": "firstBridgedAt", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getTransactionState", + "inputs": [{ "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "components": [ + { "name": "confirmations", "type": "uint8", "internalType": "uint8" }, + { "name": "firstBridgedAt", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "guardian", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { "name": "owner", "type": "address", "internalType": "address" }, + { "name": "guardian", "type": "address", "internalType": "address" }, + { + "name": "initialRequiredConfirmations", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "requiredConfirmations", "type": "uint8", "internalType": "uint8" } + ] + }, + { + "name": "receiverBridgeAdaptersToAllow", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "components": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainIds", "type": "uint256[]", "internalType": "uint256[]" } + ] + }, + { + "name": "forwarderBridgeAdaptersToEnable", + "type": "tuple[]", + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "components": [ + { "name": "currentChainBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" } + ] + }, + { "name": "sendersToApprove", "type": "address[]", "internalType": "address[]" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isEnvelopeRegistered", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isEnvelopeRegistered", + "inputs": [{ "name": "envelopeId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isReceiverBridgeAdapterAllowed", + "inputs": [ + { "name": "bridgeAdapter", "type": "address", "internalType": "address" }, + { "name": "chainId", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isSenderApproved", + "inputs": [{ "name": "sender", "type": "address", "internalType": "address" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionForwarded", + "inputs": [{ "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionForwarded", + "inputs": [ + { + "name": "transaction", + "type": "tuple", + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isTransactionReceivedByAdapter", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "internalType": "bytes32" }, + { "name": "bridgeAdapter", "type": "address", "internalType": "address" } + ], + "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "function", + "name": "receiveCrossChainMessage", + "inputs": [ + { "name": "encodedTransaction", "type": "bytes", "internalType": "bytes" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "removeSenders", + "inputs": [{ "name": "senders", "type": "address[]", "internalType": "address[]" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { "type": "function", "name": "renounceOwnership", "inputs": [], "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "retryEnvelope", + "inputs": [ + { + "name": "envelope", + "type": "tuple", + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" } + ], + "outputs": [{ "name": "", "type": "bytes32", "internalType": "bytes32" }], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "retryTransaction", + "inputs": [ + { "name": "encodedTransaction", "type": "bytes", "internalType": "bytes" }, + { "name": "gasLimit", "type": "uint256", "internalType": "uint256" }, + { "name": "bridgeAdaptersToRetry", "type": "address[]", "internalType": "address[]" } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [{ "name": "newOwner", "type": "address", "internalType": "address" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateConfirmations", + "inputs": [ + { + "name": "newConfirmations", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "requiredConfirmations", "type": "uint8", "internalType": "uint8" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateGuardian", + "inputs": [{ "name": "newGuardian", "type": "address", "internalType": "address" }], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "updateMessagesValidityTimestamp", + "inputs": [ + { + "name": "newValidityTimestamp", + "type": "tuple[]", + "internalType": "struct ICrossChainReceiver.ValidityTimestampInput[]", + "components": [ + { "name": "chainId", "type": "uint256", "internalType": "uint256" }, + { "name": "validityTimestamp", "type": "uint120", "internalType": "uint120" } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "whoCanRescue", + "inputs": [], + "outputs": [{ "name": "", "type": "address", "internalType": "address" }], + "stateMutability": "view" + }, + { + "type": "event", + "name": "BridgeAdapterUpdated", + "inputs": [ + { "name": "destinationChainId", "type": "uint256", "indexed": true, "internalType": "uint256" }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "allowed", "type": "bool", "indexed": true, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ConfirmationsUpdated", + "inputs": [ + { "name": "newConfirmations", "type": "uint8", "indexed": false, "internalType": "uint8" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ERC20Rescued", + "inputs": [ + { "name": "caller", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "token", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EnvelopeDeliveryAttempted", + "inputs": [ + { "name": "envelopeId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { + "name": "envelope", + "type": "tuple", + "indexed": false, + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "isDelivered", "type": "bool", "indexed": false, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "EnvelopeRegistered", + "inputs": [ + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { + "name": "envelope", + "type": "tuple", + "indexed": false, + "internalType": "struct Envelope", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "origin", "type": "address", "internalType": "address" }, + { "name": "destination", "type": "address", "internalType": "address" }, + { "name": "originChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "destinationChainId", "type": "uint256", "internalType": "uint256" }, + { "name": "message", "type": "bytes", "internalType": "bytes" } + ] + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "GuardianUpdated", + "inputs": [ + { "name": "oldGuardian", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "newGuardian", "type": "address", "indexed": false, "internalType": "address" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [{ "name": "version", "type": "uint8", "indexed": false, "internalType": "uint8" }], + "anonymous": false + }, + { + "type": "event", + "name": "NativeTokensRescued", + "inputs": [ + { "name": "caller", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "to", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "NewInvalidation", + "inputs": [ + { "name": "invalidTimestamp", "type": "uint256", "indexed": false, "internalType": "uint256" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { "name": "previousOwner", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "newOwner", "type": "address", "indexed": true, "internalType": "address" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "ReceiverBridgeAdaptersUpdated", + "inputs": [ + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "allowed", "type": "bool", "indexed": true, "internalType": "bool" }, + { "name": "chainId", "type": "uint256", "indexed": true, "internalType": "uint256" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "SenderUpdated", + "inputs": [ + { "name": "sender", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "isApproved", "type": "bool", "indexed": true, "internalType": "bool" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TransactionForwardingAttempted", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { "name": "encodedTransaction", "type": "bytes", "indexed": false, "internalType": "bytes" }, + { "name": "destinationChainId", "type": "uint256", "indexed": false, "internalType": "uint256" }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "destinationBridgeAdapter", "type": "address", "indexed": false, "internalType": "address" }, + { "name": "adapterSuccessful", "type": "bool", "indexed": true, "internalType": "bool" }, + { "name": "returnData", "type": "bytes", "indexed": false, "internalType": "bytes" } + ], + "anonymous": false + }, + { + "type": "event", + "name": "TransactionReceived", + "inputs": [ + { "name": "transactionId", "type": "bytes32", "indexed": false, "internalType": "bytes32" }, + { "name": "envelopeId", "type": "bytes32", "indexed": true, "internalType": "bytes32" }, + { "name": "originChainId", "type": "uint256", "indexed": true, "internalType": "uint256" }, + { + "name": "transaction", + "type": "tuple", + "indexed": false, + "internalType": "struct Transaction", + "components": [ + { "name": "nonce", "type": "uint256", "internalType": "uint256" }, + { "name": "encodedEnvelope", "type": "bytes", "internalType": "bytes" } + ] + }, + { "name": "bridgeAdapter", "type": "address", "indexed": true, "internalType": "address" }, + { "name": "confirmations", "type": "uint8", "indexed": false, "internalType": "uint8" } + ], + "anonymous": false + }, + { + "type": "error", + "name": "SafeERC20FailedOperation", + "inputs": [{ "name": "token", "type": "address", "internalType": "address" }] + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b50604080516000808252602082019092529062000051565b6040805180820190915260008082526020820152815260200190600190039081620000295790505b50604080516000808252602082019092529062000092565b604080518082019091526000815260606020820152815260200190600190039081620000695790505b506040805160008082526020820190925290620000d8565b6040805160608101825260008082526020808301829052928201528252600019909201910181620000aa5790505b50604080516000815260208101909152620000f333620001c1565b620000fe3362000211565b604080516000808252602082019092526200015d9184919062000145565b6040805180820190915260008152606060208201528152602001906001900390816200011c5790505b50604080516000815260208101909152849062000272565b505060408051600080825260208201909252620001ae91839190620001a6565b6040805180820190915260008152606060208201528152602001906001900390816200017d5790505b5084620002a8565b50620001bb9050620002d2565b620011f6565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad909910160405180910390a15050565b6200027d8462000395565b620002888362000637565b6200029582600162000927565b620002a281600062000927565b50505050565b620002b583600162000a67565b620002c282600062000a67565b620002cd8162000d07565b505050565b607154610100900460ff1615620003405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b60648201526084015b60405180910390fd5b60715460ff908116101562000393576071805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b60005b815181101562000633576000828281518110620003b957620003b962001109565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015620003f4575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b815250906200042f5760405162461bcd60e51b815260040162000337919062001145565b506040808201516000908152600760205290812090805b82548110156200052257600083828154811062000467576200046762001109565b60009182526020909120865160029092020160018101549092506001600160a01b039182169116036200050c57602085015181546001600160a01b03908116911614620005015760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692916000805160206200531f833981519152910160405180910390a45b600192505062000522565b5080620005198162001190565b91505062000446565b50806200061a5782516040805160048152602481018252602080820180516001600160e01b039081166352d1043d60e01b1790915283518085019094526002845261199960f11b918401919091526200057e93929062000e2116565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290916000805160206200531f833981519152910160405180910390a45b50505080806200062a9062001190565b91505062000398565b5050565b60005b8151811015620006335760005b8282815181106200065c576200065c62001109565b6020026020010151602001515181101562000911576000600760008585815181106200068c576200068c62001109565b6020026020010151602001518481518110620006ac57620006ac62001109565b60200260200101518152602001908152602001600020905060005b8154811015620008f957848481518110620006e657620006e662001109565b6020026020010151600001516001600160a01b031682828154811062000710576200071062001109565b60009182526020909120600160029092020101546001600160a01b031603620008e45760008282815481106200074a576200074a62001109565b600091825260209091206002909102015483546001600160a01b03909116915083906200077a90600190620011ac565b815481106200078d576200078d62001109565b9060005260206000209060020201838381548110620007b057620007b062001109565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b031991821617825560019384015493909101805493909216921691909117905582548390806200080a576200080a620011c2565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811062000855576200085562001109565b6020026020010151600001516001600160a01b03168787815181106200087f576200087f62001109565b60200260200101516020015186815181106200089f576200089f62001109565b60200260200101516000805160206200531f83398151915284604051620008d591906001600160a01b0391909116815260200190565b60405180910390a450620008f9565b80620008f08162001190565b915050620006c7565b50508080620009089062001190565b91505062000647565b50806200091e8162001190565b9150506200063a565b60005b8251811015620002cd5760006001600160a01b031683828151811062000954576200095462001109565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b81525090620009a35760405162461bcd60e51b815260040162000337919062001145565b508160046000858481518110620009be57620009be62001109565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081151583828151811062000a155762000a1562001109565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38062000a5e8162001190565b9150506200092a565b60005b8251811015620002cd57600083828151811062000a8b5762000a8b62001109565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b8152509062000aec5760405162461bcd60e51b815260040162000337919062001145565b5060005b81602001515181101562000cef576000841562000b945762000b3d8360200151838151811062000b245762000b2462001109565b6020026020010151603d62000ea060201b90919060201c565b5062000b8c8360000151603a60008660200151868151811062000b645762000b6462001109565b6020026020010151815260200190815260200160002060010162000eb760201b90919060201c565b905062000c73565b62000be28360000151603a60008660200151868151811062000bba5762000bba62001109565b6020026020010151815260200190815260200160002060010162000ece60201b90919060201c565b905080801562000c35575062000c33603a60008560200151858151811062000c0e5762000c0e62001109565b6020026020010151815260200190815260200160002060010162000ee560201b60201c565b155b1562000c735762000c718360200151838151811062000c585762000c5862001109565b6020026020010151603d62000ef060201b90919060201c565b505b801562000cd9578260200151828151811062000c935762000c9362001109565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508062000ce68162001190565b91505062000af0565b5050808062000cfe9062001190565b91505062000a6a565b60005b81518110156200063357600082828151811062000d2b5762000d2b62001109565b602002602001015190506000816020015160ff1611801562000d71575080516000908152603a6020526040902062000d669060010162000ee5565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b8152509062000dad5760405162461bcd60e51b815260040162000337919062001145565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a2508062000e188162001190565b91505062000d0a565b6060600080856001600160a01b03168560405162000e409190620011d8565b600060405180830381855af49150503d806000811462000e7d576040519150601f19603f3d011682016040523d82523d6000602084013e62000e82565b606091505b50909250905062000e968683838762000efe565b9695505050505050565b600062000eae838362000f86565b90505b92915050565b600062000eae836001600160a01b03841662000f86565b600062000eae836001600160a01b03841662000fd8565b600062000eb1825490565b600062000eae838362000fd8565b6060831562000f7257825160000362000f6a576001600160a01b0385163b62000f6a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000337565b508162000f7e565b62000f7e8383620010dc565b949350505050565b600081815260018301602052604081205462000fcf5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000eb1565b50600062000eb1565b60008181526001830160205260408120548015620010d157600062000fff600183620011ac565b85549091506000906200101590600190620011ac565b90508181146200108157600086600001828154811062001039576200103962001109565b90600052602060002001549050808760000184815481106200105f576200105f62001109565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620010955762001095620011c2565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000eb1565b600091505062000eb1565b815115620010ed5781518083602001fd5b8060405162461bcd60e51b815260040162000337919062001145565b634e487b7160e01b600052603260045260246000fd5b60005b838110156200113c57818101518382015260200162001122565b50506000910152565b6020815260008251806020840152620011668160408501602087016200111f565b601f01601f19169190910160400192915050565b634e487b7160e01b600052601160045260246000fd5b600060018201620011a557620011a56200117a565b5060010190565b8181038181111562000eb15762000eb16200117a565b634e487b7160e01b600052603160045260246000fd5b60008251620011ec8184602087016200111f565b9190910192915050565b61411980620012066000396000f3fe6080604052600436106102345760003560e01c80639b6c7efa1161012e578063db58eaec116100ab578063efe4b0ae1161006f578063efe4b0ae146107ce578063f2fde38b146107e3578063f62b984314610803578063fc52539514610823578063fe46a4131461084357600080fd5b8063db58eaec1461071e578063e01658d91461074e578063e3a95a5a1461076e578063ed68595a1461078e578063eed88b8d146107ae57600080fd5b8063a4757b0f116100f2578063a4757b0f14610526578063aa3f85c814610634578063c37255f214610671578063c4bffe2b14610691578063c71cca16146106b357600080fd5b80639b6c7efa146105845780639d0cb9d4146105b4578063a25d3892146105d4578063a2711ff4146105f4578063a3d5b2551461061457600080fd5b80635b9d97c6116101bc57806376e5379a1161018057806376e5379a146104bc57806383fec72c146105065780638da5cb5b1461052657806390f7af5414610544578063917cbb9b1461056457600080fd5b80635b9d97c6146103d5578063654a812b146104025780636e74ebe814610421578063715018a6146104875780637670d1d81461049c57600080fd5b80633805e84e116102035780633805e84e146102e55780633eb59f601461032e578063436bd1031461034e578063452a93201461036e57806355c4fed4146103a057600080fd5b80630a234b15146102405780630fb9ca41146102625780631947051e1461029857806334f7870c146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b36600461327f565b610863565b005b34801561026e57600080fd5b5061028261027d36600461332b565b610877565b60405161028f91906133a1565b60405180910390f35b3480156102a457600080fd5b506102606102b3366004613451565b61089d565b3480156102c457600080fd5b506102d86102d3366004613485565b6109e1565b60405161028f919061349e565b3480156102f157600080fd5b5061031e6103003660046134fa565b6001600160a01b031660009081526004602052604090205460ff1690565b604051901515815260200161028f565b34801561033a57600080fd5b50610260610349366004613586565b610a6c565b34801561035a57600080fd5b5061031e610369366004613451565b610e2d565b34801561037a57600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161028f565b3480156103ac57600080fd5b506103c06103bb3660046135f2565b610e3b565b6040805192835260208301919091520161028f565b3480156103e157600080fd5b506103f56103f0366004613485565b611092565b60405161028f9190613654565b34801561040e57600080fd5b506003545b60405190815260200161028f565b34801561042d57600080fd5b5061028261043c366004613485565b6040805180820190915260008082526020820152506000908152603a602090815260409182902082518084019093525460ff8116835261010090046001600160781b03169082015290565b34801561049357600080fd5b506102606110af565b3480156104a857600080fd5b506102606104b73660046136a1565b6110c3565b3480156104c857600080fd5b5061031e6104d73660046136d5565b6000828152603b602090815260408083206001600160a01b038516845260010190915290205460ff1692915050565b34801561051257600080fd5b506102606105213660046138c2565b6110d6565b34801561053257600080fd5b506000546001600160a01b0316610388565b34801561055057600080fd5b5061026061055f3660046136a1565b6111ac565b34801561057057600080fd5b5061026061057f36600461398e565b6111bf565b34801561059057600080fd5b5061031e61059f366004613485565b60009081526006602052604090205460ff1690565b3480156105c057600080fd5b506102606105cf3660046139d6565b6111d0565b3480156105e057600080fd5b506104136105ef366004613a0a565b6111e3565b34801561060057600080fd5b5061026061060f366004613a4e565b611397565b34801561062057600080fd5b5061026061062f366004613b0f565b6113a8565b34801561064057600080fd5b5061066461064f366004613485565b6000908152603c602052604090205460ff1690565b60405161028f9190613b66565b34801561067d57600080fd5b5061031e61068c36600461332b565b61146e565b34801561069d57600080fd5b506106a661147c565b60405161028f9190613b8e565b3480156106bf57600080fd5b506102826106ce366004613485565b6040805180820190915260008082526020820152506040805180820182526000838152603b60208181529382205460ff811684529490915282526101009092046001600160781b03169082015290565b34801561072a57600080fd5b5061031e610739366004613485565b60009081526005602052604090205460ff1690565b34801561075a57600080fd5b50610664610769366004613451565b611488565b34801561077a57600080fd5b506102606107893660046139d6565b611496565b34801561079a57600080fd5b506102606107a9366004613bc6565b6114a9565b3480156107ba57600080fd5b506102606107c9366004613bfb565b611879565b3480156107da57600080fd5b50600254610413565b3480156107ef57600080fd5b506102606107fe3660046134fa565b6119c0565b34801561080f57600080fd5b5061031e61081e366004613bfb565b611a36565b34801561082f57600080fd5b5061026061083e3660046134fa565b611a58565b34801561084f57600080fd5b5061026061085e366004613c27565b611a69565b61086b611a7a565b61087481611ad4565b50565b60408051808201909152600080825260208201526108976106ce83611d78565b92915050565b60006108a882611d8f565b905060016000828152603c602052604090205460ff1660028111156108cf576108cf613b50565b1460405180604001604052806002815260200161191960f11b815250906109125760405162461bcd60e51b81526004016109099190613cab565b60405180910390fd5b506000818152603c6020908152604091829020805460ff191660021790558382015190840151606085015160a08601519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361096f93929190600401613cbe565b600060405180830381600087803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050507fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab818360016040516109d593929190613d43565b60405180910390a15050565b606060076000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a61576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610a16565b505050509050919050565b610a74611d9b565b8251602084012060009060008181526006602052604090205490915060ff1660405180604001604052806002815260200161313960f01b81525090610acc5760405162461bcd60e51b81526004016109099190613cab565b506000610ad885611e0a565b90506000610ae582611e33565b905060006007600083608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b6b576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610b20565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610baf5760405162461bcd60e51b81526004016109099190613cab565b50600085516001600160401b03811115610bcb57610bcb6130da565b604051908082528060200260200182016040528015610c1057816020015b6040805180820190915260008082526020820152815260200190600190039081610be95790505b50905060005b8651811015610dc8576000610c2c826001613d84565b90505b8751811015610ccc57878181518110610c4a57610c4a613d97565b60200260200101516001600160a01b0316888381518110610c6d57610c6d613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161323160f01b81525090610cb95760405162461bcd60e51b81526004016109099190613cab565b5080610cc481613dad565b915050610c2f565b506000805b8451811015610d7b57848181518110610cec57610cec613d97565b6020026020010151602001516001600160a01b0316898481518110610d1357610d13613d97565b60200260200101516001600160a01b031603610d6957848181518110610d3b57610d3b613d97565b6020026020010151848481518110610d5557610d55613d97565b602002602001018190525060019150610d7b565b80610d7381613dad565b915050610cd1565b50604080518082019091526002815261062760f31b602082015281610db35760405162461bcd60e51b81526004016109099190613cab565b50508080610dc090613dad565b915050610c16565b506000610de5610dd786611e48565b878b87608001518c87611e5b565b90508060405180604001604052806002815260200161032360f41b81525090610e215760405162461bcd60e51b81526004016109099190613cab565b50505050505050505050565b600061089761073983611d8f565b33600090815260046020526040812054819060ff16604051806040016040528060018152602001601960f91b81525090610e885760405162461bcd60e51b81526004016109099190613cab565b50600086815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610f00576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610eb5565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610f445760405162461bcd60e51b81526004016109099190613cab565b506002805460009182610f5683613dad565b91905055905060006040518060c00160405280838152602001336001600160a01b03168152602001896001600160a01b031681526020014681526020018a81526020018781525090506000610faa82612005565b6020808201805160009081526005909252604091829020805460ff19166001179055519051919250907f18d245f6501b267c6fc4ab6bb6f037c83d28a9ab089e79ab063162d414d2d9c990611000908590613dc6565b60405180910390a2600061103e60405180604001604052806003600081548092919061102b90613dad565b9091555081528451602090910152612066565b6020808201805160009081526006835260409020805460ff1916600117905590840151905182516080870151939450611078938d8a611e5b565b50602091820151910151909a909950975050505050505050565b6000818152603a60205260409020606090610897906001016120a1565b6110b7611a7a565b6110c160006120ae565b565b6110cb611a7a565b6108748160006120fe565b607154610100900460ff16158080156110f65750607154600160ff909116105b806111105750303b158015611110575060715460ff166001145b61112c5760405162461bcd60e51b815260040161090990613dd9565b6071805460ff19166001179055801561114f576071805461ff0019166101001790555b61115d87878787878761222e565b80156111a3576071805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6111b4611a7a565b6108748160016120fe565b6111c7611a7a565b6108748161235f565b6111d8611a7a565b61087481600161262b565b60006111ed611d9b565b60006111f884612005565b9050611217816020015160009081526005602052604090205460ff1690565b604051806040016040528060018152602001603360f81b8152509061124f5760405162461bcd60e51b81526004016109099190613cab565b5060006007600086608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112d4576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101611289565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b815250906113185760405162461bcd60e51b81526004016109099190613cab565b50600061134f60405180604001604052806003600081548092919061133c90613dad565b9091555081528551602090910152612066565b6020808201805160009081526006835260409020805460ff19166001179055908501519051825160808a0151939450611389938987611e5b565b506020015195945050505050565b61139f611a7a565b61087481612896565b6000546001600160a01b031633146113f95760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b61140d6001600160a01b03841683836129bf565b816001600160a01b0316836001600160a01b0316336001600160a01b03167fc7af665d489507e14ae25ac7ab0030fc7f570869610bdd32117ea56b60ae5c618460405161145c91815260200190565b60405180910390a4505050565b905090565b600061089761059f83611d78565b6060611469603d6120a1565b600061089761064f83611d8f565b61149e611a7a565b61087481600061262b565b806114b43382611a36565b604051806040016040528060018152602001603560f81b815250906114ec5760405162461bcd60e51b81526004016109099190613cab565b5060006114f884611e0a565b9050600061150582611e33565b905083816060015114801561151d5750468160800151145b60405180604001604052806002815260200161333360f01b815250906115565760405162461bcd60e51b81526004016109099190613cab565b50600061156283611e48565b865160208801209091506000906000818152603b602090815260408083208a8452603a83529281902081518083019092525460ff811682526001600160781b03610100918290048116938301939093528354949550929390929004168015806115fd575033600090815260018401602052604090205460ff161580156115fd575081602001516001600160781b0316816001600160781b0316115b15610e2157806001600160781b0316600003611632578254610100600160801b031916610100426001600160781b0316021783555b8254600090849082906116479060ff16613e27565b825460ff8083166101009490940a93840293021916919091179091553360008181526001878101602052604091829020805460ff1916909117905551919250908b9088907f5353716bf921d1d85f5567a99a718cc63ff1182dca5f9163d9e9b8f1fc3ac387906116bc908a908e908890613e65565b60405180910390a46000868152603c602052604081205460ff1660028111156116e7576116e7613b50565b146116f9575050505050505050505050565b825160ff16158015906117165750826000015160ff168160ff1610155b1561186b576000868152603c6020908152604091829020805460ff19166002179055888201519089015160608a015160a08b01519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361177793929190600401613cbe565b600060405180830381600087803b15801561179157600080fd5b505af19250505080156117a2575060015b61182e573d8080156117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b506000878152603c6020526040808220805460ff19166001179055517fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab91611820918a918c91613d43565b60405180910390a15061186b565b7fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab8688600160405161186293929190613d43565b60405180910390a15b50505050505050505b505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b604080516000808252602082019092526001600160a01b0384169083906040516118f49190613e91565b60006040518083038185875af1925050503d8060008114611931576040519150601f19603f3d011682016040523d82523d6000602084013e611936565b606091505b505090508061197b5760405162461bcd60e51b815260206004820152601160248201527011551217d514905394d1915497d1905253607a1b6044820152606401610909565b6040518281526001600160a01b0384169033907fb7c602059992183c7b767c08204223afc99f1895fd175adf9ece23ce9f5bb8b79060200160405180910390a3505050565b6119c8611a7a565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b610874816120ae565b6000818152603a60205260408120611a519060010184612a11565b9392505050565b611a60611d9b565b61087481612a33565b611a71611a7a565b61087481612a8d565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610909565b60005b8151811015611d74576000828281518110611af457611af4613d97565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015611b2e575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b81525090611b665760405162461bcd60e51b81526004016109099190613cab565b506040808201516000908152600760205290812090805b8254811015611c60576000838281548110611b9a57611b9a613d97565b60009182526020909120865160029092020160018101549092506001600160a01b03918216911603611c4d57602085015181546001600160a01b03908116911614611c435760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b6001925050611c60565b5080611c5881613dad565b915050611b7d565b5080611d5e5782516040805160048152602481018252602080820180516001600160e01b03166352d1043d60e01b17905282518084019093526002835261199960f11b90830152611cb19291612b9a565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b5050508080611d6c90613dad565b915050611ad7565b5050565b600080611d8483612066565b602001519392505050565b600080611d8483612005565b6000546001600160a01b0316331480611dbe57506001546001600160a01b031633145b6110c15760405162461bcd60e51b815260206004820152601960248201527f4f4e4c595f42595f4f574e45525f4f525f475541524449414e000000000000006044820152606401610909565b604080518082019091526000815260606020820152818060200190518101906108979190613ef2565b611e3b613092565b6108978260200151612c12565b6020808201518051910120600090610897565b600080805b8351811015611ff957600080858381518110611e7e57611e7e613d97565b6020026020010151602001516001600160a01b03166336da7a0660e01b878581518110611ead57611ead613d97565b602002602001015160000151898b8d604051602401611ecf9493929190613f59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f0d9190613e91565b600060405180830381855af49150503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b50915091508115611f5d57600193505b811515868481518110611f7257611f72613d97565b6020026020010151602001516001600160a01b03168c7f935aa87d643578e6395c90fdbd5d50ffee5f2c1f6ce2cd01274740412bb679f48d8d8d8c8a81518110611fbe57611fbe613d97565b60200260200101516000015188604051611fdc959493929190613f86565b60405180910390a450508080611ff190613dad565b915050611e60565b50979650505050505050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613dc6565b60408051808303601f190181529190528082528051602090910120602082015292915050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613fd3565b60606000611a5183612c2e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82518110156118745760006001600160a01b031683828151811061212757612127613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b815250906121735760405162461bcd60e51b81526004016109099190613cab565b50816004600085848151811061218b5761218b613d97565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158382815181106121df576121df613d97565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38061222681613dad565b915050612101565b607154610100900460ff161580801561224e5750607154600160ff909116105b806122685750303b158015612268575060715460ff166001145b6122845760405162461bcd60e51b815260040161090990613dd9565b6071805460ff1916600117905580156122a7576071805461ff0019166101001790555b6122b0876120ae565b6122b986612a33565b60408051600080825260208201909252612304918691906122fd565b6040805180820190915260008152606060208201528152602001906001900390816122d55790505b5087612c8a565b6040805160008082526020820190925261115d91859190612348565b6040805180820190915260008152606060208201528152602001906001900390816123205790505b506040805160008152602081019091528590612ca9565b60005b8151811015611d745760005b82828151811061238057612380613d97565b60200260200101516020015151811015612618576000600760008585815181106123ac576123ac613d97565b60200260200101516020015184815181106123c9576123c9613d97565b60200260200101518152602001908152602001600020905060005b8154811015612603578484815181106123ff576123ff613d97565b6020026020010151600001516001600160a01b031682828154811061242657612426613d97565b60009182526020909120600160029092020101546001600160a01b0316036125f157600082828154811061245c5761245c613d97565b600091825260209091206002909102015483546001600160a01b039091169150839061248a90600190613fe6565b8154811061249a5761249a613d97565b90600052602060002090600202018383815481106124ba576124ba613d97565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b0319918216178255600193840154939091018054939092169216919091179055825483908061251157612511613ff9565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811061255957612559613d97565b6020026020010151600001516001600160a01b031687878151811061258057612580613d97565b602002602001015160200151868151811061259d5761259d613d97565b60200260200101517f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d846040516125e391906001600160a01b0391909116815260200190565b60405180910390a450612603565b806125fb81613dad565b9150506123e4565b5050808061261090613dad565b91505061236e565b508061262381613dad565b915050612362565b60005b825181101561187457600083828151811061264b5761264b613d97565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b815250906126a95760405162461bcd60e51b81526004016109099190613cab565b5060005b8160200151518110156128815760008415612744576126f3836020015183815181106126db576126db613d97565b6020026020010151603d612cd790919063ffffffff16565b5061273d8360000151603a60008660200151868151811061271657612716613d97565b60200260200101518152602001908152602001600020600101612ce390919063ffffffff16565b905061280c565b61278d8360000151603a60008660200151868151811061276657612766613d97565b60200260200101518152602001908152602001600020600101612cf890919063ffffffff16565b90508080156127d457506127d2603a6000856020015185815181106127b4576127b4613d97565b60200260200101518152602001908152602001600020600101612d0d565b155b1561280c5761280a836020015183815181106127f2576127f2613d97565b6020026020010151603d612d1790919063ffffffff16565b505b801561286e578260200151828151811061282857612828613d97565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508061287981613dad565b9150506126ad565b5050808061288e90613dad565b91505061262e565b60005b8151811015611d745760008282815181106128b6576128b6613d97565b60209081029190910181015180516000908152603a83526040902054918101519092506001600160781b036101009092048216911611801561290557504281602001516001600160781b031611155b604051806040016040528060018152602001601b60f91b8152509061293d5760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a84526040908190208054610100600160801b0319166101006001600160781b03948516021790558451925190519116815290917f79b1ca301c237cd649b2d35eb6f0873650079b8bb613a17279bbf80332754ddd910160405180910390a250806129b781613dad565b915050612899565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611874908490612d23565b6001600160a01b03811660009081526001830160205260408120541515611a51565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad90991016109d5565b60005b8151811015611d74576000828281518110612aad57612aad613d97565b602002602001015190506000816020015160ff16118015612af0575080516000908152603a60205260409020612ae590600101612d0d565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b81525090612b295760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a25080612b9281613dad565b915050612a90565b6060600080856001600160a01b031685604051612bb79190613e91565b600060405180830381855af49150503d8060008114612bf2576040519150601f19603f3d011682016040523d82523d6000602084013e612bf7565b606091505b5091509150612c0886838387612d86565b9695505050505050565b612c1a613092565b81806020019051810190610897919061400f565b606081600001805480602002602001604051908101604052809291908181526020018280548015612c7e57602002820191906000526020600020905b815481526020019060010190808311612c6a575b50505050509050919050565b612c9583600161262b565b612ca082600061262b565b61187481612a8d565b612cb284611ad4565b612cbb8361235f565b612cc68260016120fe565b612cd18160006120fe565b50505050565b6000611a518383612e07565b6000611a51836001600160a01b038416612e07565b6000611a51836001600160a01b038416612e56565b6000610897825490565b6000611a518383612e56565b6000612d386001600160a01b03841683612f49565b90508051600014158015612d5d575080806020019051810190612d5b91906140c1565b155b1561187457604051635274afe760e01b81526001600160a01b0384166004820152602401610909565b60608315612df5578251600003612dee576001600160a01b0385163b612dee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610909565b5081612dff565b612dff8383612f8d565b949350505050565b6000818152600183016020526040812054612e4e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610897565b506000610897565b60008181526001830160205260408120548015612f3f576000612e7a600183613fe6565b8554909150600090612e8e90600190613fe6565b9050818114612ef3576000866000018281548110612eae57612eae613d97565b9060005260206000200154905080876000018481548110612ed157612ed1613d97565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f0457612f04613ff9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610897565b6000915050610897565b6060611a51838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612fb7565b815115612f9d5781518083602001fd5b8060405162461bcd60e51b81526004016109099190613cab565b6060824710156130185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610909565b600080866001600160a01b031685876040516130349190613e91565b60006040518083038185875af1925050503d8060008114613071576040519150601f19603f3d011682016040523d82523d6000602084013e613076565b606091505b509150915061308787838387612d86565b979650505050505050565b6040518060c001604052806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613112576131126130da565b60405290565b604080519081016001600160401b0381118282101715613112576131126130da565b60405160c081016001600160401b0381118282101715613112576131126130da565b604051601f8201601f191681016001600160401b0381118282101715613184576131846130da565b604052919050565b60006001600160401b038211156131a5576131a56130da565b5060051b60200190565b6001600160a01b038116811461087457600080fd5b80356131cf816131af565b919050565b600082601f8301126131e557600080fd5b813560206131fa6131f58361318c565b61315c565b8281526060928302850182019282820191908785111561321957600080fd5b8387015b858110156132725781818a0312156132355760008081fd5b61323d6130f0565b8135613248816131af565b815281860135613257816131af565b8187015260408281013590820152845292840192810161321d565b5090979650505050505050565b60006020828403121561329157600080fd5b81356001600160401b038111156132a757600080fd5b612dff848285016131d4565b60006001600160401b038211156132cc576132cc6130da565b50601f01601f191660200190565b600082601f8301126132eb57600080fd5b81356132f96131f5826132b3565b81815284602083860101111561330e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561333d57600080fd5b81356001600160401b038082111561335457600080fd5b908301906040828603121561336857600080fd5b613370613118565b8235815260208301358281111561338657600080fd5b613392878286016132da565b60208301525095945050505050565b815160ff1681526020808301516001600160781b03169082015260408101610897565b600060c082840312156133d657600080fd5b6133de61313a565b90508135815260208201356133f2816131af565b60208201526040820135613405816131af565b80604083015250606082013560608201526080820135608082015260a08201356001600160401b0381111561343957600080fd5b613445848285016132da565b60a08301525092915050565b60006020828403121561346357600080fd5b81356001600160401b0381111561347957600080fd5b612dff848285016133c4565b60006020828403121561349757600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156134ed57815180516001600160a01b03908116865290870151168685015292840192908501906001016134bb565b5091979650505050505050565b60006020828403121561350c57600080fd5b8135611a51816131af565b600082601f83011261352857600080fd5b813560206135386131f58361318c565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b8481101561357b57803561356e816131af565b835291830191830161355b565b509695505050505050565b60008060006060848603121561359b57600080fd5b83356001600160401b03808211156135b257600080fd5b6135be878388016132da565b94506020860135935060408601359150808211156135db57600080fd5b506135e886828701613517565b9150509250925092565b6000806000806080858703121561360857600080fd5b84359350602085013561361a816131af565b92506040850135915060608501356001600160401b0381111561363c57600080fd5b613648878288016132da565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156136955783516001600160a01b031683529284019291840191600101613670565b50909695505050505050565b6000602082840312156136b357600080fd5b81356001600160401b038111156136c957600080fd5b612dff84828501613517565b600080604083850312156136e857600080fd5b8235915060208301356136fa816131af565b809150509250929050565b600082601f83011261371657600080fd5b813560206137266131f58361318c565b82815260069290921b8401810191818101908684111561374557600080fd5b8286015b8481101561357b57604081890312156137625760008081fd5b61376a613118565b813581528482013560ff811681146137825760008081fd5b81860152835291830191604001613749565b60006137a26131f58461318c565b8381529050602080820190600585811b8501878111156137c157600080fd5b855b818110156138965780356001600160401b03808211156137e35760008081fd5b908801906040828c0312156137f85760008081fd5b613800613118565b823561380b816131af565b8152828701358281111561381f5760008081fd5b8084019350508b601f84011261383757600091508182fd5b823591506138476131f58361318c565b82815291861b8301870191878101908d8411156138645760008081fd5b938801935b8385101561388257843582529388019390880190613869565b8289015250875250509383019383016137c3565b50505050509392505050565b600082601f8301126138b357600080fd5b611a5183833560208501613794565b60008060008060008060c087890312156138db57600080fd5b6138e4876131c4565b95506138f2602088016131c4565b945060408701356001600160401b038082111561390e57600080fd5b61391a8a838b01613705565b9550606089013591508082111561393057600080fd5b61393c8a838b016138a2565b9450608089013591508082111561395257600080fd5b61395e8a838b016131d4565b935060a089013591508082111561397457600080fd5b5061398189828a01613517565b9150509295509295509295565b6000602082840312156139a057600080fd5b81356001600160401b038111156139b657600080fd5b8201601f810184136139c757600080fd5b612dff84823560208401613794565b6000602082840312156139e857600080fd5b81356001600160401b038111156139fe57600080fd5b612dff848285016138a2565b60008060408385031215613a1d57600080fd5b82356001600160401b03811115613a3357600080fd5b613a3f858286016133c4565b95602094909401359450505050565b60006020808385031215613a6157600080fd5b82356001600160401b03811115613a7757600080fd5b8301601f81018513613a8857600080fd5b8035613a966131f58261318c565b81815260069190911b82018301908381019087831115613ab557600080fd5b928401925b828410156130875760408489031215613ad35760008081fd5b613adb613118565b84358152858501356001600160781b0381168114613af95760008081fd5b8187015282526040939093019290840190613aba565b600080600060608486031215613b2457600080fd5b8335613b2f816131af565b92506020840135613b3f816131af565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613b8857634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b8181101561369557835183529284019291840191600101613baa565b60008060408385031215613bd957600080fd5b82356001600160401b03811115613bef57600080fd5b613a3f858286016132da565b60008060408385031215613c0e57600080fd5b8235613c19816131af565b946020939093013593505050565b600060208284031215613c3957600080fd5b81356001600160401b03811115613c4f57600080fd5b612dff84828501613705565b60005b83811015613c76578181015183820152602001613c5e565b50506000910152565b60008151808452613c97816020860160208601613c5b565b601f01601f19169290920160200192915050565b602081526000611a516020830184613c7f565b60018060a01b0384168152826020820152606060408201526000613ce56060830184613c7f565b95945050505050565b805182526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a0850152612dff60c0850182613c7f565b838152606060208201526000613d5c6060830185613cee565b90508215156040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089757610897613d6e565b634e487b7160e01b600052603260045260246000fd5b600060018201613dbf57613dbf613d6e565b5060010190565b602081526000611a516020830184613cee565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060ff821660ff8103613e3d57613e3d613d6e565b60010192915050565b805182526000602082015160406020850152612dff6040850182613c7f565b838152606060208201526000613e7e6060830185613e46565b905060ff83166040830152949350505050565b60008251613ea3818460208701613c5b565b9190910192915050565b600082601f830112613ebe57600080fd5b8151613ecc6131f5826132b3565b818152846020838601011115613ee157600080fd5b612dff826020830160208701613c5b565b600060208284031215613f0457600080fd5b81516001600160401b0380821115613f1b57600080fd5b9083019060408286031215613f2f57600080fd5b613f37613118565b82518152602083015182811115613f4d57600080fd5b61339287828601613ead565b60018060a01b0385168152836020820152826040820152608060608201526000612c086080830184613c7f565b85815260a060208201526000613f9f60a0830187613c7f565b604083018690526001600160a01b03851660608401528281036080840152613fc78185613c7f565b98975050505050505050565b602081526000611a516020830184613e46565b8181038181111561089757610897613d6e565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561402157600080fd5b81516001600160401b038082111561403857600080fd5b9083019060c0828603121561404c57600080fd5b61405461313a565b825181526020830151614066816131af565b60208201526040830151614079816131af565b80604083015250606083015160608201526080830151608082015260a0830151828111156140a657600080fd5b6140b287828601613ead565b60a08301525095945050505050565b6000602082840312156140d357600080fd5b81518015158114611a5157600080fdfea26469706673582212203a0fbfd27f57c353abc9a31d82a049872a39cd8f74784ad37f693ebab944aad064736f6c634300081300332152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d", + "sourceMap": "393:667:178:-:0;;;;;;;;;;;;-1:-1:-1;1092:26:177;;;1116:1;1092:26;;;;;;;;;;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;1092:26:177;;;;;;;;;;;;;;;-1:-1:-1;1120:41:177;;;1159:1;1120:41;;;;;;;;;;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;1120:41:177;;;;;;;;;;;;;;;-1:-1:-1;1187:42:177;;;1227:1;1187:42;;;;;;;;;;;;;393:667:178;;;;;;;;-1:-1:-1;393:667:178;;;;;;;;;;;;;;1187:42:177;;-1:-1:-1;;1187:42:177;;;;;;;;;;;-1:-1:-1;1231:16:177;;;1245:1;1231:16;;;;;;;;1031:32:71;831:10:70;1031:18:71;:32::i;:::-;289:29:64;831:10:70;289:15:64;:29::i;:::-;3022:31:180;;;3051:1;3022:31;;;;;;;;;2959:148;;2992:22;;3022:31;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;3022:31:180;;;;;;;;;;;;;;;-1:-1:-1;3085:16:180;;;3099:1;3085:16;;;;;;;;3061;;2959:25;:148::i;:::-;-1:-1:-1;;2472:41:181;;;2511:1;2472:41;;;;;;;;;2411:144;;2443:21;;2472:41;;;;393:667:178;;;;;;;;;-1:-1:-1;393:667:178;;;;;;;2472:41:181;;;;;;;;;;;;;;;-1:-1:-1;2521:28:181;2411:24;:144::i;:::-;-1:-1:-1;3167:22:80;;-1:-1:-1;3167:20:80;:22::i;:::-;393:667:178;;2428:173:71;2497:16;2516:6;;-1:-1:-1;;;;;2528:17:71;;;-1:-1:-1;;;;;;2528:17:71;;;;;;2556:40;;2516:6;;;;;;;2556:40;;2497:16;2556:40;2491:110;2428:173;:::o;814:178:64:-;897:9;;;-1:-1:-1;;;;;912:23:64;;;-1:-1:-1;;;;;;912:23:64;;;;;;;946:41;;;897:9;;;;358:34:290;;;423:2;408:18;;401:43;;;;946:41:64;;293:18:290;946:41:64;;;;;;;869:123;814:178;:::o;16169:426:180:-;16418:38;16440:15;16418:21;:38::i;:::-;16462:40;16485:16;16462:22;:40::i;:::-;16508:37;16523:15;16540:4;16508:14;:37::i;:::-;16551:39;16566:16;16584:5;16551:14;:39::i;:::-;16169:426;;;;:::o;12592:525:181:-;12956:52;12986:15;13003:4;12956:29;:52::i;:::-;13014:54;13044:16;13062:5;13014:29;:54::i;:::-;13074:38;13095:16;13074:20;:38::i;:::-;12592:525;;;:::o;5608:253:80:-;5672:13;;;;;;;5671:14;5663:66;;;;-1:-1:-1;;;5663:66:80;;657:2:290;5663:66:80;;;639:21:290;696:2;676:18;;;669:30;735:34;715:18;;;708:62;-1:-1:-1;;;786:18:290;;;779:37;833:19;;5663:66:80;;;;;;;;;5739:12;;5754:15;5739:12;;;:30;5735:122;;;5779:12;:30;;-1:-1:-1;;5779:30:80;5794:15;5779:30;;;;;;5822:28;;1005:36:290;;;5822:28:80;;993:2:290;978:18;5822:28:80;;;;;;;5735:122;5608:253::o;11856:2445:180:-;11974:9;11969:2328;11993:14;:21;11989:1;:25;11969:2328;;;12029:65;12097:14;12112:1;12097:17;;;;;;;;:::i;:::-;;;;;;;12029:85;;12201:1;-1:-1:-1;;;;;12140:63:180;:24;:49;;;-1:-1:-1;;;;;12140:63:180;;;:141;;;;-1:-1:-1;12217:50:180;;-1:-1:-1;;;;;12217:64:180;;;12140:141;12291:51;;;;;;;;;;;;;-1:-1:-1;;;12291:51:180;;;12123:227;;;;;-1:-1:-1;;;12123:227:180;;;;;;;;:::i;:::-;-1:-1:-1;12443:43:180;;;;;12358:50;12411:83;;;:22;:83;;;;;;12358:50;12579:905;12603:27;;12599:31;;12579:905;;;12647:47;12697:20;12718:1;12697:23;;;;;;;;:::i;:::-;;;;;;;;;12805:50;;12697:23;;;;;12746:45;;;;12697:23;;-1:-1:-1;;;;;;12746:109:180;;;:45;;:109;12731:745;;12955:49;;;;12895:44;;-1:-1:-1;;;;;12895:44:180;;;:109;;;12878:541;;13078:64;;;;;13031:111;;-1:-1:-1;;;;;;13031:111:180;-1:-1:-1;;;;;13031:111:180;;;;;;;;13257:50;;13198:43;;;;;13162:244;;1986:51:290;;;-1:-1:-1;;13162:244:180;;;;;13198:43;-1:-1:-1;;;;;;;;;;;13162:244:180;1959:18:290;13162:244:180;;;;;;;12878:541;13444:4;13430:18;;13460:5;;;12731:745;-1:-1:-1;12632:3:180;;;;:::i;:::-;;;;12579:905;;;;13497:11;13492:799;;13593:50;;13655:59;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13655:59:180;;;-1:-1:-1;;;13655:59:180;;;;13726:35;;;;;;;;;;;-1:-1:-1;;;13726:35:180;;;;;;;13553:218;;13593:50;13726:35;13553:28;:218;:::i;:::-;-1:-1:-1;13819:213:180;;;;;;;;13879:49;;;;;;-1:-1:-1;;;;;13819:213:180;;;;;13969:50;;13819:213;;;;;;;;13782:260;;;;;;;;-1:-1:-1;13782:260:180;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13782:260:180;;;;;;;;;;;;;;;;;;;;;;;;;;14145:50;;14090:43;;;;14207:49;;14058:224;;2004:32:290;;;1986:51;;13782:260:180;;14058:224;;;14090:43;;-1:-1:-1;;;;;;;;;;;14058:224:180;1959:18:290;14058:224:180;;;;;;;13492:799;12021:2276;;;12016:3;;;;;:::i;:::-;;;;11969:2328;;;;11856:2445;:::o;14445:1131::-;14562:9;14557:1015;14581:23;:30;14577:1;:34;14557:1015;;;14631:9;14626:940;14650:23;14674:1;14650:26;;;;;;;;:::i;:::-;;;;;;;:35;;;:42;14646:1;:46;14626:940;;;14709:50;14762:22;:82;14796:23;14820:1;14796:26;;;;;;;;:::i;:::-;;;;;;;:35;;;14832:1;14796:38;;;;;;;;:::i;:::-;;;;;;;14762:82;;;;;;;;;;;14709:135;;14860:9;14855:703;14879:27;;14875:31;;14855:703;;;15007:23;15031:1;15007:26;;;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;14942:105:180;:20;14963:1;14942:23;;;;;;;;:::i;:::-;;;;;;;;;:49;:23;;;;;:49;;-1:-1:-1;;;;;14942:49:180;:105;14925:623;;15074:32;15109:20;15130:1;15109:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:48;15219:27;;-1:-1:-1;;;;;15109:48:180;;;;-1:-1:-1;15198:20:180;;15219:31;;15109:48;;15219:31;:::i;:::-;15198:53;;;;;;;;:::i;:::-;;;;;;;;;;;15172:20;15193:1;15172:23;;;;;;;;:::i;:::-;;;;;;;;;:79;;:23;;;;;:79;;-1:-1:-1;;;;;15172:79:180;;;-1:-1:-1;;;;;;15172:79:180;;;;;;-1:-1:-1;15172:79:180;;;;;;;;;;;;;;;;;;;;;;15265:26;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;15265:26:180;;;;;;;;;-1:-1:-1;;;;;;15265:26:180;;;;;;;;;;;;;;;;;;;15401;;:23;;15425:1;;15401:26;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;15311:205:180;15347:23;15371:1;15347:26;;;;;;;;:::i;:::-;;;;;;;:35;;;15383:1;15347:38;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;;;;;;;15457:24:180;15311:205;;;;;-1:-1:-1;;;;;2004:32:290;;;;1986:51;;1974:2;1959:18;;1840:203;15311:205:180;;;;;;;;15530:5;;;14925:623;14908:3;;;;:::i;:::-;;;;14855:703;;;;14699:867;14694:3;;;;;:::i;:::-;;;;14626:940;;;-1:-1:-1;14613:3:180;;;;:::i;:::-;;;;14557:1015;;15789:295;15874:9;15869:211;15893:7;:14;15889:1;:18;15869:211;;;15952:1;-1:-1:-1;;;;;15930:24:180;:7;15938:1;15930:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15930:24:180;;;15956:21;;;;;;;;;;;;;-1:-1:-1;;;15956:21:180;;;15922:56;;;;;-1:-1:-1;;;15922:56:180;;;;;;;;:::i;:::-;;16017:8;15986:16;:28;16003:7;16011:1;16003:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15986:28:180;-1:-1:-1;;;;;15986:28:180;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16064:8;16038:35;;16052:7;16060:1;16052:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;16038:35:180;;;;;;;;;;;15909:3;;;;:::i;:::-;;;;15869:211;;11294:1213:181;11444:9;11439:1064;11463:19;:26;11459:1;:30;11439:1064;;;11504:45;11552:19;11572:1;11552:22;;;;;;;;:::i;:::-;;;;;;;11504:70;;11621:1;-1:-1:-1;;;;;11590:33:181;:5;:19;;;-1:-1:-1;;;;;11590:33:181;;;11625:29;;;;;;;;;;;;;-1:-1:-1;;;11625:29:181;;;11582:73;;;;;-1:-1:-1;;;11582:73:181;;;;;;;;:::i;:::-;;11669:9;11664:833;11684:5;:14;;;:21;11680:1;:25;11664:833;;;11722:20;11756:9;11752:599;;;11779:39;11800:5;:14;;;11815:1;11800:17;;;;;;;;:::i;:::-;;;;;;;11779:16;:20;;;;:39;;;;:::i;:::-;;11848:112;11929:5;:19;;;11848:22;:41;11871:5;:14;;;11886:1;11871:17;;;;;;;;:::i;:::-;;;;;;;11848:41;;;;;;;;;;;:63;;:67;;;;:112;;;;:::i;:::-;11830:130;;11752:599;;;12007:115;12091:5;:19;;;12007:22;:41;12030:5;:14;;;12045:1;12030:17;;;;;;;;:::i;:::-;;;;;;;12007:41;;;;;;;;;;;:63;;:70;;;;:115;;;;:::i;:::-;11989:133;;12151:15;:108;;;;;12182:72;:22;:41;12205:5;:14;;;12220:1;12205:17;;;;;;;;:::i;:::-;;;;;;;12182:41;;;;;;;;;;;:63;;:70;;;:72;;:::i;:::-;:77;12151:108;12134:207;;;12286:42;12310:5;:14;;;12325:1;12310:17;;;;;;;;:::i;:::-;;;;;;;12286:16;:23;;;;:42;;;;:::i;:::-;;12134:207;12364:15;12360:129;;;12460:5;:14;;;12475:1;12460:17;;;;;;;;:::i;:::-;;;;;;;12449:9;12398:80;;12428:5;:19;;;-1:-1:-1;;;;;12398:80:181;;;;;;;;;;;12360:129;-1:-1:-1;11707:3:181;;;;:::i;:::-;;;;11664:833;;;;11496:1007;11491:3;;;;;:::i;:::-;;;;11439:1064;;10402:714;10497:9;10492:620;10512:16;:23;10508:1;:27;10492:620;;;10550:38;10591:16;10608:1;10591:19;;;;;;;;:::i;:::-;;;;;;;10550:60;;10673:1;10635:13;:35;;;:39;;;:178;;;;-1:-1:-1;10760:21:181;;10737:45;;;;:22;:45;;;;;:76;;:67;;:74;:76::i;:::-;10688:13;:35;;;:125;;;;10635:178;10823:37;;;;;;;;;;;;;-1:-1:-1;;;10823:37:181;;;10618:250;;;;;-1:-1:-1;;;10618:250:181;;;;;;;;:::i;:::-;-1:-1:-1;10977:35:181;;;;;;10899:21;;10876:45;;;;:22;:45;;;;;;;:136;;-1:-1:-1;;10876:136:181;;;;;;;;11083:21;;11046:35;;11025:80;;1023:17:290;;1005:36;;11083:21:181;;11025:80;;978:18:290;11025:80:181;;;;;;;-1:-1:-1;10537:3:181;;;;:::i;:::-;;;;10492:620;;6603:301:69;6730:12;6751;6765:23;6792:6;-1:-1:-1;;;;;6792:19:69;6812:4;6792:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:67:69;;-1:-1:-1;6750:67:69;-1:-1:-1;6830:69:69;6857:6;6750:67;;6886:12;6830:26;:69::i;:::-;6823:76;6603:301;-1:-1:-1;;;;;;6603:301:69:o;10793:129:63:-;10860:4;10883:32;10888:3;10908:5;10883:4;:32::i;:::-;10876:39;;10793:129;;;;;:::o;8305:150::-;8375:4;8398:50;8403:3;-1:-1:-1;;;;;8423:23:63;;8398:4;:50::i;8623:156::-;8696:4;8719:53;8727:3;-1:-1:-1;;;;;8747:23:63;;8719:7;:53::i;9106:115::-;9169:7;9195:19;9203:3;4545:18;;4463:107;11090:135;11160:4;11183:35;11191:3;11211:5;11183:7;:35::i;7178:548:69:-;7340:12;7364:7;7360:362;;;7385:10;:17;7406:1;7385:22;7381:256;;-1:-1:-1;;;;;1513:19:69;;;7568:60;;;;-1:-1:-1;;;7568:60:69;;3079:2:290;7568:60:69;;;3061:21:290;3118:2;3098:18;;;3091:30;3157:31;3137:18;;;3130:59;3206:18;;7568:60:69;2877:353:290;7568:60:69;-1:-1:-1;7651:10:69;7644:17;;7360:362;7682:33;7690:10;7702:12;7682:7;:33::i;:::-;7178:548;;;;;;:::o;2214:404:63:-;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:63;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:63;2589:12;;2786:1388;2852:4;2989:19;;;:12;;;:19;;;;;;3023:15;;3019:1149;;3392:21;3416:14;3429:1;3416:10;:14;:::i;:::-;3464:18;;3392:38;;-1:-1:-1;3444:17:63;;3464:22;;3485:1;;3464:22;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3805:23;;;:12;;;:23;;;;;:36;;;3501:398;3977:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;;;8192:476:69;8343:17;;:21;8339:325;;8545:10;8539:17;8593:15;8580:10;8576:2;8572:19;8565:44;8339:325;8644:12;8637:20;;-1:-1:-1;;;8637:20:69;;;;;;;;:::i;1052:127:290:-;1113:10;1108:3;1104:20;1101:1;1094:31;1144:4;1141:1;1134:15;1168:4;1165:1;1158:15;1184:250;1269:1;1279:113;1293:6;1290:1;1287:13;1279:113;;;1369:11;;;1363:18;1350:11;;;1343:39;1315:2;1308:10;1279:113;;;-1:-1:-1;;1426:1:290;1408:16;;1401:27;1184:250::o;1439:396::-;1588:2;1577:9;1570:21;1551:4;1620:6;1614:13;1663:6;1658:2;1647:9;1643:18;1636:34;1679:79;1751:6;1746:2;1735:9;1731:18;1726:2;1718:6;1714:15;1679:79;:::i;:::-;1819:2;1798:15;-1:-1:-1;;1794:29:290;1779:45;;;;1826:2;1775:54;;1439:396;-1:-1:-1;;1439:396:290:o;2048:127::-;2109:10;2104:3;2100:20;2097:1;2090:31;2140:4;2137:1;2130:15;2164:4;2161:1;2154:15;2180:135;2219:3;2240:17;;;2237:43;;2260:18;;:::i;:::-;-1:-1:-1;2307:1:290;2296:13;;2180:135::o;2320:128::-;2387:9;;;2408:11;;;2405:37;;;2422:18;;:::i;2453:127::-;2514:10;2509:3;2505:20;2502:1;2495:31;2545:4;2542:1;2535:15;2569:4;2566:1;2559:15;2585:287;2714:3;2752:6;2746:13;2768:66;2827:6;2822:3;2815:4;2807:6;2803:17;2768:66;:::i;:::-;2850:16;;;;;2585:287;-1:-1:-1;;2585:287:290:o;2877:353::-;393:667:178;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x6080604052600436106102345760003560e01c80639b6c7efa1161012e578063db58eaec116100ab578063efe4b0ae1161006f578063efe4b0ae146107ce578063f2fde38b146107e3578063f62b984314610803578063fc52539514610823578063fe46a4131461084357600080fd5b8063db58eaec1461071e578063e01658d91461074e578063e3a95a5a1461076e578063ed68595a1461078e578063eed88b8d146107ae57600080fd5b8063a4757b0f116100f2578063a4757b0f14610526578063aa3f85c814610634578063c37255f214610671578063c4bffe2b14610691578063c71cca16146106b357600080fd5b80639b6c7efa146105845780639d0cb9d4146105b4578063a25d3892146105d4578063a2711ff4146105f4578063a3d5b2551461061457600080fd5b80635b9d97c6116101bc57806376e5379a1161018057806376e5379a146104bc57806383fec72c146105065780638da5cb5b1461052657806390f7af5414610544578063917cbb9b1461056457600080fd5b80635b9d97c6146103d5578063654a812b146104025780636e74ebe814610421578063715018a6146104875780637670d1d81461049c57600080fd5b80633805e84e116102035780633805e84e146102e55780633eb59f601461032e578063436bd1031461034e578063452a93201461036e57806355c4fed4146103a057600080fd5b80630a234b15146102405780630fb9ca41146102625780631947051e1461029857806334f7870c146102b857600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061026061025b36600461327f565b610863565b005b34801561026e57600080fd5b5061028261027d36600461332b565b610877565b60405161028f91906133a1565b60405180910390f35b3480156102a457600080fd5b506102606102b3366004613451565b61089d565b3480156102c457600080fd5b506102d86102d3366004613485565b6109e1565b60405161028f919061349e565b3480156102f157600080fd5b5061031e6103003660046134fa565b6001600160a01b031660009081526004602052604090205460ff1690565b604051901515815260200161028f565b34801561033a57600080fd5b50610260610349366004613586565b610a6c565b34801561035a57600080fd5b5061031e610369366004613451565b610e2d565b34801561037a57600080fd5b506001546001600160a01b03165b6040516001600160a01b03909116815260200161028f565b3480156103ac57600080fd5b506103c06103bb3660046135f2565b610e3b565b6040805192835260208301919091520161028f565b3480156103e157600080fd5b506103f56103f0366004613485565b611092565b60405161028f9190613654565b34801561040e57600080fd5b506003545b60405190815260200161028f565b34801561042d57600080fd5b5061028261043c366004613485565b6040805180820190915260008082526020820152506000908152603a602090815260409182902082518084019093525460ff8116835261010090046001600160781b03169082015290565b34801561049357600080fd5b506102606110af565b3480156104a857600080fd5b506102606104b73660046136a1565b6110c3565b3480156104c857600080fd5b5061031e6104d73660046136d5565b6000828152603b602090815260408083206001600160a01b038516845260010190915290205460ff1692915050565b34801561051257600080fd5b506102606105213660046138c2565b6110d6565b34801561053257600080fd5b506000546001600160a01b0316610388565b34801561055057600080fd5b5061026061055f3660046136a1565b6111ac565b34801561057057600080fd5b5061026061057f36600461398e565b6111bf565b34801561059057600080fd5b5061031e61059f366004613485565b60009081526006602052604090205460ff1690565b3480156105c057600080fd5b506102606105cf3660046139d6565b6111d0565b3480156105e057600080fd5b506104136105ef366004613a0a565b6111e3565b34801561060057600080fd5b5061026061060f366004613a4e565b611397565b34801561062057600080fd5b5061026061062f366004613b0f565b6113a8565b34801561064057600080fd5b5061066461064f366004613485565b6000908152603c602052604090205460ff1690565b60405161028f9190613b66565b34801561067d57600080fd5b5061031e61068c36600461332b565b61146e565b34801561069d57600080fd5b506106a661147c565b60405161028f9190613b8e565b3480156106bf57600080fd5b506102826106ce366004613485565b6040805180820190915260008082526020820152506040805180820182526000838152603b60208181529382205460ff811684529490915282526101009092046001600160781b03169082015290565b34801561072a57600080fd5b5061031e610739366004613485565b60009081526005602052604090205460ff1690565b34801561075a57600080fd5b50610664610769366004613451565b611488565b34801561077a57600080fd5b506102606107893660046139d6565b611496565b34801561079a57600080fd5b506102606107a9366004613bc6565b6114a9565b3480156107ba57600080fd5b506102606107c9366004613bfb565b611879565b3480156107da57600080fd5b50600254610413565b3480156107ef57600080fd5b506102606107fe3660046134fa565b6119c0565b34801561080f57600080fd5b5061031e61081e366004613bfb565b611a36565b34801561082f57600080fd5b5061026061083e3660046134fa565b611a58565b34801561084f57600080fd5b5061026061085e366004613c27565b611a69565b61086b611a7a565b61087481611ad4565b50565b60408051808201909152600080825260208201526108976106ce83611d78565b92915050565b60006108a882611d8f565b905060016000828152603c602052604090205460ff1660028111156108cf576108cf613b50565b1460405180604001604052806002815260200161191960f11b815250906109125760405162461bcd60e51b81526004016109099190613cab565b60405180910390fd5b506000818152603c6020908152604091829020805460ff191660021790558382015190840151606085015160a08601519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361096f93929190600401613cbe565b600060405180830381600087803b15801561098957600080fd5b505af115801561099d573d6000803e3d6000fd5b505050507fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab818360016040516109d593929190613d43565b60405180910390a15050565b606060076000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610a61576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610a16565b505050509050919050565b610a74611d9b565b8251602084012060009060008181526006602052604090205490915060ff1660405180604001604052806002815260200161313960f01b81525090610acc5760405162461bcd60e51b81526004016109099190613cab565b506000610ad885611e0a565b90506000610ae582611e33565b905060006007600083608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b82821015610b6b576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610b20565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610baf5760405162461bcd60e51b81526004016109099190613cab565b50600085516001600160401b03811115610bcb57610bcb6130da565b604051908082528060200260200182016040528015610c1057816020015b6040805180820190915260008082526020820152815260200190600190039081610be95790505b50905060005b8651811015610dc8576000610c2c826001613d84565b90505b8751811015610ccc57878181518110610c4a57610c4a613d97565b60200260200101516001600160a01b0316888381518110610c6d57610c6d613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161323160f01b81525090610cb95760405162461bcd60e51b81526004016109099190613cab565b5080610cc481613dad565b915050610c2f565b506000805b8451811015610d7b57848181518110610cec57610cec613d97565b6020026020010151602001516001600160a01b0316898481518110610d1357610d13613d97565b60200260200101516001600160a01b031603610d6957848181518110610d3b57610d3b613d97565b6020026020010151848481518110610d5557610d55613d97565b602002602001018190525060019150610d7b565b80610d7381613dad565b915050610cd1565b50604080518082019091526002815261062760f31b602082015281610db35760405162461bcd60e51b81526004016109099190613cab565b50508080610dc090613dad565b915050610c16565b506000610de5610dd786611e48565b878b87608001518c87611e5b565b90508060405180604001604052806002815260200161032360f41b81525090610e215760405162461bcd60e51b81526004016109099190613cab565b50505050505050505050565b600061089761073983611d8f565b33600090815260046020526040812054819060ff16604051806040016040528060018152602001601960f91b81525090610e885760405162461bcd60e51b81526004016109099190613cab565b50600086815260076020908152604080832080548251818502810185019093528083529192909190849084015b82821015610f00576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101610eb5565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b81525090610f445760405162461bcd60e51b81526004016109099190613cab565b506002805460009182610f5683613dad565b91905055905060006040518060c00160405280838152602001336001600160a01b03168152602001896001600160a01b031681526020014681526020018a81526020018781525090506000610faa82612005565b6020808201805160009081526005909252604091829020805460ff19166001179055519051919250907f18d245f6501b267c6fc4ab6bb6f037c83d28a9ab089e79ab063162d414d2d9c990611000908590613dc6565b60405180910390a2600061103e60405180604001604052806003600081548092919061102b90613dad565b9091555081528451602090910152612066565b6020808201805160009081526006835260409020805460ff1916600117905590840151905182516080870151939450611078938d8a611e5b565b50602091820151910151909a909950975050505050505050565b6000818152603a60205260409020606090610897906001016120a1565b6110b7611a7a565b6110c160006120ae565b565b6110cb611a7a565b6108748160006120fe565b607154610100900460ff16158080156110f65750607154600160ff909116105b806111105750303b158015611110575060715460ff166001145b61112c5760405162461bcd60e51b815260040161090990613dd9565b6071805460ff19166001179055801561114f576071805461ff0019166101001790555b61115d87878787878761222e565b80156111a3576071805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6111b4611a7a565b6108748160016120fe565b6111c7611a7a565b6108748161235f565b6111d8611a7a565b61087481600161262b565b60006111ed611d9b565b60006111f884612005565b9050611217816020015160009081526005602052604090205460ff1690565b604051806040016040528060018152602001603360f81b8152509061124f5760405162461bcd60e51b81526004016109099190613cab565b5060006007600086608001518152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112d4576000848152602090819020604080518082019091526002850290910180546001600160a01b03908116835260019182015416828401529083529092019101611289565b5050505090506000815111604051806040016040528060028152602001610c4d60f21b815250906113185760405162461bcd60e51b81526004016109099190613cab565b50600061134f60405180604001604052806003600081548092919061133c90613dad565b9091555081528551602090910152612066565b6020808201805160009081526006835260409020805460ff19166001179055908501519051825160808a0151939450611389938987611e5b565b506020015195945050505050565b61139f611a7a565b61087481612896565b6000546001600160a01b031633146113f95760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b61140d6001600160a01b03841683836129bf565b816001600160a01b0316836001600160a01b0316336001600160a01b03167fc7af665d489507e14ae25ac7ab0030fc7f570869610bdd32117ea56b60ae5c618460405161145c91815260200190565b60405180910390a4505050565b905090565b600061089761059f83611d78565b6060611469603d6120a1565b600061089761064f83611d8f565b61149e611a7a565b61087481600061262b565b806114b43382611a36565b604051806040016040528060018152602001603560f81b815250906114ec5760405162461bcd60e51b81526004016109099190613cab565b5060006114f884611e0a565b9050600061150582611e33565b905083816060015114801561151d5750468160800151145b60405180604001604052806002815260200161333360f01b815250906115565760405162461bcd60e51b81526004016109099190613cab565b50600061156283611e48565b865160208801209091506000906000818152603b602090815260408083208a8452603a83529281902081518083019092525460ff811682526001600160781b03610100918290048116938301939093528354949550929390929004168015806115fd575033600090815260018401602052604090205460ff161580156115fd575081602001516001600160781b0316816001600160781b0316115b15610e2157806001600160781b0316600003611632578254610100600160801b031916610100426001600160781b0316021783555b8254600090849082906116479060ff16613e27565b825460ff8083166101009490940a93840293021916919091179091553360008181526001878101602052604091829020805460ff1916909117905551919250908b9088907f5353716bf921d1d85f5567a99a718cc63ff1182dca5f9163d9e9b8f1fc3ac387906116bc908a908e908890613e65565b60405180910390a46000868152603c602052604081205460ff1660028111156116e7576116e7613b50565b146116f9575050505050505050505050565b825160ff16158015906117165750826000015160ff168160ff1610155b1561186b576000868152603c6020908152604091829020805460ff19166002179055888201519089015160608a015160a08b01519351630a81a65d60e11b81526001600160a01b03909316936315034cba9361177793929190600401613cbe565b600060405180830381600087803b15801561179157600080fd5b505af19250505080156117a2575060015b61182e573d8080156117d0576040519150601f19603f3d011682016040523d82523d6000602084013e6117d5565b606091505b506000878152603c6020526040808220805460ff19166001179055517fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab91611820918a918c91613d43565b60405180910390a15061186b565b7fa2540dac02f8d07ec0107c5fc2172e2c49d3231e86a21cb02b47058635ae97ab8688600160405161186293929190613d43565b60405180910390a15b50505050505050505b505050565b6000546001600160a01b031633146118ca5760405162461bcd60e51b815260206004820152601460248201527327a7262cafa922a9a1aaa2afa3aaa0a92224a0a760611b6044820152606401610909565b604080516000808252602082019092526001600160a01b0384169083906040516118f49190613e91565b60006040518083038185875af1925050503d8060008114611931576040519150601f19603f3d011682016040523d82523d6000602084013e611936565b606091505b505090508061197b5760405162461bcd60e51b815260206004820152601160248201527011551217d514905394d1915497d1905253607a1b6044820152606401610909565b6040518281526001600160a01b0384169033907fb7c602059992183c7b767c08204223afc99f1895fd175adf9ece23ce9f5bb8b79060200160405180910390a3505050565b6119c8611a7a565b6001600160a01b038116611a2d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610909565b610874816120ae565b6000818152603a60205260408120611a519060010184612a11565b9392505050565b611a60611d9b565b61087481612a33565b611a71611a7a565b61087481612a8d565b6000546001600160a01b031633146110c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610909565b60005b8151811015611d74576000828281518110611af457611af4613d97565b6020026020010151905060006001600160a01b031681602001516001600160a01b031614158015611b2e575080516001600160a01b031615155b604051806040016040528060018152602001600d60fa1b81525090611b665760405162461bcd60e51b81526004016109099190613cab565b506040808201516000908152600760205290812090805b8254811015611c60576000838281548110611b9a57611b9a613d97565b60009182526020909120865160029092020160018101549092506001600160a01b03918216911603611c4d57602085015181546001600160a01b03908116911614611c435760208581015182546001600160a01b0319166001600160a01b03918216908117845587516040808a015190519283526001949190931692917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b6001925050611c60565b5080611c5881613dad565b915050611b7d565b5080611d5e5782516040805160048152602481018252602080820180516001600160e01b03166352d1043d60e01b17905282518084019093526002835261199960f11b90830152611cb19291612b9a565b50604080518082018252602085810180516001600160a01b03908116845287518116838501908152875460018082018a5560008a81528690209651600290920290960180549184166001600160a01b03199283161781559151918601805492841692909116919091179055875188860151925195519582168652939493169290917f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d910160405180910390a45b5050508080611d6c90613dad565b915050611ad7565b5050565b600080611d8483612066565b602001519392505050565b600080611d8483612005565b6000546001600160a01b0316331480611dbe57506001546001600160a01b031633145b6110c15760405162461bcd60e51b815260206004820152601960248201527f4f4e4c595f42595f4f574e45525f4f525f475541524449414e000000000000006044820152606401610909565b604080518082019091526000815260606020820152818060200190518101906108979190613ef2565b611e3b613092565b6108978260200151612c12565b6020808201518051910120600090610897565b600080805b8351811015611ff957600080858381518110611e7e57611e7e613d97565b6020026020010151602001516001600160a01b03166336da7a0660e01b878581518110611ead57611ead613d97565b602002602001015160000151898b8d604051602401611ecf9493929190613f59565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611f0d9190613e91565b600060405180830381855af49150503d8060008114611f48576040519150601f19603f3d011682016040523d82523d6000602084013e611f4d565b606091505b50915091508115611f5d57600193505b811515868481518110611f7257611f72613d97565b6020026020010151602001516001600160a01b03168c7f935aa87d643578e6395c90fdbd5d50ffee5f2c1f6ce2cd01274740412bb679f48d8d8d8c8a81518110611fbe57611fbe613d97565b60200260200101516000015188604051611fdc959493929190613f86565b60405180910390a450508080611ff190613dad565b915050611e60565b50979650505050505050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613dc6565b60408051808303601f190181529190528082528051602090910120602082015292915050565b604080518082019091526060815260006020820152604080518082019091526060815260006020820152826040516020016120409190613fd3565b60606000611a5183612c2e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82518110156118745760006001600160a01b031683828151811061212757612127613d97565b60200260200101516001600160a01b0316141560405180604001604052806002815260200161199b60f11b815250906121735760405162461bcd60e51b81526004016109099190613cab565b50816004600085848151811061218b5761218b613d97565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158382815181106121df576121df613d97565b60200260200101516001600160a01b03167f626c27c1d088fd70034e681d579a5efd004c3d47a56d3ee07ad256ac7301433360405160405180910390a38061222681613dad565b915050612101565b607154610100900460ff161580801561224e5750607154600160ff909116105b806122685750303b158015612268575060715460ff166001145b6122845760405162461bcd60e51b815260040161090990613dd9565b6071805460ff1916600117905580156122a7576071805461ff0019166101001790555b6122b0876120ae565b6122b986612a33565b60408051600080825260208201909252612304918691906122fd565b6040805180820190915260008152606060208201528152602001906001900390816122d55790505b5087612c8a565b6040805160008082526020820190925261115d91859190612348565b6040805180820190915260008152606060208201528152602001906001900390816123205790505b506040805160008152602081019091528590612ca9565b60005b8151811015611d745760005b82828151811061238057612380613d97565b60200260200101516020015151811015612618576000600760008585815181106123ac576123ac613d97565b60200260200101516020015184815181106123c9576123c9613d97565b60200260200101518152602001908152602001600020905060005b8154811015612603578484815181106123ff576123ff613d97565b6020026020010151600001516001600160a01b031682828154811061242657612426613d97565b60009182526020909120600160029092020101546001600160a01b0316036125f157600082828154811061245c5761245c613d97565b600091825260209091206002909102015483546001600160a01b039091169150839061248a90600190613fe6565b8154811061249a5761249a613d97565b90600052602060002090600202018383815481106124ba576124ba613d97565b60009182526020909120825460029092020180546001600160a01b039283166001600160a01b0319918216178255600193840154939091018054939092169216919091179055825483908061251157612511613ff9565b60008281526020812060026000199093019283020180546001600160a01b03199081168255600191909101805490911690559155865187908790811061255957612559613d97565b6020026020010151600001516001600160a01b031687878151811061258057612580613d97565b602002602001015160200151868151811061259d5761259d613d97565b60200260200101517f2152376b51b154ef9693e64efbda43bd7ecd04ccb98df7f6caf781078eca308d846040516125e391906001600160a01b0391909116815260200190565b60405180910390a450612603565b806125fb81613dad565b9150506123e4565b5050808061261090613dad565b91505061236e565b508061262381613dad565b915050612362565b60005b825181101561187457600083828151811061264b5761264b613d97565b6020026020010151905060006001600160a01b031681600001516001600160a01b0316141560405180604001604052806002815260200161062760f31b815250906126a95760405162461bcd60e51b81526004016109099190613cab565b5060005b8160200151518110156128815760008415612744576126f3836020015183815181106126db576126db613d97565b6020026020010151603d612cd790919063ffffffff16565b5061273d8360000151603a60008660200151868151811061271657612716613d97565b60200260200101518152602001908152602001600020600101612ce390919063ffffffff16565b905061280c565b61278d8360000151603a60008660200151868151811061276657612766613d97565b60200260200101518152602001908152602001600020600101612cf890919063ffffffff16565b90508080156127d457506127d2603a6000856020015185815181106127b4576127b4613d97565b60200260200101518152602001908152602001600020600101612d0d565b155b1561280c5761280a836020015183815181106127f2576127f2613d97565b6020026020010151603d612d1790919063ffffffff16565b505b801561286e578260200151828151811061282857612828613d97565b602002602001015185151584600001516001600160a01b03167f537ae69afd3600f30d8c662539017cc022c73b04db804445c9eaae801c2f4a8360405160405180910390a45b508061287981613dad565b9150506126ad565b5050808061288e90613dad565b91505061262e565b60005b8151811015611d745760008282815181106128b6576128b6613d97565b60209081029190910181015180516000908152603a83526040902054918101519092506001600160781b036101009092048216911611801561290557504281602001516001600160781b031611155b604051806040016040528060018152602001601b60f91b8152509061293d5760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a84526040908190208054610100600160801b0319166101006001600160781b03948516021790558451925190519116815290917f79b1ca301c237cd649b2d35eb6f0873650079b8bb613a17279bbf80332754ddd910160405180910390a250806129b781613dad565b915050612899565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611874908490612d23565b6001600160a01b03811660009081526001830160205260408120541515611a51565b600180546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f064d28d3d3071c5cbc271a261c10c2f0f0d9e319390397101aa0eb23c6bad90991016109d5565b60005b8151811015611d74576000828281518110612aad57612aad613d97565b602002602001015190506000816020015160ff16118015612af0575080516000908152603a60205260409020612ae590600101612d0d565b816020015160ff1611155b60405180604001604052806002815260200161189b60f11b81525090612b295760405162461bcd60e51b81526004016109099190613cab565b506020818101805183516000908152603a8452604090819020805460ff191660ff9384161790558451925190519116815290917f799ef5c83e710778f5725ab120f43a73d21b1d98f2e1a058801728ace31275fd910160405180910390a25080612b9281613dad565b915050612a90565b6060600080856001600160a01b031685604051612bb79190613e91565b600060405180830381855af49150503d8060008114612bf2576040519150601f19603f3d011682016040523d82523d6000602084013e612bf7565b606091505b5091509150612c0886838387612d86565b9695505050505050565b612c1a613092565b81806020019051810190610897919061400f565b606081600001805480602002602001604051908101604052809291908181526020018280548015612c7e57602002820191906000526020600020905b815481526020019060010190808311612c6a575b50505050509050919050565b612c9583600161262b565b612ca082600061262b565b61187481612a8d565b612cb284611ad4565b612cbb8361235f565b612cc68260016120fe565b612cd18160006120fe565b50505050565b6000611a518383612e07565b6000611a51836001600160a01b038416612e07565b6000611a51836001600160a01b038416612e56565b6000610897825490565b6000611a518383612e56565b6000612d386001600160a01b03841683612f49565b90508051600014158015612d5d575080806020019051810190612d5b91906140c1565b155b1561187457604051635274afe760e01b81526001600160a01b0384166004820152602401610909565b60608315612df5578251600003612dee576001600160a01b0385163b612dee5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610909565b5081612dff565b612dff8383612f8d565b949350505050565b6000818152600183016020526040812054612e4e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610897565b506000610897565b60008181526001830160205260408120548015612f3f576000612e7a600183613fe6565b8554909150600090612e8e90600190613fe6565b9050818114612ef3576000866000018281548110612eae57612eae613d97565b9060005260206000200154905080876000018481548110612ed157612ed1613d97565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612f0457612f04613ff9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610897565b6000915050610897565b6060611a51838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250612fb7565b815115612f9d5781518083602001fd5b8060405162461bcd60e51b81526004016109099190613cab565b6060824710156130185760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610909565b600080866001600160a01b031685876040516130349190613e91565b60006040518083038185875af1925050503d8060008114613071576040519150601f19603f3d011682016040523d82523d6000602084013e613076565b606091505b509150915061308787838387612d86565b979650505050505050565b6040518060c001604052806000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001606081525090565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715613112576131126130da565b60405290565b604080519081016001600160401b0381118282101715613112576131126130da565b60405160c081016001600160401b0381118282101715613112576131126130da565b604051601f8201601f191681016001600160401b0381118282101715613184576131846130da565b604052919050565b60006001600160401b038211156131a5576131a56130da565b5060051b60200190565b6001600160a01b038116811461087457600080fd5b80356131cf816131af565b919050565b600082601f8301126131e557600080fd5b813560206131fa6131f58361318c565b61315c565b8281526060928302850182019282820191908785111561321957600080fd5b8387015b858110156132725781818a0312156132355760008081fd5b61323d6130f0565b8135613248816131af565b815281860135613257816131af565b8187015260408281013590820152845292840192810161321d565b5090979650505050505050565b60006020828403121561329157600080fd5b81356001600160401b038111156132a757600080fd5b612dff848285016131d4565b60006001600160401b038211156132cc576132cc6130da565b50601f01601f191660200190565b600082601f8301126132eb57600080fd5b81356132f96131f5826132b3565b81815284602083860101111561330e57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561333d57600080fd5b81356001600160401b038082111561335457600080fd5b908301906040828603121561336857600080fd5b613370613118565b8235815260208301358281111561338657600080fd5b613392878286016132da565b60208301525095945050505050565b815160ff1681526020808301516001600160781b03169082015260408101610897565b600060c082840312156133d657600080fd5b6133de61313a565b90508135815260208201356133f2816131af565b60208201526040820135613405816131af565b80604083015250606082013560608201526080820135608082015260a08201356001600160401b0381111561343957600080fd5b613445848285016132da565b60a08301525092915050565b60006020828403121561346357600080fd5b81356001600160401b0381111561347957600080fd5b612dff848285016133c4565b60006020828403121561349757600080fd5b5035919050565b602080825282518282018190526000919060409081850190868401855b828110156134ed57815180516001600160a01b03908116865290870151168685015292840192908501906001016134bb565b5091979650505050505050565b60006020828403121561350c57600080fd5b8135611a51816131af565b600082601f83011261352857600080fd5b813560206135386131f58361318c565b82815260059290921b8401810191818101908684111561355757600080fd5b8286015b8481101561357b57803561356e816131af565b835291830191830161355b565b509695505050505050565b60008060006060848603121561359b57600080fd5b83356001600160401b03808211156135b257600080fd5b6135be878388016132da565b94506020860135935060408601359150808211156135db57600080fd5b506135e886828701613517565b9150509250925092565b6000806000806080858703121561360857600080fd5b84359350602085013561361a816131af565b92506040850135915060608501356001600160401b0381111561363c57600080fd5b613648878288016132da565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b818110156136955783516001600160a01b031683529284019291840191600101613670565b50909695505050505050565b6000602082840312156136b357600080fd5b81356001600160401b038111156136c957600080fd5b612dff84828501613517565b600080604083850312156136e857600080fd5b8235915060208301356136fa816131af565b809150509250929050565b600082601f83011261371657600080fd5b813560206137266131f58361318c565b82815260069290921b8401810191818101908684111561374557600080fd5b8286015b8481101561357b57604081890312156137625760008081fd5b61376a613118565b813581528482013560ff811681146137825760008081fd5b81860152835291830191604001613749565b60006137a26131f58461318c565b8381529050602080820190600585811b8501878111156137c157600080fd5b855b818110156138965780356001600160401b03808211156137e35760008081fd5b908801906040828c0312156137f85760008081fd5b613800613118565b823561380b816131af565b8152828701358281111561381f5760008081fd5b8084019350508b601f84011261383757600091508182fd5b823591506138476131f58361318c565b82815291861b8301870191878101908d8411156138645760008081fd5b938801935b8385101561388257843582529388019390880190613869565b8289015250875250509383019383016137c3565b50505050509392505050565b600082601f8301126138b357600080fd5b611a5183833560208501613794565b60008060008060008060c087890312156138db57600080fd5b6138e4876131c4565b95506138f2602088016131c4565b945060408701356001600160401b038082111561390e57600080fd5b61391a8a838b01613705565b9550606089013591508082111561393057600080fd5b61393c8a838b016138a2565b9450608089013591508082111561395257600080fd5b61395e8a838b016131d4565b935060a089013591508082111561397457600080fd5b5061398189828a01613517565b9150509295509295509295565b6000602082840312156139a057600080fd5b81356001600160401b038111156139b657600080fd5b8201601f810184136139c757600080fd5b612dff84823560208401613794565b6000602082840312156139e857600080fd5b81356001600160401b038111156139fe57600080fd5b612dff848285016138a2565b60008060408385031215613a1d57600080fd5b82356001600160401b03811115613a3357600080fd5b613a3f858286016133c4565b95602094909401359450505050565b60006020808385031215613a6157600080fd5b82356001600160401b03811115613a7757600080fd5b8301601f81018513613a8857600080fd5b8035613a966131f58261318c565b81815260069190911b82018301908381019087831115613ab557600080fd5b928401925b828410156130875760408489031215613ad35760008081fd5b613adb613118565b84358152858501356001600160781b0381168114613af95760008081fd5b8187015282526040939093019290840190613aba565b600080600060608486031215613b2457600080fd5b8335613b2f816131af565b92506020840135613b3f816131af565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b6020810160038310613b8857634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252825182820181905260009190848201906040850190845b8181101561369557835183529284019291840191600101613baa565b60008060408385031215613bd957600080fd5b82356001600160401b03811115613bef57600080fd5b613a3f858286016132da565b60008060408385031215613c0e57600080fd5b8235613c19816131af565b946020939093013593505050565b600060208284031215613c3957600080fd5b81356001600160401b03811115613c4f57600080fd5b612dff84828501613705565b60005b83811015613c76578181015183820152602001613c5e565b50506000910152565b60008151808452613c97816020860160208601613c5b565b601f01601f19169290920160200192915050565b602081526000611a516020830184613c7f565b60018060a01b0384168152826020820152606060408201526000613ce56060830184613c7f565b95945050505050565b805182526000602082015160018060a01b0380821660208601528060408501511660408601525050606082015160608401526080820151608084015260a082015160c060a0850152612dff60c0850182613c7f565b838152606060208201526000613d5c6060830185613cee565b90508215156040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561089757610897613d6e565b634e487b7160e01b600052603260045260246000fd5b600060018201613dbf57613dbf613d6e565b5060010190565b602081526000611a516020830184613cee565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060ff821660ff8103613e3d57613e3d613d6e565b60010192915050565b805182526000602082015160406020850152612dff6040850182613c7f565b838152606060208201526000613e7e6060830185613e46565b905060ff83166040830152949350505050565b60008251613ea3818460208701613c5b565b9190910192915050565b600082601f830112613ebe57600080fd5b8151613ecc6131f5826132b3565b818152846020838601011115613ee157600080fd5b612dff826020830160208701613c5b565b600060208284031215613f0457600080fd5b81516001600160401b0380821115613f1b57600080fd5b9083019060408286031215613f2f57600080fd5b613f37613118565b82518152602083015182811115613f4d57600080fd5b61339287828601613ead565b60018060a01b0385168152836020820152826040820152608060608201526000612c086080830184613c7f565b85815260a060208201526000613f9f60a0830187613c7f565b604083018690526001600160a01b03851660608401528281036080840152613fc78185613c7f565b98975050505050505050565b602081526000611a516020830184613e46565b8181038181111561089757610897613d6e565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561402157600080fd5b81516001600160401b038082111561403857600080fd5b9083019060c0828603121561404c57600080fd5b61405461313a565b825181526020830151614066816131af565b60208201526040830151614079816131af565b80604083015250606083015160608201526080830151608082015260a0830151828111156140a657600080fd5b6140b287828601613ead565b60a08301525095945050505050565b6000602082840312156140d357600080fd5b81518015158114611a5157600080fdfea26469706673582212203a0fbfd27f57c353abc9a31d82a049872a39cd8f74784ad37f693ebab944aad064736f6c63430008130033", + "sourceMap": "393:667:178:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9520:164:180;;;;;;;;;;-1:-1:-1;9520:164:180;;;;;:::i;:::-;;:::i;:::-;;3832:190:181;;;;;;;;;;-1:-1:-1;3832:190:181;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8698:518;;;;;;;;;;-1:-1:-1;8698:518:181;;;;;:::i;:::-;;:::i;9003:170:180:-;;;;;;;;;;-1:-1:-1;9003:170:180;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3459:111::-;;;;;;;;;;-1:-1:-1;3459:111:180;;;;;:::i;:::-;-1:-1:-1;;;;;3541:24:180;3522:4;3541:24;;;:16;:24;;;;;;;;;3459:111;;;;7959:14:290;;7952:22;7934:41;;7922:2;7907:18;3459:111:180;7794:187:290;6903:2057:180;;;;;;;;;;-1:-1:-1;6903:2057:180;;;;;:::i;:::-;;:::i;3613:139::-;;;;;;;;;;-1:-1:-1;3613:139:180;;;;;:::i;:::-;;:::i;465:86:64:-;;;;;;;;;;-1:-1:-1;537:9:64;;-1:-1:-1;;;;;537:9:64;465:86;;;-1:-1:-1;;;;;9565:32:290;;;9547:51;;9535:2;9520:18;465:86:64;9401:203:290;4340:1442:180;;;;;;;;;;-1:-1:-1;4340:1442:180;;;;;:::i;:::-;;:::i;:::-;;;;10380:25:290;;;10436:2;10421:18;;10414:34;;;;10353:18;4340:1442:180;10206:248:290;2602:186:181;;;;;;;;;;-1:-1:-1;2602:186:181;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3304:112:180:-;;;;;;;;;;-1:-1:-1;3387:24:180;;3304:112;;;11268:25:290;;;11256:2;11241:18;3304:112:180;11122:177:290;2986:174:181;;;;;;;;;;-1:-1:-1;2986:174:181;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;3110:31:181;;;;:22;:31;;;;;;;;;3103:52;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3103:52:181;;;;;;2986:174;1862:95:71;;;;;;;;;;;;;:::i;9368:109:180:-;;;;;;;;;;-1:-1:-1;9368:109:180;;;;;:::i;:::-;;:::i;4417:210:181:-;;;;;;;;;;-1:-1:-1;4417:210:181;;;;;:::i;:::-;4538:4;4557:33;;;:18;:33;;;;;;;;-1:-1:-1;;;;;4557:65:181;;;;:50;;:65;;;;;;;;4417:210;;;;;518:540:178;;;;;;;;;;-1:-1:-1;518:540:178;;;;;:::i;:::-;;:::i;1268:79:71:-;;;;;;;;;;-1:-1:-1;1314:7:71;1336:6;-1:-1:-1;;;;;1336:6:71;1268:79;;9216:109:180;;;;;;;;;;-1:-1:-1;9216:109:180;;;;;:::i;:::-;;:::i;9727:155::-;;;;;;;;;;-1:-1:-1;9727:155:180;;;;;:::i;:::-;;:::i;4160:137::-;;;;;;;;;;-1:-1:-1;4160:137:180;;;;;:::i;:::-;4236:4;4255:37;;;:22;:37;;;;;;;;;4160:137;5082:194:181;;;;;;;;;;-1:-1:-1;5082:194:181;;;;;:::i;:::-;;:::i;5825:1035:180:-;;;;;;;;;;-1:-1:-1;5825:1035:180;;;;;:::i;:::-;;:::i;4853:187:181:-;;;;;;;;;;-1:-1:-1;4853:187:181;;;;;:::i;:::-;;:::i;659:238:87:-;;;;;;;;;;-1:-1:-1;659:238:87;;;;;:::i;:::-;;:::i;4248:127:181:-;;;;;;;;;;-1:-1:-1;4248:127:181;;;;;:::i;:::-;4315:13;4343:27;;;:15;:27;;;;;;;;;4248:127;;;;;;;;:::i;3965:152:180:-;;;;;;;;;;-1:-1:-1;3965:152:180;;;;;:::i;:::-;;:::i;2830:114:181:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3458:332::-;;;;;;;;;;-1:-1:-1;3458:332:181;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;3598:187:181;;;;;;;;-1:-1:-1;3655:33:181;;;:18;:33;;;;;;;:47;;;;3598:187;;3728:33;;;;;;3655:47;3728:48;;;-1:-1:-1;;;;;3728:48:181;3598:187;;;;;3458:332;3795:127:180;;;;;;;;;;-1:-1:-1;3795:127:180;;;;;:::i;:::-;3866:4;3885:32;;;:20;:32;;;;;;;;;3795:127;4064:142:181;;;;;;;;;;-1:-1:-1;4064:142:181;;;;;:::i;:::-;;:::i;5318:188::-;;;;;;;;;;-1:-1:-1;5318:188:181;;;;;:::i;:::-;;:::i;5548:3108::-;;;;;;;;;;-1:-1:-1;5548:3108:181;;;;;:::i;:::-;;:::i;930:252:87:-;;;;;;;;;;-1:-1:-1;930:252:87;;;;;:::i;:::-;;:::i;3155:106:180:-;;;;;;;;;;-1:-1:-1;3235:21:180;;3155:106;;2096:188:71;;;;;;;;;;-1:-1:-1;2096:188:71;;;;;:::i;:::-;;:::i;3202:214:181:-;;;;;;;;;;-1:-1:-1;3202:214:181;;;;;:::i;:::-;;:::i;587:122:64:-;;;;;;;;;;-1:-1:-1;587:122:64;;;;;:::i;:::-;;:::i;4669:142:181:-;;;;;;;;;;-1:-1:-1;4669:142:181;;;;;:::i;:::-;;:::i;9520:164:180:-;1175:13:71;:11;:13::i;:::-;9642:37:180::1;9664:14;9642:21;:37::i;:::-;9520:164:::0;:::o;3832:190:181:-;-1:-1:-1;;;;;;;;;;;;;;;;;3977:40:181;3997:19;:11;:17;:19::i;3977:40::-;3970:47;3832:190;-1:-1:-1;;3832:190:181:o;8698:518::-;8764:18;8785:16;:8;:14;:16::i;:::-;8764:37;-1:-1:-1;8853:23:181;8822:27;;;;:15;:27;;;;;;;;:54;;;;;;;;:::i;:::-;;8884:42;;;;;;;;;;;;;-1:-1:-1;;;8884:42:181;;;8807:125;;;;;-1:-1:-1;;;8807:125:181;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;8939:27:181;;;;:15;:27;;;;;;;;;:53;;-1:-1:-1;;8939:53:181;8969:23;8939:53;;;9018:20;;;;9072:15;;;;9095:22;;;;9125:16;;;;8998:149;;-1:-1:-1;;;8998:149:181;;-1:-1:-1;;;;;8998:66:181;;;;;;:149;;9072:15;9095:22;9125:16;8998:149;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9158:53;9184:10;9196:8;9206:4;9158:53;;;;;;;;:::i;:::-;;;;;;;;8758:458;8698:518;:::o;9003:170:180:-;9094:28;9137:22;:31;9160:7;9137:31;;;;;;;;;;;9130:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9130:38:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9003:170;;;:::o;6903:2057::-;426:23:64;:21;:23::i;:::-;4891:22:246;;;;;;7071:21:180::1;::::0;4236:4;4255:37;;;:22;:37;;;;;;7071:66;;-1:-1:-1;4255:37:180;;7284:43:::1;;;;;;;;;;;;;-1:-1:-1::0;;;7284:43:180::1;;::::0;7237:91:::1;;;;;-1:-1:-1::0;;;7237:91:180::1;;;;;;;;:::i;:::-;;7335:30;7368:43;7392:18;7368:23;:43::i;:::-;7335:76;;7417:24;7444:25;:11;:23;:25::i;:::-;7417:52;;7476:53;7532:22;:63;7562:8;:27;;;7532:63;;;;;;;;;;;7476:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;7476:119:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;7643:1;7609:24;:31;:35;7646:45;;;;;;;;;;;;;-1:-1:-1::0;;;7646:45:180::1;;::::0;7601:91:::1;;;;;-1:-1:-1::0;;;7601:91:180::1;;;;;;;;:::i;:::-;;7699:56;7791:21;:28;-1:-1:-1::0;;;;;7758:67:180::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;7758:67:180::1;;;;;;;;;;;;;;;;7699:126;;7837:9;7832:829;7856:21;:28;7852:1;:32;7832:829;;;7970:9;7982:5;:1:::0;7986::::1;7982:5;:::i;:::-;7970:17;;7965:214;7993:21;:28;7989:1;:32;7965:214;;;8085:21;8107:1;8085:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8057:52:180::1;:21;8079:1;8057:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8057:52:180::1;;;8121:39;;;;;;;;;;;;;-1:-1:-1::0;;;8121:39:180::1;;::::0;8038:132:::1;;;;;-1:-1:-1::0;;;8038:132:180::1;;;;;;;;:::i;:::-;-1:-1:-1::0;8023:3:180;::::1;::::0;::::1;:::i;:::-;;;;7965:214;;;;8243:24;8288:9:::0;8283:305:::1;8307:24;:31;8303:1;:35;8283:305;;;8387:24;8412:1;8387:27;;;;;;;;:::i;:::-;;;;;;;:53;;;-1:-1:-1::0;;;;;8359:81:180::1;:21;8381:1;8359:24;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;8359:81:180::1;::::0;8355:225:::1;;8487:24;8512:1;8487:27;;;;;;;;:::i;:::-;;;;;;;8454;8482:1;8454:30;;;;;;;;:::i;:::-;;;;;;:60;;;;8548:4;8526:26;;8564:5;;8355:225;8340:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8283:305;;;-1:-1:-1::0;8624:29:180::1;::::0;;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;8624:29:180::1;::::0;::::1;::::0;8603:19;8595:59:::1;;;;-1:-1:-1::0;;;8595:59:180::1;;;;;;;;:::i;:::-;;7891:770;7886:3;;;;;:::i;:::-;;;;7832:829;;;;8667:25;8695:192;8721:27;:11;:25;:27::i;:::-;8756:13;8777:18;8803:8;:27;;;8838:8;8854:27;8695:18;:192::i;:::-;8667:220;;8901:20;8923:31;;;;;;;;;;;;;-1:-1:-1::0;;;8923:31:180::1;;::::0;8893:62:::1;;;;;-1:-1:-1::0;;;8893:62:180::1;;;;;;;;:::i;:::-;;7065:1895;;;;;;6903:2057:::0;;;:::o;3613:139::-;3690:4;3709:38;3730:16;:8;:14;:16::i;4340:1442::-;2588:10;4511:7;3541:24;;;:16;:24;;;;;;4511:7;;3541:24;;2601:36;;;;;;;;;;;;;-1:-1:-1;;;2601:36:180;;;2563:75;;;;;-1:-1:-1;;;2563:75:180;;;;;;;;:::i;:::-;-1:-1:-1;4535:43:180::1;4581:42:::0;;;:22:::1;:42;::::0;;;;;;;4535:88;;;;;;::::1;::::0;;;;;;;;;;;;4581:42;;4535:88;:43;;:88;::::1;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;4535:88:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;4661:1;4637:14;:21;:25;4664:45;;;;;;;;;;;;;-1:-1:-1::0;;;4664:45:180::1;;::::0;4629:81:::1;;;;;-1:-1:-1::0;;;4629:81:180::1;;;;;;;;:::i;:::-;-1:-1:-1::0;4741:21:180::1;:23:::0;;4717:21:::1;::::0;;4741:23:::1;::::0;::::1;:::i;:::-;;;;;4717:47;;4771:24;4798:208;;;;;;;;4822:13;4798:208;;;;4851:10;-1:-1:-1::0;;;;;4798:208:180::1;;;;;4882:11;-1:-1:-1::0;;;;;4798:208:180::1;;;;;4916:13;4798:208;;;;4957:18;4798:208;;;;4992:7;4798:208;;::::0;4771:235:::1;;5012:38;5053:17;:8;:15;:17::i;:::-;5223:18;::::0;;::::1;::::0;;5202:40:::1;::::0;;;:20:::1;:40:::0;;;;;;;;:47;;-1:-1:-1;;5202:47:180::1;5245:4;5202:47;::::0;;5279:18;5260:48;;5012:58;;-1:-1:-1;5279:18:180;5260:48:::1;::::0;::::1;::::0;5299:8;;5260:48:::1;:::i;:::-;;;;;;;;5315:44;5362:110;5370:87;;;;;;;;5390:24;;:26;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;5370:87:180;;5435:20;;5370:87:::1;::::0;;::::1;::::0;5362:108:::1;:110::i;:::-;5502:21;::::0;;::::1;::::0;;5479:45:::1;::::0;;;:22:::1;:45:::0;;;;;:52;;-1:-1:-1;;5479:52:180::1;5527:4;5479:52;::::0;;5564:18;;::::1;::::0;5590:21;;5619:23;;5650:27:::1;::::0;::::1;::::0;5315:157;;-1:-1:-1;5538:183:180::1;::::0;5685:8;5701:14;5538:18:::1;:183::i;:::-;-1:-1:-1::0;5735:18:180::1;::::0;;::::1;::::0;5755:21;::::1;::::0;5735:18;;5755:21;;-1:-1:-1;4340:1442:180;-1:-1:-1;;;;;;;;4340:1442:180:o;2602:186:181:-;2721:31;;;;:22;:31;;;;;2690:16;;2721:62;;:53;;:60;:62::i;1862:95:71:-;1175:13;:11;:13::i;:::-;1922:30:::1;1949:1;1922:18;:30::i;:::-;1862:95::o:0;9368:109:180:-;1175:13:71;:11;:13::i;:::-;9442:30:180::1;9457:7;9466:5;9442:14;:30::i;518:540:178:-:0;3489:13:80;;;;;;;3488:14;;3524:34;;;;-1:-1:-1;3542:12:80;;3557:1;3542:12;;;;:16;3524:34;3523:105;;;-1:-1:-1;3600:4:80;1513:19:69;:23;;;3572:55:80;;-1:-1:-1;3610:12:80;;;;;:17;3572:55;3508:182;;;;-1:-1:-1;;;3508:182:80;;;;;;;:::i;:::-;3696:12;:16;;-1:-1:-1;;3696:16:80;3711:1;3696:16;;;3718:55;;;;3746:13;:20;;-1:-1:-1;;3746:20:80;;;;;3718:55;867:186:178::1;890:5;903:8;919:28;955:29;992:31;1031:16;867:15;:186::i;:::-;3789:14:80::0;3785:83;;;3813:13;:21;;-1:-1:-1;;3813:21:80;;;3847:14;;-1:-1:-1;26883:36:290;;3847:14:80;;26871:2:290;26856:18;3847:14:80;;;;;;;3785:83;3460:412;518:540:178;;;;;;:::o;9216:109:180:-;1175:13:71;:11;:13::i;:::-;9291:29:180::1;9306:7;9315:4;9291:14;:29::i;9727:155::-:0;1175:13:71;:11;:13::i;:::-;9839:38:180::1;9862:14;9839:22;:38::i;5082:194:181:-:0;1175:13:71;:11;:13::i;:::-;5215:56:181::1;5245:19;5266:4;5215:29;:56::i;5825:1035:180:-:0;5942:7;426:23:64;:21;:23::i;:::-;5957:38:180::1;5998:17;:8;:15;:17::i;:::-;5957:58;;6120:40;6141:15;:18;;;3866:4:::0;3885:32;;;:20;:32;;;;;;;;;3795:127;6120:40:::1;6162:41;;;;;;;;;;;;;-1:-1:-1::0;;;6162:41:180::1;;::::0;6112:92:::1;;;;;-1:-1:-1::0;;;6112:92:180::1;;;;;;;;:::i;:::-;;6211:43;6257:22;:63;6287:8;:27;;;6257:63;;;;;;;;;;;6211:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;6211:109:180;;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;::::1;;;;;;;;;;6358:1;6334:14;:21;:25;6361:45;;;;;;;;;;;;;-1:-1:-1::0;;;6361:45:180::1;;::::0;6326:81:::1;;;;;-1:-1:-1::0;;;6326:81:180::1;;;;;;;;:::i;:::-;;6414:44;6461:110;6469:87;;;;;;;;6489:24;;:26;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;6469:87:180;;6534:20;;6469:87:::1;::::0;;::::1;::::0;6461:108:::1;:110::i;:::-;6601:21;::::0;;::::1;::::0;;6578:45:::1;::::0;;;:22:::1;:45:::0;;;;;:52;;-1:-1:-1;;6578:52:180::1;6626:4;6578:52;::::0;;6663:18;;::::1;::::0;6689:21;;6718:23;;6749:27:::1;::::0;::::1;::::0;6414:157;;-1:-1:-1;6637:183:180::1;::::0;6784:8;6800:14;6637:18:::1;:183::i;:::-;-1:-1:-1::0;6834:21:180::1;;::::0;;5825:1035;-1:-1:-1;;;;;5825:1035:180:o;4853:187:181:-;1175:13:71;:11;:13::i;:::-;4981:54:181::1;5014:20;4981:32;:54::i;659:238:87:-:0;2286:7:177;1336:6:71;-1:-1:-1;;;;;1336:6:71;561:10:87;:28;553:61;;;;-1:-1:-1;;;553:61:87;;27132:2:290;553:61:87;;;27114:21:290;27171:2;27151:18;;;27144:30;-1:-1:-1;;;27190:18:290;;;27183:50;27250:18;;553:61:87;26930:344:290;553:61:87;789:43:::1;-1:-1:-1::0;;;;;789:31:87;::::1;821:2:::0;825:6;789:31:::1;:43::i;:::-;881:2;-1:-1:-1::0;;;;;844:48:87::1;869:10;-1:-1:-1::0;;;;;844:48:87::1;857:10;-1:-1:-1::0;;;;;844:48:87::1;;885:6;844:48;;;;11268:25:290::0;;11256:2;11241:18;;11122:177;844:48:87::1;;;;;;;;659:238:::0;;;:::o;2308:7:177:-;2301:14;;2209:111;:::o;3965:152:180:-;4050:4;4069:43;4092:19;:11;:17;:19::i;2830:114:181:-;2883:16;2914:25;:16;:23;:25::i;4064:142::-;4139:13;4167:34;4184:16;:8;:14;:16::i;5318:188::-;1175:13:71;:11;:13::i;:::-;5449:52:181::1;5479:14;5495:5;5449:29;:52::i;5548:3108::-:0;5679:13;1892:51;1923:10;1935:7;1892:30;:51::i;:::-;1945:33;;;;;;;;;;;;;-1:-1:-1;;;1945:33:181;;;1884:95;;;;;-1:-1:-1;;;1884:95:181;;;;;;;;:::i;:::-;;5700:30:::1;5733:43;5757:18;5733:23;:43::i;:::-;5700:76;;5782:24;5809:25;:11;:23;:25::i;:::-;5782:52;;5881:13;5855:8;:22;;;:39;:87;;;;;5929:13;5898:8;:27;;;:44;5855:87;5950:24;;;;;;;;;;;;;-1:-1:-1::0;;;5950:24:181::1;;::::0;5840:140:::1;;;;;-1:-1:-1::0;;;5840:140:181::1;;;;;;;;:::i;:::-;;5986:18;6007:27;:11;:25;:27::i;:::-;4891:22:246::0;;;;;;5986:48:181;;-1:-1:-1;6041:21:181::1;::::0;6114:44:::1;6161:33:::0;;;:18:::1;:33;::::0;;;;;;;6245:37;;;:22:::1;:37:::0;;;;;;6200:103;;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;6200:103:181::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;6789:34;;6041:66;;-1:-1:-1;6161:33:181;;6200:103;;6789:34;::::1;;6840:30:::0;;;:162:::1;;-1:-1:-1::0;6919:10:181::1;6882:48;::::0;;;:36:::1;::::0;::::1;:48;::::0;;;;;::::1;;6881:49;:120:::0;::::1;;;;6970:13;:31;;;-1:-1:-1::0;;;;;6942:59:181::1;:25;-1:-1:-1::0;;;;;6942:59:181::1;;6881:120;6829:1823;;;7021:25;-1:-1:-1::0;;;;;7021:30:181::1;7050:1;7021:30:::0;7017:116:::1;;7063:61:::0;;-1:-1:-1;;;;;;7063:61:181::1;;7108:15;-1:-1:-1::0;;;;;7063:61:181::1;;;::::0;;7017:116:::1;7166:35:::0;;7141:22:::1;::::0;7168:19;;7141:22;;7166:35:::1;::::0;::::1;;;:::i;:::-;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;;;::::0;;;::::1;::::0;;;7246:10:::1;-1:-1:-1::0;7209:48:181;;;-1:-1:-1;7209:36:181;;::::1;:48;::::0;;;;;;:55;;-1:-1:-1;;7209:55:181::1;::::0;;::::1;::::0;;7278:160;7166:35;;-1:-1:-1;7246:10:181;7350:13;;7330:10;;7278:160:::1;::::0;::::1;::::0;7307:13;;7373:11;;7166:35;;7278:160:::1;:::i;:::-;;;;;;;;7695:18;7664:27:::0;;;:15:::1;:27;::::0;;;;;::::1;;:49;::::0;::::1;;;;;;:::i;:::-;;7660:80;;7725:7;;;;;;;;5548:3108:::0;;;:::o;7660:80::-:1;8006:34:::0;;:38:::1;;::::0;;;;:104:::1;;;8076:13;:34;;;8056:54;;:16;:54;;;;8006:104;7993:653;;;8129:27;::::0;;;:15:::1;:27;::::0;;;;;;;;:53;;-1:-1:-1;;8129:53:181::1;8159:23;8129:53;::::0;;8226:20;;::::1;::::0;8286:15;;::::1;::::0;8315:22:::1;::::0;::::1;::::0;8351:16:::1;::::0;::::1;::::0;8206:173;;-1:-1:-1;;;8206:173:181;;-1:-1:-1;;;;;8206:66:181;;::::1;::::0;::::1;::::0;:173:::1;::::0;8286:15;8315:22;8351:16;8206:173:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;8192:446;;;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;8503:27:181::1;::::0;;;:15:::1;:27;::::0;;;;;:53;;-1:-1:-1;;8503:53:181::1;8533:23;8503:53;::::0;;8573:54;::::1;::::0;::::1;::::0;8503:27;;8611:8;;8573:54:::1;:::i;:::-;;;;;;;;8470:168;8192:446;;;8405:53;8431:10;8443:8;8453:4;8405:53;;;;;;;;:::i;:::-;;;;;;;;8192:446;7009:1643;5694:2962;;;;;;;1985:1;5548:3108:::0;;;:::o;930:252:87:-;2286:7:177;1336:6:71;-1:-1:-1;;;;;1336:6:71;561:10:87;:28;553:61;;;;-1:-1:-1;;;553:61:87;;27132:2:290;553:61:87;;;27114:21:290;27171:2;27151:18;;;27144:30;-1:-1:-1;;;27190:18:290;;;27183:50;27250:18;;553:61:87;26930:344:290;553:61:87;1066:12:::1;::::0;;1025::::1;1066::::0;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;1043:7:87;::::1;::::0;1058:6;;1043:36:::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1024:55;;;1093:7;1085:37;;;::::0;-1:-1:-1;;;1085:37:87;;28639:2:290;1085:37:87::1;::::0;::::1;28621:21:290::0;28678:2;28658:18;;;28651:30;-1:-1:-1;;;28697:18:290;;;28690:47;28754:18;;1085:37:87::1;28437:341:290::0;1085:37:87::1;1134:43;::::0;11268:25:290;;;-1:-1:-1;;;;;1134:43:87;::::1;::::0;1154:10:::1;::::0;1134:43:::1;::::0;11256:2:290;11241:18;1134:43:87::1;;;;;;;1018:164;930:252:::0;;:::o;2096:188:71:-;1175:13;:11;:13::i;:::-;-1:-1:-1;;;;;2180:22:71;::::1;2172:73;;;::::0;-1:-1:-1;;;2172:73:71;;28985:2:290;2172:73:71::1;::::0;::::1;28967:21:290::0;29024:2;29004:18;;;28997:30;29063:34;29043:18;;;29036:62;-1:-1:-1;;;29114:18:290;;;29107:36;29160:19;;2172:73:71::1;28783:402:290::0;2172:73:71::1;2251:28;2270:8;2251:18;:28::i;3202:214:181:-:0;3315:4;3334:31;;;:22;:31;;;;;:77;;:53;;3397:13;3334:62;:77::i;:::-;3327:84;3202:214;-1:-1:-1;;;3202:214:181:o;587:122:64:-;426:23;:21;:23::i;:::-;676:28:::1;692:11;676:15;:28::i;4669:142:181:-:0;1175:13:71;:11;:13::i;:::-;4768:38:181::1;4789:16;4768:20;:38::i;1412:124:71:-:0;1314:7;1336:6;-1:-1:-1;;;;;1336:6:71;831:10:70;1471:23:71;1463:68;;;;-1:-1:-1;;;1463:68:71;;29392:2:290;1463:68:71;;;29374:21:290;;;29411:18;;;29404:30;29470:34;29450:18;;;29443:62;29522:18;;1463:68:71;29190:356:290;11856:2445:180;11974:9;11969:2328;11993:14;:21;11989:1;:25;11969:2328;;;12029:65;12097:14;12112:1;12097:17;;;;;;;;:::i;:::-;;;;;;;12029:85;;12201:1;-1:-1:-1;;;;;12140:63:180;:24;:49;;;-1:-1:-1;;;;;12140:63:180;;;:141;;;;-1:-1:-1;12217:50:180;;-1:-1:-1;;;;;12217:64:180;;;12140:141;12291:51;;;;;;;;;;;;;-1:-1:-1;;;12291:51:180;;;12123:227;;;;;-1:-1:-1;;;12123:227:180;;;;;;;;:::i;:::-;-1:-1:-1;12443:43:180;;;;;12358:50;12411:83;;;:22;:83;;;;;;12358:50;12579:905;12603:27;;12599:31;;12579:905;;;12647:47;12697:20;12718:1;12697:23;;;;;;;;:::i;:::-;;;;;;;;;12805:50;;12697:23;;;;;12746:45;;;;12697:23;;-1:-1:-1;;;;;;12746:109:180;;;:45;;:109;12731:745;;12955:49;;;;12895:44;;-1:-1:-1;;;;;12895:44:180;;;:109;;;12878:541;;13078:64;;;;;13031:111;;-1:-1:-1;;;;;;13031:111:180;-1:-1:-1;;;;;13031:111:180;;;;;;;;13257:50;;13198:43;;;;;13162:244;;9547:51:290;;;-1:-1:-1;;13162:244:180;;;;;13198:43;13162:244;;9520:18:290;13162:244:180;;;;;;;12878:541;13444:4;13430:18;;13460:5;;;12731:745;-1:-1:-1;12632:3:180;;;;:::i;:::-;;;;12579:905;;;;13497:11;13492:799;;13593:50;;13655:59;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13655:59:180;-1:-1:-1;;;13655:59:180;;;13726:35;;;;;;;;;;;-1:-1:-1;;;13726:35:180;;;;13553:218;;13593:50;13553:28;:218::i;:::-;-1:-1:-1;13819:213:180;;;;;;;;13879:49;;;;;;-1:-1:-1;;;;;13819:213:180;;;;;13969:50;;13819:213;;;;;;;;13782:260;;;;;;;;-1:-1:-1;13782:260:180;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13782:260:180;;;;;;;;;;;;;;;;;;;;;;;;;;14145:50;;14090:43;;;;14207:49;;14058:224;;9565:32:290;;;9547:51;;13782:260:180;;14058:224;;;14090:43;;14058:224;;9520:18:290;14058:224:180;;;;;;;13492:799;12021:2276;;;12016:3;;;;;:::i;:::-;;;;11969:2328;;;;11856:2445;:::o;4464:190:246:-;4534:7;4549:44;4596:19;4603:11;4596:6;:19::i;:::-;4628:21;;;;4464:190;-1:-1:-1;;;4464:190:246:o;2227:172::-;2291:7;2306:38;2347:16;2354:8;2347:6;:16::i;1106:149:64:-;1314:7:71;1336:6;-1:-1:-1;;;;;1336:6:71;831:10:70;1167:23:64;;:53;;-1:-1:-1;537:9:64;;-1:-1:-1;;;;;537:9:64;831:10:70;1194:26:64;1167:53;1159:91;;;;-1:-1:-1;;;1159:91:64;;29753:2:290;1159:91:64;;;29735:21:290;29792:2;29772:18;;;29765:30;29831:27;29811:18;;;29804:55;29876:18;;1159:91:64;29551:349:290;4129:141:246;-1:-1:-1;;;;;;;;;;;;;;;;;4238:11:246;4227:38;;;;;;;;;;;;:::i;5188:160::-;5264:15;;:::i;:::-;5294:49;5315:11;:27;;;5294:20;:49::i;5583:153::-;5703:27;;;;;4891:22;;;;;5661:7;;5683:48;4805:113;10510:1214:180;10751:4;;;10804:878;10828:14;:21;10824:1;:25;10804:878;;;10865:12;10879:23;10906:14;10921:1;10906:17;;;;;;;;:::i;:::-;;;;;;;:52;;;-1:-1:-1;;;;;10906:74:180;11028:36;;;11078:14;11093:1;11078:17;;;;;;;;:::i;:::-;;;;;;;:42;;;11134:8;11156:18;11188;10992:226;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10992:226:180;;;;;;;;;;;;;;-1:-1:-1;;;;;10992:226:180;-1:-1:-1;;;;;;10992:226:180;;;;;;;;;;10906:322;;;;10992:226;10906:322;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10864:364;;;;11241:7;11237:147;;;11285:4;11260:29;;11237:147;11640:7;11396:279;;11535:14;11550:1;11535:17;;;;;;;;:::i;:::-;;;;;;;:43;;;-1:-1:-1;;;;;11396:279:180;11459:10;11396:279;11436:13;11479:18;11507;11588:14;11603:1;11588:17;;;;;;;;:::i;:::-;;;;;;;:42;;;11657:10;11396:279;;;;;;;;;;:::i;:::-;;;;;;;;10856:826;;10851:3;;;;;:::i;:::-;;;;10804:878;;;-1:-1:-1;11696:22:180;10510:1214;-1:-1:-1;;;;;;;10510:1214:180:o;1419:269:246:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1592:8:246;1581:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;1581:20:246;;;;;;1558:43;;;4891:22;;;;;;;1607:18;;;:48;:15;1419:269;-1:-1:-1;;1419:269:246:o;3603:307::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3802:11:246;3791:23;;;;;;;;:::i;10259:300:63:-;10322:16;10350:22;10375:19;10383:3;10375:7;:19::i;2428:173:71:-;2497:16;2516:6;;-1:-1:-1;;;;;2528:17:71;;;-1:-1:-1;;;;;;2528:17:71;;;;;;2556:40;;2516:6;;;;;;;2556:40;;2497:16;2556:40;2491:110;2428:173;:::o;15789:295:180:-;15874:9;15869:211;15893:7;:14;15889:1;:18;15869:211;;;15952:1;-1:-1:-1;;;;;15930:24:180;:7;15938:1;15930:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15930:24:180;;;15956:21;;;;;;;;;;;;;-1:-1:-1;;;15956:21:180;;;15922:56;;;;;-1:-1:-1;;;15922:56:180;;;;;;;;:::i;:::-;;16017:8;15986:16;:28;16003:7;16011:1;16003:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;15986:28:180;-1:-1:-1;;;;;15986:28:180;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16064:8;16038:35;;16052:7;16060:1;16052:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;16038:35:180;;;;;;;;;;;15909:3;;;;:::i;:::-;;;;15869:211;;1314:862:177;3489:13:80;;;;;;;3488:14;;3524:34;;;;-1:-1:-1;3542:12:80;;3557:1;3542:12;;;;:16;3524:34;3523:105;;;-1:-1:-1;3600:4:80;1513:19:69;:23;;;3572:55:80;;-1:-1:-1;3610:12:80;;;;;:17;3572:55;3508:182;;;;-1:-1:-1;;;3508:182:80;;;;;;;:::i;:::-;3696:12;:16;;-1:-1:-1;;3696:16:80;3711:1;3696:16;;;3718:55;;;;3746:13;:20;;-1:-1:-1;;3746:20:80;;;;;3718:55;1668:25:177::1;1687:5;1668:18;:25::i;:::-;1699;1715:8;1699:15;:25::i;:::-;1800:41;::::0;;1839:1:::1;1800:41:::0;;;::::1;::::0;::::1;::::0;;;1731:192:::1;::::0;1763:29;;1800:41;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;1800:41:177::1;;;;;;;;;;;;;;;;1889:28;1731:24;:192::i;:::-;2002:31;::::0;;2031:1:::1;2002:31:::0;;;::::1;::::0;::::1;::::0;;;1930:241:::1;::::0;1963:31;;2002;::::1;::::0;::::1;-1:-1:-1::0;;;;;;;;;;;;;;;;;2002:31:177::1;;;;;;;;;;;;;;;-1:-1:-1::0;2105:16:177::1;::::0;;2119:1:::1;2105:16:::0;;::::1;::::0;::::1;::::0;;;2081;;1930:25:::1;:241::i;14445:1131:180:-:0;14562:9;14557:1015;14581:23;:30;14577:1;:34;14557:1015;;;14631:9;14626:940;14650:23;14674:1;14650:26;;;;;;;;:::i;:::-;;;;;;;:35;;;:42;14646:1;:46;14626:940;;;14709:50;14762:22;:82;14796:23;14820:1;14796:26;;;;;;;;:::i;:::-;;;;;;;:35;;;14832:1;14796:38;;;;;;;;:::i;:::-;;;;;;;14762:82;;;;;;;;;;;14709:135;;14860:9;14855:703;14879:27;;14875:31;;14855:703;;;15007:23;15031:1;15007:26;;;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;14942:105:180;:20;14963:1;14942:23;;;;;;;;:::i;:::-;;;;;;;;;:49;:23;;;;;:49;;-1:-1:-1;;;;;14942:49:180;:105;14925:623;;15074:32;15109:20;15130:1;15109:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:48;15219:27;;-1:-1:-1;;;;;15109:48:180;;;;-1:-1:-1;15198:20:180;;15219:31;;15109:48;;15219:31;:::i;:::-;15198:53;;;;;;;;:::i;:::-;;;;;;;;;;;15172:20;15193:1;15172:23;;;;;;;;:::i;:::-;;;;;;;;;:79;;:23;;;;;:79;;-1:-1:-1;;;;;15172:79:180;;;-1:-1:-1;;;;;;15172:79:180;;;;;;-1:-1:-1;15172:79:180;;;;;;;;;;;;;;;;;;;;;;15265:26;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;15265:26:180;;;;;;;;;-1:-1:-1;;;;;;15265:26:180;;;;;;;;;;;;;;;;;;;15401;;:23;;15425:1;;15401:26;;;;;;:::i;:::-;;;;;;;:40;;;-1:-1:-1;;;;;15311:205:180;15347:23;15371:1;15347:26;;;;;;;;:::i;:::-;;;;;;;:35;;;15383:1;15347:38;;;;;;;;:::i;:::-;;;;;;;15311:205;15457:24;15311:205;;;;;-1:-1:-1;;;;;9565:32:290;;;;9547:51;;9535:2;9520:18;;9401:203;15311:205:180;;;;;;;;15530:5;;;14925:623;14908:3;;;;:::i;:::-;;;;14855:703;;;;14699:867;14694:3;;;;;:::i;:::-;;;;14626:940;;;-1:-1:-1;14613:3:180;;;;:::i;:::-;;;;14557:1015;;11294:1213:181;11444:9;11439:1064;11463:19;:26;11459:1;:30;11439:1064;;;11504:45;11552:19;11572:1;11552:22;;;;;;;;:::i;:::-;;;;;;;11504:70;;11621:1;-1:-1:-1;;;;;11590:33:181;:5;:19;;;-1:-1:-1;;;;;11590:33:181;;;11625:29;;;;;;;;;;;;;-1:-1:-1;;;11625:29:181;;;11582:73;;;;;-1:-1:-1;;;11582:73:181;;;;;;;;:::i;:::-;;11669:9;11664:833;11684:5;:14;;;:21;11680:1;:25;11664:833;;;11722:20;11756:9;11752:599;;;11779:39;11800:5;:14;;;11815:1;11800:17;;;;;;;;:::i;:::-;;;;;;;11779:16;:20;;:39;;;;:::i;:::-;;11848:112;11929:5;:19;;;11848:22;:41;11871:5;:14;;;11886:1;11871:17;;;;;;;;:::i;:::-;;;;;;;11848:41;;;;;;;;;;;:63;;:67;;:112;;;;:::i;:::-;11830:130;;11752:599;;;12007:115;12091:5;:19;;;12007:22;:41;12030:5;:14;;;12045:1;12030:17;;;;;;;;:::i;:::-;;;;;;;12007:41;;;;;;;;;;;:63;;:70;;:115;;;;:::i;:::-;11989:133;;12151:15;:108;;;;;12182:72;:22;:41;12205:5;:14;;;12220:1;12205:17;;;;;;;;:::i;:::-;;;;;;;12182:41;;;;;;;;;;;:63;;:70;:72::i;:::-;:77;12151:108;12134:207;;;12286:42;12310:5;:14;;;12325:1;12310:17;;;;;;;;:::i;:::-;;;;;;;12286:16;:23;;:42;;;;:::i;:::-;;12134:207;12364:15;12360:129;;;12460:5;:14;;;12475:1;12460:17;;;;;;;;:::i;:::-;;;;;;;12449:9;12398:80;;12428:5;:19;;;-1:-1:-1;;;;;12398:80:181;;;;;;;;;;;12360:129;-1:-1:-1;11707:3:181;;;;:::i;:::-;;;;11664:833;;;;11496:1007;11491:3;;;;;:::i;:::-;;;;11439:1064;;9482:689;9612:9;9607:560;9627:26;:33;9623:1;:37;9607:560;;;9675:35;9713:26;9740:1;9713:29;;;;;;;;:::i;:::-;;;;;;;;;;;;9826:13;;9803:37;;;;:22;:37;;;;;:69;9767:23;;;;9713:29;;-1:-1:-1;;;;;;9803:69:181;;;;;;9767:105;;;:161;;;;;9913:15;9886:5;:23;;;-1:-1:-1;;;;;9886:42:181;;;9767:161;9938:33;;;;;;;;;;;;;-1:-1:-1;;;9938:33:181;;;9750:229;;;;;-1:-1:-1;;;9750:229:181;;;;;;;;:::i;:::-;-1:-1:-1;10059:32:181;;;;;;10010:13;;9987:37;;;;:22;:37;;;;;;;:104;;-1:-1:-1;;;;;;9987:104:181;;-1:-1:-1;;;;;9987:104:181;;;;;;;10146:13;;10121:23;;10105:55;;32824:45:290;;32806:64;;10146:13:181;;10105:55;;32779:18:290;10105:55:181;;;;;;;-1:-1:-1;9662:3:181;;;;:::i;:::-;;;;9607:560;;1405:154:73;1510:43;;;-1:-1:-1;;;;;33073:32:290;;1510:43:73;;;33055:51:290;33122:18;;;;33115:34;;;1510:43:73;;;;;;;;;;33028:18:290;;;;1510:43:73;;;;;;;;-1:-1:-1;;;;;1510:43:73;-1:-1:-1;;;1510:43:73;;;1483:71;;1503:5;;1483:19;:71::i;8860:165:63:-;-1:-1:-1;;;;;8993:23:63;;8940:4;4351:19;;;:12;;;:19;;;;;;:24;;8963:55;4255:127;814:178:64;897:9;;;-1:-1:-1;;;;;912:23:64;;;-1:-1:-1;;;;;;912:23:64;;;;;;;946:41;;;897:9;;;;33372:34:290;;;33437:2;33422:18;;33415:43;;;;946:41:64;;33307:18:290;946:41:64;33160:304:290;10402:714:181;10497:9;10492:620;10512:16;:23;10508:1;:27;10492:620;;;10550:38;10591:16;10608:1;10591:19;;;;;;;;:::i;:::-;;;;;;;10550:60;;10673:1;10635:13;:35;;;:39;;;:178;;;;-1:-1:-1;10760:21:181;;10737:45;;;;:22;:45;;;;;:76;;:67;;:74;:76::i;:::-;10688:13;:35;;;:125;;;;10635:178;10823:37;;;;;;;;;;;;;-1:-1:-1;;;10823:37:181;;;10618:250;;;;;-1:-1:-1;;;10618:250:181;;;;;;;;:::i;:::-;-1:-1:-1;10977:35:181;;;;;;10899:21;;10876:45;;;;:22;:45;;;;;;;:136;;-1:-1:-1;;10876:136:181;;;;;;;;11083:21;;11046:35;;11025:80;;26901:17:290;;26883:36;;11083:21:181;;11025:80;;26856:18:290;11025:80:181;;;;;;;-1:-1:-1;10537:3:181;;;;:::i;:::-;;;;10492:620;;6603:301:69;6730:12;6751;6765:23;6792:6;-1:-1:-1;;;;;6792:19:69;6812:4;6792:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6750:67;;;;6830:69;6857:6;6865:7;6874:10;6886:12;6830:26;:69::i;:::-;6823:76;6603:301;-1:-1:-1;;;;;;6603:301:69:o;1893:129:246:-;1955:15;;:::i;:::-;1996:8;1985:32;;;;;;;;;;;;:::i;5570:109:63:-;5626:16;5661:3;:11;;5654:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5570:109;;;:::o;12592:525:181:-;12956:52;12986:15;13003:4;12956:29;:52::i;:::-;13014:54;13044:16;13062:5;13014:29;:54::i;:::-;13074:38;13095:16;13074:20;:38::i;16169:426:180:-;16418:38;16440:15;16418:21;:38::i;:::-;16462:40;16485:16;16462:22;:40::i;:::-;16508:37;16523:15;16540:4;16508:14;:37::i;:::-;16551:39;16566:16;16584:5;16551:14;:39::i;:::-;16169:426;;;;:::o;10793:129:63:-;10860:4;10883:32;10888:3;10908:5;10883:4;:32::i;8305:150::-;8375:4;8398:50;8403:3;-1:-1:-1;;;;;8423:23:63;;8398:4;:50::i;8623:156::-;8696:4;8719:53;8727:3;-1:-1:-1;;;;;8747:23:63;;8719:7;:53::i;9106:115::-;9169:7;9195:19;9203:3;4545:18;;4463:107;11090:135;11160:4;11183:35;11191:3;11211:5;11183:7;:35::i;4628:597:73:-;5031:23;5057:33;-1:-1:-1;;;;;5057:27:73;;5085:4;5057:27;:33::i;:::-;5031:59;;5100:10;:17;5121:1;5100:22;;:57;;;;;5138:10;5127:30;;;;;;;;;;;;:::i;:::-;5126:31;5100:57;5096:125;;;5174:40;;-1:-1:-1;;;5174:40:73;;-1:-1:-1;;;;;9565:32:290;;5174:40:73;;;9547:51:290;9520:18;;5174:40:73;9401:203:290;7178:548:69;7340:12;7364:7;7360:362;;;7385:10;:17;7406:1;7385:22;7381:256;;-1:-1:-1;;;;;1513:19:69;;;7568:60;;;;-1:-1:-1;;;7568:60:69;;35170:2:290;7568:60:69;;;35152:21:290;35209:2;35189:18;;;35182:30;35248:31;35228:18;;;35221:59;35297:18;;7568:60:69;34968:353:290;7568:60:69;-1:-1:-1;7651:10:69;7644:17;;7360:362;7682:33;7690:10;7702:12;7682:7;:33::i;:::-;7178:548;;;;;;:::o;2214:404:63:-;2277:4;4351:19;;;:12;;;:19;;;;;;2293:319;;-1:-1:-1;2335:23:63;;;;;;;;:11;:23;;;;;;;;;;;;;2515:18;;2493:19;;;:12;;;:19;;;;;;:40;;;;2547:11;;2293:319;-1:-1:-1;2596:5:63;2589:12;;2786:1388;2852:4;2989:19;;;:12;;;:19;;;;;;3023:15;;3019:1149;;3392:21;3416:14;3429:1;3416:10;:14;:::i;:::-;3464:18;;3392:38;;-1:-1:-1;3444:17:63;;3464:22;;3485:1;;3464:22;:::i;:::-;3444:42;;3518:13;3505:9;:26;3501:398;;3551:17;3571:3;:11;;3583:9;3571:22;;;;;;;;:::i;:::-;;;;;;;;;3551:42;;3722:9;3693:3;:11;;3705:13;3693:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;3805:23;;;:12;;;:23;;;;;:36;;;3501:398;3977:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4069:3;:12;;:19;4082:5;4069:19;;;;;;;;;;;4062:26;;;4110:4;4103:11;;;;;;;3019:1149;4152:5;4145:12;;;;;3426:179:69;3501:12;3528:72;3550:6;3558:4;3564:1;3528:72;;;;;;;;;;;;;;;;;:21;:72::i;8192:476::-;8343:17;;:21;8339:325;;8545:10;8539:17;8593:15;8580:10;8576:2;8572:19;8565:44;8339:325;8644:12;8637:20;;-1:-1:-1;;;8637:20:69;;;;;;;;:::i;4822:414::-;4969:12;5022:5;4997:21;:30;;4989:81;;;;-1:-1:-1;;;4989:81:69;;35528:2:290;4989:81:69;;;35510:21:290;35567:2;35547:18;;;35540:30;35606:34;35586:18;;;35579:62;-1:-1:-1;;;35657:18:290;;;35650:36;35703:19;;4989:81:69;35326:402:290;4989:81:69;5077:12;5091:23;5118:6;-1:-1:-1;;;;;5118:11:69;5137:5;5144:4;5118:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5076:73;;;;5162:69;5189:6;5197:7;5206:10;5218:12;5162:26;:69::i;:::-;5155:76;4822:414;-1:-1:-1;;;;;;;4822:414:69:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:127:290:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:253;218:2;212:9;260:4;248:17;;-1:-1:-1;;;;;280:34:290;;316:22;;;277:62;274:88;;;342:18;;:::i;:::-;378:2;371:22;146:253;:::o;404:257::-;476:4;470:11;;;508:17;;-1:-1:-1;;;;;540:34:290;;576:22;;;537:62;534:88;;;602:18;;:::i;666:253::-;738:2;732:9;780:4;768:17;;-1:-1:-1;;;;;800:34:290;;836:22;;;797:62;794:88;;;862:18;;:::i;924:275::-;995:2;989:9;1060:2;1041:13;;-1:-1:-1;;1037:27:290;1025:40;;-1:-1:-1;;;;;1080:34:290;;1116:22;;;1077:62;1074:88;;;1142:18;;:::i;:::-;1178:2;1171:22;924:275;;-1:-1:-1;924:275:290:o;1204:216::-;1297:4;-1:-1:-1;;;;;1322:6:290;1319:30;1316:56;;;1352:18;;:::i;:::-;-1:-1:-1;1397:1:290;1393:14;1409:4;1389:25;;1204:216::o;1425:131::-;-1:-1:-1;;;;;1500:31:290;;1490:42;;1480:70;;1546:1;1543;1536:12;1561:134;1629:20;;1658:31;1629:20;1658:31;:::i;:::-;1561:134;;;:::o;1700:1271::-;1787:5;1840:3;1833:4;1825:6;1821:17;1817:27;1807:55;;1858:1;1855;1848:12;1807:55;1894:6;1881:20;1920:4;1944:93;1960:76;2033:2;1960:76;:::i;:::-;1944:93;:::i;:::-;2071:15;;;2133:4;2176:11;;;2164:24;;2160:33;;;2102:12;;;;2059:3;2205:15;;;2202:35;;;2233:1;2230;2223:12;2202:35;2269:2;2261:6;2257:15;2281:661;2297:6;2292:3;2289:15;2281:661;;;2373:2;2367:3;2362;2358:13;2354:22;2351:112;;;2417:1;2446:2;2442;2435:14;2351:112;2489:22;;:::i;:::-;2552:3;2539:17;2569:33;2594:7;2569:33;:::i;:::-;2615:22;;2678:12;;;2665:26;2704:33;2665:26;2704:33;:::i;:::-;2757:14;;;2750:31;2804:2;2855:12;;;2842:26;2826:14;;;2819:50;2882:18;;2920:12;;;;2314;;2281:661;;;-1:-1:-1;2960:5:290;;1700:1271;-1:-1:-1;;;;;;;1700:1271:290:o;2976:433::-;3112:6;3165:2;3153:9;3144:7;3140:23;3136:32;3133:52;;;3181:1;3178;3171:12;3133:52;3221:9;3208:23;-1:-1:-1;;;;;3246:6:290;3243:30;3240:50;;;3286:1;3283;3276:12;3240:50;3309:94;3395:7;3386:6;3375:9;3371:22;3309:94;:::i;3414:186::-;3462:4;-1:-1:-1;;;;;3487:6:290;3484:30;3481:56;;;3517:18;;:::i;:::-;-1:-1:-1;3583:2:290;3562:15;-1:-1:-1;;3558:29:290;3589:4;3554:40;;3414:186::o;3605:462::-;3647:5;3700:3;3693:4;3685:6;3681:17;3677:27;3667:55;;3718:1;3715;3708:12;3667:55;3754:6;3741:20;3785:48;3801:31;3829:2;3801:31;:::i;3785:48::-;3858:2;3849:7;3842:19;3904:3;3897:4;3892:2;3884:6;3880:15;3876:26;3873:35;3870:55;;;3921:1;3918;3911:12;3870:55;3986:2;3979:4;3971:6;3967:17;3960:4;3951:7;3947:18;3934:55;4034:1;4009:16;;;4027:4;4005:27;3998:38;;;;4013:7;3605:462;-1:-1:-1;;;3605:462:290:o;4072:671::-;4161:6;4214:2;4202:9;4193:7;4189:23;4185:32;4182:52;;;4230:1;4227;4220:12;4182:52;4270:9;4257:23;-1:-1:-1;;;;;4340:2:290;4332:6;4329:14;4326:34;;;4356:1;4353;4346:12;4326:34;4379:22;;;;4435:4;4417:16;;;4413:27;4410:47;;;4453:1;4450;4443:12;4410:47;4479:22;;:::i;:::-;4537:2;4524:16;4517:5;4510:31;4587:2;4583;4579:11;4566:25;4616:2;4606:8;4603:16;4600:36;;;4632:1;4629;4622:12;4600:36;4668:44;4704:7;4693:8;4689:2;4685:17;4668:44;:::i;:::-;4663:2;4652:14;;4645:68;-1:-1:-1;4656:5:290;4072:671;-1:-1:-1;;;;;4072:671:290:o;4975:320::-;4849:12;;4863:4;4845:23;4833:36;;4922:4;4911:16;;;4905:23;-1:-1:-1;;;;;4901:62:290;4885:14;;;4878:86;5209:2;5194:18;;5221:68;4748:222;5300:820;5355:5;5403:4;5391:9;5386:3;5382:19;5378:30;5375:50;;;5421:1;5418;5411:12;5375:50;5443:22;;:::i;:::-;5434:31;;5501:9;5488:23;5481:5;5474:38;5564:2;5553:9;5549:18;5536:32;5577:33;5602:7;5577:33;:::i;:::-;5637:2;5626:14;;5619:31;5702:2;5687:18;;5674:32;5715:33;5674:32;5715:33;:::i;:::-;5780:7;5775:2;5768:5;5764:14;5757:31;;5848:2;5837:9;5833:18;5820:32;5815:2;5808:5;5804:14;5797:56;5914:3;5903:9;5899:19;5886:33;5880:3;5873:5;5869:15;5862:58;5971:3;5960:9;5956:19;5943:33;-1:-1:-1;;;;;5991:6:290;5988:30;5985:50;;;6031:1;6028;6021:12;5985:50;6068:45;6109:3;6100:6;6089:9;6085:22;6068:45;:::i;:::-;6062:3;6055:5;6051:15;6044:70;;5300:820;;;;:::o;6125:348::-;6211:6;6264:2;6252:9;6243:7;6239:23;6235:32;6232:52;;;6280:1;6277;6270:12;6232:52;6320:9;6307:23;-1:-1:-1;;;;;6345:6:290;6342:30;6339:50;;;6385:1;6382;6375:12;6339:50;6408:59;6459:7;6450:6;6439:9;6435:22;6408:59;:::i;6478:180::-;6537:6;6590:2;6578:9;6569:7;6565:23;6561:32;6558:52;;;6606:1;6603;6596:12;6558:52;-1:-1:-1;6629:23:290;;6478:180;-1:-1:-1;6478:180:290:o;6663:874::-;6910:2;6962:21;;;7032:13;;6935:18;;;7054:22;;;6881:4;;6910:2;7095;;7113:18;;;;7154:15;;;6881:4;7197:314;7211:6;7208:1;7205:13;7197:314;;;7270:13;;7354:9;;-1:-1:-1;;;;;7350:18:290;;;7338:31;;7413:11;;;7407:18;7403:27;7389:12;;;7382:49;7451:12;;;;7486:15;;;;7323:1;7226:9;7197:314;;;-1:-1:-1;7528:3:290;;6663:874;-1:-1:-1;;;;;;;6663:874:290:o;7542:247::-;7601:6;7654:2;7642:9;7633:7;7629:23;7625:32;7622:52;;;7670:1;7667;7660:12;7622:52;7709:9;7696:23;7728:31;7753:5;7728:31;:::i;7986:770::-;8040:5;8093:3;8086:4;8078:6;8074:17;8070:27;8060:55;;8111:1;8108;8101:12;8060:55;8147:6;8134:20;8173:4;8197:93;8213:76;8286:2;8213:76;:::i;8197:93::-;8324:15;;;8410:1;8406:10;;;;8394:23;;8390:32;;;8355:12;;;;8434:15;;;8431:35;;;8462:1;8459;8452:12;8431:35;8498:2;8490:6;8486:15;8510:217;8526:6;8521:3;8518:15;8510:217;;;8606:3;8593:17;8623:31;8648:5;8623:31;:::i;:::-;8667:18;;8705:12;;;;8543;;8510:217;;;-1:-1:-1;8745:5:290;7986:770;-1:-1:-1;;;;;;7986:770:290:o;8761:635::-;8872:6;8880;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8997:9;8984:23;-1:-1:-1;;;;;9067:2:290;9059:6;9056:14;9053:34;;;9083:1;9080;9073:12;9053:34;9106:49;9147:7;9138:6;9127:9;9123:22;9106:49;:::i;:::-;9096:59;;9202:2;9191:9;9187:18;9174:32;9164:42;;9259:2;9248:9;9244:18;9231:32;9215:48;;9288:2;9278:8;9275:16;9272:36;;;9304:1;9301;9294:12;9272:36;;9327:63;9382:7;9371:8;9360:9;9356:24;9327:63;:::i;:::-;9317:73;;;8761:635;;;;;:::o;9609:592::-;9704:6;9712;9720;9728;9781:3;9769:9;9760:7;9756:23;9752:33;9749:53;;;9798:1;9795;9788:12;9749:53;9834:9;9821:23;9811:33;;9894:2;9883:9;9879:18;9866:32;9907:31;9932:5;9907:31;:::i;:::-;9957:5;-1:-1:-1;10009:2:290;9994:18;;9981:32;;-1:-1:-1;10064:2:290;10049:18;;10036:32;-1:-1:-1;;;;;10080:30:290;;10077:50;;;10123:1;10120;10113:12;10077:50;10146:49;10187:7;10178:6;10167:9;10163:22;10146:49;:::i;:::-;10136:59;;;9609:592;;;;;;;:::o;10459:658::-;10630:2;10682:21;;;10752:13;;10655:18;;;10774:22;;;10601:4;;10630:2;10853:15;;;;10827:2;10812:18;;;10601:4;10896:195;10910:6;10907:1;10904:13;10896:195;;;10975:13;;-1:-1:-1;;;;;10971:39:290;10959:52;;11066:15;;;;11031:12;;;;11007:1;10925:9;10896:195;;;-1:-1:-1;11108:3:290;;10459:658;-1:-1:-1;;;;;;10459:658:290:o;11609:348::-;11693:6;11746:2;11734:9;11725:7;11721:23;11717:32;11714:52;;;11762:1;11759;11752:12;11714:52;11802:9;11789:23;-1:-1:-1;;;;;11827:6:290;11824:30;11821:50;;;11867:1;11864;11857:12;11821:50;11890:61;11943:7;11934:6;11923:9;11919:22;11890:61;:::i;11962:315::-;12030:6;12038;12091:2;12079:9;12070:7;12066:23;12062:32;12059:52;;;12107:1;12104;12097:12;12059:52;12143:9;12130:23;12120:33;;12203:2;12192:9;12188:18;12175:32;12216:31;12241:5;12216:31;:::i;:::-;12266:5;12256:15;;;11962:315;;;;;:::o;12282:1162::-;12353:5;12406:3;12399:4;12391:6;12387:17;12383:27;12373:55;;12424:1;12421;12414:12;12373:55;12460:6;12447:20;12486:4;12510:93;12526:76;12599:2;12526:76;:::i;12510:93::-;12637:15;;;12723:1;12719:10;;;;12707:23;;12703:32;;;12668:12;;;;12747:15;;;12744:35;;;12775:1;12772;12765:12;12744:35;12811:2;12803:6;12799:15;12823:592;12839:6;12834:3;12831:15;12823:592;;;12917:4;12911:3;12906;12902:13;12898:24;12895:114;;;12963:1;12992:2;12988;12981:14;12895:114;13035:22;;:::i;:::-;13097:3;13084:17;13077:5;13070:32;13152:2;13147:3;13143:12;13130:26;13204:4;13195:7;13191:18;13182:7;13179:31;13169:129;;13252:1;13281:2;13277;13270:14;13169:129;13318:14;;;13311:31;13355:18;;13393:12;;;;12865:4;12856:14;12823:592;;13449:2242;13560:5;13589:97;13605:80;13678:6;13605:80;:::i;13589:97::-;13720:21;;;13580:106;-1:-1:-1;13760:4:290;13780:14;;;;13813:1;13849:15;;;13837:28;;13877:15;;;13874:35;;;13905:1;13902;13895:12;13874:35;13929:6;13944:1741;13960:6;13955:3;13952:15;13944:1741;;;14046:3;14033:17;-1:-1:-1;;;;;14123:2:290;14110:11;14107:19;14104:109;;;14167:1;14196:2;14192;14185:14;14104:109;14236:24;;;;14294:4;14280:12;;;14276:23;14273:113;;;14340:1;14369:2;14365;14358:14;14273:113;14412:22;;:::i;:::-;14475:2;14462:16;14491:33;14516:7;14491:33;:::i;:::-;14537:22;;14601:11;;;14588:25;14629:16;;;14626:106;;;14686:1;14715:2;14711;14704:14;14626:106;14763:8;14759:2;14755:17;14745:27;;;14814:3;14807:4;14803:2;14799:13;14795:23;14785:121;;14860:1;14850:11;;14889:2;14885;14878:14;14785:121;14943:2;14930:16;14919:27;;14972:94;14988:77;15061:3;14988:77;:::i;14972:94::-;15110:18;;;15205:12;;;15197:21;;15193:30;;;15150:14;;;;15239:17;;;15236:110;;;15298:1;15328:3;15323;15316:16;15236:110;15372:11;;;;15396:174;15414:8;15407:5;15404:19;15396:174;;;15496:19;;15482:34;;15435:14;;;;15542;;;;15396:174;;;15590:14;;;15583:29;-1:-1:-1;15625:18:290;;-1:-1:-1;;15663:12:290;;;;13977;;13944:1741;;;13948:3;;;;;13449:2242;;;;;:::o;15696:308::-;15782:5;15835:3;15828:4;15820:6;15816:17;15812:27;15802:55;;15853:1;15850;15843:12;15802:55;15875:123;15994:3;15985:6;15972:20;15965:4;15957:6;15953:17;15875:123;:::i;16009:1419::-;16352:6;16360;16368;16376;16384;16392;16445:3;16433:9;16424:7;16420:23;16416:33;16413:53;;;16462:1;16459;16452:12;16413:53;16485:29;16504:9;16485:29;:::i;:::-;16475:39;;16533:38;16567:2;16556:9;16552:18;16533:38;:::i;:::-;16523:48;;16622:2;16611:9;16607:18;16594:32;-1:-1:-1;;;;;16686:2:290;16678:6;16675:14;16672:34;;;16702:1;16699;16692:12;16672:34;16725:78;16795:7;16786:6;16775:9;16771:22;16725:78;:::i;:::-;16715:88;;16856:2;16845:9;16841:18;16828:32;16812:48;;16885:2;16875:8;16872:16;16869:36;;;16901:1;16898;16891:12;16869:36;16924:95;17011:7;17000:8;16989:9;16985:24;16924:95;:::i;:::-;16914:105;;17072:3;17061:9;17057:19;17044:33;17028:49;;17102:2;17092:8;17089:16;17086:36;;;17118:1;17115;17108:12;17086:36;17141:96;17229:7;17218:8;17207:9;17203:24;17141:96;:::i;:::-;17131:106;;17290:3;17279:9;17275:19;17262:33;17246:49;;17320:2;17310:8;17307:16;17304:36;;;17336:1;17333;17326:12;17304:36;;17359:63;17414:7;17403:8;17392:9;17388:24;17359:63;:::i;:::-;17349:73;;;16009:1419;;;;;;;;:::o;17433:550::-;17558:6;17611:2;17599:9;17590:7;17586:23;17582:32;17579:52;;;17627:1;17624;17617:12;17579:52;17667:9;17654:23;-1:-1:-1;;;;;17692:6:290;17689:30;17686:50;;;17732:1;17729;17722:12;17686:50;17755:22;;17808:4;17800:13;;17796:27;-1:-1:-1;17786:55:290;;17837:1;17834;17827:12;17786:55;17860:117;17969:7;17964:2;17951:16;17946:2;17942;17938:11;17860:117;:::i;18173:431::-;18308:6;18361:2;18349:9;18340:7;18336:23;18332:32;18329:52;;;18377:1;18374;18367:12;18329:52;18417:9;18404:23;-1:-1:-1;;;;;18442:6:290;18439:30;18436:50;;;18482:1;18479;18472:12;18436:50;18505:93;18590:7;18581:6;18570:9;18566:22;18505:93;:::i;18609:416::-;18704:6;18712;18765:2;18753:9;18744:7;18740:23;18736:32;18733:52;;;18781:1;18778;18771:12;18733:52;18821:9;18808:23;-1:-1:-1;;;;;18846:6:290;18843:30;18840:50;;;18886:1;18883;18876:12;18840:50;18909:59;18960:7;18951:6;18940:9;18936:22;18909:59;:::i;:::-;18899:69;19015:2;19000:18;;;;18987:32;;-1:-1:-1;;;;18609:416:290:o;19212:1447::-;19337:6;19368:2;19411;19399:9;19390:7;19386:23;19382:32;19379:52;;;19427:1;19424;19417:12;19379:52;19467:9;19454:23;-1:-1:-1;;;;;19492:6:290;19489:30;19486:50;;;19532:1;19529;19522:12;19486:50;19555:22;;19608:4;19600:13;;19596:27;-1:-1:-1;19586:55:290;;19637:1;19634;19627:12;19586:55;19673:2;19660:16;19696:93;19712:76;19785:2;19712:76;:::i;19696:93::-;19823:15;;;19905:1;19901:10;;;;19893:19;;19889:28;;;19854:12;;;;19929:19;;;19926:39;;;19961:1;19958;19951:12;19926:39;19985:11;;;;20005:624;20021:6;20016:3;20013:15;20005:624;;;20103:4;20097:3;20088:7;20084:17;20080:28;20077:118;;;20149:1;20178:2;20174;20167:14;20077:118;20221:22;;:::i;:::-;20283:3;20270:17;20263:5;20256:32;20338:2;20333:3;20329:12;20316:26;-1:-1:-1;;;;;20381:7:290;20377:46;20368:7;20365:59;20355:157;;20466:1;20495:2;20491;20484:14;20355:157;20532:14;;;20525:31;20569:18;;20047:4;20038:14;;;;;20607:12;;;;20005:624;;20664:456;20741:6;20749;20757;20810:2;20798:9;20789:7;20785:23;20781:32;20778:52;;;20826:1;20823;20816:12;20778:52;20865:9;20852:23;20884:31;20909:5;20884:31;:::i;:::-;20934:5;-1:-1:-1;20991:2:290;20976:18;;20963:32;21004:33;20963:32;21004:33;:::i;:::-;20664:456;;21056:7;;-1:-1:-1;;;21110:2:290;21095:18;;;;21082:32;;20664:456::o;21125:127::-;21186:10;21181:3;21177:20;21174:1;21167:31;21217:4;21214:1;21207:15;21241:4;21238:1;21231:15;21257:347;21408:2;21393:18;;21441:1;21430:13;;21420:144;;21486:10;21481:3;21477:20;21474:1;21467:31;21521:4;21518:1;21511:15;21549:4;21546:1;21539:15;21420:144;21573:25;;;21257:347;:::o;21609:632::-;21780:2;21832:21;;;21902:13;;21805:18;;;21924:22;;;21751:4;;21780:2;22003:15;;;;21977:2;21962:18;;;21751:4;22046:169;22060:6;22057:1;22054:13;22046:169;;;22121:13;;22109:26;;22190:15;;;;22155:12;;;;22082:1;22075:9;22046:169;;22246:388;22323:6;22331;22384:2;22372:9;22363:7;22359:23;22355:32;22352:52;;;22400:1;22397;22390:12;22352:52;22440:9;22427:23;-1:-1:-1;;;;;22465:6:290;22462:30;22459:50;;;22505:1;22502;22495:12;22459:50;22528:49;22569:7;22560:6;22549:9;22545:22;22528:49;:::i;22639:315::-;22707:6;22715;22768:2;22756:9;22747:7;22743:23;22739:32;22736:52;;;22784:1;22781;22774:12;22736:52;22823:9;22810:23;22842:31;22867:5;22842:31;:::i;:::-;22892:5;22944:2;22929:18;;;;22916:32;;-1:-1:-1;;;22639:315:290:o;22959:401::-;23079:6;23132:2;23120:9;23111:7;23107:23;23103:32;23100:52;;;23148:1;23145;23138:12;23100:52;23188:9;23175:23;-1:-1:-1;;;;;23213:6:290;23210:30;23207:50;;;23253:1;23250;23243:12;23207:50;23276:78;23346:7;23337:6;23326:9;23322:22;23276:78;:::i;23365:250::-;23450:1;23460:113;23474:6;23471:1;23468:13;23460:113;;;23550:11;;;23544:18;23531:11;;;23524:39;23496:2;23489:10;23460:113;;;-1:-1:-1;;23607:1:290;23589:16;;23582:27;23365:250::o;23620:271::-;23662:3;23700:5;23694:12;23727:6;23722:3;23715:19;23743:76;23812:6;23805:4;23800:3;23796:14;23789:4;23782:5;23778:16;23743:76;:::i;:::-;23873:2;23852:15;-1:-1:-1;;23848:29:290;23839:39;;;;23880:4;23835:50;;23620:271;-1:-1:-1;;23620:271:290:o;23896:220::-;24045:2;24034:9;24027:21;24008:4;24065:45;24106:2;24095:9;24091:18;24083:6;24065:45;:::i;24121:386::-;24353:1;24349;24344:3;24340:11;24336:19;24328:6;24324:32;24313:9;24306:51;24393:6;24388:2;24377:9;24373:18;24366:34;24436:2;24431;24420:9;24416:18;24409:30;24287:4;24456:45;24497:2;24486:9;24482:18;24474:6;24456:45;:::i;:::-;24448:53;24121:386;-1:-1:-1;;;;;24121:386:290:o;24512:577::-;24599:5;24593:12;24588:3;24581:25;24563:3;24652:4;24645:5;24641:16;24635:23;24694:1;24690;24685:3;24681:11;24677:19;24746:2;24732:12;24728:21;24721:4;24716:3;24712:14;24705:45;24811:2;24803:4;24796:5;24792:16;24786:23;24782:32;24775:4;24770:3;24766:14;24759:56;;;24864:4;24857:5;24853:16;24847:23;24840:4;24835:3;24831:14;24824:47;24920:4;24913:5;24909:16;24903:23;24896:4;24891:3;24887:14;24880:47;24975:4;24968:5;24964:16;24958:23;25013:4;25006;25001:3;24997:14;24990:28;25034:49;25077:4;25072:3;25068:14;25052;25034:49;:::i;25094:415::-;25327:6;25316:9;25309:25;25370:2;25365;25354:9;25350:18;25343:30;25290:4;25390:54;25440:2;25429:9;25425:18;25417:6;25390:54;:::i;:::-;25382:62;;25494:6;25487:14;25480:22;25475:2;25464:9;25460:18;25453:50;25094:415;;;;;;:::o;25514:127::-;25575:10;25570:3;25566:20;25563:1;25556:31;25606:4;25603:1;25596:15;25630:4;25627:1;25620:15;25646:125;25711:9;;;25732:10;;;25729:36;;;25745:18;;:::i;25776:127::-;25837:10;25832:3;25828:20;25825:1;25818:31;25868:4;25865:1;25858:15;25892:4;25889:1;25882:15;25908:135;25947:3;25968:17;;;25965:43;;25988:18;;:::i;:::-;-1:-1:-1;26035:1:290;26024:13;;25908:135::o;26048:263::-;26231:2;26220:9;26213:21;26194:4;26251:54;26301:2;26290:9;26286:18;26278:6;26251:54;:::i;26316:410::-;26518:2;26500:21;;;26557:2;26537:18;;;26530:30;26596:34;26591:2;26576:18;;26569:62;-1:-1:-1;;;26662:2:290;26647:18;;26640:44;26716:3;26701:19;;26316:410::o;27279:175::-;27316:3;27360:4;27353:5;27349:16;27389:4;27380:7;27377:17;27374:43;;27397:18;;:::i;:::-;27446:1;27433:15;;27279:175;-1:-1:-1;;27279:175:290:o;27459:255::-;27549:5;27543:12;27538:3;27531:25;27513:3;27602:4;27595:5;27591:16;27585:23;27640:4;27633;27628:3;27624:14;27617:28;27661:47;27702:4;27697:3;27693:14;27679:12;27661:47;:::i;27719:421::-;27960:6;27949:9;27942:25;28003:2;27998;27987:9;27983:18;27976:30;27923:4;28023:57;28076:2;28065:9;28061:18;28053:6;28023:57;:::i;:::-;28015:65;;28128:4;28120:6;28116:17;28111:2;28100:9;28096:18;28089:45;27719:421;;;;;;:::o;28145:287::-;28274:3;28312:6;28306:13;28328:66;28387:6;28382:3;28375:4;28367:6;28363:17;28328:66;:::i;:::-;28410:16;;;;;28145:287;-1:-1:-1;;28145:287:290:o;29905:441::-;29958:5;30011:3;30004:4;29996:6;29992:17;29988:27;29978:55;;30029:1;30026;30019:12;29978:55;30058:6;30052:13;30089:48;30105:31;30133:2;30105:31;:::i;30089:48::-;30162:2;30153:7;30146:19;30208:3;30201:4;30196:2;30188:6;30184:15;30180:26;30177:35;30174:55;;;30225:1;30222;30215:12;30174:55;30238:77;30312:2;30305:4;30296:7;30292:18;30285:4;30277:6;30273:17;30238:77;:::i;30351:672::-;30451:6;30504:2;30492:9;30483:7;30479:23;30475:32;30472:52;;;30520:1;30517;30510:12;30472:52;30553:9;30547:16;-1:-1:-1;;;;;30623:2:290;30615:6;30612:14;30609:34;;;30639:1;30636;30629:12;30609:34;30662:22;;;;30718:4;30700:16;;;30696:27;30693:47;;;30736:1;30733;30726:12;30693:47;30762:22;;:::i;:::-;30813:2;30807:9;30800:5;30793:24;30856:2;30852;30848:11;30842:18;30885:2;30875:8;30872:16;30869:36;;;30901:1;30898;30891:12;30869:36;30937:55;30984:7;30973:8;30969:2;30965:17;30937:55;:::i;31028:459::-;31288:1;31284;31279:3;31275:11;31271:19;31263:6;31259:32;31248:9;31241:51;31328:6;31323:2;31312:9;31308:18;31301:34;31371:6;31366:2;31355:9;31351:18;31344:34;31414:3;31409:2;31398:9;31394:18;31387:31;31222:4;31435:46;31476:3;31465:9;31461:19;31453:6;31435:46;:::i;31492:621::-;31769:6;31758:9;31751:25;31812:3;31807:2;31796:9;31792:18;31785:31;31732:4;31839:46;31880:3;31869:9;31865:19;31857:6;31839:46;:::i;:::-;31916:2;31901:18;;31894:34;;;-1:-1:-1;;;;;31964:32:290;;31959:2;31944:18;;31937:60;32034:22;;;32028:3;32013:19;;32006:51;32074:33;32038:6;32092;32074:33;:::i;:::-;32066:41;31492:621;-1:-1:-1;;;;;;;;31492:621:290:o;32118:272::-;32307:2;32296:9;32289:21;32270:4;32327:57;32380:2;32369:9;32365:18;32357:6;32327:57;:::i;32395:128::-;32462:9;;;32483:11;;;32480:37;;;32497:18;;:::i;32528:127::-;32589:10;32584:3;32580:20;32577:1;32570:31;32620:4;32617:1;32610:15;32644:4;32641:1;32634:15;33658:1023;33755:6;33808:2;33796:9;33787:7;33783:23;33779:32;33776:52;;;33824:1;33821;33814:12;33776:52;33857:9;33851:16;-1:-1:-1;;;;;33927:2:290;33919:6;33916:14;33913:34;;;33943:1;33940;33933:12;33913:34;33966:22;;;;34022:4;34004:16;;;34000:27;33997:47;;;34040:1;34037;34030:12;33997:47;34066:22;;:::i;:::-;34117:2;34111:9;34104:5;34097:24;34159:2;34155;34151:11;34145:18;34172:33;34197:7;34172:33;:::i;:::-;34232:2;34221:14;;34214:31;34283:2;34275:11;;34269:18;34296:33;34269:18;34296:33;:::i;:::-;34361:7;34356:2;34349:5;34345:14;34338:31;;34415:2;34411;34407:11;34401:18;34396:2;34389:5;34385:14;34378:42;34467:3;34463:2;34459:12;34453:19;34447:3;34440:5;34436:15;34429:44;34512:3;34508:2;34504:12;34498:19;34542:2;34532:8;34529:16;34526:36;;;34558:1;34555;34548:12;34526:36;34595:55;34642:7;34631:8;34627:2;34623:17;34595:55;:::i;:::-;34589:3;34578:15;;34571:80;-1:-1:-1;34582:5:290;33658:1023;-1:-1:-1;;;;;33658:1023:290:o;34686:277::-;34753:6;34806:2;34794:9;34785:7;34781:23;34777:32;34774:52;;;34822:1;34819;34812:12;34774:52;34854:9;34848:16;34907:5;34900:13;34893:21;34886:5;34883:32;34873:60;;34929:1;34926;34919:12", + "linkReferences": {} + }, + "methodIdentifiers": { + "allowReceiverBridgeAdapters((address,uint256[])[])": "9d0cb9d4", + "approveSenders(address[])": "90f7af54", + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": "1947051e", + "disableBridgeAdapters((address,uint256[])[])": "917cbb9b", + "disallowReceiverBridgeAdapters((address,uint256[])[])": "e3a95a5a", + "emergencyEtherTransfer(address,uint256)": "eed88b8d", + "emergencyTokenTransfer(address,address,uint256)": "a3d5b255", + "enableBridgeAdapters((address,address,uint256)[])": "0a234b15", + "forwardMessage(uint256,address,uint256,bytes)": "55c4fed4", + "getConfigurationByChain(uint256)": "6e74ebe8", + "getCurrentEnvelopeNonce()": "efe4b0ae", + "getCurrentTransactionNonce()": "654a812b", + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": "e01658d9", + "getEnvelopeState(bytes32)": "aa3f85c8", + "getForwarderBridgeAdaptersByChain(uint256)": "34f7870c", + "getReceiverBridgeAdaptersByChain(uint256)": "5b9d97c6", + "getSupportedChains()": "c4bffe2b", + "getTransactionState((uint256,bytes))": "0fb9ca41", + "getTransactionState(bytes32)": "c71cca16", + "guardian()": "452a9320", + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": "83fec72c", + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": "436bd103", + "isEnvelopeRegistered(bytes32)": "db58eaec", + "isReceiverBridgeAdapterAllowed(address,uint256)": "f62b9843", + "isSenderApproved(address)": "3805e84e", + "isTransactionForwarded((uint256,bytes))": "c37255f2", + "isTransactionForwarded(bytes32)": "9b6c7efa", + "isTransactionReceivedByAdapter(bytes32,address)": "76e5379a", + "owner()": "8da5cb5b", + "receiveCrossChainMessage(bytes,uint256)": "ed68595a", + "removeSenders(address[])": "7670d1d8", + "renounceOwnership()": "715018a6", + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": "a25d3892", + "retryTransaction(bytes,uint256,address[])": "3eb59f60", + "transferOwnership(address)": "f2fde38b", + "updateConfirmations((uint256,uint8)[])": "fe46a413", + "updateGuardian(address)": "fc525395", + "updateMessagesValidityTimestamp((uint256,uint120)[])": "a2711ff4", + "whoCanRescue()": "a4757b0f" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"BridgeAdapterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"newConfirmations\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"ConfirmationsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ERC20Rescued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isDelivered\",\"type\":\"bool\"}],\"name\":\"EnvelopeDeliveryAttempted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"EnvelopeRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldGuardian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"GuardianUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensRescued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"invalidTimestamp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"NewInvalidation\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"ReceiverBridgeAdaptersUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"isApproved\",\"type\":\"bool\"}],\"name\":\"SenderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"adapterSuccessful\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"name\":\"TransactionForwardingAttempted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"}],\"name\":\"TransactionReceived\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdaptersInput\",\"type\":\"tuple[]\"}],\"name\":\"allowReceiverBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"senders\",\"type\":\"address[]\"}],\"name\":\"approveSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"deliverEnvelope\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainForwarder.BridgeAdapterToDisable[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"disableBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"disallowReceiverBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyEtherTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"internalType\":\"struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]\",\"name\":\"bridgeAdapters\",\"type\":\"tuple[]\"}],\"name\":\"enableBridgeAdapters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"forwardMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getConfigurationByChain\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"requiredConfirmation\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"validityTimestamp\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverConfiguration\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEnvelopeNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTransactionNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"}],\"name\":\"getEnvelopeState\",\"outputs\":[{\"internalType\":\"enum ICrossChainReceiver.EnvelopeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"getEnvelopeState\",\"outputs\":[{\"internalType\":\"enum ICrossChainReceiver.EnvelopeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getForwarderBridgeAdaptersByChain\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"}],\"internalType\":\"struct ICrossChainForwarder.ChainIdBridgeConfig[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"getReceiverBridgeAdaptersByChain\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedChains\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"}],\"name\":\"getTransactionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"firstBridgedAt\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.TransactionStateWithoutAdapters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"}],\"name\":\"getTransactionState\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"confirmations\",\"type\":\"uint8\"},{\"internalType\":\"uint120\",\"name\":\"firstBridgedAt\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.TransactionStateWithoutAdapters\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"guardian\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"requiredConfirmations\",\"type\":\"uint8\"}],\"internalType\":\"struct ICrossChainReceiver.ConfirmationInput[]\",\"name\":\"initialRequiredConfirmations\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"chainIds\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]\",\"name\":\"receiverBridgeAdaptersToAllow\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"currentChainBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destinationBridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"}],\"internalType\":\"struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]\",\"name\":\"forwarderBridgeAdaptersToEnable\",\"type\":\"tuple[]\"},{\"internalType\":\"address[]\",\"name\":\"sendersToApprove\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"}],\"name\":\"isEnvelopeRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"envelopeId\",\"type\":\"bytes32\"}],\"name\":\"isEnvelopeRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"}],\"name\":\"isReceiverBridgeAdapterAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"isSenderApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"}],\"name\":\"isTransactionForwarded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"encodedEnvelope\",\"type\":\"bytes\"}],\"internalType\":\"struct Transaction\",\"name\":\"transaction\",\"type\":\"tuple\"}],\"name\":\"isTransactionForwarded\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"transactionId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"bridgeAdapter\",\"type\":\"address\"}],\"name\":\"isTransactionReceivedByAdapter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"}],\"name\":\"receiveCrossChainMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"senders\",\"type\":\"address[]\"}],\"name\":\"removeSenders\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"origin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"originChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"struct Envelope\",\"name\":\"envelope\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"retryEnvelope\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedTransaction\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"bridgeAdaptersToRetry\",\"type\":\"address[]\"}],\"name\":\"retryTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"requiredConfirmations\",\"type\":\"uint8\"}],\"internalType\":\"struct ICrossChainReceiver.ConfirmationInput[]\",\"name\":\"newConfirmations\",\"type\":\"tuple[]\"}],\"name\":\"updateConfirmations\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newGuardian\",\"type\":\"address\"}],\"name\":\"updateGuardian\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint120\",\"name\":\"validityTimestamp\",\"type\":\"uint120\"}],\"internalType\":\"struct ICrossChainReceiver.ValidityTimestampInput[]\",\"name\":\"newValidityTimestamp\",\"type\":\"tuple[]\"}],\"name\":\"updateMessagesValidityTimestamp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whoCanRescue\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"author\":\"BGD Labs\",\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC20 token failed.\"}]},\"events\":{\"BridgeAdapterUpdated(uint256,address,address,bool)\":{\"params\":{\"allowed\":\"boolean indicating if the bridge adapter is allowed or disallowed\",\"bridgeAdapter\":\"address of the bridge adapter added (deployed on current network)\",\"destinationBridgeAdapter\":\"address of the connected bridge adapter on destination chain\",\"destinationChainId\":\"id of the destination chain in our notation\"}},\"ConfirmationsUpdated(uint8,uint256)\":{\"params\":{\"chainId\":\"id of the chain updated\",\"newConfirmations\":\"number of new confirmations needed for a message to be valid\"}},\"ERC20Rescued(address,address,address,uint256)\":{\"params\":{\"amount\":\"quantity of tokens rescued\",\"caller\":\"address that triggers the rescue\",\"to\":\"address that will receive the rescued tokens\",\"token\":\"address of the rescued token\"}},\"EnvelopeDeliveryAttempted(bytes32,(uint256,address,address,uint256,uint256,bytes),bool)\":{\"params\":{\"envelope\":\"the Envelope type data\",\"envelopeId\":\"id of the envelope\",\"isDelivered\":\"flag indicating if the message has been delivered successfully\"}},\"EnvelopeRegistered(bytes32,(uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\",\"envelopeId\":\"internal id of the envelope\"}},\"GuardianUpdated(address,address)\":{\"details\":\"Event emitted when guardian gets updated\",\"params\":{\"newGuardian\":\"address of the new guardian\",\"oldGuardian\":\"address of previous guardian\"}},\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"NativeTokensRescued(address,address,uint256)\":{\"params\":{\"amount\":\"quantity of tokens rescued\",\"caller\":\"address that triggers the rescue\",\"to\":\"address that will receive the rescued tokens\"}},\"NewInvalidation(uint256,uint256)\":{\"params\":{\"chainId\":\"id of the chain updated\",\"invalidTimestamp\":\"timestamp to invalidate previous messages\"}},\"ReceiverBridgeAdaptersUpdated(address,bool,uint256)\":{\"params\":{\"allowed\":\"boolean indicating if the bridge adapter has been allowed or disallowed\",\"bridgeAdapter\":\"address of the updated bridge adapter\",\"chainId\":\"id of the chain updated\"}},\"SenderUpdated(address,bool)\":{\"params\":{\"isApproved\":\"boolean that indicates if the sender has been approved or removed\",\"sender\":\"address of the updated sender\"}},\"TransactionForwardingAttempted(bytes32,bytes32,bytes,uint256,address,address,bool,bytes)\":{\"params\":{\"adapterSuccessful\":\"adapter was able to forward the message\",\"bridgeAdapter\":\"address of the bridge adapter that failed (deployed on current network)\",\"destinationBridgeAdapter\":\"address of the connected bridge adapter on destination chain\",\"destinationChainId\":\"id of the destination chain in our notation\",\"encodedTransaction\":\"object intended to be bridged\",\"envelopeId\":\"internal id of the envelope\",\"returnData\":\"bytes with error information\",\"transactionId\":\"id of the forwarded transaction\"}},\"TransactionReceived(bytes32,bytes32,uint256,(uint256,bytes),address,uint8)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter who received the message (deployed on current network)\",\"confirmations\":\"number of current confirmations for this message\",\"envelopeId\":\"id of the envelope\",\"originChainId\":\"id of the chain where the envelope originated\",\"transaction\":\"the Transaction type data\",\"transactionId\":\"id of the transaction\"}}},\"kind\":\"dev\",\"methods\":{\"allowReceiverBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdaptersInput\":\"array of objects with the new bridge adapters and supported chains\"}},\"approveSenders(address[])\":{\"params\":{\"senders\":\"list of addresses to approve\"}},\"deliverEnvelope((uint256,address,address,uint256,uint256,bytes))\":{\"details\":\"to deliver an envelope, it needs to have been previously confirmed and not delivered\",\"params\":{\"envelope\":\"the Envelope typed data\"}},\"disableBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdapters\":\"array of bridge adapter addresses to disable\"}},\"disallowReceiverBridgeAdapters((address,uint256[])[])\":{\"params\":{\"bridgeAdaptersInput\":\"array of objects with the bridge adapters and supported chains to disallow\"}},\"emergencyEtherTransfer(address,uint256)\":{\"params\":{\"amount\":\"of eth to rescue\",\"to\":\"address to send the eth\"}},\"emergencyTokenTransfer(address,address,uint256)\":{\"params\":{\"amount\":\"of tokens to rescue\",\"erc20Token\":\"address of the token to rescue\",\"to\":\"address to send the tokens\"}},\"enableBridgeAdapters((address,address,uint256)[])\":{\"params\":{\"bridgeAdapters\":\"array of new bridge adapter configurations\"}},\"forwardMessage(uint256,address,uint256,bytes)\":{\"params\":{\"destination\":\"address where the message is intended for\",\"destinationChainId\":\"id of the destination chain where the message needs to be bridged\",\"gasLimit\":\"gas cost on receiving side of the message\",\"message\":\"bytes that need to be bridged\"},\"returns\":{\"_0\":\"internal id of the envelope and transaction\"}},\"getConfigurationByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain to get the configuration from\"},\"returns\":{\"_0\":\"the specified chain configuration object\"}},\"getCurrentEnvelopeNonce()\":{\"returns\":{\"_0\":\"the current valid envelope nonce\"}},\"getCurrentTransactionNonce()\":{\"returns\":{\"_0\":\"the current valid transaction nonce\"}},\"getEnvelopeState((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\"},\"returns\":{\"_0\":\"the envelope current state, containing if it has been confirmed and delivered\"}},\"getEnvelopeState(bytes32)\":{\"params\":{\"envelopeId\":\"id of the envelope\"},\"returns\":{\"_0\":\"the envelope current state, containing if it has been confirmed and delivered\"}},\"getForwarderBridgeAdaptersByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain we want to get the adapters from\"},\"returns\":{\"_0\":\"an array of chain configurations where the bridge adapter can communicate\"}},\"getReceiverBridgeAdaptersByChain(uint256)\":{\"params\":{\"chainId\":\"id of the chain to get the allowed bridge adapter list\"},\"returns\":{\"_0\":\"the list of allowed bridge adapters\"}},\"getSupportedChains()\":{\"returns\":{\"_0\":\"list of supported chains\"}},\"getTransactionState((uint256,bytes))\":{\"params\":{\"transaction\":\"Transaction type data\"},\"returns\":{\"_0\":\"number of confirmations of internal message identified by internalId and the updated timestamp\"}},\"getTransactionState(bytes32)\":{\"params\":{\"transactionId\":\"the id of transaction\"},\"returns\":{\"_0\":\"number of confirmations of internal message identified by the transactionId and the updated timestamp\"}},\"guardian()\":{\"details\":\"get guardian address;\"},\"initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])\":{\"params\":{\"forwarderBridgeAdaptersToEnable\":\"array specifying for every bridgeAdapter, the destinations it can have\",\"guardian\":\"address of the guardian of the cross chain controller\",\"initialRequiredConfirmations\":\"number of confirmations the messages need to be accepted as valid\",\"owner\":\"address of the owner of the cross chain controller\",\"receiverBridgeAdaptersToAllow\":\"array of addresses of the bridge adapters that can receive messages\",\"sendersToApprove\":\"array of addresses to allow as forwarders\"}},\"isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))\":{\"params\":{\"envelope\":\"the Envelope type data\"},\"returns\":{\"_0\":\"boolean indicating if the envelope has been registered\"}},\"isEnvelopeRegistered(bytes32)\":{\"params\":{\"envelopeId\":\"the hashed id of the envelope\"},\"returns\":{\"_0\":\"boolean indicating if the envelope has been registered\"}},\"isReceiverBridgeAdapterAllowed(address,uint256)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter to check\",\"chainId\":\"id of the chain to check\"},\"returns\":{\"_0\":\"boolean indicating if bridge adapter is allowed\"}},\"isSenderApproved(address)\":{\"params\":{\"sender\":\"address that we want to check if approved\"},\"returns\":{\"_0\":\"boolean indicating if the address has been approved as sender\"}},\"isTransactionForwarded((uint256,bytes))\":{\"params\":{\"transaction\":\"the Transaction type data\"},\"returns\":{\"_0\":\"flag indicating if a transaction has been forwarded\"}},\"isTransactionForwarded(bytes32)\":{\"params\":{\"transactionId\":\"hashed id of the transaction\"},\"returns\":{\"_0\":\"flag indicating if a transaction has been forwarded\"}},\"isTransactionReceivedByAdapter(bytes32,address)\":{\"params\":{\"bridgeAdapter\":\"address of the bridge adapter to check if it has bridged the message\",\"transactionId\":\"id of the transaction as stored internally\"},\"returns\":{\"_0\":\"boolean indicating if the message has been received\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"receiveCrossChainMessage(bytes,uint256)\":{\"params\":{\"encodedTransaction\":\"bytes containing the bridged information\",\"originChainId\":\"id of the chain where the transaction originated\"}},\"removeSenders(address[])\":{\"params\":{\"senders\":\"list of addresses to remove\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)\":{\"details\":\"This method will send an existing Envelope using a new Transaction.This method should be used when the intention is to send the Envelope as if it was a new message. This way on the Receiver side it will start from 0 to count for the required confirmations. (usual use case would be for when an envelope has been invalidated on Receiver side, and needs to be retried as a new message)\",\"params\":{\"envelope\":\"the Envelope type data\",\"gasLimit\":\"gas cost on receiving side of the message\"},\"returns\":{\"_0\":\"the transaction id that has the retried envelope\"}},\"retryTransaction(bytes,uint256,address[])\":{\"details\":\"This method will send an existing Transaction with its Envelope to the specified adapters.Should be used when some of the bridges on the initial forwarding did not work (out of gas), and we want the Transaction with Envelope to still account for the required confirmations on the Receiver side\",\"params\":{\"bridgeAdaptersToRetry\":\"list of bridge adapters to be used for the transaction forwarding retry\",\"encodedTransaction\":\"the encoded Transaction data\",\"gasLimit\":\"limit of gas to spend on forwarding per bridge\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"updateConfirmations((uint256,uint8)[])\":{\"params\":{\"newConfirmations\":\"array of objects with the chainId and the new number of needed confirmations\"}},\"updateGuardian(address)\":{\"details\":\"method to update the guardian\",\"params\":{\"newGuardian\":\"the new guardian address\"}},\"updateMessagesValidityTimestamp((uint256,uint120)[])\":{\"params\":{\"newValidityTimestamp\":\"array of objects containing the chain and timestamp where all the previous unconfirmed messages must be invalidated.\"}},\"whoCanRescue()\":{\"returns\":{\"_0\":\"the allowed address\"}}},\"title\":\"CrossChainController\",\"version\":1},\"userdoc\":{\"events\":{\"BridgeAdapterUpdated(uint256,address,address,bool)\":{\"notice\":\"emitted when a bridge adapter has been added to the allowed list\"},\"ConfirmationsUpdated(uint8,uint256)\":{\"notice\":\"emitted when number of confirmations needed to validate a message changes\"},\"ERC20Rescued(address,address,address,uint256)\":{\"notice\":\"emitted when erc20 tokens get rescued\"},\"EnvelopeDeliveryAttempted(bytes32,(uint256,address,address,uint256,uint256,bytes),bool)\":{\"notice\":\"emitted when an envelope has been delivery attempted\"},\"EnvelopeRegistered(bytes32,(uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"emitted when a transaction is successfully forwarded through a bridge adapter\"},\"NativeTokensRescued(address,address,uint256)\":{\"notice\":\"emitted when native tokens get rescued\"},\"NewInvalidation(uint256,uint256)\":{\"notice\":\"emitted when a new timestamp for invalidations gets set\"},\"ReceiverBridgeAdaptersUpdated(address,bool,uint256)\":{\"notice\":\"emitted when a bridge adapter gets updated (allowed or disallowed)\"},\"SenderUpdated(address,bool)\":{\"notice\":\"emitted when a sender has been updated\"},\"TransactionForwardingAttempted(bytes32,bytes32,bytes,uint256,address,address,bool,bytes)\":{\"notice\":\"emitted when a transaction forwarding is attempted through a bridge adapter\"},\"TransactionReceived(bytes32,bytes32,uint256,(uint256,bytes),address,uint8)\":{\"notice\":\"emitted when a transaction has been received successfully\"}},\"kind\":\"user\",\"methods\":{\"allowReceiverBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to add bridge adapters to the allowed list\"},\"approveSenders(address[])\":{\"notice\":\"method to approve new sender addresses\"},\"deliverEnvelope((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to deliver an envelope to its destination\"},\"disableBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to disable bridge adapters\"},\"disallowReceiverBridgeAdapters((address,uint256[])[])\":{\"notice\":\"method to remove bridge adapters from the allowed list\"},\"emergencyEtherTransfer(address,uint256)\":{\"notice\":\"method called to rescue ether sent erroneously to the contract. Only callable by owner\"},\"emergencyTokenTransfer(address,address,uint256)\":{\"notice\":\"method called to rescue tokens sent erroneously to the contract. Only callable by owner\"},\"enableBridgeAdapters((address,address,uint256)[])\":{\"notice\":\"method to enable bridge adapters\"},\"forwardMessage(uint256,address,uint256,bytes)\":{\"notice\":\"method called to initiate message forwarding to other networks.\"},\"getConfigurationByChain(uint256)\":{\"notice\":\"method to get the current configuration of a chain\"},\"getCurrentEnvelopeNonce()\":{\"notice\":\"method to get the current valid envelope nonce\"},\"getCurrentTransactionNonce()\":{\"notice\":\"method to get the current valid transaction nonce\"},\"getEnvelopeState((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to get the internal state of an envelope\"},\"getEnvelopeState(bytes32)\":{\"notice\":\"method to get the internal state of an envelope\"},\"getForwarderBridgeAdaptersByChain(uint256)\":{\"notice\":\"method to get all the forwarder bridge adapters of a chain\"},\"getReceiverBridgeAdaptersByChain(uint256)\":{\"notice\":\"method to get the current allowed receiver bridge adapters for a chain\"},\"getSupportedChains()\":{\"notice\":\"method to get the current supported chains (at least one allowed bridge adapter)\"},\"getTransactionState((uint256,bytes))\":{\"notice\":\"method to get the internal transaction information\"},\"getTransactionState(bytes32)\":{\"notice\":\"method to get the current state of a transaction\"},\"initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])\":{\"notice\":\"method called to initialize the proxy\"},\"isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))\":{\"notice\":\"method to check if a envelope has been previously forwarded.\"},\"isEnvelopeRegistered(bytes32)\":{\"notice\":\"method to check if a envelope has been previously forwarded.\"},\"isReceiverBridgeAdapterAllowed(address,uint256)\":{\"notice\":\"method to get if a bridge adapter is allowed\"},\"isSenderApproved(address)\":{\"notice\":\"method to get if a sender is approved\"},\"isTransactionForwarded((uint256,bytes))\":{\"notice\":\"method to get if a transaction has been forwarded\"},\"isTransactionForwarded(bytes32)\":{\"notice\":\"method to get if a transaction has been forwarded\"},\"isTransactionReceivedByAdapter(bytes32,address)\":{\"notice\":\"method to get if transaction has been received by bridge adapter\"},\"receiveCrossChainMessage(bytes,uint256)\":{\"notice\":\"method that receives a bridged transaction and tries to deliver the contents to destination if possible\"},\"removeSenders(address[])\":{\"notice\":\"method to remove sender addresses\"},\"retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)\":{\"notice\":\"method called to re forward a previously sent envelope.\"},\"retryTransaction(bytes,uint256,address[])\":{\"notice\":\"method to retry forwarding an already forwarded transaction\"},\"updateConfirmations((uint256,uint8)[])\":{\"notice\":\"method to update the number of confirmations necessary for the messages to be accepted as valid\"},\"updateMessagesValidityTimestamp((uint256,uint120)[])\":{\"notice\":\"method to set a new timestamp from where the messages will be valid.\"},\"whoCanRescue()\":{\"notice\":\"method that defines the address that is allowed to rescue tokens\"}},\"notice\":\"CrossChainController contract adopted for usage on the chain where Governance deployed (mainnet in our case)\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/contracts/CrossChainController.sol\":\"CrossChainController\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/\",\":@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":aave-address-book/=lib/aave-address-book/src/\",\":aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/\",\":aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":fx-portal/=lib/fx-portal/contracts/\",\":hyperlane-monorepo/=lib/hyperlane-monorepo/solidity/contracts/\",\":nitro-contracts/=lib/nitro-contracts/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-utils/=lib/solidity-utils/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df\",\"dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW\"]},\"lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol\":{\"keccak256\":\"0x097e97cbceb38880d74db6311ffbaf158aa9e0735ec51367c60853d6eb811ff1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f83b6aa842af14fe0a8bc1ec8f844d69bf490873d72cb324462ae5f59a9267b\",\"dweb:/ipfs/QmRYv2HhJdULNQt9aTCsKWQdEVmDyjLfj3qJS3xUd4FyPF\"]},\"lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol\":{\"keccak256\":\"0x2fd8f1a5a9da521eda9d424c0764e9ceac7c3d1afa90ac9124249c5a3c7d9d1a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75ac28fae9d3a5cf111c6abc70f8a410a89f852d0dd5835bd29f6e0d0e837bc5\",\"dweb:/ipfs/QmcU48h5Lxc74jLfVrdzFkjWdLRStiz1w5GmBBx58kJo6s\"]},\"lib/solidity-utils/src/contracts/oz-common/Address.sol\":{\"keccak256\":\"0xe641fb89c32466792ed9877ec915c699acfe5c04c655cf9e67738093a40c962c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://597b0804825a4c6acbec4e466f30138a527da64a8dd3cc7ae69a68d046e8852e\",\"dweb:/ipfs/QmVvhwnnWvMkaYNcfyeihW1ajwDiGhVV6KcTNoPD9HCVym\"]},\"lib/solidity-utils/src/contracts/oz-common/Context.sol\":{\"keccak256\":\"0x6912c0cdc79f627eaa1511695fa0c14389681720812e5548645774d784bc24df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f2ae1b63c4be0f695d721e28361b34fe22a2e7e05723ca466b3ad2dde73db6f\",\"dweb:/ipfs/Qman92tY6xcqnXZa59TJiJKtf4Hhe5hhJrdERiStBV8EiK\"]},\"lib/solidity-utils/src/contracts/oz-common/Ownable.sol\":{\"keccak256\":\"0x5566fcff7455a22cde32daecec5c44c893dddee1472063f2dcd301e844eabd00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://306860d4e8ecf8cf5928dd757f0e8f8530f05791a0a133acfc9be91d8e75f24a\",\"dweb:/ipfs/QmeuzENUkcz5GFTsXJUsMj1NpjbHg8hNJPDBtWzLAnEjkm\"]},\"lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol\":{\"keccak256\":\"0x42c6ca0e62e6a0d93137f11377ef4888c19d3c503169692f36f32076887059b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ac0120428aad94493baa9454143b7d0e0d1f063278abcad3ea24a1cadc84371\",\"dweb:/ipfs/QmepMxuDv7SthD9c2EyD4wzPNkchHrRmDKcUEMg8ueV6Fr\"]},\"lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20.sol\":{\"keccak256\":\"0x510a088112e38933c8eff10816a3f74a0ea2365dc0914384b9097cdb62d8db69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a3f702a4bfbec4bb8604174d80de82d5960b8997cd5b832c6f9a1850593e4bd4\",\"dweb:/ipfs/QmfXs5ejLkLQKYAg2RSm2woaAhZya6oVPeDs7T5yrAWBhT\"]},\"lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20Permit.sol\":{\"keccak256\":\"0xf455056affbe27997d7cdfbb7ee3b8e7cdef3c2f6b71d97cc204cb1621440193\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ce1d2a17f6d32246ec54ebf5e1fcfd72d48d606bb4c192a4e1051d08de2b20c\",\"dweb:/ipfs/QmZSPGWfJAzBudcsLQaMXwhQvg3X2Jya5NvxkSGy7ViCFa\"]},\"lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol\":{\"keccak256\":\"0x13984ac6962308e94d92148e47eb4cd31c113b2a4798246714f2235ab9d9d7a9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77edd0450d7c6bd07544bc4597845f2e7840ab19504d5286928f93a431e0e831\",\"dweb:/ipfs/Qmddubpa2kF6UEsuiWtCuLjEDjk6EPz1AzqqyabwqJ1jaS\"]},\"lib/solidity-utils/src/contracts/utils/Rescuable.sol\":{\"keccak256\":\"0xf7b7704dda57414708709251229583c917874f89a439e998b3347ee9340a95f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59a79763e07df9fd1ead7eb7b474e5b42927065db1e63dfb012a715887667a27\",\"dweb:/ipfs/QmbZ7v236pDXPZVm4GnsgLp5sQM2ii83r2q41G1ywpThba\"]},\"lib/solidity-utils/src/contracts/utils/interfaces/IRescuable.sol\":{\"keccak256\":\"0xb7339cccbe91b2b0d9bd9adf4be58605ee75032eead9e3213304c6ae5ba108c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09db6f6a18144eb4a47353163408cebd32499b2611972cc8ddffc257654780b1\",\"dweb:/ipfs/Qmb6A7wFipu6seiUG3n2LoeWo91Nrj9xsapJKqEXExe7MX\"]},\"src/contracts/BaseCrossChainController.sol\":{\"keccak256\":\"0x800641fd2b769118df88683020ffc0907a13ebc2a2817ef565c064152d0f35d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://2e86be71893e841b44f985f18af77071b7119587bfe09bb8aaf71d2f9a7edcac\",\"dweb:/ipfs/QmTFgyzGdzRXe4ZNQn2tN51NcACgSdWAF2VAF7pExmEkU7\"]},\"src/contracts/CrossChainController.sol\":{\"keccak256\":\"0x3cf72ab0d7673cb4261965ab31a2b8ba9567bcce68e6f83283da94d36da8da76\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e2b8a78275e8200fcd2e434ad11d178ba816faabfc53eda845724aa002940d1c\",\"dweb:/ipfs/QmZ5FaZLnA92he1U95KFvEWdYKSu6SAEYnxQXJN1zMknsJ\"]},\"src/contracts/CrossChainForwarder.sol\":{\"keccak256\":\"0xbef311a4d79ee901ccae60b8ed8f88dd1559f799895458a48a92e6a6d114a6c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://3e237a8732716c69aaec8fd56d286ebe58a819c250b23ae7a693b1acd1350760\",\"dweb:/ipfs/QmPtPfhUNQoXwYaHhDX15JNcHesn1zERix6sfSVyEyjGGn\"]},\"src/contracts/CrossChainReceiver.sol\":{\"keccak256\":\"0x9a3613b6a4e0c2bdf82c917c7d6f108320cd62ef33e3fef49c3ef87ae405c6b8\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://94bb65cfcdd811affe0947f90148b0c20fc78211444ca14b07c6dec4ded8f58c\",\"dweb:/ipfs/QmVyn5oe8CYWS5dzUsk2BbXUoZ9ppx3w44vq9zp1bEKJ5C\"]},\"src/contracts/adapters/IBaseAdapter.sol\":{\"keccak256\":\"0x97ef80b6aeebf7ced38ac3816fd57e5eabd58ae251d47f17b63d2981b1f92e8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://57a009f5ed843cfa18508b9f36eeaa521f233563553c9d16e80eaba90f81369b\",\"dweb:/ipfs/QmaABhvQyMjF43qshQAH5hWrNqkWfYhYqHSYBmAgq6icug\"]},\"src/contracts/interfaces/IBaseCrossChainController.sol\":{\"keccak256\":\"0x5d226f4f433e4b73650f8f1a749eac15f44c537d2561b44fb8b979221d2fa22b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20ec37bc28bd5bb67940021014f169a90912b8c281f4220949ea9e6e940116c9\",\"dweb:/ipfs/QmXH9QBmoApfSYR82ZRVpu2JGekdE4116puXrJgkfLEdYe\"]},\"src/contracts/interfaces/IBaseReceiverPortal.sol\":{\"keccak256\":\"0x636561bf24807679c5a877b7394308545dc028fe76932d15257098be5991959f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e5f47d74b026fc94aaeec2fd74adc081dca753881b8a84265a34a7462d31b7b\",\"dweb:/ipfs/QmVWnGLdJshoWJJwMZKNZS76auTNBTZgswvLUduUxCoja2\"]},\"src/contracts/interfaces/ICrossChainController.sol\":{\"keccak256\":\"0x3e7285b5e32f47a8c352d3583d8bd892f5e89dfd63f48a532f972fbdf238e954\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d42a2ded743fd9f5d614a0d85a5065b05e90b4c517b6935f2a1076f7bbf23a7f\",\"dweb:/ipfs/QmRhceFdsSYSjrpkMkWXxvGbxRduyLER5sBVBN8uiwHkwg\"]},\"src/contracts/interfaces/ICrossChainForwarder.sol\":{\"keccak256\":\"0x7c67c32148d66de52ca28ae18c115b10753772aacd6dd020280590f137cc2056\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4077ddc3e091ee38556a7c0797de9b1608f32765d9f62a07efea6505bbebfa7c\",\"dweb:/ipfs/Qmbns917YEfng8nqn8wu3KnKBy562K7uWK3kxfzRsPdY27\"]},\"src/contracts/interfaces/ICrossChainReceiver.sol\":{\"keccak256\":\"0xf55d606adfb99cf829845731241d6eff48ef3a36153290fb6daf7af2250e3ec5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1331b21d98f083181beb5f1f9b817757760a4ef3d79665e118fb4036ca7c056a\",\"dweb:/ipfs/QmUXUZeess24rcSjXxo1geCu9BxG4X7ivEHGKhSy6bPbmW\"]},\"src/contracts/libs/EncodingUtils.sol\":{\"keccak256\":\"0xe778561273ede6b3db73f2fb7b2b443cf0a733a209967af59db107406b68964a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7361dd55dee3cf7bd053d7cd289e148c9451e98c8126672e6287f4e769ab8fba\",\"dweb:/ipfs/QmeH1cwptCar31XamSH2QHSeG4BrS86KNdAbnvk6VGFvLB\"]},\"src/contracts/libs/Errors.sol\":{\"keccak256\":\"0x4a4502debe85d126eb37f8268d2d816636ae21c08b0dae7f26cb11d2bae0f80d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab72c20ea1e07f3bf567cddd96a0749b9a0afb0beefdc9a6f589657f4f97bc39\",\"dweb:/ipfs/QmXXu7CRbhhHqpjdvoBanTsf7wjD6N457ho3vE2dprSy2S\"]}},\"version\":1}", + "metadata": { + "compiler": { "version": "0.8.19+commit.7dd6d404" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [{ "internalType": "address", "name": "token", "type": "address" }], + "type": "error", + "name": "SafeERC20FailedOperation" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256", "indexed": true }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address", "indexed": false }, + { "internalType": "bool", "name": "allowed", "type": "bool", "indexed": true } + ], + "type": "event", + "name": "BridgeAdapterUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "uint8", "name": "newConfirmations", "type": "uint8", "indexed": false }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "ConfirmationsUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address", "indexed": true }, + { "internalType": "address", "name": "token", "type": "address", "indexed": true }, + { "internalType": "address", "name": "to", "type": "address", "indexed": true }, + { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } + ], + "type": "event", + "name": "ERC20Rescued", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": false }, + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "indexed": false + }, + { "internalType": "bool", "name": "isDelivered", "type": "bool", "indexed": false } + ], + "type": "event", + "name": "EnvelopeDeliveryAttempted", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "indexed": false + } + ], + "type": "event", + "name": "EnvelopeRegistered", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "oldGuardian", "type": "address", "indexed": false }, + { "internalType": "address", "name": "newGuardian", "type": "address", "indexed": false } + ], + "type": "event", + "name": "GuardianUpdated", + "anonymous": false + }, + { + "inputs": [{ "internalType": "uint8", "name": "version", "type": "uint8", "indexed": false }], + "type": "event", + "name": "Initialized", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "caller", "type": "address", "indexed": true }, + { "internalType": "address", "name": "to", "type": "address", "indexed": true }, + { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false } + ], + "type": "event", + "name": "NativeTokensRescued", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "uint256", "name": "invalidTimestamp", "type": "uint256", "indexed": false }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "NewInvalidation", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "previousOwner", "type": "address", "indexed": true }, + { "internalType": "address", "name": "newOwner", "type": "address", "indexed": true } + ], + "type": "event", + "name": "OwnershipTransferred", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "bool", "name": "allowed", "type": "bool", "indexed": true }, + { "internalType": "uint256", "name": "chainId", "type": "uint256", "indexed": true } + ], + "type": "event", + "name": "ReceiverBridgeAdaptersUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address", "indexed": true }, + { "internalType": "bool", "name": "isApproved", "type": "bool", "indexed": true } + ], + "type": "event", + "name": "SenderUpdated", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32", "indexed": false }, + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes", "indexed": false }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256", "indexed": false }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address", "indexed": false }, + { "internalType": "bool", "name": "adapterSuccessful", "type": "bool", "indexed": true }, + { "internalType": "bytes", "name": "returnData", "type": "bytes", "indexed": false } + ], + "type": "event", + "name": "TransactionForwardingAttempted", + "anonymous": false + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32", "indexed": false }, + { "internalType": "bytes32", "name": "envelopeId", "type": "bytes32", "indexed": true }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256", "indexed": true }, + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ], + "indexed": false + }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address", "indexed": true }, + { "internalType": "uint8", "name": "confirmations", "type": "uint8", "indexed": false } + ], + "type": "event", + "name": "TransactionReceived", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "bridgeAdaptersInput", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "allowReceiverBridgeAdapters" + }, + { + "inputs": [{ "internalType": "address[]", "name": "senders", "type": "address[]" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "approveSenders" + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deliverEnvelope" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainForwarder.BridgeAdapterToDisable[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "disableBridgeAdapters" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "disallowReceiverBridgeAdapters" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emergencyEtherTransfer" + }, + { + "inputs": [ + { "internalType": "address", "name": "erc20Token", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "emergencyTokenTransfer" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "name": "bridgeAdapters", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "enableBridgeAdapters" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "forwardMessage", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" }, + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getConfigurationByChain", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.ReceiverConfiguration", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "requiredConfirmation", "type": "uint8" }, + { "internalType": "uint120", "name": "validityTimestamp", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getCurrentEnvelopeNonce", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getCurrentTransactionNonce", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "envelopeId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "getEnvelopeState", + "outputs": [{ "internalType": "enum ICrossChainReceiver.EnvelopeState", "name": "", "type": "uint8" }] + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "getEnvelopeState", + "outputs": [{ "internalType": "enum ICrossChainReceiver.EnvelopeState", "name": "", "type": "uint8" }] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getForwarderBridgeAdaptersByChain", + "outputs": [ + { + "internalType": "struct ICrossChainForwarder.ChainIdBridgeConfig[]", + "name": "", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" } + ] + } + ] + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function", + "name": "getReceiverBridgeAdaptersByChain", + "outputs": [{ "internalType": "address[]", "name": "", "type": "address[]" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "getSupportedChains", + "outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }] + }, + { + "inputs": [ + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "getTransactionState", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "confirmations", "type": "uint8" }, + { "internalType": "uint120", "name": "firstBridgedAt", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "getTransactionState", + "outputs": [ + { + "internalType": "struct ICrossChainReceiver.TransactionStateWithoutAdapters", + "name": "", + "type": "tuple", + "components": [ + { "internalType": "uint8", "name": "confirmations", "type": "uint8" }, + { "internalType": "uint120", "name": "firstBridgedAt", "type": "uint120" } + ] + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "guardian", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "guardian", "type": "address" }, + { + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "name": "initialRequiredConfirmations", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint8", "name": "requiredConfirmations", "type": "uint8" } + ] + }, + { + "internalType": "struct ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[]", + "name": "receiverBridgeAdaptersToAllow", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256[]", "name": "chainIds", "type": "uint256[]" } + ] + }, + { + "internalType": "struct ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]", + "name": "forwarderBridgeAdaptersToEnable", + "type": "tuple[]", + "components": [ + { "internalType": "address", "name": "currentChainBridgeAdapter", "type": "address" }, + { "internalType": "address", "name": "destinationBridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" } + ] + }, + { "internalType": "address[]", "name": "sendersToApprove", "type": "address[]" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "initialize" + }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "isEnvelopeRegistered", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "envelopeId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "isEnvelopeRegistered", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "address", "name": "bridgeAdapter", "type": "address" }, + { "internalType": "uint256", "name": "chainId", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function", + "name": "isReceiverBridgeAdapterAllowed", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }], + "stateMutability": "view", + "type": "function", + "name": "isSenderApproved", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [{ "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }], + "stateMutability": "view", + "type": "function", + "name": "isTransactionForwarded", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { + "internalType": "struct Transaction", + "name": "transaction", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "bytes", "name": "encodedEnvelope", "type": "bytes" } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "isTransactionForwarded", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [ + { "internalType": "bytes32", "name": "transactionId", "type": "bytes32" }, + { "internalType": "address", "name": "bridgeAdapter", "type": "address" } + ], + "stateMutability": "view", + "type": "function", + "name": "isTransactionReceivedByAdapter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "owner", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "receiveCrossChainMessage" + }, + { + "inputs": [{ "internalType": "address[]", "name": "senders", "type": "address[]" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "removeSenders" + }, + { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "renounceOwnership" }, + { + "inputs": [ + { + "internalType": "struct Envelope", + "name": "envelope", + "type": "tuple", + "components": [ + { "internalType": "uint256", "name": "nonce", "type": "uint256" }, + { "internalType": "address", "name": "origin", "type": "address" }, + { "internalType": "address", "name": "destination", "type": "address" }, + { "internalType": "uint256", "name": "originChainId", "type": "uint256" }, + { "internalType": "uint256", "name": "destinationChainId", "type": "uint256" }, + { "internalType": "bytes", "name": "message", "type": "bytes" } + ] + }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "retryEnvelope", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }] + }, + { + "inputs": [ + { "internalType": "bytes", "name": "encodedTransaction", "type": "bytes" }, + { "internalType": "uint256", "name": "gasLimit", "type": "uint256" }, + { "internalType": "address[]", "name": "bridgeAdaptersToRetry", "type": "address[]" } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "retryTransaction" + }, + { + "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "transferOwnership" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ConfirmationInput[]", + "name": "newConfirmations", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint8", "name": "requiredConfirmations", "type": "uint8" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateConfirmations" + }, + { + "inputs": [{ "internalType": "address", "name": "newGuardian", "type": "address" }], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateGuardian" + }, + { + "inputs": [ + { + "internalType": "struct ICrossChainReceiver.ValidityTimestampInput[]", + "name": "newValidityTimestamp", + "type": "tuple[]", + "components": [ + { "internalType": "uint256", "name": "chainId", "type": "uint256" }, + { "internalType": "uint120", "name": "validityTimestamp", "type": "uint120" } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "updateMessagesValidityTimestamp" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "whoCanRescue", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }] + }, + { "inputs": [], "stateMutability": "payable", "type": "receive" } + ], + "devdoc": { + "kind": "dev", + "methods": { + "allowReceiverBridgeAdapters((address,uint256[])[])": { + "params": { "bridgeAdaptersInput": "array of objects with the new bridge adapters and supported chains" } + }, + "approveSenders(address[])": { "params": { "senders": "list of addresses to approve" } }, + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": { + "details": "to deliver an envelope, it needs to have been previously confirmed and not delivered", + "params": { "envelope": "the Envelope typed data" } + }, + "disableBridgeAdapters((address,uint256[])[])": { + "params": { "bridgeAdapters": "array of bridge adapter addresses to disable" } + }, + "disallowReceiverBridgeAdapters((address,uint256[])[])": { + "params": { + "bridgeAdaptersInput": "array of objects with the bridge adapters and supported chains to disallow" + } + }, + "emergencyEtherTransfer(address,uint256)": { + "params": { "amount": "of eth to rescue", "to": "address to send the eth" } + }, + "emergencyTokenTransfer(address,address,uint256)": { + "params": { + "amount": "of tokens to rescue", + "erc20Token": "address of the token to rescue", + "to": "address to send the tokens" + } + }, + "enableBridgeAdapters((address,address,uint256)[])": { + "params": { "bridgeAdapters": "array of new bridge adapter configurations" } + }, + "forwardMessage(uint256,address,uint256,bytes)": { + "params": { + "destination": "address where the message is intended for", + "destinationChainId": "id of the destination chain where the message needs to be bridged", + "gasLimit": "gas cost on receiving side of the message", + "message": "bytes that need to be bridged" + }, + "returns": { "_0": "internal id of the envelope and transaction" } + }, + "getConfigurationByChain(uint256)": { + "params": { "chainId": "id of the chain to get the configuration from" }, + "returns": { "_0": "the specified chain configuration object" } + }, + "getCurrentEnvelopeNonce()": { "returns": { "_0": "the current valid envelope nonce" } }, + "getCurrentTransactionNonce()": { "returns": { "_0": "the current valid transaction nonce" } }, + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": { + "params": { "envelope": "the Envelope type data" }, + "returns": { "_0": "the envelope current state, containing if it has been confirmed and delivered" } + }, + "getEnvelopeState(bytes32)": { + "params": { "envelopeId": "id of the envelope" }, + "returns": { "_0": "the envelope current state, containing if it has been confirmed and delivered" } + }, + "getForwarderBridgeAdaptersByChain(uint256)": { + "params": { "chainId": "id of the chain we want to get the adapters from" }, + "returns": { "_0": "an array of chain configurations where the bridge adapter can communicate" } + }, + "getReceiverBridgeAdaptersByChain(uint256)": { + "params": { "chainId": "id of the chain to get the allowed bridge adapter list" }, + "returns": { "_0": "the list of allowed bridge adapters" } + }, + "getSupportedChains()": { "returns": { "_0": "list of supported chains" } }, + "getTransactionState((uint256,bytes))": { + "params": { "transaction": "Transaction type data" }, + "returns": { + "_0": "number of confirmations of internal message identified by internalId and the updated timestamp" + } + }, + "getTransactionState(bytes32)": { + "params": { "transactionId": "the id of transaction" }, + "returns": { + "_0": "number of confirmations of internal message identified by the transactionId and the updated timestamp" + } + }, + "guardian()": { "details": "get guardian address;" }, + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": { + "params": { + "forwarderBridgeAdaptersToEnable": "array specifying for every bridgeAdapter, the destinations it can have", + "guardian": "address of the guardian of the cross chain controller", + "initialRequiredConfirmations": "number of confirmations the messages need to be accepted as valid", + "owner": "address of the owner of the cross chain controller", + "receiverBridgeAdaptersToAllow": "array of addresses of the bridge adapters that can receive messages", + "sendersToApprove": "array of addresses to allow as forwarders" + } + }, + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": { + "params": { "envelope": "the Envelope type data" }, + "returns": { "_0": "boolean indicating if the envelope has been registered" } + }, + "isEnvelopeRegistered(bytes32)": { + "params": { "envelopeId": "the hashed id of the envelope" }, + "returns": { "_0": "boolean indicating if the envelope has been registered" } + }, + "isReceiverBridgeAdapterAllowed(address,uint256)": { + "params": { + "bridgeAdapter": "address of the bridge adapter to check", + "chainId": "id of the chain to check" + }, + "returns": { "_0": "boolean indicating if bridge adapter is allowed" } + }, + "isSenderApproved(address)": { + "params": { "sender": "address that we want to check if approved" }, + "returns": { "_0": "boolean indicating if the address has been approved as sender" } + }, + "isTransactionForwarded((uint256,bytes))": { + "params": { "transaction": "the Transaction type data" }, + "returns": { "_0": "flag indicating if a transaction has been forwarded" } + }, + "isTransactionForwarded(bytes32)": { + "params": { "transactionId": "hashed id of the transaction" }, + "returns": { "_0": "flag indicating if a transaction has been forwarded" } + }, + "isTransactionReceivedByAdapter(bytes32,address)": { + "params": { + "bridgeAdapter": "address of the bridge adapter to check if it has bridged the message", + "transactionId": "id of the transaction as stored internally" + }, + "returns": { "_0": "boolean indicating if the message has been received" } + }, + "owner()": { "details": "Returns the address of the current owner." }, + "receiveCrossChainMessage(bytes,uint256)": { + "params": { + "encodedTransaction": "bytes containing the bridged information", + "originChainId": "id of the chain where the transaction originated" + } + }, + "removeSenders(address[])": { "params": { "senders": "list of addresses to remove" } }, + "renounceOwnership()": { + "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner." + }, + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": { + "details": "This method will send an existing Envelope using a new Transaction.This method should be used when the intention is to send the Envelope as if it was a new message. This way on the Receiver side it will start from 0 to count for the required confirmations. (usual use case would be for when an envelope has been invalidated on Receiver side, and needs to be retried as a new message)", + "params": { "envelope": "the Envelope type data", "gasLimit": "gas cost on receiving side of the message" }, + "returns": { "_0": "the transaction id that has the retried envelope" } + }, + "retryTransaction(bytes,uint256,address[])": { + "details": "This method will send an existing Transaction with its Envelope to the specified adapters.Should be used when some of the bridges on the initial forwarding did not work (out of gas), and we want the Transaction with Envelope to still account for the required confirmations on the Receiver side", + "params": { + "bridgeAdaptersToRetry": "list of bridge adapters to be used for the transaction forwarding retry", + "encodedTransaction": "the encoded Transaction data", + "gasLimit": "limit of gas to spend on forwarding per bridge" + } + }, + "transferOwnership(address)": { + "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." + }, + "updateConfirmations((uint256,uint8)[])": { + "params": { + "newConfirmations": "array of objects with the chainId and the new number of needed confirmations" + } + }, + "updateGuardian(address)": { + "details": "method to update the guardian", + "params": { "newGuardian": "the new guardian address" } + }, + "updateMessagesValidityTimestamp((uint256,uint120)[])": { + "params": { + "newValidityTimestamp": "array of objects containing the chain and timestamp where all the previous unconfirmed messages must be invalidated." + } + }, + "whoCanRescue()": { "returns": { "_0": "the allowed address" } } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "allowReceiverBridgeAdapters((address,uint256[])[])": { + "notice": "method to add bridge adapters to the allowed list" + }, + "approveSenders(address[])": { "notice": "method to approve new sender addresses" }, + "deliverEnvelope((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to deliver an envelope to its destination" + }, + "disableBridgeAdapters((address,uint256[])[])": { "notice": "method to disable bridge adapters" }, + "disallowReceiverBridgeAdapters((address,uint256[])[])": { + "notice": "method to remove bridge adapters from the allowed list" + }, + "emergencyEtherTransfer(address,uint256)": { + "notice": "method called to rescue ether sent erroneously to the contract. Only callable by owner" + }, + "emergencyTokenTransfer(address,address,uint256)": { + "notice": "method called to rescue tokens sent erroneously to the contract. Only callable by owner" + }, + "enableBridgeAdapters((address,address,uint256)[])": { "notice": "method to enable bridge adapters" }, + "forwardMessage(uint256,address,uint256,bytes)": { + "notice": "method called to initiate message forwarding to other networks." + }, + "getConfigurationByChain(uint256)": { "notice": "method to get the current configuration of a chain" }, + "getCurrentEnvelopeNonce()": { "notice": "method to get the current valid envelope nonce" }, + "getCurrentTransactionNonce()": { "notice": "method to get the current valid transaction nonce" }, + "getEnvelopeState((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to get the internal state of an envelope" + }, + "getEnvelopeState(bytes32)": { "notice": "method to get the internal state of an envelope" }, + "getForwarderBridgeAdaptersByChain(uint256)": { + "notice": "method to get all the forwarder bridge adapters of a chain" + }, + "getReceiverBridgeAdaptersByChain(uint256)": { + "notice": "method to get the current allowed receiver bridge adapters for a chain" + }, + "getSupportedChains()": { + "notice": "method to get the current supported chains (at least one allowed bridge adapter)" + }, + "getTransactionState((uint256,bytes))": { "notice": "method to get the internal transaction information" }, + "getTransactionState(bytes32)": { "notice": "method to get the current state of a transaction" }, + "initialize(address,address,(uint256,uint8)[],(address,uint256[])[],(address,address,uint256)[],address[])": { + "notice": "method called to initialize the proxy" + }, + "isEnvelopeRegistered((uint256,address,address,uint256,uint256,bytes))": { + "notice": "method to check if a envelope has been previously forwarded." + }, + "isEnvelopeRegistered(bytes32)": { "notice": "method to check if a envelope has been previously forwarded." }, + "isReceiverBridgeAdapterAllowed(address,uint256)": { + "notice": "method to get if a bridge adapter is allowed" + }, + "isSenderApproved(address)": { "notice": "method to get if a sender is approved" }, + "isTransactionForwarded((uint256,bytes))": { "notice": "method to get if a transaction has been forwarded" }, + "isTransactionForwarded(bytes32)": { "notice": "method to get if a transaction has been forwarded" }, + "isTransactionReceivedByAdapter(bytes32,address)": { + "notice": "method to get if transaction has been received by bridge adapter" + }, + "receiveCrossChainMessage(bytes,uint256)": { + "notice": "method that receives a bridged transaction and tries to deliver the contents to destination if possible" + }, + "removeSenders(address[])": { "notice": "method to remove sender addresses" }, + "retryEnvelope((uint256,address,address,uint256,uint256,bytes),uint256)": { + "notice": "method called to re forward a previously sent envelope." + }, + "retryTransaction(bytes,uint256,address[])": { + "notice": "method to retry forwarding an already forwarded transaction" + }, + "updateConfirmations((uint256,uint8)[])": { + "notice": "method to update the number of confirmations necessary for the messages to be accepted as valid" + }, + "updateMessagesValidityTimestamp((uint256,uint120)[])": { + "notice": "method to set a new timestamp from where the messages will be valid." + }, + "whoCanRescue()": { "notice": "method that defines the address that is allowed to rescue tokens" } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/", + "@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/", + "@openzeppelin/=lib/openzeppelin-contracts/", + "aave-address-book/=lib/aave-address-book/src/", + "aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/", + "aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "fx-portal/=lib/fx-portal/contracts/", + "hyperlane-monorepo/=lib/hyperlane-monorepo/solidity/contracts/", + "nitro-contracts/=lib/nitro-contracts/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-utils/=lib/solidity-utils/src/" + ], + "optimizer": { "enabled": true, "runs": 200 }, + "metadata": { "bytecodeHash": "ipfs" }, + "compilationTarget": { "src/contracts/CrossChainController.sol": "CrossChainController" }, + "evmVersion": "paris", + "libraries": {} + }, + "sources": { + "lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol": { + "keccak256": "0x9f4357008a8f7d8c8bf5d48902e789637538d8c016be5766610901b4bba81514", + "urls": [ + "bzz-raw://20bf19b2b851f58a4c24543de80ae70b3e08621f9230eb335dc75e2d4f43f5df", + "dweb:/ipfs/QmSYuH1AhvJkPK8hNvoPqtExBcgTB42pPRHgTHkS5c5zYW" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol": { + "keccak256": "0x097e97cbceb38880d74db6311ffbaf158aa9e0735ec51367c60853d6eb811ff1", + "urls": [ + "bzz-raw://6f83b6aa842af14fe0a8bc1ec8f844d69bf490873d72cb324462ae5f59a9267b", + "dweb:/ipfs/QmRYv2HhJdULNQt9aTCsKWQdEVmDyjLfj3qJS3xUd4FyPF" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol": { + "keccak256": "0x2fd8f1a5a9da521eda9d424c0764e9ceac7c3d1afa90ac9124249c5a3c7d9d1a", + "urls": [ + "bzz-raw://75ac28fae9d3a5cf111c6abc70f8a410a89f852d0dd5835bd29f6e0d0e837bc5", + "dweb:/ipfs/QmcU48h5Lxc74jLfVrdzFkjWdLRStiz1w5GmBBx58kJo6s" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Address.sol": { + "keccak256": "0xe641fb89c32466792ed9877ec915c699acfe5c04c655cf9e67738093a40c962c", + "urls": [ + "bzz-raw://597b0804825a4c6acbec4e466f30138a527da64a8dd3cc7ae69a68d046e8852e", + "dweb:/ipfs/QmVvhwnnWvMkaYNcfyeihW1ajwDiGhVV6KcTNoPD9HCVym" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Context.sol": { + "keccak256": "0x6912c0cdc79f627eaa1511695fa0c14389681720812e5548645774d784bc24df", + "urls": [ + "bzz-raw://3f2ae1b63c4be0f695d721e28361b34fe22a2e7e05723ca466b3ad2dde73db6f", + "dweb:/ipfs/Qman92tY6xcqnXZa59TJiJKtf4Hhe5hhJrdERiStBV8EiK" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/Ownable.sol": { + "keccak256": "0x5566fcff7455a22cde32daecec5c44c893dddee1472063f2dcd301e844eabd00", + "urls": [ + "bzz-raw://306860d4e8ecf8cf5928dd757f0e8f8530f05791a0a133acfc9be91d8e75f24a", + "dweb:/ipfs/QmeuzENUkcz5GFTsXJUsMj1NpjbHg8hNJPDBtWzLAnEjkm" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol": { + "keccak256": "0x42c6ca0e62e6a0d93137f11377ef4888c19d3c503169692f36f32076887059b6", + "urls": [ + "bzz-raw://1ac0120428aad94493baa9454143b7d0e0d1f063278abcad3ea24a1cadc84371", + "dweb:/ipfs/QmepMxuDv7SthD9c2EyD4wzPNkchHrRmDKcUEMg8ueV6Fr" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20.sol": { + "keccak256": "0x510a088112e38933c8eff10816a3f74a0ea2365dc0914384b9097cdb62d8db69", + "urls": [ + "bzz-raw://a3f702a4bfbec4bb8604174d80de82d5960b8997cd5b832c6f9a1850593e4bd4", + "dweb:/ipfs/QmfXs5ejLkLQKYAg2RSm2woaAhZya6oVPeDs7T5yrAWBhT" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20Permit.sol": { + "keccak256": "0xf455056affbe27997d7cdfbb7ee3b8e7cdef3c2f6b71d97cc204cb1621440193", + "urls": [ + "bzz-raw://0ce1d2a17f6d32246ec54ebf5e1fcfd72d48d606bb4c192a4e1051d08de2b20c", + "dweb:/ipfs/QmZSPGWfJAzBudcsLQaMXwhQvg3X2Jya5NvxkSGy7ViCFa" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol": { + "keccak256": "0x13984ac6962308e94d92148e47eb4cd31c113b2a4798246714f2235ab9d9d7a9", + "urls": [ + "bzz-raw://77edd0450d7c6bd07544bc4597845f2e7840ab19504d5286928f93a431e0e831", + "dweb:/ipfs/Qmddubpa2kF6UEsuiWtCuLjEDjk6EPz1AzqqyabwqJ1jaS" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/utils/Rescuable.sol": { + "keccak256": "0xf7b7704dda57414708709251229583c917874f89a439e998b3347ee9340a95f9", + "urls": [ + "bzz-raw://59a79763e07df9fd1ead7eb7b474e5b42927065db1e63dfb012a715887667a27", + "dweb:/ipfs/QmbZ7v236pDXPZVm4GnsgLp5sQM2ii83r2q41G1ywpThba" + ], + "license": "MIT" + }, + "lib/solidity-utils/src/contracts/utils/interfaces/IRescuable.sol": { + "keccak256": "0xb7339cccbe91b2b0d9bd9adf4be58605ee75032eead9e3213304c6ae5ba108c1", + "urls": [ + "bzz-raw://09db6f6a18144eb4a47353163408cebd32499b2611972cc8ddffc257654780b1", + "dweb:/ipfs/Qmb6A7wFipu6seiUG3n2LoeWo91Nrj9xsapJKqEXExe7MX" + ], + "license": "MIT" + }, + "src/contracts/BaseCrossChainController.sol": { + "keccak256": "0x800641fd2b769118df88683020ffc0907a13ebc2a2817ef565c064152d0f35d5", + "urls": [ + "bzz-raw://2e86be71893e841b44f985f18af77071b7119587bfe09bb8aaf71d2f9a7edcac", + "dweb:/ipfs/QmTFgyzGdzRXe4ZNQn2tN51NcACgSdWAF2VAF7pExmEkU7" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainController.sol": { + "keccak256": "0x3cf72ab0d7673cb4261965ab31a2b8ba9567bcce68e6f83283da94d36da8da76", + "urls": [ + "bzz-raw://e2b8a78275e8200fcd2e434ad11d178ba816faabfc53eda845724aa002940d1c", + "dweb:/ipfs/QmZ5FaZLnA92he1U95KFvEWdYKSu6SAEYnxQXJN1zMknsJ" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainForwarder.sol": { + "keccak256": "0xbef311a4d79ee901ccae60b8ed8f88dd1559f799895458a48a92e6a6d114a6c3", + "urls": [ + "bzz-raw://3e237a8732716c69aaec8fd56d286ebe58a819c250b23ae7a693b1acd1350760", + "dweb:/ipfs/QmPtPfhUNQoXwYaHhDX15JNcHesn1zERix6sfSVyEyjGGn" + ], + "license": "BUSL-1.1" + }, + "src/contracts/CrossChainReceiver.sol": { + "keccak256": "0x9a3613b6a4e0c2bdf82c917c7d6f108320cd62ef33e3fef49c3ef87ae405c6b8", + "urls": [ + "bzz-raw://94bb65cfcdd811affe0947f90148b0c20fc78211444ca14b07c6dec4ded8f58c", + "dweb:/ipfs/QmVyn5oe8CYWS5dzUsk2BbXUoZ9ppx3w44vq9zp1bEKJ5C" + ], + "license": "BUSL-1.1" + }, + "src/contracts/adapters/IBaseAdapter.sol": { + "keccak256": "0x97ef80b6aeebf7ced38ac3816fd57e5eabd58ae251d47f17b63d2981b1f92e8b", + "urls": [ + "bzz-raw://57a009f5ed843cfa18508b9f36eeaa521f233563553c9d16e80eaba90f81369b", + "dweb:/ipfs/QmaABhvQyMjF43qshQAH5hWrNqkWfYhYqHSYBmAgq6icug" + ], + "license": "MIT" + }, + "src/contracts/interfaces/IBaseCrossChainController.sol": { + "keccak256": "0x5d226f4f433e4b73650f8f1a749eac15f44c537d2561b44fb8b979221d2fa22b", + "urls": [ + "bzz-raw://20ec37bc28bd5bb67940021014f169a90912b8c281f4220949ea9e6e940116c9", + "dweb:/ipfs/QmXH9QBmoApfSYR82ZRVpu2JGekdE4116puXrJgkfLEdYe" + ], + "license": "MIT" + }, + "src/contracts/interfaces/IBaseReceiverPortal.sol": { + "keccak256": "0x636561bf24807679c5a877b7394308545dc028fe76932d15257098be5991959f", + "urls": [ + "bzz-raw://2e5f47d74b026fc94aaeec2fd74adc081dca753881b8a84265a34a7462d31b7b", + "dweb:/ipfs/QmVWnGLdJshoWJJwMZKNZS76auTNBTZgswvLUduUxCoja2" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainController.sol": { + "keccak256": "0x3e7285b5e32f47a8c352d3583d8bd892f5e89dfd63f48a532f972fbdf238e954", + "urls": [ + "bzz-raw://d42a2ded743fd9f5d614a0d85a5065b05e90b4c517b6935f2a1076f7bbf23a7f", + "dweb:/ipfs/QmRhceFdsSYSjrpkMkWXxvGbxRduyLER5sBVBN8uiwHkwg" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainForwarder.sol": { + "keccak256": "0x7c67c32148d66de52ca28ae18c115b10753772aacd6dd020280590f137cc2056", + "urls": [ + "bzz-raw://4077ddc3e091ee38556a7c0797de9b1608f32765d9f62a07efea6505bbebfa7c", + "dweb:/ipfs/Qmbns917YEfng8nqn8wu3KnKBy562K7uWK3kxfzRsPdY27" + ], + "license": "MIT" + }, + "src/contracts/interfaces/ICrossChainReceiver.sol": { + "keccak256": "0xf55d606adfb99cf829845731241d6eff48ef3a36153290fb6daf7af2250e3ec5", + "urls": [ + "bzz-raw://1331b21d98f083181beb5f1f9b817757760a4ef3d79665e118fb4036ca7c056a", + "dweb:/ipfs/QmUXUZeess24rcSjXxo1geCu9BxG4X7ivEHGKhSy6bPbmW" + ], + "license": "MIT" + }, + "src/contracts/libs/EncodingUtils.sol": { + "keccak256": "0xe778561273ede6b3db73f2fb7b2b443cf0a733a209967af59db107406b68964a", + "urls": [ + "bzz-raw://7361dd55dee3cf7bd053d7cd289e148c9451e98c8126672e6287f4e769ab8fba", + "dweb:/ipfs/QmeH1cwptCar31XamSH2QHSeG4BrS86KNdAbnvk6VGFvLB" + ], + "license": "MIT" + }, + "src/contracts/libs/Errors.sol": { + "keccak256": "0x4a4502debe85d126eb37f8268d2d816636ae21c08b0dae7f26cb11d2bae0f80d", + "urls": [ + "bzz-raw://ab72c20ea1e07f3bf567cddd96a0749b9a0afb0beefdc9a6f589657f4f97bc39", + "dweb:/ipfs/QmXXu7CRbhhHqpjdvoBanTsf7wjD6N457ho3vE2dprSy2S" + ], + "license": "MIT" + } + }, + "version": 1 + }, + "id": 178 +} diff --git a/l2-bridge-ethereum/src/agent-bridge-watcher.ts b/l2-bridge-ethereum/src/agent-bridge-watcher.ts deleted file mode 100644 index d28fbf5db..000000000 --- a/l2-bridge-ethereum/src/agent-bridge-watcher.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Finding, TransactionEvent } from "forta-agent"; -import { L1_BRIDGE_EVENTS } from "./constants"; - -export const name = "BridgeWatcher"; - -export async function initialize( - currentBlock: number, -): Promise<{ [key: string]: string }> { - console.log(`[${name}] started on ${currentBlock}`); - return {}; -} - -export async function handleTransaction(txEvent: TransactionEvent) { - const findings: Finding[] = []; - - handleL1BridgeEvents(txEvent, findings); - - return findings; -} - -function handleL1BridgeEvents(txEvent: TransactionEvent, findings: Finding[]) { - L1_BRIDGE_EVENTS.forEach((eventInfo) => { - if (eventInfo.address in txEvent.addresses) { - const events = txEvent.filterLog(eventInfo.event, eventInfo.address); - events.forEach((event) => { - findings.push( - Finding.fromObject({ - name: eventInfo.name, - description: eventInfo.description(event.args), - alertId: eventInfo.alertId, - severity: eventInfo.severity, - type: eventInfo.type, - metadata: { args: String(event.args) }, - }), - ); - }); - } - }); -} diff --git a/l2-bridge-ethereum/src/agent.ts b/l2-bridge-ethereum/src/agent.ts index 6906bb6c5..2706b790f 100644 --- a/l2-bridge-ethereum/src/agent.ts +++ b/l2-bridge-ethereum/src/agent.ts @@ -12,8 +12,8 @@ import { ethersProvider } from "./ethers"; import { argv } from "process"; -import * as agentProxy from "./agent-proxy-watcher"; -import * as agentBridge from "./agent-bridge-watcher"; +import * as agentProxy from "./watchers/agent-proxy-watcher"; +import * as agentBridge from "./watchers/bridge-watcher"; import VERSION from "./version"; diff --git a/l2-bridge-ethereum/src/constants.ts b/l2-bridge-ethereum/src/constants.ts index 2930de906..e9d131662 100644 --- a/l2-bridge-ethereum/src/constants.ts +++ b/l2-bridge-ethereum/src/constants.ts @@ -3,6 +3,7 @@ import ossifiableProxyShortABI from "./abi/OssifiableProxyShortABI.json"; import proxyAdminABI from "./abi/ProxyAdminABI.json"; import { Result } from "@ethersproject/abi/lib"; import { formatAddress } from "forta-agent/dist/cli/utils"; +import { bscAdapters } from "./watchers/agent-proxy-watcher"; type EventOfNotice = { address: string; @@ -23,6 +24,10 @@ export interface BridgeProxyInfo { proxyAdminAddress: string | null; } +export const BSC_CHAIN_ID = 56; +export const BRIDGE_ETH_MIN_BALANCE = 0.5; +export const BRIDGE_LINK_MIN_BALANCE = 5; + export const ROLES = new Map([ [ "0x63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6", @@ -51,9 +56,6 @@ export const ROLES = new Map([ export const WSTETH_ADDRESS = "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0"; export const STETH_ADDRESS = "0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84"; -export const ARBITRUM_L1_GATEWAY_ROUTER = - "0x72ce9c846789fdb6fc1f34ac4ad25dd9ef7031ef"; - export const OPTIMISM_L1_CROSS_DOMAIN_MESSENGER = "0x25ace71c97b33cc4729cf772ae268934f7ab5fa1"; @@ -63,8 +65,6 @@ export const BASE_L1_CROSS_DOMAIN_MESSENGER = export const ZKSYNC_L1_DIAMOND_PROXY = "0x32400084c286cf3e17e7b677ea9583e60a000324"; -export const ARBITRUM_L1ERC20_TOKEN_GATEWAY = - "0x0F25c1DC2a9922304f2eac71DCa9B07E310e8E5a"; export const OPTIMISM_L1ERC20_TOKEN_BRIDGE = "0x76943c0d61395d8f2edf9060e1533529cae05de6"; export const BASE_L1ERC20_TOKEN_BRIDGE = @@ -107,14 +107,14 @@ export const ARBITRUM_GATEWAY_SET_EVENT = export const LINEA_CUSTOM_CONTRACT_SET_EVENT = "event CustomContractSet(address indexed nativeToken, address indexed customContract, address indexed setBy);"; +// https://docs.lido.fi/deployed-contracts/#adi-governance-forwarding export const BSC_L1_CROSS_CHAIN_CONTROLLER = "0x93559892d3c7f66de4570132d68b69bd3c369a7c"; +// https://docs.chain.link/resources/link-token-contracts#ethereum-mainnet +export const LINK_TOKEN_ADDRESS = "0x514910771AF9Ca656af840dff83E8264EcF986CA"; + export const L1_ERC20_TOKEN_GATEWAYS = [ - { - name: "Arbitrum", - address: ARBITRUM_L1ERC20_TOKEN_GATEWAY, - }, { name: "Optimism", address: OPTIMISM_L1ERC20_TOKEN_BRIDGE, @@ -142,16 +142,6 @@ export const L1_ERC20_TOKEN_GATEWAYS = [ ]; export const L1_BRIDGES: BridgeProxyInfo[] = [ - { - name: "L1ERC20TokenGateway to Arbitrum", - address: ARBITRUM_L1ERC20_TOKEN_GATEWAY, - shortABI: JSON.stringify(ossifiableProxyShortABI), - functions: new Map([ - ["admin", "proxy__getAdmin"], - ["implementation", "proxy__getImplementation"], - ]), - proxyAdminAddress: null, - }, { name: "L1ERC20TokenBridge to Optimism", address: OPTIMISM_L1ERC20_TOKEN_BRIDGE, @@ -280,31 +270,6 @@ export const L1_BRIDGES_PROXY_EVENTS: EventOfNotice[] = L1_BRIDGES.map( }, ).reduce((a, b) => [...a, ...b]); -const ARBITRUM_L1_GATEWAY_ROUTER_PROXY_EVENTS = [ - { - address: ARBITRUM_L1_GATEWAY_ROUTER, // Arbitrum One: L1 Gateway Router - event: "event AdminChanged(address previousAdmin, address newAdmin)", - alertId: "THIRD-PARTY-PROXY-ADMIN-CHANGED", - name: "🚨 Arbitrum Native Bridge: L1 Gateway Router proxy admin changed", - description: (args: Result) => - `Proxy admin for Arbitrum One: L1 Gateway Router ` + - `was changed\nfrom: ${args.previousAdmin}\nto: ${args.newAdmin}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, - { - address: ARBITRUM_L1_GATEWAY_ROUTER, // Arbitrum One: L1 Gateway Router - event: "event Upgraded(address indexed implementation)", - alertId: "THIRD-PARTY-PROXY-UPGRADED", - name: "🚨 Arbitrum Native Bridge: L1 Gateway Router proxy upgraded", - description: (args: Result) => - `Proxy for Arbitrum One: L1 Gateway Router ` + - `was upgraded to ${args.implementation}`, - severity: FindingSeverity.High, - type: FindingType.Info, - }, -]; - const OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_EVENTS = [ { address: OPTIMISM_L1_CROSS_DOMAIN_MESSENGER, // Optimism: Proxy OVM L1 Cross Domain Messenger @@ -619,13 +584,60 @@ const BSC_L1_CROSS_CHAIN_CONTROLLER_EVENTS = [ severity: FindingSeverity.Critical, type: FindingType.Info, }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: "event AdminChanged(address previousAdmin, address newAdmin)", + alertId: "L1-BRIDGE-PROXY-ADMIN-CHANGED", + name: `🚨🚨🚨 L1 Cross-chain controller: Proxy admin changed`, + description: (args: Result) => + `Proxy admin for L1 CrossChainControllerAddress (${BSC_L1_CROSS_CHAIN_CONTROLLER}) ` + + `was changed from ${args.previousAdmin} to ${args.newAdmin}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: "event Upgraded(address indexed implementation)", + alertId: "L1-BRIDGE-PROXY-UPGRADED", + name: `🚨🚨🚨 L1 Cross-chain controller: Proxy upgraded`, + description: (args: Result) => + `Proxy for L1 CrossChainControllerAddress (${BSC_L1_CROSS_CHAIN_CONTROLLER}) ` + + `was updated to ${args.implementation}` + + `\n(detected by event)`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: "event GuardianUpdated(address oldGuardian, address newGuardian)", + alertId: "L1-BRIDGE-GUARDIAN-UPDATED", + name: "🚨🚨🚨 L1 Cross-chain controller: Guardians updated", + description: (args: Result) => + `Guardian was updated from ` + + `${args.oldGuardian} to ${args.newGuardian}`, + severity: FindingSeverity.Critical, + type: FindingType.Info, + }, + { + address: BSC_L1_CROSS_CHAIN_CONTROLLER, + event: + "event TransactionForwardingAttempted(bytes32 transactionId, bytes32 indexed envelopeId, bytes encodedTransaction, uint256 destinationChainId, address indexed bridgeAdapter, address destinationBridgeAdapter, bool indexed adapterSuccessful, bytes returnData)", + alertId: "L1-BRIDGE-MESSAGE-SENT", + name: "ℹ️ L1 Cross-chain controller: Message sent", + description: (args: Result) => + `Message was sent from L1 to BSC using ${ + bscAdapters.get(args.bridgeAdapter) || args.bridgeAdapter + " adapter" + } (envelopeId: ${args.envelopeId})`, + severity: FindingSeverity.Info, + type: FindingType.Info, + }, ]; export const THIRD_PARTY_PROXY_EVENTS: EventOfNotice[] = - ARBITRUM_L1_GATEWAY_ROUTER_PROXY_EVENTS.concat( - OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_EVENTS, + OPTIMISM_L1_CROSS_DOMAIN_MESSENGER_EVENTS.concat( + BASE_L1_CROSS_DOMAIN_MESSENGER_EVENTS, ) - .concat(BASE_L1_CROSS_DOMAIN_MESSENGER_EVENTS) .concat(ZKSYNC_L1_DIAMOND_PROXY_EVENTS) .concat(MANTLE_L1_CROSS_DOMAIN_MESSENGER_EVENTS) .concat(LINEA_L1_CROSS_DOMAIN_MESSENGER_EVENTS) diff --git a/l2-bridge-base/src/utils/finding.helpers.ts b/l2-bridge-ethereum/src/helpers/finding.ts similarity index 59% rename from l2-bridge-base/src/utils/finding.helpers.ts rename to l2-bridge-ethereum/src/helpers/finding.ts index fe4567960..29ccf842f 100644 --- a/l2-bridge-base/src/utils/finding.helpers.ts +++ b/l2-bridge-ethereum/src/helpers/finding.ts @@ -1,8 +1,13 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' +import { Finding, FindingSeverity, FindingType } from "forta-agent"; -export const NetworkErrorFinding = 'NETWORK-ERROR' +export const NetworkErrorFinding = "NETWORK-ERROR"; -export function networkAlert(err: Error, name: string, desc: string, blockNumber: number): Finding { +export function networkAlert( + err: Error, + name: string, + desc: string, + blockNumber: number, +): Finding { return Finding.fromObject({ name: name, description: desc, @@ -15,9 +20,9 @@ export function networkAlert(err: Error, name: string, desc: string, blockNumber name: `${err.name}`, }, uniqueKey: getUniqueKey(name, blockNumber), - }) + }); } export function getUniqueKey(uniqueKey: string, blockNumber: number): string { - return uniqueKey + '-' + blockNumber.toString() + return uniqueKey + "-" + blockNumber.toString(); } diff --git a/l2-bridge-ethereum/src/agent-proxy-watcher.ts b/l2-bridge-ethereum/src/watchers/agent-proxy-watcher.ts similarity index 89% rename from l2-bridge-ethereum/src/agent-proxy-watcher.ts rename to l2-bridge-ethereum/src/watchers/agent-proxy-watcher.ts index 340833e12..7f5351bea 100644 --- a/l2-bridge-ethereum/src/agent-proxy-watcher.ts +++ b/l2-bridge-ethereum/src/watchers/agent-proxy-watcher.ts @@ -7,8 +7,6 @@ import { TransactionEvent, } from "forta-agent"; import { - ARBITRUM_GATEWAY_SET_EVENT, - ARBITRUM_L1_GATEWAY_ROUTER, L1_BRIDGES, BridgeProxyInfo, LINEA_CUSTOM_CONTRACT_SET_EVENT, @@ -17,11 +15,18 @@ import { STETH_ADDRESS, THIRD_PARTY_PROXY_EVENTS, WSTETH_ADDRESS, -} from "./constants"; -import { ethersProvider } from "./ethers"; + BSC_L1_CROSS_CHAIN_CONTROLLER, + BSC_CHAIN_ID, +} from "../constants"; +import { ethersProvider } from "../ethers"; +import { + BaseAdapter__factory, + CrossChainController__factory, +} from "../generated"; const lastImpls = new Map(); const lastAdmins = new Map(); +export const bscAdapters = new Map(); export const name = "ProxyWatcher"; @@ -37,12 +42,33 @@ export async function initialize( lastAdmins.set(proxyInfo.address, lastAdmin); }), ); + + await setBridgeAdaptersNamesMap(); + return { lastImpls: JSON.stringify(Object.fromEntries(lastImpls)), lastAdmins: JSON.stringify(Object.fromEntries(lastAdmins)), }; } +async function setBridgeAdaptersNamesMap() { + const cccContract = CrossChainController__factory.connect( + BSC_L1_CROSS_CHAIN_CONTROLLER, + ethersProvider, + ); + const adapters = + await cccContract.getForwarderBridgeAdaptersByChain(BSC_CHAIN_ID); + + for (const adapterAddress of adapters) { + const bridgeAdapterContract = BaseAdapter__factory.connect( + adapterAddress.currentChainBridgeAdapter, + ethersProvider, + ); + const adapterName = await bridgeAdapterContract.adapterName(); + bscAdapters.set(adapterAddress.currentChainBridgeAdapter, adapterName); + } +} + export async function handleTransaction(txEvent: TransactionEvent) { const findings: Finding[] = []; @@ -100,26 +126,6 @@ function handleThirdPartyProxyAdminEvents( }); } }); - if (ARBITRUM_L1_GATEWAY_ROUTER in txEvent.addresses) { - const events = txEvent.filterLog( - ARBITRUM_GATEWAY_SET_EVENT, - ARBITRUM_L1_GATEWAY_ROUTER, - ); - events.forEach((event) => { - if (event.args.l1Token == WSTETH_ADDRESS) { - findings.push( - Finding.fromObject({ - name: "🚨 Arbitrum: Token Gateway changed", - description: `Arbitrum native bridge gateway for wstETH changed to: ${event.args.gateway}`, - alertId: "ARBITRUM-TOKEN-GATEWAY-CHANGED", - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - metadata: { args: String(event.args) }, - }), - ); - } - }); - } if (LINEA_L1_CROSS_DOMAIN_MESSENGER in txEvent.addresses) { const events = txEvent.filterLog( diff --git a/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.spec.ts b/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.spec.ts new file mode 100644 index 000000000..df907ec61 --- /dev/null +++ b/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.spec.ts @@ -0,0 +1,216 @@ +import { + handleBridgeBalance, + handleL1BridgeTransactionEvents, +} from "./handlers"; +import * as agent from "forta-agent"; + +import { + BRIDGE_ETH_MIN_BALANCE, + BRIDGE_LINK_MIN_BALANCE, + L1_BRIDGE_EVENTS, +} from "../../constants"; +import { + BlockEvent, + Finding, + FindingSeverity, + FindingType, + TransactionEvent, +} from "forta-agent"; +import BigNumber from "bignumber.js"; + +const mockProvider = { + getBalance: jest.fn(), +}; +const mockContract = { + balanceOf: jest.fn(), +}; + +jest.mock("@ethersproject/contracts", () => { + return { + Contract: jest.fn().mockImplementation(() => mockContract), + }; +}); + +describe("handleL1BridgeTransactionEvents", () => { + it("returns findings for matching L1 bridge events", () => { + const txEvent = { + addresses: { [L1_BRIDGE_EVENTS[0].address]: true }, + filterLog: jest.fn().mockImplementation((event, address) => { + if ( + event === L1_BRIDGE_EVENTS[0].event && + address === L1_BRIDGE_EVENTS[0].address + ) { + return [{ args: ["arg1", "arg2"] }]; + } + return []; + }), + } as unknown as TransactionEvent; + const findings: Finding[] = []; + + handleL1BridgeTransactionEvents(txEvent, findings); + + expect(findings).toHaveLength(1); + expect(findings[0]).toMatchObject({ + name: L1_BRIDGE_EVENTS[0].name, + description: L1_BRIDGE_EVENTS[0].description(["arg1", "arg2"]), + alertId: L1_BRIDGE_EVENTS[0].alertId, + severity: L1_BRIDGE_EVENTS[0].severity, + type: L1_BRIDGE_EVENTS[0].type, + metadata: { args: "arg1,arg2" }, + }); + }); + + it("returns no findings if no matching L1 bridge events", () => { + const txEvent = { + addresses: {}, + filterLog: jest.fn().mockReturnValue([]), + } as unknown as TransactionEvent; + + const findings: Finding[] = []; + handleL1BridgeTransactionEvents(txEvent, findings); + + expect(findings).toHaveLength(0); + }); + + it("handles multiple matching L1 bridge events", () => { + const txEvent = { + addresses: { [L1_BRIDGE_EVENTS[0].address]: true }, + filterLog: jest.fn().mockImplementation((event, address) => { + if ( + event === L1_BRIDGE_EVENTS[0].event && + address === L1_BRIDGE_EVENTS[0].address + ) { + return [{ args: ["arg1", "arg2"] }, { args: ["arg3", "arg4"] }]; + } + return []; + }), + } as unknown as TransactionEvent; + + const findings: Finding[] = []; + handleL1BridgeTransactionEvents(txEvent, findings); + + expect(findings).toHaveLength(2); + expect(findings[0]).toMatchObject({ + name: L1_BRIDGE_EVENTS[0].name, + description: L1_BRIDGE_EVENTS[0].description(["arg1", "arg2"]), + alertId: L1_BRIDGE_EVENTS[0].alertId, + severity: L1_BRIDGE_EVENTS[0].severity, + type: L1_BRIDGE_EVENTS[0].type, + metadata: { args: "arg1,arg2" }, + }); + expect(findings[1]).toMatchObject({ + name: L1_BRIDGE_EVENTS[0].name, + description: L1_BRIDGE_EVENTS[0].description(["arg3", "arg4"]), + alertId: L1_BRIDGE_EVENTS[0].alertId, + severity: L1_BRIDGE_EVENTS[0].severity, + type: L1_BRIDGE_EVENTS[0].type, + metadata: { args: "arg3,arg4" }, + }); + }); +}); + +describe("handleBridgeBalance", () => { + let event: BlockEvent; + + beforeEach(() => { + const random = Math.floor(Math.random() * 1000); + event = { block: { number: 300 * random } } as BlockEvent; + jest + .spyOn(agent, "getEthersProvider") + .mockReturnValue(mockProvider as never); + }); + + it("returns an empty array if block number is not a multiple of 7200", async () => { + event = { block: { number: 123 } } as BlockEvent; + const findings = await handleBridgeBalance(event as never); + expect(findings).toEqual([]); + }); + + it("returns a finding if ETH balance is below the minimum threshold", async () => { + mockProvider.getBalance.mockResolvedValue( + BigNumber(1e18 * (BRIDGE_ETH_MIN_BALANCE - 0.1)), + ); + + mockContract.balanceOf.mockResolvedValue( + BigNumber(1e18 * BRIDGE_LINK_MIN_BALANCE), + ); + + const findings = await handleBridgeBalance(event as never); + + expect(findings).toHaveLength(1); + expect(findings[0]).toMatchObject({ + name: "⚠️ Cross-chain bridge ETH balance is low (0.5 ETH min)", + severity: FindingSeverity.Medium, + type: FindingType.Info, + }); + }); + + it("returns a finding if LINK balance is below the minimum threshold", async () => { + mockProvider.getBalance.mockResolvedValue( + BigNumber(1e18 * BRIDGE_ETH_MIN_BALANCE), + ); + mockContract.balanceOf.mockResolvedValue( + BigNumber(1e18 * (BRIDGE_LINK_MIN_BALANCE - 0.1)), + ); + + const findings = await handleBridgeBalance(event as never); + + expect(findings).toHaveLength(1); + expect(findings[0]).toMatchObject({ + name: "⚠️ Cross-chain bridge LINK balance is low (5 LINK min)", + severity: FindingSeverity.Medium, + type: FindingType.Info, + }); + }); + + it("returns findings for both ETH and LINK balances below the minimum threshold", async () => { + mockProvider.getBalance.mockResolvedValue( + BigNumber(1e18 * (BRIDGE_ETH_MIN_BALANCE - 0.1)), + ); + mockContract.balanceOf.mockResolvedValue( + BigNumber(1e18 * (BRIDGE_LINK_MIN_BALANCE - 0.1)), + ); + + const findings = await handleBridgeBalance(event as never); + + expect(findings).toHaveLength(2); + }); + + it("returns an empty array if both ETH and LINK balances are above the minimum threshold", async () => { + mockProvider.getBalance.mockResolvedValue( + BigNumber(1e18 * BRIDGE_ETH_MIN_BALANCE), + ); + mockContract.balanceOf.mockResolvedValue( + BigNumber(1e18 * BRIDGE_LINK_MIN_BALANCE), + ); + + const findings = await handleBridgeBalance(event as never); + + expect(findings).toEqual([]); + }); + + it("returns an array of network errors if there are errors", async () => { + mockProvider.getBalance.mockRejectedValue(new Error("Network ETH error")); + mockContract.balanceOf.mockRejectedValue(new Error("Network LINK error")); + + const findings = await handleBridgeBalance(event as never); + + expect(findings).toHaveLength(2); + expect(findings[0].alertId).toEqual("NETWORK-ERROR"); + expect(findings[1].alertId).toEqual("NETWORK-ERROR"); + expect(findings[0].name).toEqual("handleBridgeBalance"); + expect(findings[1].name).toEqual("handleBridgeBalance"); + expect(findings[0].description).toEqual( + "Error fetching bridge ETH balance", + ); + expect(findings[1].description).toEqual( + "Error fetching bridge LINK balance", + ); + expect(findings[0].metadata).toMatchObject({ + message: "Network ETH error", + }); + expect(findings[1].metadata).toMatchObject({ + message: "Network LINK error", + }); + }); +}); diff --git a/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.ts b/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.ts new file mode 100644 index 000000000..04c24a223 --- /dev/null +++ b/l2-bridge-ethereum/src/watchers/bridge-watcher/handlers.ts @@ -0,0 +1,117 @@ +import { + BlockEvent, + ethers, + Finding, + FindingSeverity, + FindingType, + getEthersProvider, + TransactionEvent, +} from "forta-agent"; +import { formatEther } from "ethers/lib/utils"; +import { + BRIDGE_ETH_MIN_BALANCE, + BRIDGE_LINK_MIN_BALANCE, + BSC_L1_CROSS_CHAIN_CONTROLLER, + L1_BRIDGE_EVENTS, + LINK_TOKEN_ADDRESS, +} from "../../constants"; +import { networkAlert } from "../../helpers/finding"; + +export function handleL1BridgeTransactionEvents( + txEvent: TransactionEvent, + findings: Finding[], +) { + L1_BRIDGE_EVENTS.forEach((eventInfo) => { + if (eventInfo.address in txEvent.addresses) { + const events = txEvent.filterLog(eventInfo.event, eventInfo.address); + events.forEach((event) => { + findings.push( + Finding.fromObject({ + name: eventInfo.name, + description: eventInfo.description(event.args), + alertId: eventInfo.alertId, + severity: eventInfo.severity, + type: eventInfo.type, + metadata: { args: String(event.args) }, + }), + ); + }); + } + }); +} + +const BALANCE_CHECK_INTERVAL = 300; // 1 hour ≈ 300 blocks + +export async function handleBridgeBalance(event: BlockEvent) { + if (event.block.number % BALANCE_CHECK_INTERVAL !== 0) { + return []; + } + const findings: Finding[] = []; + + const provider = getEthersProvider(); + + try { + const ethBalance = await provider.getBalance(BSC_L1_CROSS_CHAIN_CONTROLLER); + if (ethBalance.lt(BigInt(1e18 * BRIDGE_ETH_MIN_BALANCE))) { + findings.push( + Finding.fromObject({ + name: "⚠️ Cross-chain bridge ETH balance is low (0.5 ETH min)", + description: `Bridge balance is low: ${formatEther( + ethBalance.toString(), + )} ETH`, + alertId: "BRIDGE-ETH-BALANCE-LOW", + severity: FindingSeverity.Medium, + type: FindingType.Info, + metadata: { ethBalance: ethBalance.toString() }, + }), + ); + } + } catch (err: unknown) { + findings.push( + networkAlert( + err as Error, + "handleBridgeBalance", + "Error fetching bridge ETH balance", + event.block.number, + ), + ); + } + + const linkContract = new ethers.Contract( + LINK_TOKEN_ADDRESS, + ["function balanceOf(address) returns (uint256)"], + provider, + ); + + try { + const linkBalance = (await linkContract.balanceOf( + BSC_L1_CROSS_CHAIN_CONTROLLER, + )) as ethers.BigNumber; + + if (linkBalance.lt(BigInt(1e18 * BRIDGE_LINK_MIN_BALANCE))) { + findings.push( + Finding.fromObject({ + name: "⚠️ Cross-chain bridge LINK balance is low (5 LINK min)", + description: `Bridge balance is low: ${formatEther( + linkBalance.toString(), + )} LINK`, + alertId: "BRIDGE-LINK-BALANCE-LOW", + severity: FindingSeverity.Medium, + type: FindingType.Info, + metadata: { linkBalance: linkBalance.toString() }, + }), + ); + } + } catch (err: unknown) { + findings.push( + networkAlert( + err as Error, + "handleBridgeBalance", + "Error fetching bridge LINK balance", + event.block.number, + ), + ); + } + + return findings; +} diff --git a/l2-bridge-ethereum/src/watchers/bridge-watcher/index.ts b/l2-bridge-ethereum/src/watchers/bridge-watcher/index.ts new file mode 100644 index 000000000..0ad9c4b2e --- /dev/null +++ b/l2-bridge-ethereum/src/watchers/bridge-watcher/index.ts @@ -0,0 +1,26 @@ +import { BlockEvent, Finding, TransactionEvent } from "forta-agent"; +import { + handleBridgeBalance, + handleL1BridgeTransactionEvents, +} from "./handlers"; + +export const name = "BridgeWatcher"; + +export async function initialize( + currentBlock: number, +): Promise<{ [key: string]: string }> { + console.log(`[${name}] started on ${currentBlock}`); + return {}; +} + +export async function handleBlock(blockEvent: BlockEvent) { + return handleBridgeBalance(blockEvent); +} + +export async function handleTransaction(txEvent: TransactionEvent) { + const findings: Finding[] = []; + + handleL1BridgeTransactionEvents(txEvent, findings); + + return findings; +} diff --git a/l2-bridge-ethereum/tsconfig.json b/l2-bridge-ethereum/tsconfig.json index 550db2444..0014e0c77 100644 --- a/l2-bridge-ethereum/tsconfig.json +++ b/l2-bridge-ethereum/tsconfig.json @@ -1,18 +1,15 @@ { + "extends": "@tsconfig/node20/tsconfig.json", "compilerOptions": { - "target": "es5", - "module": "commonjs", "outDir": "dist", - "strict": true, - "sourceMap": true, - "moduleResolution": "node", "baseUrl": ".", - "esModuleInterop": true, - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, "resolveJsonModule": true }, - "exclude": ["e2e"] + "exclude": [ + "node_modules", + "tests", + "dist", + "**/*spec.ts", + "**/*mock.ts" + ] } diff --git a/l2-bridge-ethereum/yarn.lock b/l2-bridge-ethereum/yarn.lock index 8ff019ef6..19dc474a4 100644 --- a/l2-bridge-ethereum/yarn.lock +++ b/l2-bridge-ethereum/yarn.lock @@ -31,6 +31,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/code-frame@npm:7.24.7" + dependencies: + "@babel/highlight": ^7.24.7 + picocolors: ^1.0.0 + checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.21.5": version: 7.21.7 resolution: "@babel/compat-data@npm:7.21.7" @@ -38,7 +48,37 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.12.3, @babel/core@npm:^7.7.2, @babel/core@npm:^7.8.0": +"@babel/compat-data@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/compat-data@npm:7.25.2" + checksum: b61bc9da7cfe249f19d08da00f4f0c20550cd9ad5bffcde787c2bf61a8a6fa5b66d92bbd89031f3a6e5495a799a2a2499f2947b6cc7964be41979377473ab132 + languageName: node + linkType: hard + +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.23.9": + version: 7.25.2 + resolution: "@babel/core@npm:7.25.2" + dependencies: + "@ampproject/remapping": ^2.2.0 + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/helper-compilation-targets": ^7.25.2 + "@babel/helper-module-transforms": ^7.25.2 + "@babel/helpers": ^7.25.0 + "@babel/parser": ^7.25.0 + "@babel/template": ^7.25.0 + "@babel/traverse": ^7.25.2 + "@babel/types": ^7.25.2 + convert-source-map: ^2.0.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.2.3 + semver: ^6.3.1 + checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a + languageName: node + linkType: hard + +"@babel/core@npm:^7.12.3": version: 7.21.8 resolution: "@babel/core@npm:7.21.8" dependencies: @@ -73,6 +113,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/generator@npm:7.25.0" + dependencies: + "@babel/types": ^7.25.0 + "@jridgewell/gen-mapping": ^0.3.5 + "@jridgewell/trace-mapping": ^0.3.25 + jsesc: ^2.5.1 + checksum: bf25649dde4068bff8e387319bf820f2cb3b1af7b8c0cfba0bd90880656427c8bad96cd5cb6db7058d20cffe93149ee59da16567018ceaa21ecaefbf780a785c + languageName: node + linkType: hard + "@babel/helper-compilation-targets@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-compilation-targets@npm:7.21.5" @@ -88,6 +140,19 @@ __metadata: languageName: node linkType: hard +"@babel/helper-compilation-targets@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-compilation-targets@npm:7.25.2" + dependencies: + "@babel/compat-data": ^7.25.2 + "@babel/helper-validator-option": ^7.24.8 + browserslist: ^4.23.1 + lru-cache: ^5.1.1 + semver: ^6.3.1 + checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 + languageName: node + linkType: hard + "@babel/helper-environment-visitor@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-environment-visitor@npm:7.21.5" @@ -123,6 +188,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-imports@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-module-imports@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 + languageName: node + linkType: hard + "@babel/helper-module-transforms@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-module-transforms@npm:7.21.5" @@ -139,6 +214,20 @@ __metadata: languageName: node linkType: hard +"@babel/helper-module-transforms@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/helper-module-transforms@npm:7.25.2" + dependencies: + "@babel/helper-module-imports": ^7.24.7 + "@babel/helper-simple-access": ^7.24.7 + "@babel/helper-validator-identifier": ^7.24.7 + "@babel/traverse": ^7.25.2 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 + languageName: node + linkType: hard + "@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.20.2, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.21.5 resolution: "@babel/helper-plugin-utils@npm:7.21.5" @@ -146,6 +235,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-plugin-utils@npm:^7.24.7": + version: 7.24.8 + resolution: "@babel/helper-plugin-utils@npm:7.24.8" + checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a + languageName: node + linkType: hard + "@babel/helper-simple-access@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helper-simple-access@npm:7.21.5" @@ -155,6 +251,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-simple-access@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-simple-access@npm:7.24.7" + dependencies: + "@babel/traverse": ^7.24.7 + "@babel/types": ^7.24.7 + checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 + languageName: node + linkType: hard + "@babel/helper-split-export-declaration@npm:^7.18.6": version: 7.18.6 resolution: "@babel/helper-split-export-declaration@npm:7.18.6" @@ -171,6 +277,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-string-parser@npm:7.24.8" + checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.18.6, @babel/helper-validator-identifier@npm:^7.19.1": version: 7.19.1 resolution: "@babel/helper-validator-identifier@npm:7.19.1" @@ -178,6 +291,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/helper-validator-identifier@npm:7.24.7" + checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.21.0": version: 7.21.0 resolution: "@babel/helper-validator-option@npm:7.21.0" @@ -185,6 +305,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-option@npm:^7.24.8": + version: 7.24.8 + resolution: "@babel/helper-validator-option@npm:7.24.8" + checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c + languageName: node + linkType: hard + "@babel/helpers@npm:^7.21.5": version: 7.21.5 resolution: "@babel/helpers@npm:7.21.5" @@ -196,6 +323,16 @@ __metadata: languageName: node linkType: hard +"@babel/helpers@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/helpers@npm:7.25.0" + dependencies: + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 739e3704ff41a30f5eaac469b553f4d3ab02be6ced083f5925851532dfbd9efc5c347728e77b754ed0b262a4e5e384e60932a62c192d338db7e4b7f3adf9f4a7 + languageName: node + linkType: hard + "@babel/highlight@npm:^7.18.6": version: 7.18.6 resolution: "@babel/highlight@npm:7.18.6" @@ -207,6 +344,18 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.24.7": + version: 7.24.7 + resolution: "@babel/highlight@npm:7.24.7" + dependencies: + "@babel/helper-validator-identifier": ^7.24.7 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + picocolors: ^1.0.0 + checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.21.5, @babel/parser@npm:^7.21.8": version: 7.21.8 resolution: "@babel/parser@npm:7.21.8" @@ -216,6 +365,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.3": + version: 7.25.3 + resolution: "@babel/parser@npm:7.25.3" + dependencies: + "@babel/types": ^7.25.2 + bin: + parser: ./bin/babel-parser.js + checksum: b55aba64214fa1d66ccd0d29f476d2e55a48586920d280f88c546f81cbbececc0e01c9d05a78d6bf206e8438b9c426caa344942c1a581eecc4d365beaab8a20e + languageName: node + linkType: hard + "@babel/plugin-syntax-async-generators@npm:^7.8.4": version: 7.8.4 resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" @@ -271,6 +431,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-jsx@npm:^7.7.2": + version: 7.24.7 + resolution: "@babel/plugin-syntax-jsx@npm:7.24.7" + dependencies: + "@babel/helper-plugin-utils": ^7.24.7 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 7a5ca629d8ca1e1ee78705a78e58c12920d07ed8006d7e7232b31296a384ff5e41d7b649bde5561196041037bbb9f9715be1d1c20975df87ca204f34ad15b965 + languageName: node + linkType: hard + "@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -370,7 +541,18 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.21.5, @babel/traverse@npm:^7.7.2": +"@babel/template@npm:^7.25.0": + version: 7.25.0 + resolution: "@babel/template@npm:7.25.0" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/parser": ^7.25.0 + "@babel/types": ^7.25.0 + checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.21.5": version: 7.21.5 resolution: "@babel/traverse@npm:7.21.5" dependencies: @@ -388,6 +570,21 @@ __metadata: languageName: node linkType: hard +"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": + version: 7.25.3 + resolution: "@babel/traverse@npm:7.25.3" + dependencies: + "@babel/code-frame": ^7.24.7 + "@babel/generator": ^7.25.0 + "@babel/parser": ^7.25.3 + "@babel/template": ^7.25.0 + "@babel/types": ^7.25.2 + debug: ^4.3.1 + globals: ^11.1.0 + checksum: 5661308b1357816f1d4e2813a5dd82c6053617acc08c5c95db051b8b6577d07c4446bc861c9a5e8bf294953ac8266ae13d7d9d856b6b889fc0d34c1f51abbd8c + languageName: node + linkType: hard + "@babel/types@npm:^7.0.0, @babel/types@npm:^7.18.6, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.0, @babel/types@npm:^7.21.4, @babel/types@npm:^7.21.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": version: 7.21.5 resolution: "@babel/types@npm:7.21.5" @@ -399,6 +596,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2": + version: 7.25.2 + resolution: "@babel/types@npm:7.25.2" + dependencies: + "@babel/helper-string-parser": ^7.24.8 + "@babel/helper-validator-identifier": ^7.24.7 + to-fast-properties: ^2.0.0 + checksum: f73f66ba903c6f7e38f519a33d53a67d49c07e208e59ea65250362691dc546c6da7ab90ec66ee79651ef697329872f6f97eb19a6dfcacc026fd05e76a563c5d2 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -935,57 +1143,57 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 languageName: node linkType: hard -"@jest/console@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/console@npm:27.5.1" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 - checksum: 7cb20f06a34b09734c0342685ec53aa4c401fe3757c13a9c58fce76b971a322eb884f6de1068ef96f746e5398e067371b89515a07c268d4440a867c87748a706 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 languageName: node linkType: hard -"@jest/core@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/core@npm:27.5.1" +"@jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": ^27.5.1 - "@jest/reporters": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - emittery: ^0.8.1 + ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^27.5.1 - jest-config: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-resolve-dependencies: ^27.5.1 - jest-runner: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - jest-watcher: ^27.5.1 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 micromatch: ^4.0.4 - rimraf: ^3.0.0 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -993,153 +1201,182 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 904a94ad8f1b43cd6b48de3b0226659bff3696150ff8cf7680fc2faffdc8a115203bb9ab6e817c1f79f9d6a81f67953053cbc64d8a4604f2e0c42a04c28cf126 + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d languageName: node linkType: hard -"@jest/environment@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/environment@npm:27.5.1" +"@jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^27.5.1 - checksum: 2a9e18c35a015508dbec5b90b21c150230fa6c1c8cb8fabe029d46ee2ca4c40eb832fb636157da14c66590d0a4c8a2c053226b041f54a44507d6f6a89abefd66 + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 + languageName: node + linkType: hard + +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed + languageName: node + linkType: hard + +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" + dependencies: + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e languageName: node linkType: hard -"@jest/fake-timers@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/fake-timers@npm:27.5.1" +"@jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 - "@sinonjs/fake-timers": ^8.0.1 + "@jest/types": ^29.6.3 + "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 02a0561ed2f4586093facd4ae500b74694f187ac24d4a00e949a39a1c5325bca8932b4fcb0388a2c5ed0656506fc1cf51fd3e32cdd48cea7497ad9c6e028aba8 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 languageName: node linkType: hard -"@jest/globals@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/globals@npm:27.5.1" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": ^27.5.1 - "@jest/types": ^27.5.1 - expect: ^27.5.1 - checksum: 087f97047e9dcf555f76fe2ce54aee681e005eaa837a0c0c2d251df6b6412c892c9df54cb871b180342114389a5ff895a4e52e6e6d3d0015bf83c02a54f64c3c + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard -"@jest/reporters@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/reporters@npm:27.5.1" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 collect-v8-coverage: ^1.0.0 exit: ^0.1.2 - glob: ^7.1.2 + glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-haste-map: ^27.5.1 - jest-resolve: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 slash: ^3.0.0 - source-map: ^0.6.0 string-length: ^4.0.1 - terminal-link: ^2.0.0 - v8-to-istanbul: ^8.1.0 + strip-ansi: ^6.0.0 + v8-to-istanbul: ^9.0.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: node-notifier: optional: true - checksum: faba5eafb86e62b62e152cafc8812d56308f9d1e8b77f3a7dcae4a8803a20a60a0909cc43ed73363ef649bf558e4fb181c7a336d144c89f7998279d1882bb69e + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 + languageName: node + linkType: hard + +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@jest/source-map@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/source-map@npm:27.5.1" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: + "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - source-map: ^0.6.0 - checksum: 4fb1e743b602841babf7e22bd84eca34676cb05d4eb3b604cae57fc59e406099f5ac759ac1a0d04d901237d143f0f4f234417306e823bde732a1d19982230862 + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-result@npm:27.5.1" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 338f7c509d6a3bc6d7dd7388c8f6f548b87638e171dc1fddfedcacb4e8950583288832223ba688058cbcf874b937d22bdc0fa88f79f5fc666f77957e465c06a5 + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa languageName: node linkType: hard -"@jest/test-sequencer@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/test-sequencer@npm:27.5.1" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": ^27.5.1 + "@jest/test-result": ^29.7.0 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-runtime: ^27.5.1 - checksum: f21f9c8bb746847f7f89accfd29d6046eec1446f0b54e4694444feaa4df379791f76ef0f5a4360aafcbc73b50bc979f68b8a7620de404019d3de166be6720cb0 + jest-haste-map: ^29.7.0 + slash: ^3.0.0 + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd languageName: node linkType: hard -"@jest/transform@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/transform@npm:27.5.1" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: - "@babel/core": ^7.1.0 - "@jest/types": ^27.5.1 + "@babel/core": ^7.11.6 + "@jest/types": ^29.6.3 + "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 - convert-source-map: ^1.4.0 - fast-json-stable-stringify: ^2.0.0 + convert-source-map: ^2.0.0 + fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-util: ^27.5.1 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 - source-map: ^0.6.1 - write-file-atomic: ^3.0.0 - checksum: a22079121aedea0f20a03a9c026be971f7b92adbfb4d5fd1fb67be315741deac4f056936d7c72a53b24aa5a1071bc942c003925fd453bf3f6a0ae5da6384e137 + write-file-atomic: ^4.0.2 + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab languageName: node linkType: hard -"@jest/types@npm:^27.5.1": - version: 27.5.1 - resolution: "@jest/types@npm:27.5.1" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" - "@types/yargs": ^16.0.0 + "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: d1f43cc946d87543ddd79d49547aab2399481d34025d5c5f2025d3d99c573e1d9832fa83cef25e9d9b07a8583500229d15bbb07b8e233d127d911d133e2f14b1 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -1154,6 +1391,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.5 + resolution: "@jridgewell/gen-mapping@npm:0.3.5" + dependencies: + "@jridgewell/set-array": ^1.2.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.24 + checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -1161,6 +1409,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -1168,6 +1423,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 832e513a85a588f8ed4f27d1279420d8547743cc37fcad5a5a76fc74bb895b013dfe614d0eed9cb860048e6546b798f8f2652020b4b2ba0561b05caa8c654b10 + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:1.4.14": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -1182,6 +1444,23 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 9d3c40d225e139987b50c48988f8717a54a8c994d8a948ee42e1412e08988761d0754d7d10b803061cc3aebf35f92a5dbbab493bd0e1a9ef9e89a2130e83ba34 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.18 resolution: "@jridgewell/trace-mapping@npm:0.3.18" @@ -1326,28 +1605,28 @@ __metadata: languageName: node linkType: hard -"@sinonjs/commons@npm:^1.7.0": - version: 1.8.6 - resolution: "@sinonjs/commons@npm:1.8.6" - dependencies: - type-detect: 4.0.8 - checksum: 7d3f8c1e85f30cd4e83594fc19b7a657f14d49eb8d95a30095631ce15e906c869e0eff96c5b93dffea7490c00418b07f54582ba49c6560feb2a8c34c0b16832d +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 languageName: node linkType: hard -"@sinonjs/fake-timers@npm:^8.0.1": - version: 8.1.0 - resolution: "@sinonjs/fake-timers@npm:8.1.0" +"@sinonjs/commons@npm:^3.0.0": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" dependencies: - "@sinonjs/commons": ^1.7.0 - checksum: 09b5a158ce013a6c37613258bad79ca4efeb99b1f59c41c73cca36cac00b258aefcf46eeea970fccf06b989414d86fe9f54c1102272c0c3bdd51a313cea80949 + type-detect: 4.0.8 + checksum: a7c3e7cc612352f4004873747d9d8b2d4d90b13a6d483f685598c945a70e734e255f1ca5dc49702515533c403b32725defff148177453b3f3915bcb60e9d4601 languageName: node linkType: hard -"@tootallnate/once@npm:1": - version: 1.1.2 - resolution: "@tootallnate/once@npm:1.1.2" - checksum: e1fb1bbbc12089a0cb9433dc290f97bddd062deadb6178ce9bcb93bb7c1aecde5e60184bc7065aec42fe1663622a213493c48bbd4972d931aae48315f18e1be9 +"@sinonjs/fake-timers@npm:^10.0.2": + version: 10.3.0 + resolution: "@sinonjs/fake-timers@npm:10.3.0" + dependencies: + "@sinonjs/commons": ^3.0.0 + checksum: 614d30cb4d5201550c940945d44c9e0b6d64a888ff2cd5b357f95ad6721070d6b8839cd10e15b76bf5e14af0bcc1d8f9ec00d49a46318f1f669a4bec1d7f3148 languageName: node linkType: hard @@ -1358,7 +1637,30 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14": +"@tsconfig/node20@npm:^20.1.4": + version: 20.1.4 + resolution: "@tsconfig/node20@npm:20.1.4" + checksum: 345dba8074647f6c11b8d78afa76d9c16e3436cb56a8e78fe2060014d33a09f3f4fd6ed81dc90e955d3509f926cd7fd61c6ddfd3d5a1d80758d7844f7cc3a99e + languageName: node + linkType: hard + +"@typechain/ethers-v5@npm:^11.1.2": + version: 11.1.2 + resolution: "@typechain/ethers-v5@npm:11.1.2" + dependencies: + lodash: ^4.17.15 + ts-essentials: ^7.0.1 + peerDependencies: + "@ethersproject/abi": ^5.0.0 + "@ethersproject/providers": ^5.0.0 + ethers: ^5.1.3 + typechain: ^8.3.2 + typescript: ">=4.3.0" + checksum: 4f2d458306094c8e57bc0e05c86c1def210bd8b2cadd1062218cbc35fe3f6ac98aca08646c935a6fa5e57599be9fc0ddd2d4f7cf960fe28e27bf3ed58906c71f + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.1.14": version: 7.20.0 resolution: "@types/babel__core@npm:7.20.0" dependencies: @@ -1390,7 +1692,7 @@ __metadata: languageName: node linkType: hard -"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": version: 7.18.5 resolution: "@types/babel__traverse@npm:7.18.5" dependencies: @@ -1399,12 +1701,12 @@ __metadata: languageName: node linkType: hard -"@types/graceful-fs@npm:^4.1.2": - version: 4.1.6 - resolution: "@types/graceful-fs@npm:4.1.6" +"@types/graceful-fs@npm:^4.1.3": + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "*" - checksum: c3070ccdc9ca0f40df747bced1c96c71a61992d6f7c767e8fd24bb6a3c2de26e8b84135ede000b7e79db530a23e7e88dcd9db60eee6395d0f4ce1dae91369dd4 + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard @@ -1433,13 +1735,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:^27.0.1": - version: 27.5.2 - resolution: "@types/jest@npm:27.5.2" +"@types/jest@npm:^29.5.12": + version: 29.5.12 + resolution: "@types/jest@npm:29.5.12" dependencies: - jest-matcher-utils: ^27.0.0 - pretty-format: ^27.0.0 - checksum: 7e11c6826aa429ad990dc262e4e4b54aa36573287fddf15773e4137f07d11d3105f0dd9f1baff73252160a057df23f5529bb83b1bf83cd3f45f9460a5ca5c22e + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: 19b1efdeed9d9a60a81edc8226cdeae5af7479e493eaed273e01243891c9651f7b8b4c08fc633a7d0d1d379b091c4179bbaa0807af62542325fd72f2dd17ce1c languageName: node linkType: hard @@ -1473,10 +1775,10 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.1.5": - version: 2.7.2 - resolution: "@types/prettier@npm:2.7.2" - checksum: b47d76a5252265f8d25dd2fe2a5a61dc43ba0e6a96ffdd00c594cb4fd74c1982c2e346497e3472805d97915407a09423804cc2110a0b8e1b22cffcab246479b7 +"@types/prettier@npm:^2.1.1": + version: 2.7.3 + resolution: "@types/prettier@npm:2.7.3" + checksum: 705384209cea6d1433ff6c187c80dcc0b95d99d5c5ce21a46a9a58060c527973506822e428789d842761e0280d25e3359300f017fbe77b9755bc772ab3dc2f83 languageName: node linkType: hard @@ -1508,12 +1810,12 @@ __metadata: languageName: node linkType: hard -"@types/yargs@npm:^16.0.0": - version: 16.0.5 - resolution: "@types/yargs@npm:16.0.5" +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" dependencies: "@types/yargs-parser": "*" - checksum: 22697f7cc8aa32dcc10981a87f035e183303a58351c537c81fb450270d5c494b1d918186210e445b0eb2e4a8b34a8bda2a595f346bdb1c9ed2b63d193cb00430 + checksum: 4505bdebe8716ff383640c6e928f855b5d337cb3c68c81f7249fc6b983d0aa48de3eee26062b84f37e0d75a5797bc745e0c6e76f42f81771252a758c638f36ba languageName: node linkType: hard @@ -1709,13 +2011,6 @@ __metadata: languageName: node linkType: hard -"abab@npm:^2.0.3, abab@npm:^2.0.5": - version: 2.0.6 - resolution: "abab@npm:2.0.6" - checksum: 6ffc1af4ff315066c62600123990d87551ceb0aafa01e6539da77b0f5987ac7019466780bf480f1787576d4385e3690c81ccc37cfda12819bf510b8ab47e5a3e - languageName: node - linkType: hard - "abbrev@npm:1, abbrev@npm:^1.0.0": version: 1.1.1 resolution: "abbrev@npm:1.1.1" @@ -1723,16 +2018,6 @@ __metadata: languageName: node linkType: hard -"acorn-globals@npm:^6.0.0": - version: 6.0.0 - resolution: "acorn-globals@npm:6.0.0" - dependencies: - acorn: ^7.1.1 - acorn-walk: ^7.1.1 - checksum: 72d95e5b5e585f9acd019b993ab8bbba68bb3cbc9d9b5c1ebb3c2f1fe5981f11deababfb4949f48e6262f9c57878837f5958c0cca396f81023814680ca878042 - languageName: node - linkType: hard - "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -1742,31 +2027,6 @@ __metadata: languageName: node linkType: hard -"acorn-walk@npm:^7.1.1": - version: 7.2.0 - resolution: "acorn-walk@npm:7.2.0" - checksum: 9252158a79b9d92f1bc0dd6acc0fcfb87a67339e84bcc301bb33d6078936d27e35d606b4d35626d2962cd43c256d6f27717e70cbe15c04fff999ab0b2260b21f - languageName: node - linkType: hard - -"acorn@npm:^7.1.1": - version: 7.4.1 - resolution: "acorn@npm:7.4.1" - bin: - acorn: bin/acorn - checksum: 1860f23c2107c910c6177b7b7be71be350db9e1080d814493fae143ae37605189504152d1ba8743ba3178d0b37269ce1ffc42b101547fdc1827078f82671e407 - languageName: node - linkType: hard - -"acorn@npm:^8.2.4": - version: 8.8.2 - resolution: "acorn@npm:8.8.2" - bin: - acorn: bin/acorn - checksum: f790b99a1bf63ef160c967e23c46feea7787e531292bb827126334612c234ed489a0dc2c7ba33156416f0ffa8d25bf2b0fdb7f35c2ba60eb3e960572bece4001 - languageName: node - linkType: hard - "acorn@npm:^8.9.0": version: 8.11.2 resolution: "acorn@npm:8.11.2" @@ -1909,6 +2169,20 @@ __metadata: languageName: node linkType: hard +"array-back@npm:^3.0.1, array-back@npm:^3.1.0": + version: 3.1.0 + resolution: "array-back@npm:3.1.0" + checksum: 7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209 + languageName: node + linkType: hard + +"array-back@npm:^4.0.1, array-back@npm:^4.0.2": + version: 4.0.2 + resolution: "array-back@npm:4.0.2" + checksum: f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294 + languageName: node + linkType: hard + "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -1937,6 +2211,13 @@ __metadata: languageName: node linkType: hard +"async@npm:^3.2.3": + version: 3.2.5 + resolution: "async@npm:3.2.5" + checksum: 5ec77f1312301dee02d62140a6b1f7ee0edd2a0f983b6fd2b0849b969f245225b990b47b8243e7b9ad16451a53e7f68e753700385b706198ced888beedba3af4 + languageName: node + linkType: hard + "asynckit@npm:^0.4.0": version: 0.4.0 resolution: "asynckit@npm:0.4.0" @@ -1965,21 +2246,20 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-jest@npm:27.5.1" +"babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/transform": ^29.7.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^27.5.1 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: 4e93e6e9fb996cc5f1505e924eb8e8cc7b25c294ba9629762a2715390f48af6a4c14dbb84cd9730013ac0e03267a5a9aa2fb6318c544489cda7f50f4e506def4 + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 languageName: node linkType: hard @@ -1996,15 +2276,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-plugin-jest-hoist@npm:27.5.1" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 - "@types/babel__core": ^7.0.0 + "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 709c17727aa8fd3be755d256fb514bf945a5c2ea6017f037d80280fc44ae5fe7dfeebf63d8412df53796455c2c216119d628d8cc90b099434fd819005943d058 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -2030,15 +2310,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^27.5.1": - version: 27.5.1 - resolution: "babel-preset-jest@npm:27.5.1" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^27.5.1 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 251bcea11c18fd9672fec104eadb45b43f117ceeb326fa7345ced778d4c1feab29343cd7a87a1dcfae4997d6c851a8b386d7f7213792da6e23b74f4443a8976d + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -2149,13 +2429,6 @@ __metadata: languageName: node linkType: hard -"browser-process-hrtime@npm:^1.0.0": - version: 1.0.0 - resolution: "browser-process-hrtime@npm:1.0.0" - checksum: e30f868cdb770b1201afb714ad1575dd86366b6e861900884665fb627109b3cc757c40067d3bfee1ff2a29c835257ea30725a8018a9afd02ac1c24b408b1e45f - languageName: node - linkType: hard - "browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": version: 1.2.0 resolution: "browserify-aes@npm:1.2.0" @@ -2234,6 +2507,20 @@ __metadata: languageName: node linkType: hard +"browserslist@npm:^4.23.1": + version: 4.23.3 + resolution: "browserslist@npm:4.23.3" + dependencies: + caniuse-lite: ^1.0.30001646 + electron-to-chromium: ^1.5.4 + node-releases: ^2.0.18 + update-browserslist-db: ^1.1.0 + bin: + browserslist: cli.js + checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e + languageName: node + linkType: hard + "bs-logger@npm:0.x": version: 0.2.6 resolution: "bs-logger@npm:0.2.6" @@ -2349,7 +2636,14 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0": +"caniuse-lite@npm:^1.0.30001646": + version: 1.0.30001649 + resolution: "caniuse-lite@npm:1.0.30001649" + checksum: 7952512a243f22c942e0e99249def19d781ad1900db101f2d8de9d83de37db000a7dc7f226c9c99134001975e22852becf1677539c24c7ecae53467b681c400f + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -2360,7 +2654,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^4.0.0": +"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" dependencies: @@ -2520,6 +2814,30 @@ __metadata: languageName: node linkType: hard +"command-line-args@npm:^5.1.1": + version: 5.2.1 + resolution: "command-line-args@npm:5.2.1" + dependencies: + array-back: ^3.1.0 + find-replace: ^3.0.0 + lodash.camelcase: ^4.3.0 + typical: ^4.0.0 + checksum: e759519087be3cf2e86af8b9a97d3058b4910cd11ee852495be881a067b72891f6a32718fb685ee6d41531ab76b2b7bfb6602f79f882cd4b7587ff1e827982c7 + languageName: node + linkType: hard + +"command-line-usage@npm:^6.1.0": + version: 6.1.3 + resolution: "command-line-usage@npm:6.1.3" + dependencies: + array-back: ^4.0.2 + chalk: ^2.4.2 + table-layout: ^1.0.2 + typical: ^5.2.0 + checksum: 8261d4e5536eb0bcddee0ec5e89c05bb2abd18e5760785c8078ede5020bc1c612cbe28eb6586f5ed4a3660689748e5aaad4a72f21566f4ef39393694e2fa1a0b + languageName: node + linkType: hard + "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -2534,13 +2852,20 @@ __metadata: languageName: node linkType: hard -"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": +"convert-source-map@npm:^1.7.0": version: 1.9.0 resolution: "convert-source-map@npm:1.9.0" checksum: dc55a1f28ddd0e9485ef13565f8f756b342f9a46c4ae18b843fe3c30c675d058d6a4823eff86d472f187b176f0adf51ea7b69ea38be34be4a63cbbf91b0593c8 languageName: node linkType: hard +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 63ae9933be5a2b8d4509daca5124e20c14d023c820258e484e32dc324d34c2754e71297c94a05784064ad27615037ef677e3f0c00469fb55f409d2bb21261035 + languageName: node + linkType: hard + "create-ecdh@npm:^4.0.0": version: 4.0.4 resolution: "create-ecdh@npm:4.0.4" @@ -2578,6 +2903,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + "cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": version: 7.0.3 resolution: "cross-spawn@npm:7.0.3" @@ -2608,40 +2950,6 @@ __metadata: languageName: node linkType: hard -"cssom@npm:^0.4.4": - version: 0.4.4 - resolution: "cssom@npm:0.4.4" - checksum: e3bc1076e7ee4213d4fef05e7ae03bfa83dc05f32611d8edc341f4ecc3d9647b89c8245474c7dd2cdcdb797a27c462e99da7ad00a34399694559f763478ff53f - languageName: node - linkType: hard - -"cssom@npm:~0.3.6": - version: 0.3.8 - resolution: "cssom@npm:0.3.8" - checksum: 24beb3087c76c0d52dd458be9ee1fbc80ac771478a9baef35dd258cdeb527c68eb43204dd439692bb2b1ae5272fa5f2946d10946edab0d04f1078f85e06bc7f6 - languageName: node - linkType: hard - -"cssstyle@npm:^2.3.0": - version: 2.3.0 - resolution: "cssstyle@npm:2.3.0" - dependencies: - cssom: ~0.3.6 - checksum: 5f05e6fd2e3df0b44695c2f08b9ef38b011862b274e320665176467c0725e44a53e341bc4959a41176e83b66064ab786262e7380fd1cabeae6efee0d255bb4e3 - languageName: node - linkType: hard - -"data-urls@npm:^2.0.0": - version: 2.0.0 - resolution: "data-urls@npm:2.0.0" - dependencies: - abab: ^2.0.3 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.0.0 - checksum: 97caf828aac25e25e04ba6869db0f99c75e6859bb5b424ada28d3e7841941ebf08ddff3c1b1bb4585986bd507a5d54c2a716853ea6cb98af877400e637393e71 - languageName: node - linkType: hard - "debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" @@ -2663,21 +2971,38 @@ __metadata: languageName: node linkType: hard -"decimal.js@npm:^10.2.1": - version: 10.4.3 - resolution: "decimal.js@npm:10.4.3" - checksum: 796404dcfa9d1dbfdc48870229d57f788b48c21c603c3f6554a1c17c10195fc1024de338b0cf9e1efe0c7c167eeb18f04548979bcc5fdfabebb7cc0ae3287bae +"debug@npm:^4.3.1": + version: 4.3.6 + resolution: "debug@npm:4.3.6" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 1630b748dea3c581295e02137a9f5cbe2c1d85fea35c1e6597a65ca2b16a6fce68cec61b299d480787ef310ba927dc8c92d3061faba0ad06c6a724672f66be7f + languageName: node + linkType: hard + +"dedent@npm:^1.0.0": + version: 1.5.3 + resolution: "dedent@npm:1.5.3" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 045b595557b2a8ea2eb9b0b4623d764e9a87326486fe2b61191b4342ed93dc01245644d8a09f3108a50c0ee7965f1eedd92e4a3a503ed89ea8e810566ea27f9a languageName: node linkType: hard -"dedent@npm:^0.7.0": - version: 0.7.0 - resolution: "dedent@npm:0.7.0" - checksum: 87de191050d9a40dd70cad01159a0bcf05ecb59750951242070b6abf9569088684880d00ba92a955b4058804f16eeaf91d604f283929b4f614d181cd7ae633d2 +"deep-extend@npm:~0.6.0": + version: 0.6.0 + resolution: "deep-extend@npm:0.6.0" + checksum: 7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7 languageName: node linkType: hard -"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": +"deep-is@npm:^0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" checksum: edb65dd0d7d1b9c40b2f50219aef30e116cedd6fc79290e740972c132c09106d2e80aa0bc8826673dd5a00222d4179c84b36a790eef63a4c4bca75a37ef90804 @@ -2758,10 +3083,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^27.5.1": - version: 27.5.1 - resolution: "diff-sequences@npm:27.5.1" - checksum: a00db5554c9da7da225db2d2638d85f8e41124eccbd56cbaefb3b276dcbb1c1c2ad851c32defe2055a54a4806f030656cbf6638105fd6ce97bb87b90b32a33ca +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa languageName: node linkType: hard @@ -2794,12 +3119,14 @@ __metadata: languageName: node linkType: hard -"domexception@npm:^2.0.1": - version: 2.0.1 - resolution: "domexception@npm:2.0.1" +"ejs@npm:^3.1.10": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" dependencies: - webidl-conversions: ^5.0.0 - checksum: d638e9cb05c52999f1b2eb87c374b03311ea5b1d69c2f875bc92da73e17db60c12142b45c950228642ff7f845c536b65305483350d080df59003a653da80b691 + jake: ^10.8.5 + bin: + ejs: bin/cli.js + checksum: ce90637e9c7538663ae023b8a7a380b2ef7cc4096de70be85abf5a3b9641912dde65353211d05e24d56b1f242d71185c6d00e02cb8860701d571786d92c71f05 languageName: node linkType: hard @@ -2810,6 +3137,13 @@ __metadata: languageName: node linkType: hard +"electron-to-chromium@npm:^1.5.4": + version: 1.5.5 + resolution: "electron-to-chromium@npm:1.5.5" + checksum: fcdd2797ece1ece6764b88b5fc36cfc6a571e08b832c6777d8bbefa19cae22a36614411aacc5687d9fea7e1db86469f53c3952ca2579c5fe705dea7ed270d8cc + languageName: node + linkType: hard + "elliptic@npm:6.5.4, elliptic@npm:^6.5.2, elliptic@npm:^6.5.3": version: 6.5.4 resolution: "elliptic@npm:6.5.4" @@ -2825,10 +3159,10 @@ __metadata: languageName: node linkType: hard -"emittery@npm:^0.8.1": - version: 0.8.1 - resolution: "emittery@npm:0.8.1" - checksum: 2457e8c7b0688bb006126f2c025b2655abe682f66b184954122a8a065b5277f9813d49d627896a10b076b81c513ec5f491fd9c14fbd42c04b95ca3c9f3c365ee +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 2b089ab6306f38feaabf4f6f02792f9ec85fc054fda79f44f6790e61bbf6bc4e1616afb9b232e0c5ec5289a8a452f79bfa6d905a6fd64e94b49981f0934001c6 languageName: node linkType: hard @@ -2878,6 +3212,13 @@ __metadata: languageName: node linkType: hard +"escalade@npm:^3.1.2": + version: 3.1.2 + resolution: "escalade@npm:3.1.2" + checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 + languageName: node + linkType: hard + "escape-string-regexp@npm:^1.0.5": version: 1.0.5 resolution: "escape-string-regexp@npm:1.0.5" @@ -2899,25 +3240,6 @@ __metadata: languageName: node linkType: hard -"escodegen@npm:^2.0.0": - version: 2.0.0 - resolution: "escodegen@npm:2.0.0" - dependencies: - esprima: ^4.0.1 - estraverse: ^5.2.0 - esutils: ^2.0.2 - optionator: ^0.8.1 - source-map: ~0.6.1 - dependenciesMeta: - source-map: - optional: true - bin: - escodegen: bin/escodegen.js - esgenerate: bin/esgenerate.js - checksum: 5aa6b2966fafe0545e4e77936300cc94ad57cfe4dc4ebff9950492eaba83eef634503f12d7e3cbd644ecc1bab388ad0e92b06fd32222c9281a75d1cf02ec6cef - languageName: node - linkType: hard - "eslint-config-prettier@npm:^9.0.0": version: 9.1.0 resolution: "eslint-config-prettier@npm:9.1.0" @@ -3052,7 +3374,7 @@ __metadata: languageName: node linkType: hard -"esprima@npm:^4.0.0, esprima@npm:^4.0.1": +"esprima@npm:^4.0.0": version: 4.0.1 resolution: "esprima@npm:4.0.1" bin: @@ -3191,15 +3513,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^27.5.1": - version: 27.5.1 - resolution: "expect@npm:27.5.1" +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 - jest-get-type: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - checksum: b2c66beb52de53ef1872165aace40224e722bca3c2274c54cfa74b6d617d55cf0ccdbf36783ccd64dbea501b280098ed33fd0b207d4f15bc03cd3c7a24364a6a + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c languageName: node linkType: hard @@ -3230,14 +3553,14 @@ __metadata: languageName: node linkType: hard -"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" checksum: b191531e36c607977e5b1c47811158733c34ccb3bfde92c44798929e9b4154884378536d26ad90dfecd32e1ffc09c545d23535ad91b3161a27ddbb8ebe0cbecb languageName: node linkType: hard -"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": +"fast-levenshtein@npm:^2.0.6": version: 2.0.6 resolution: "fast-levenshtein@npm:2.0.6" checksum: 92cfec0a8dfafd9c7a15fba8f2cc29cd0b62b85f056d99ce448bbcd9f708e18ab2764bda4dd5158364f4145a7c72788538994f0d1787b956ef0d1062b0f7c24c @@ -3278,6 +3601,15 @@ __metadata: languageName: node linkType: hard +"filelist@npm:^1.0.4": + version: 1.0.4 + resolution: "filelist@npm:1.0.4" + dependencies: + minimatch: ^5.0.1 + checksum: a303573b0821e17f2d5e9783688ab6fbfce5d52aaac842790ae85e704a6f5e4e3538660a63183d6453834dedf1e0f19a9dadcebfa3e926c72397694ea11f5160 + languageName: node + linkType: hard + "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -3287,6 +3619,15 @@ __metadata: languageName: node linkType: hard +"find-replace@npm:^3.0.0": + version: 3.0.0 + resolution: "find-replace@npm:3.0.0" + dependencies: + array-back: ^3.0.1 + checksum: 6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08 + languageName: node + linkType: hard + "find-up@npm:^4.0.0, find-up@npm:^4.1.0": version: 4.1.0 resolution: "find-up@npm:4.1.0" @@ -3334,17 +3675,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^3.0.0": - version: 3.0.1 - resolution: "form-data@npm:3.0.1" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.8 - mime-types: ^2.1.12 - checksum: b019e8d35c8afc14a2bd8a7a92fa4f525a4726b6d5a9740e8d2623c30e308fbb58dc8469f90415a856698933c8479b01646a9dff33c87cc4e76d72aedbbf860d - languageName: node - linkType: hard - "form-data@npm:^4.0.0": version: 4.0.0 resolution: "form-data@npm:4.0.0" @@ -3387,6 +3717,17 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^7.0.0": + version: 7.0.1 + resolution: "fs-extra@npm:7.0.1" + dependencies: + graceful-fs: ^4.1.2 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 141b9dccb23b66a66cefdd81f4cda959ff89282b1d721b98cea19ba08db3dcbe6f862f28841f3cf24bb299e0b7e6c42303908f65093cb7e201708e86ea5a8dcf + languageName: node + linkType: hard + "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -3491,7 +3832,21 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.0.0, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": +"glob@npm:7.1.7": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: b61f48973bbdcf5159997b0874a2165db572b368b931135832599875919c237fc05c12984e38fe828e69aa8a921eb0e8a4997266211c517c9cfaae8a93988bb8 + languageName: node + linkType: hard + +"glob@npm:^7.0.0, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": version: 7.2.3 resolution: "glob@npm:7.2.3" dependencies: @@ -3548,7 +3903,7 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": +"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -3624,15 +3979,6 @@ __metadata: languageName: node linkType: hard -"html-encoding-sniffer@npm:^2.0.1": - version: 2.0.1 - resolution: "html-encoding-sniffer@npm:2.0.1" - dependencies: - whatwg-encoding: ^1.0.5 - checksum: bf30cce461015ed7e365736fcd6a3063c7bc016a91f74398ef6158886970a96333938f7c02417ab3c12aa82e3e53b40822145facccb9ddfbcdc15a879ae4d7ba - languageName: node - linkType: hard - "html-escaper@npm:^2.0.0": version: 2.0.2 resolution: "html-escaper@npm:2.0.2" @@ -3647,17 +3993,6 @@ __metadata: languageName: node linkType: hard -"http-proxy-agent@npm:^4.0.1": - version: 4.0.1 - resolution: "http-proxy-agent@npm:4.0.1" - dependencies: - "@tootallnate/once": 1 - agent-base: 6 - debug: 4 - checksum: c6a5da5a1929416b6bbdf77b1aca13888013fe7eb9d59fc292e25d18e041bb154a8dfada58e223fc7b76b9b2d155a87e92e608235201f77d34aa258707963a82 - languageName: node - linkType: hard - "http-proxy-agent@npm:^5.0.0": version: 5.0.0 resolution: "http-proxy-agent@npm:5.0.0" @@ -3702,15 +4037,6 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24": - version: 0.4.24 - resolution: "iconv-lite@npm:0.4.24" - dependencies: - safer-buffer: ">= 2.1.2 < 3" - checksum: bd9f120f5a5b306f0bc0b9ae1edeb1577161503f5f8252a20f1a9e56ef8775c9959fd01c55f2d3a39d9a8abaf3e30c1abeb1895f367dcbbe0a8fd1c9ca01c4f6 - languageName: node - linkType: hard - "iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -3920,13 +4246,6 @@ __metadata: languageName: node linkType: hard -"is-potential-custom-element-name@npm:^1.0.1": - version: 1.0.1 - resolution: "is-potential-custom-element-name@npm:1.0.1" - checksum: ced7bbbb6433a5b684af581872afe0e1767e2d1146b2207ca0068a648fb5cab9d898495d1ac0583524faaf24ca98176a7d9876363097c2d14fee6dd324f3a1ab - languageName: node - linkType: hard - "is-stream@npm:^2.0.0": version: 2.0.1 resolution: "is-stream@npm:2.0.1" @@ -3941,13 +4260,6 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -3971,7 +4283,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.2.1 resolution: "istanbul-lib-instrument@npm:5.2.1" dependencies: @@ -3984,6 +4296,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": ^7.23.9 + "@babel/parser": ^7.23.9 + "@istanbuljs/schema": ^0.1.3 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: 74104c60c65c4fa0e97cc76f039226c356123893929f067bfad5f86fe839e08f5d680354a68fead3bc9c1e2f3fa6f3f53cded70778e821d911e851d349f3545a + languageName: node + linkType: hard + "istanbul-lib-report@npm:^3.0.0": version: 3.0.0 resolution: "istanbul-lib-report@npm:3.0.0" @@ -4016,60 +4341,74 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-changed-files@npm:27.5.1" +"jake@npm:^10.8.5": + version: 10.9.2 + resolution: "jake@npm:10.9.2" + dependencies: + async: ^3.2.3 + chalk: ^4.0.2 + filelist: ^1.0.4 + minimatch: ^3.1.2 + bin: + jake: bin/cli.js + checksum: f2dc4a086b4f58446d02cb9be913c39710d9ea570218d7681bb861f7eeaecab7b458256c946aeaa7e548c5e0686cc293e6435501e4047174a3b6a504dcbfcaae + languageName: node + linkType: hard + +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 execa: ^5.0.0 - throat: ^6.0.1 - checksum: 95e9dc74c3ca688ef85cfeab270f43f8902721a6c8ade6ac2459459a77890c85977f537d6fb809056deaa6d9c3f075fa7d2699ff5f3bf7d3fda17c3760b79b15 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 languageName: node linkType: hard -"jest-circus@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-circus@npm:27.5.1" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - dedent: ^0.7.0 - expect: ^27.5.1 + dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + p-limit: ^3.1.0 + pretty-format: ^29.7.0 + pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - throat: ^6.0.1 - checksum: 6192dccbccb3a6acfa361cbb97bdbabe94864ccf3d885932cfd41f19534329d40698078cf9be1489415e8234255d6ea9f9aff5396b79ad842a6fca6e6fc08fd0 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 languageName: node linkType: hard -"jest-cli@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-cli@npm:27.5.1" +"jest-cli@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 chalk: ^4.0.0 + create-jest: ^29.7.0 exit: ^0.1.2 - graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 - prompts: ^2.0.1 - yargs: ^16.2.0 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + yargs: ^17.3.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -4077,212 +4416,173 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 6c0a69fb48e500241409e09ff743ed72bc6578d7769e2c994724e7ef1e5587f6c1f85dc429e93b98ae38a365222993ee70f0acc2199358992120900984f349e5 + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 languageName: node linkType: hard -"jest-config@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-config@npm:27.5.1" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: - "@babel/core": ^7.8.0 - "@jest/test-sequencer": ^27.5.1 - "@jest/types": ^27.5.1 - babel-jest: ^27.5.1 + "@babel/core": ^7.11.6 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 - glob: ^7.1.1 + glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-get-type: ^27.5.1 - jest-jasmine2: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runner: ^27.5.1 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^27.5.1 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: + "@types/node": "*" ts-node: ">=9.0.0" peerDependenciesMeta: + "@types/node": + optional: true ts-node: optional: true - checksum: 1188fd46c0ed78cbe3175eb9ad6712ccf74a74be33d9f0d748e147c107f0889f8b701fbff1567f31836ae18597dacdc43d6a8fc30dd34ade6c9229cc6c7cb82d + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff languageName: node linkType: hard -"jest-diff@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-diff@npm:27.5.1" +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: ^4.0.0 - diff-sequences: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 8be27c1e1ee57b2bb2bef9c0b233c19621b4c43d53a3c26e2c00a4e805eb4ea11fe1694a06a9fb0e80ffdcfdc0d2b1cb0b85920b3f5c892327ecd1e7bd96b865 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 languageName: node linkType: hard -"jest-docblock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-docblock@npm:27.5.1" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: ^3.0.0 - checksum: c0fed6d55b229d8bffdd8d03f121dd1a3be77c88f50552d374f9e1ea3bde57bf6bea017a0add04628d98abcb1bfb48b456438eeca8a74ef0053f4dae3b95d29c + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 languageName: node linkType: hard -"jest-each@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-each@npm:27.5.1" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - checksum: b5a6d8730fd938982569c9e0b42bdf3c242f97b957ed8155a6473b5f7b540970f8685524e7f53963dc1805319f4b6602abfc56605590ca19d55bd7a87e467e63 - languageName: node - linkType: hard - -"jest-environment-jsdom@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-jsdom@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - jsdom: ^16.6.0 - checksum: bc104aef7d7530d0740402aa84ac812138b6d1e51fe58adecce679f82b99340ddab73e5ec68fa079f33f50c9ddec9728fc9f0ddcca2ad6f0b351eed2762cc555 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c languageName: node linkType: hard -"jest-environment-node@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-environment-node@npm:27.5.1" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^27.5.1 - jest-util: ^27.5.1 - checksum: 0f988330c4f3eec092e3fb37ea753b0c6f702e83cd8f4d770af9c2bf964a70bc45fbd34ec6fdb6d71ce98a778d9f54afd673e63f222e4667fff289e8069dba39 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 languageName: node linkType: hard -"jest-get-type@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-get-type@npm:27.5.1" - checksum: 63064ab70195c21007d897c1157bf88ff94a790824a10f8c890392e7d17eda9c3900513cb291ca1c8d5722cad79169764e9a1279f7c8a9c4cd6e9109ff04bbc0 +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard -"jest-haste-map@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-haste-map@npm:27.5.1" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 - "@types/graceful-fs": ^4.1.2 + "@jest/types": ^29.6.3 + "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^27.5.1 - jest-serializer: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 micromatch: ^4.0.4 - walker: ^1.0.7 + walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: e092a1412829a9254b4725531ee72926de530f77fda7b0d9ea18008fb7623c16f72e772d8e93be71cac9e591b2c6843a669610887dd2c89bd9eb528856e3ab47 - languageName: node - linkType: hard - -"jest-jasmine2@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-jasmine2@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/node": "*" - chalk: ^4.0.0 - co: ^4.6.0 - expect: ^27.5.1 - is-generator-fn: ^2.0.0 - jest-each: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-runtime: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 - pretty-format: ^27.5.1 - throat: ^6.0.1 - checksum: b716adf253ceb73db661936153394ab90d7f3a8ba56d6189b7cd4df8e4e2a4153b4e63ebb5d36e29ceb0f4c211d5a6f36ab7048c6abbd881c8646567e2ab8e6d + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 languageName: node linkType: hard -"jest-leak-detector@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-leak-detector@npm:27.5.1" +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: 5c9689060960567ddaf16c570d87afa760a461885765d2c71ef4f4857bbc3af1482c34e3cce88e50beefde1bf35e33530b020480752057a7e3dbb1ca0bae359f + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard -"jest-matcher-utils@npm:^27.0.0, jest-matcher-utils@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-matcher-utils@npm:27.5.1" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: ^4.0.0 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - pretty-format: ^27.5.1 - checksum: bb2135fc48889ff3fe73888f6cc7168ddab9de28b51b3148f820c89fdfd2effdcad005f18be67d0b9be80eda208ad47290f62f03d0a33f848db2dd0273c8217a + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd languageName: node linkType: hard -"jest-message-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-message-util@npm:27.5.1" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^27.5.1 + pretty-format: ^29.7.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: eb6d637d1411c71646de578c49826b6da8e33dd293e501967011de9d1916d53d845afbfb52a5b661ff1c495be7c13f751c48c7f30781fd94fbd64842e8195796 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 languageName: node linkType: hard -"jest-mock@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-mock@npm:27.5.1" +"jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 "@types/node": "*" - checksum: f5b5904bb1741b4a1687a5f492535b7b1758dc26534c72a5423305f8711292e96a601dec966df81bb313269fb52d47227e29f9c2e08324d79529172f67311be0 + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 languageName: node linkType: hard @@ -4298,202 +4598,191 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-regex-util@npm:27.5.1" - checksum: d45ca7a9543616a34f7f3079337439cf07566e677a096472baa2810e274b9808b76767c97b0a4029b8a5b82b9d256dee28ef9ad4138b2b9e5933f6fac106c418 +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve-dependencies@npm:27.5.1" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 - jest-regex-util: ^27.5.1 - jest-snapshot: ^27.5.1 - checksum: c67af97afad1da88f5530317c732bbd1262d1225f6cd7f4e4740a5db48f90ab0bd8564738ac70d1a43934894f9aef62205c1b8f8ee89e5c7a737e6a121ee4c25 + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 languageName: node linkType: hard -"jest-resolve@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-resolve@npm:27.5.1" +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 + jest-haste-map: ^29.7.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^27.5.1 - jest-validate: ^27.5.1 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 resolve: ^1.20.0 - resolve.exports: ^1.1.0 + resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 735830e7265b20a348029738680bb2f6e37f80ecea86cda869a4c318ba3a45d39c7a3a873a22f7f746d86258c50ead6e7f501de043e201c095d7ba628a1c440f + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 languageName: node linkType: hard -"jest-runner@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runner@npm:27.5.1" +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": ^27.5.1 - "@jest/environment": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - emittery: ^0.8.1 + emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^27.5.1 - jest-environment-jsdom: ^27.5.1 - jest-environment-node: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-leak-detector: ^27.5.1 - jest-message-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-runtime: ^27.5.1 - jest-util: ^27.5.1 - jest-worker: ^27.5.1 - source-map-support: ^0.5.6 - throat: ^6.0.1 - checksum: 5bbe6cf847dd322b3332ec9d6977b54f91bd5f72ff620bc1a0192f0f129deda8aa7ca74c98922187a7aa87d8e0ce4f6c50e99a7ccb2a310bf4d94be2e0c3ce8e - languageName: node - linkType: hard - -"jest-runtime@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-runtime@npm:27.5.1" - dependencies: - "@jest/environment": ^27.5.1 - "@jest/fake-timers": ^27.5.1 - "@jest/globals": ^27.5.1 - "@jest/source-map": ^27.5.1 - "@jest/test-result": ^27.5.1 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 + p-limit: ^3.1.0 + source-map-support: 0.5.13 + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb + languageName: node + linkType: hard + +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" + dependencies: + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 + "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 - execa: ^5.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^27.5.1 - jest-message-util: ^27.5.1 - jest-mock: ^27.5.1 - jest-regex-util: ^27.5.1 - jest-resolve: ^27.5.1 - jest-snapshot: ^27.5.1 - jest-util: ^27.5.1 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 929e3df0c53dab43f831f2af4e2996b22aa8cb2d6d483919d6b0426cbc100098fd5b777b998c6568b77f8c4d860b2e83127514292ff61416064f5ef926492386 - languageName: node - linkType: hard - -"jest-serializer@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-serializer@npm:27.5.1" - dependencies: - "@types/node": "*" - graceful-fs: ^4.2.9 - checksum: 803e03a552278610edc6753c0dd9fa5bb5cd3ca47414a7b2918106efb62b79fd5e9ae785d0a21f12a299fa599fea8acc1fa6dd41283328cee43962cf7df9bb44 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e languageName: node linkType: hard -"jest-snapshot@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-snapshot@npm:27.5.1" +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" dependencies: - "@babel/core": ^7.7.2 + "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 + "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 - "@babel/traverse": ^7.7.2 - "@babel/types": ^7.0.0 - "@jest/transform": ^27.5.1 - "@jest/types": ^27.5.1 - "@types/babel__traverse": ^7.0.4 - "@types/prettier": ^2.1.5 + "@babel/types": ^7.3.3 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^27.5.1 + expect: ^29.7.0 graceful-fs: ^4.2.9 - jest-diff: ^27.5.1 - jest-get-type: ^27.5.1 - jest-haste-map: ^27.5.1 - jest-matcher-utils: ^27.5.1 - jest-message-util: ^27.5.1 - jest-util: ^27.5.1 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 natural-compare: ^1.4.0 - pretty-format: ^27.5.1 - semver: ^7.3.2 - checksum: a5cfadf0d21cd76063925d1434bc076443ed6d87847d0e248f0b245f11db3d98ff13e45cc03b15404027dabecd712d925f47b6eae4f64986f688640a7d362514 + pretty-format: ^29.7.0 + semver: ^7.5.3 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad languageName: node linkType: hard -"jest-util@npm:^27.0.0, jest-util@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-util@npm:27.5.1" +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: ac8d122f6daf7a035dcea156641fd3701aeba245417c40836a77e35b3341b9c02ddc5d904cfcd4ddbaa00ab854da76d3b911870cafdcdbaff90ea471de26c7d7 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca languageName: node linkType: hard -"jest-validate@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-validate@npm:27.5.1" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": ^27.5.1 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^27.5.1 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^27.5.1 - checksum: 82e870f8ee7e4fb949652711b1567f05ae31c54be346b0899e8353e5c20fad7692b511905b37966945e90af8dc0383eb41a74f3ffefb16140ea4f9164d841412 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae languageName: node linkType: hard -"jest-watcher@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-watcher@npm:27.5.1" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": ^27.5.1 - "@jest/types": ^27.5.1 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 - jest-util: ^27.5.1 + emittery: ^0.13.1 + jest-util: ^29.7.0 string-length: ^4.0.1 - checksum: 191c4e9c278c0902ade1a8a80883ac244963ba3e6e78607a3d5f729ccca9c6e71fb3b316f87883658132641c5d818aa84202585c76752e03c539e6cbecb820bd + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f languageName: node linkType: hard -"jest-worker@npm:^27.5.1": - version: 27.5.1 - resolution: "jest-worker@npm:27.5.1" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: "@types/node": "*" + jest-util: ^29.7.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 languageName: node linkType: hard -"jest@npm:^27.0.6": - version: 27.5.1 - resolution: "jest@npm:27.5.1" +"jest@npm:^29.7.0": + version: 29.7.0 + resolution: "jest@npm:29.7.0" dependencies: - "@jest/core": ^27.5.1 + "@jest/core": ^29.7.0 + "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^27.5.1 + jest-cli: ^29.7.0 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -4501,11 +4790,11 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 96f1d69042b3c6dfc695f2a4e4b0db38af6fb78582ad1a02beaa57cfcd77cbd31567d7d865c1c85709b7c3e176eefa3b2035ffecd646005f15d8ef528eccf205 + checksum: 17ca8d67504a7dbb1998cf3c3077ec9031ba3eb512da8d71cb91bcabb2b8995c4e4b292b740cb9bf1cbff5ce3e110b3f7c777b0cefb6f41ab05445f248d0ee0b languageName: node linkType: hard -"js-sha3@npm:0.8.0": +"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0": version: 0.8.0 resolution: "js-sha3@npm:0.8.0" checksum: 75df77c1fc266973f06cce8309ce010e9e9f07ec35ab12022ed29b7f0d9c8757f5a73e1b35aa24840dced0dea7059085aa143d817aea9e188e2a80d569d9adce @@ -4542,46 +4831,6 @@ __metadata: languageName: node linkType: hard -"jsdom@npm:^16.6.0": - version: 16.7.0 - resolution: "jsdom@npm:16.7.0" - dependencies: - abab: ^2.0.5 - acorn: ^8.2.4 - acorn-globals: ^6.0.0 - cssom: ^0.4.4 - cssstyle: ^2.3.0 - data-urls: ^2.0.0 - decimal.js: ^10.2.1 - domexception: ^2.0.1 - escodegen: ^2.0.0 - form-data: ^3.0.0 - html-encoding-sniffer: ^2.0.1 - http-proxy-agent: ^4.0.1 - https-proxy-agent: ^5.0.0 - is-potential-custom-element-name: ^1.0.1 - nwsapi: ^2.2.0 - parse5: 6.0.1 - saxes: ^5.0.1 - symbol-tree: ^3.2.4 - tough-cookie: ^4.0.0 - w3c-hr-time: ^1.0.2 - w3c-xmlserializer: ^2.0.0 - webidl-conversions: ^6.1.0 - whatwg-encoding: ^1.0.5 - whatwg-mimetype: ^2.3.0 - whatwg-url: ^8.5.0 - ws: ^7.4.6 - xml-name-validator: ^3.0.0 - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - checksum: 454b83371857000763ed31130a049acd1b113e3b927e6dcd75c67ddc30cdd242d7ebcac5c2294b7a1a6428155cb1398709c573b3c6d809218692ea68edd93370 - languageName: node - linkType: hard - "jsesc@npm:^2.5.1": version: 2.5.2 resolution: "jsesc@npm:2.5.2" @@ -4619,7 +4868,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:2.x, json5@npm:^2.2.2": +"json5@npm:^2.2.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -4642,6 +4891,18 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 6447d6224f0d31623eef9b51185af03ac328a7553efcee30fa423d98a9e276ca08db87d71e17f2310b0263fd3ffa6c2a90a6308367f661dc21580f9469897c9e + languageName: node + linkType: hard + "keccak@npm:3.0.1": version: 3.0.1 resolution: "keccak@npm:3.0.1" @@ -4691,21 +4952,14 @@ __metadata: languageName: node linkType: hard -"levn@npm:~0.3.0": - version: 0.3.0 - resolution: "levn@npm:0.3.0" - dependencies: - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - checksum: 0d084a524231a8246bb10fec48cdbb35282099f6954838604f3c7fc66f2e16fa66fd9cc2f3f20a541a113c4dafdf181e822c887c8a319c9195444e6c64ac395e - languageName: node - linkType: hard - "lido-l2-bridge-ethereum-bot@workspace:.": version: 0.0.0-use.local resolution: "lido-l2-bridge-ethereum-bot@workspace:." dependencies: - "@types/jest": ^27.0.1 + "@jest/globals": ^29.7.0 + "@tsconfig/node20": ^20.1.4 + "@typechain/ethers-v5": ^11.1.2 + "@types/jest": ^29.5.12 "@types/nodemon": ^1.19.0 "@typescript-eslint/eslint-plugin": ^6.12.0 "@typescript-eslint/parser": ^6.12.0 @@ -4715,11 +4969,12 @@ __metadata: eslint-plugin-jest: ^27.6.0 eslint-plugin-prettier: ^5.0.1 forta-agent: ^0.1.48 - jest: ^27.0.6 + jest: ^29.7.0 nodemon: ^2.0.8 prettier: ^3.1.0 - ts-jest: ^27.0.3 - typescript: ^4.3.4 + ts-jest: ^29.2.4 + typechain: ^8.3.2 + typescript: ^5.3.2 languageName: unknown linkType: soft @@ -4769,7 +5024,7 @@ __metadata: languageName: node linkType: hard -"lodash@npm:^4.17.21, lodash@npm:^4.7.0": +"lodash@npm:^4.17.15, lodash@npm:^4.17.21": version: 4.17.21 resolution: "lodash@npm:4.17.21" checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 @@ -5185,6 +5440,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.18": + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 + languageName: node + linkType: hard + "node-releases@npm:^2.0.8": version: 2.0.10 resolution: "node-releases@npm:2.0.10" @@ -5271,13 +5533,6 @@ __metadata: languageName: node linkType: hard -"nwsapi@npm:^2.2.0": - version: 2.2.4 - resolution: "nwsapi@npm:2.2.4" - checksum: a5eb9467158bdf255d27e9c4555e9ca02e4ba84ddce9b683856ed49de23eb1bb28ae3b8e791b7a93d156ad62b324a56f4d44cad827c2ca288c107ed6bdaff8a8 - languageName: node - linkType: hard - "once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -5317,20 +5572,6 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.8.1": - version: 0.8.3 - resolution: "optionator@npm:0.8.3" - dependencies: - deep-is: ~0.1.3 - fast-levenshtein: ~2.0.6 - levn: ~0.3.0 - prelude-ls: ~1.1.2 - type-check: ~0.3.2 - word-wrap: ~1.2.3 - checksum: b8695ddf3d593203e25ab0900e265d860038486c943ff8b774f596a310f8ceebdb30c6832407a8198ba3ec9debe1abe1f51d4aad94843612db3b76d690c61d34 - languageName: node - linkType: hard - "optionator@npm:^0.9.3": version: 0.9.3 resolution: "optionator@npm:0.9.3" @@ -5354,7 +5595,7 @@ __metadata: languageName: node linkType: hard -"p-limit@npm:^3.0.2": +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": version: 3.1.0 resolution: "p-limit@npm:3.1.0" dependencies: @@ -5441,13 +5682,6 @@ __metadata: languageName: node linkType: hard -"parse5@npm:6.0.1": - version: 6.0.1 - resolution: "parse5@npm:6.0.1" - checksum: 7d569a176c5460897f7c8f3377eff640d54132b9be51ae8a8fa4979af940830b2b0c296ce75e5bd8f4041520aadde13170dbdec44889975f906098ea0002f4bd - languageName: node - linkType: hard - "pascal-case@npm:^3.1.2": version: 3.1.2 resolution: "pascal-case@npm:3.1.2" @@ -5520,6 +5754,13 @@ __metadata: languageName: node linkType: hard +"picocolors@npm:^1.0.1": + version: 1.0.1 + resolution: "picocolors@npm:1.0.1" + checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -5550,13 +5791,6 @@ __metadata: languageName: node linkType: hard -"prelude-ls@npm:~1.1.2": - version: 1.1.2 - resolution: "prelude-ls@npm:1.1.2" - checksum: c4867c87488e4a0c233e158e4d0d5565b609b105d75e4c05dc760840475f06b731332eb93cc8c9cecb840aa8ec323ca3c9a56ad7820ad2e63f0261dadcb154e4 - languageName: node - linkType: hard - "prettier-linter-helpers@npm:^1.0.0": version: 1.0.0 resolution: "prettier-linter-helpers@npm:1.0.0" @@ -5566,6 +5800,15 @@ __metadata: languageName: node linkType: hard +"prettier@npm:^2.3.1": + version: 2.8.8 + resolution: "prettier@npm:2.8.8" + bin: + prettier: bin-prettier.js + checksum: b49e409431bf129dd89238d64299ba80717b57ff5a6d1c1a8b1a28b590d998a34e083fa13573bc732bb8d2305becb4c9a4407f8486c81fa7d55100eb08263cf8 + languageName: node + linkType: hard + "prettier@npm:^3.1.0": version: 3.1.0 resolution: "prettier@npm:3.1.0" @@ -5575,14 +5818,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^27.0.0, pretty-format@npm:^27.5.1": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - ansi-regex: ^5.0.1 + "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 - react-is: ^17.0.1 - checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 + react-is: ^18.0.0 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 languageName: node linkType: hard @@ -5664,13 +5907,6 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d - languageName: node - linkType: hard - "pstree.remy@npm:^1.1.8": version: 1.1.8 resolution: "pstree.remy@npm:1.1.8" @@ -5699,10 +5935,10 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 +"pure-rand@npm:^6.0.0": + version: 6.1.0 + resolution: "pure-rand@npm:6.1.0" + checksum: 8d53bc02bed99eca0b65b505090152ee7e9bd67dd74f8ff32ba1c883b87234067c5bf68d2614759fb217d82594d7a92919e6df80f97885e7b12b42af4bd3316a languageName: node linkType: hard @@ -5713,13 +5949,6 @@ __metadata: languageName: node linkType: hard -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -5746,10 +5975,10 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 +"react-is@npm:^18.0.0": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: e20fe84c86ff172fc8d898251b7cc2c43645d108bf96d0b8edf39b98f9a2cae97b40520ee7ed8ee0085ccc94736c4886294456033304151c3f94978cec03df21 languageName: node linkType: hard @@ -5782,6 +6011,13 @@ __metadata: languageName: node linkType: hard +"reduce-flatten@npm:^2.0.0": + version: 2.0.0 + resolution: "reduce-flatten@npm:2.0.0" + checksum: 64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8 + languageName: node + linkType: hard + "require-directory@npm:^2.1.1": version: 2.1.1 resolution: "require-directory@npm:2.1.1" @@ -5789,13 +6025,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - "resolve-cwd@npm:^3.0.0": version: 3.0.0 resolution: "resolve-cwd@npm:3.0.0" @@ -5819,10 +6048,10 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^1.1.0": - version: 1.1.1 - resolution: "resolve.exports@npm:1.1.1" - checksum: 485aa10082eb388a569d696e17ad7b16f4186efc97dd34eadd029d95b811f21ffee13b1b733198bb4584dbb3cb296aa6f141835221fb7613b9606b84f1386655 +"resolve.exports@npm:^2.0.0": + version: 2.0.2 + resolution: "resolve.exports@npm:2.0.2" + checksum: 1c7778ca1b86a94f8ab4055d196c7d87d1874b96df4d7c3e67bbf793140f0717fd506dcafd62785b079cd6086b9264424ad634fb904409764c3509c3df1653f2 languageName: node linkType: hard @@ -5873,7 +6102,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": +"rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" dependencies: @@ -5919,22 +6148,13 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": +"safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 languageName: node linkType: hard -"saxes@npm:^5.0.1": - version: 5.0.1 - resolution: "saxes@npm:5.0.1" - dependencies: - xmlchars: ^2.2.0 - checksum: 5636b55cf15f7cf0baa73f2797bf992bdcf75d1b39d82c0aa4608555c774368f6ac321cb641fd5f3d3ceb87805122cd47540da6a7b5960fe0dbdb8f8c263f000 - languageName: node - linkType: hard - "scrypt-js@npm:3.0.1": version: 3.0.1 resolution: "scrypt-js@npm:3.0.1" @@ -5954,17 +6174,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.3.2": - version: 7.5.0 - resolution: "semver@npm:7.5.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 2d266937756689a76f124ffb4c1ea3e1bbb2b263219f90ada8a11aebebe1280b13bb76cca2ca96bdee3dbc554cbc0b24752eb895b2a51577aa644427e9229f2b - languageName: node - linkType: hard - "semver@npm:^5.7.1": version: 5.7.1 resolution: "semver@npm:5.7.1" @@ -5983,6 +6192,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + "semver@npm:^7.3.5": version: 7.5.1 resolution: "semver@npm:7.5.1" @@ -6005,6 +6223,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.5.3": + version: 7.6.3 + resolution: "semver@npm:7.6.3" + bin: + semver: bin/semver.js + checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + languageName: node + linkType: hard + "semver@npm:~7.0.0": version: 7.0.0 resolution: "semver@npm:7.0.0" @@ -6071,7 +6298,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": +"signal-exit@npm:^3.0.3, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 @@ -6136,30 +6363,23 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.6": - version: 0.5.21 - resolution: "source-map-support@npm:0.5.21" +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" dependencies: buffer-from: ^1.0.0 source-map: ^0.6.0 - checksum: 43e98d700d79af1d36f859bdb7318e601dfc918c7ba2e98456118ebc4c4872b327773e5a1df09b0524e9e5063bb18f0934538eace60cca2710d1fa687645d137 + checksum: 933550047b6c1a2328599a21d8b7666507427c0f5ef5eaadd56b5da0fd9505e239053c66fe181bf1df469a3b7af9d775778eee283cbb7ae16b902ddc09e93a97 languageName: node linkType: hard -"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": +"source-map@npm:^0.6.0, source-map@npm:^0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 languageName: node linkType: hard -"source-map@npm:^0.7.3": - version: 0.7.4 - resolution: "source-map@npm:0.7.4" - checksum: 01cc5a74b1f0e1d626a58d36ad6898ea820567e87f18dfc9d24a9843a351aaa2ec09b87422589906d6ff1deed29693e176194dc88bcae7c9a852dc74b311dbf5 - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -6185,6 +6405,13 @@ __metadata: languageName: node linkType: hard +"string-format@npm:^2.0.0": + version: 2.0.0 + resolution: "string-format@npm:2.0.0" + checksum: dada2ef95f6d36c66562c673d95315f80457fa7dce2f3609a2e75d1190b98c88319028cf0a5b6c043d01c18d581b2641579f79480584ba030d6ac6fceb30bc55 + languageName: node + linkType: hard + "string-length@npm:^4.0.1": version: 4.0.2 resolution: "string-length@npm:4.0.2" @@ -6261,7 +6488,7 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": +"supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" dependencies: @@ -6279,16 +6506,6 @@ __metadata: languageName: node linkType: hard -"supports-hyperlinks@npm:^2.0.0": - version: 2.3.0 - resolution: "supports-hyperlinks@npm:2.3.0" - dependencies: - has-flag: ^4.0.0 - supports-color: ^7.0.0 - checksum: 9ee0de3c8ce919d453511b2b1588a8205bd429d98af94a01df87411391010fe22ca463f268c84b2ce2abad019dfff8452aa02806eeb5c905a8d7ad5c4f4c52b8 - languageName: node - linkType: hard - "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -6296,13 +6513,6 @@ __metadata: languageName: node linkType: hard -"symbol-tree@npm:^3.2.4": - version: 3.2.4 - resolution: "symbol-tree@npm:3.2.4" - checksum: 6e8fc7e1486b8b54bea91199d9535bb72f10842e40c79e882fc94fb7b14b89866adf2fd79efa5ebb5b658bc07fb459ccce5ac0e99ef3d72f474e74aaf284029d - languageName: node - linkType: hard - "synckit@npm:^0.8.5": version: 0.8.6 resolution: "synckit@npm:0.8.6" @@ -6313,6 +6523,18 @@ __metadata: languageName: node linkType: hard +"table-layout@npm:^1.0.2": + version: 1.0.2 + resolution: "table-layout@npm:1.0.2" + dependencies: + array-back: ^4.0.1 + deep-extend: ~0.6.0 + typical: ^5.2.0 + wordwrapjs: ^4.0.0 + checksum: 8f41b5671f101a5195747ec1727b1d35ea2cd5bf85addda11cc2f4b36892db9696ce3c2c7334b5b8a122505b34d19135fede50e25678df71b0439e0704fd953f + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.14 resolution: "tar@npm:6.1.14" @@ -6327,16 +6549,6 @@ __metadata: languageName: node linkType: hard -"terminal-link@npm:^2.0.0": - version: 2.1.1 - resolution: "terminal-link@npm:2.1.1" - dependencies: - ansi-escapes: ^4.2.1 - supports-hyperlinks: ^2.0.0 - checksum: ce3d2cd3a438c4a9453947aa664581519173ea40e77e2534d08c088ee6dda449eabdbe0a76d2a516b8b73c33262fedd10d5270ccf7576ae316e3db170ce6562f - languageName: node - linkType: hard - "test-exclude@npm:^6.0.0": version: 6.0.0 resolution: "test-exclude@npm:6.0.0" @@ -6355,13 +6567,6 @@ __metadata: languageName: node linkType: hard -"throat@npm:^6.0.1": - version: 6.0.2 - resolution: "throat@npm:6.0.2" - checksum: 463093768d4884772020bb18b0f33d3fec8a2b4173f7da3958dfbe88ff0f1e686ffadf0f87333bf6f6db7306b1450efc7855df69c78bf0bfa61f6d84a3361fe8 - languageName: node - linkType: hard - "titleize@npm:^3.0.0": version: 3.0.0 resolution: "titleize@npm:3.0.0" @@ -6403,58 +6608,64 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.0.0": - version: 4.1.2 - resolution: "tough-cookie@npm:4.1.2" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: a7359e9a3e875121a84d6ba40cc184dec5784af84f67f3a56d1d2ae39b87c0e004e6ba7c7331f9622a7d2c88609032473488b28fe9f59a1fec115674589de39a +"ts-api-utils@npm:^1.0.1": + version: 1.0.3 + resolution: "ts-api-utils@npm:1.0.3" + peerDependencies: + typescript: ">=4.2.0" + checksum: 441cc4489d65fd515ae6b0f4eb8690057add6f3b6a63a36073753547fb6ce0c9ea0e0530220a0b282b0eec535f52c4dfc315d35f8a4c9a91c0def0707a714ca6 languageName: node linkType: hard -"tr46@npm:^2.1.0": - version: 2.1.0 - resolution: "tr46@npm:2.1.0" +"ts-command-line-args@npm:^2.2.0": + version: 2.5.1 + resolution: "ts-command-line-args@npm:2.5.1" dependencies: - punycode: ^2.1.1 - checksum: ffe6049b9dca3ae329b059aada7f515b0f0064c611b39b51ff6b53897e954650f6f63d9319c6c008d36ead477c7b55e5f64c9dc60588ddc91ff720d64eb710b3 + chalk: ^4.1.0 + command-line-args: ^5.1.1 + command-line-usage: ^6.1.0 + string-format: ^2.0.0 + bin: + write-markdown: dist/write-markdown.js + checksum: 7c0a7582e94f1d2160e3dd379851ec4f1758bc673ccd71bae07f839f83051b6b83e0ae14325c2d04ea728e5bde7b7eacfd2ab060b8fd4b8ab29e0bbf77f6c51e languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1": - version: 1.0.3 - resolution: "ts-api-utils@npm:1.0.3" +"ts-essentials@npm:^7.0.1": + version: 7.0.3 + resolution: "ts-essentials@npm:7.0.3" peerDependencies: - typescript: ">=4.2.0" - checksum: 441cc4489d65fd515ae6b0f4eb8690057add6f3b6a63a36073753547fb6ce0c9ea0e0530220a0b282b0eec535f52c4dfc315d35f8a4c9a91c0def0707a714ca6 + typescript: ">=3.7.0" + checksum: 74d75868acf7f8b95e447d8b3b7442ca21738c6894e576df9917a352423fde5eb43c5651da5f78997da6061458160ae1f6b279150b42f47ccc58b73e55acaa2f languageName: node linkType: hard -"ts-jest@npm:^27.0.3": - version: 27.1.5 - resolution: "ts-jest@npm:27.1.5" +"ts-jest@npm:^29.2.4": + version: 29.2.4 + resolution: "ts-jest@npm:29.2.4" dependencies: bs-logger: 0.x + ejs: ^3.1.10 fast-json-stable-stringify: 2.x - jest-util: ^27.0.0 - json5: 2.x + jest-util: ^29.0.0 + json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - semver: 7.x - yargs-parser: 20.x + semver: ^7.5.3 + yargs-parser: ^21.0.1 peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" - "@types/jest": ^27.0.0 - babel-jest: ">=27.0.0 <28" - jest: ^27.0.0 - typescript: ">=3.8 <5.0" + "@jest/transform": ^29.0.0 + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" peerDependenciesMeta: "@babel/core": optional: true - "@types/jest": + "@jest/transform": + optional: true + "@jest/types": optional: true babel-jest: optional: true @@ -6462,7 +6673,7 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 3ef51c538b82f49b3f529331c1a017871a2f90e7a9a6e69333304755036d121818c6b120e2ce32dd161ff8bb2487efec0c790753ecd39b46a9ed1ce0d241464c + checksum: 142246f12bb11d5edbfb5a65e298097667e2c4d390e316e356416ce00d3cd157220dbfb9de2a56b38f30776bc92ba59eff9fd78e9345ba4c6712783f27f5475a languageName: node linkType: hard @@ -6507,15 +6718,6 @@ __metadata: languageName: node linkType: hard -"type-check@npm:~0.3.2": - version: 0.3.2 - resolution: "type-check@npm:0.3.2" - dependencies: - prelude-ls: ~1.1.2 - checksum: dd3b1495642731bc0e1fc40abe5e977e0263005551ac83342ecb6f4f89551d106b368ec32ad3fb2da19b3bd7b2d1f64330da2ea9176d8ddbfe389fb286eb5124 - languageName: node - linkType: hard - "type-detect@npm:4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" @@ -6537,32 +6739,59 @@ __metadata: languageName: node linkType: hard -"typedarray-to-buffer@npm:^3.1.5": - version: 3.1.5 - resolution: "typedarray-to-buffer@npm:3.1.5" - dependencies: - is-typedarray: ^1.0.0 - checksum: 99c11aaa8f45189fcfba6b8a4825fd684a321caa9bd7a76a27cf0c7732c174d198b99f449c52c3818107430b5f41c0ccbbfb75cb2ee3ca4a9451710986d61a60 +"typechain@npm:^8.3.2": + version: 8.3.2 + resolution: "typechain@npm:8.3.2" + dependencies: + "@types/prettier": ^2.1.1 + debug: ^4.3.1 + fs-extra: ^7.0.0 + glob: 7.1.7 + js-sha3: ^0.8.0 + lodash: ^4.17.15 + mkdirp: ^1.0.4 + prettier: ^2.3.1 + ts-command-line-args: ^2.2.0 + ts-essentials: ^7.0.1 + peerDependencies: + typescript: ">=4.3.0" + bin: + typechain: dist/cli/cli.js + checksum: 146a1896fa93403404be78757790b0f95b5457efebcca16b61622e09c374d555ef4f837c1c4eedf77e03abc50276d96a2f33064ec09bb802f62d8cc2b13fce70 languageName: node linkType: hard -"typescript@npm:^4.3.4": - version: 4.9.5 - resolution: "typescript@npm:4.9.5" +"typescript@npm:^5.3.2": + version: 5.5.4 + resolution: "typescript@npm:5.5.4" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ee000bc26848147ad423b581bd250075662a354d84f0e06eb76d3b892328d8d4440b7487b5a83e851b12b255f55d71835b008a66cbf8f255a11e4400159237db + checksum: b309040f3a1cd91c68a5a58af6b9fdd4e849b8c42d837b2c2e73f9a4f96a98c4f1ed398a9aab576ee0a4748f5690cf594e6b99dbe61de7839da748c41e6d6ca8 languageName: node linkType: hard -"typescript@patch:typescript@^4.3.4#~builtin": - version: 4.9.5 - resolution: "typescript@patch:typescript@npm%3A4.9.5#~builtin::version=4.9.5&hash=d73830" +"typescript@patch:typescript@^5.3.2#~builtin": + version: 5.5.4 + resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=d73830" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 2eee5c37cad4390385db5db5a8e81470e42e8f1401b0358d7390095d6f681b410f2c4a0c496c6ff9ebd775423c7785cdace7bcdad76c7bee283df3d9718c0f20 + checksum: fc52962f31a5bcb716d4213bef516885e4f01f30cea797a831205fc9ef12b405a40561c40eae3127ab85ba1548e7df49df2bcdee6b84a94bfbe3a0d7eff16b14 + languageName: node + linkType: hard + +"typical@npm:^4.0.0": + version: 4.0.0 + resolution: "typical@npm:4.0.0" + checksum: a242081956825328f535e6195a924240b34daf6e7fdb573a1809a42b9f37fb8114fa99c7ab89a695e0cdb419d4149d067f6723e4b95855ffd39c6c4ca378efb3 + languageName: node + linkType: hard + +"typical@npm:^5.2.0": + version: 5.2.0 + resolution: "typical@npm:5.2.0" + checksum: ccaeb151a9a556291b495571ca44c4660f736fb49c29314bbf773c90fad92e9485d3cc2b074c933866c1595abbbc962f2b8bfc6e0f52a8c6b0cdd205442036ac languageName: node linkType: hard @@ -6591,10 +6820,10 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 40cdc60f6e61070fe658ca36016a8f4ec216b29bf04a55dce14e3710cc84c7448538ef4dad3728d0bfe29975ccd7bfb5f414c45e7b78883567fb31b246f02dff languageName: node linkType: hard @@ -6619,6 +6848,20 @@ __metadata: languageName: node linkType: hard +"update-browserslist-db@npm:^1.1.0": + version: 1.1.0 + resolution: "update-browserslist-db@npm:1.1.0" + dependencies: + escalade: ^3.1.2 + picocolors: ^1.0.1 + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -6628,16 +6871,6 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -6663,36 +6896,18 @@ __metadata: languageName: node linkType: hard -"v8-to-istanbul@npm:^8.1.0": - version: 8.1.1 - resolution: "v8-to-istanbul@npm:8.1.1" +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" dependencies: + "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 - convert-source-map: ^1.6.0 - source-map: ^0.7.3 - checksum: 54ce92bec2727879626f623d02c8d193f0c7e919941fa373ec135189a8382265117f5316ea317a1e12a5f9c13d84d8449052a731fe3306fa4beaafbfa4cab229 - languageName: node - linkType: hard - -"w3c-hr-time@npm:^1.0.2": - version: 1.0.2 - resolution: "w3c-hr-time@npm:1.0.2" - dependencies: - browser-process-hrtime: ^1.0.0 - checksum: ec3c2dacbf8050d917bbf89537a101a08c2e333b4c19155f7d3bedde43529d4339db6b3d049d9610789cb915f9515f8be037e0c54c079e9d4735c50b37ed52b9 + convert-source-map: ^2.0.0 + checksum: ded42cd535d92b7fd09a71c4c67fb067487ef5551cc227bfbf2a1f159a842e4e4acddaef20b955789b8d3b455b9779d036853f4a27ce15007f6364a4d30317ae languageName: node linkType: hard -"w3c-xmlserializer@npm:^2.0.0": - version: 2.0.0 - resolution: "w3c-xmlserializer@npm:2.0.0" - dependencies: - xml-name-validator: ^3.0.0 - checksum: ae25c51cf71f1fb2516df1ab33a481f83461a117565b95e3d0927432522323f93b1b2846cbb60196d337970c421adb604fc2d0d180c6a47a839da01db5b9973b - languageName: node - linkType: hard - -"walker@npm:^1.0.7": +"walker@npm:^1.0.8": version: 1.0.8 resolution: "walker@npm:1.0.8" dependencies: @@ -6701,47 +6916,6 @@ __metadata: languageName: node linkType: hard -"webidl-conversions@npm:^5.0.0": - version: 5.0.0 - resolution: "webidl-conversions@npm:5.0.0" - checksum: ccf1ec2ca7c0b5671e5440ace4a66806ae09c49016ab821481bec0c05b1b82695082dc0a27d1fe9d804d475a408ba0c691e6803fd21be608e710955d4589cd69 - languageName: node - linkType: hard - -"webidl-conversions@npm:^6.1.0": - version: 6.1.0 - resolution: "webidl-conversions@npm:6.1.0" - checksum: 1f526507aa491f972a0c1409d07f8444e1d28778dfa269a9971f2e157182f3d496dc33296e4ed45b157fdb3bf535bb90c90bf10c50dcf1dd6caacb2a34cc84fb - languageName: node - linkType: hard - -"whatwg-encoding@npm:^1.0.5": - version: 1.0.5 - resolution: "whatwg-encoding@npm:1.0.5" - dependencies: - iconv-lite: 0.4.24 - checksum: 5be4efe111dce29ddee3448d3915477fcc3b28f991d9cf1300b4e50d6d189010d47bca2f51140a844cf9b726e8f066f4aee72a04d687bfe4f2ee2767b2f5b1e6 - languageName: node - linkType: hard - -"whatwg-mimetype@npm:^2.3.0": - version: 2.3.0 - resolution: "whatwg-mimetype@npm:2.3.0" - checksum: 23eb885940bcbcca4ff841c40a78e9cbb893ec42743993a42bf7aed16085b048b44b06f3402018931687153550f9a32d259dfa524e4f03577ab898b6965e5383 - languageName: node - linkType: hard - -"whatwg-url@npm:^8.0.0, whatwg-url@npm:^8.5.0": - version: 8.7.0 - resolution: "whatwg-url@npm:8.7.0" - dependencies: - lodash: ^4.7.0 - tr46: ^2.1.0 - webidl-conversions: ^6.1.0 - checksum: a87abcc6cefcece5311eb642858c8fdb234e51ec74196bfacf8def2edae1bfbffdf6acb251646ed6301f8cee44262642d8769c707256125a91387e33f405dd1e - languageName: node - linkType: hard - "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" @@ -6762,10 +6936,13 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:~1.2.3": - version: 1.2.3 - resolution: "word-wrap@npm:1.2.3" - checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f +"wordwrapjs@npm:^4.0.0": + version: 4.0.1 + resolution: "wordwrapjs@npm:4.0.1" + dependencies: + reduce-flatten: ^2.0.0 + typical: ^5.2.0 + checksum: 3d927f3c95d0ad990968da54c0ad8cde2801d8e91006cd7474c26e6b742cc8557250ce495c9732b2f9db1f903601cb74ec282e0f122ee0d02d7abe81e150eea8 languageName: node linkType: hard @@ -6787,19 +6964,17 @@ __metadata: languageName: node linkType: hard -"write-file-atomic@npm:^3.0.0": - version: 3.0.3 - resolution: "write-file-atomic@npm:3.0.3" +"write-file-atomic@npm:^4.0.2": + version: 4.0.2 + resolution: "write-file-atomic@npm:4.0.2" dependencies: imurmurhash: ^0.1.4 - is-typedarray: ^1.0.0 - signal-exit: ^3.0.2 - typedarray-to-buffer: ^3.1.5 - checksum: c55b24617cc61c3a4379f425fc62a386cc51916a9b9d993f39734d005a09d5a4bb748bc251f1304e7abd71d0a26d339996c275955f527a131b1dcded67878280 + signal-exit: ^3.0.7 + checksum: 5da60bd4eeeb935eec97ead3df6e28e5917a6bd317478e4a85a5285e8480b8ed96032bbcc6ecd07b236142a24f3ca871c924ec4a6575e623ec1b11bf8c1c253c languageName: node linkType: hard -"ws@npm:7.4.6, ws@npm:^7.4.6": +"ws@npm:7.4.6": version: 7.4.6 resolution: "ws@npm:7.4.6" peerDependencies: @@ -6814,20 +6989,6 @@ __metadata: languageName: node linkType: hard -"xml-name-validator@npm:^3.0.0": - version: 3.0.0 - resolution: "xml-name-validator@npm:3.0.0" - checksum: b3ac459afed783c285bb98e4960bd1f3ba12754fd4f2320efa0f9181ca28928c53cc75ca660d15d205e81f92304419afe94c531c7cfb3e0649aa6d140d53ecb0 - languageName: node - linkType: hard - -"xmlchars@npm:^2.2.0": - version: 2.2.0 - resolution: "xmlchars@npm:2.2.0" - checksum: 8c70ac94070ccca03f47a81fcce3b271bd1f37a591bf5424e787ae313fcb9c212f5f6786e1fa82076a2c632c0141552babcd85698c437506dfa6ae2d58723062 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -6849,14 +7010,14 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2": +"yargs-parser@npm:^20.2.2": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 languageName: node linkType: hard -"yargs-parser@npm:^21.1.1": +"yargs-parser@npm:^21.0.1, yargs-parser@npm:^21.1.1": version: 21.1.1 resolution: "yargs-parser@npm:21.1.1" checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c @@ -6878,7 +7039,7 @@ __metadata: languageName: node linkType: hard -"yargs@npm:^17.0.1, yargs@npm:^17.7.2": +"yargs@npm:^17.0.1, yargs@npm:^17.3.1, yargs@npm:^17.7.2": version: 17.7.2 resolution: "yargs@npm:17.7.2" dependencies: diff --git a/l2-bridge-optimism/.dockerignore b/l2-bridge-optimism/.dockerignore deleted file mode 100644 index 4514cae5a..000000000 --- a/l2-bridge-optimism/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.yarn/ -!.yarn/releases/ -dist/ -forta.config.json diff --git a/l2-bridge-optimism/.env.sample b/l2-bridge-optimism/.env.sample deleted file mode 100644 index 694610484..000000000 --- a/l2-bridge-optimism/.env.sample +++ /dev/null @@ -1,15 +0,0 @@ -APP_NAME=l2-bridge-optimism -INSTANCE=forta - -HTTP_PORT=3000 -LOG_FORMAT=simple -LOG_LEVEL=debug -ETHEREUM_RPC_URL=https://eth.drpc.com -OPTIMSIM_RPC_URL=https://optimism.drpc.com - -USE_FORTA_RPC_URL=true - -## FORTA compatible env names -NODE_ENV=local -AGENT_GRPC_PORT=50051 -FORTA_CHAIN_ID=10 \ No newline at end of file diff --git a/l2-bridge-optimism/.eslintignore b/l2-bridge-optimism/.eslintignore deleted file mode 100644 index a096acf71..000000000 --- a/l2-bridge-optimism/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/l2-bridge-optimism/.eslintrc.json b/l2-bridge-optimism/.eslintrc.json deleted file mode 100644 index 1262ce136..000000000 --- a/l2-bridge-optimism/.eslintrc.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error", - "semi": "off" - } -} diff --git a/l2-bridge-optimism/.gitignore b/l2-bridge-optimism/.gitignore deleted file mode 100644 index e498c8f4d..000000000 --- a/l2-bridge-optimism/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -/coverage/ - -tools/vendor -bin - -.env \ No newline at end of file diff --git a/l2-bridge-optimism/.prettierignore b/l2-bridge-optimism/.prettierignore deleted file mode 100644 index a096acf71..000000000 --- a/l2-bridge-optimism/.prettierignore +++ /dev/null @@ -1,2 +0,0 @@ -generated -proto \ No newline at end of file diff --git a/l2-bridge-optimism/.prettierrc.json b/l2-bridge-optimism/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/l2-bridge-optimism/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/l2-bridge-optimism/Dockerfile b/l2-bridge-optimism/Dockerfile deleted file mode 100644 index f51fda87e..000000000 --- a/l2-bridge-optimism/Dockerfile +++ /dev/null @@ -1,36 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.15.0-alpine3.20 AS base - -RUN apk add --no-cache g++=13.2.1_git20240309-r0 make=4.4.1-r2 - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" - -ENV APP_NAME=l2-bridge-optimism -ENV NODE_ENV=production -ENV ETHEREUM_RPC_URL=https://eth.drpc.org -ENV OPTIMISM_RPC_URL=https://optimism.drpc.org - -ENV AGENT_GRPC_PORT=50051 -ENV HTTP_PORT=3000 -ENV LOG_FORMAT=simple -ENV LOG_LEVEL=info -ENV INSTANCE=forta -ENV USE_FORTA_RPC_URL=true - -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:docker:prod"] \ No newline at end of file diff --git a/l2-bridge-optimism/Makefile b/l2-bridge-optimism/Makefile deleted file mode 100644 index 8b12e9335..000000000 --- a/l2-bridge-optimism/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Makefile - -.PHONY: gen_proto_prod -gen_proto_prod: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./dist/generated/proto \ - --grpc_out=grpc_js:./dist/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - -I ./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_js -gen_js: - # generate js codes via grpc-tools - yarn grpc_tools_node_protoc \ - --js_out=import_style=commonjs,binary:./src/generated/proto \ - --grpc_out=grpc_js:./src/generated/proto \ - --plugin=protoc-gen-grpc=./node_modules/.bin/grpc_tools_node_protoc_plugin \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -.PHONY: gen_ts -gen_ts: - # generate d.ts codes - yarn grpc_tools_node_protoc \ - --plugin=protoc-gen-ts=./node_modules/.bin/protoc-gen-ts \ - --ts_out=grpc_js:./src/generated/proto \ - --proto_path=./src/brief/proto \ - ./src/brief/proto/*.proto - -tools: - cd tools && go mod tidy && go mod vendor && go mod verify && go generate -tags tools -.PHONY: tools - -.PHONY: check_alerts_syntax -check_alerts_syntax: - ./bin/promtool check rules ./alerts.yml - -.PHONY: test_alerts -test_alerts: - bin/promtool test rules ./alerts_tests.yml \ No newline at end of file diff --git a/l2-bridge-optimism/README.md b/l2-bridge-optimism/README.md deleted file mode 100644 index 9f65e59e1..000000000 --- a/l2-bridge-optimism/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Lido Detection Bot for Optimism part of L2 bridge - -## Supported chains - -- Optimism - -## Alerts - -1. Bridge events - 1. 🚨🚨🚨 Optimism bridge wstETH:stEth balance mismatch - 2. 🚨🚨🚨 Optimism bridge LDO balance mismatch - 3. 🚨 Optimism L2 Bridge: Deposits Disabled - 4. 🚨 Optimism L2 Bridge: Role Admin changed - 5. 🚨 Optimism L2 Bridge: Withdrawals Disabled - 6. ⚠️ Optimism L2 Bridge: Role granted - 7. ⚠️ Optimism L2 Bridge: Role revoked - 8. ℹ️ Optimism L2 Bridge: Deposits Enabled - 9. ℹ️ Optimism L2 Bridge: Withdrawals Enabled -2. Gov Events - 1. 🚨 Optimism Gov Bridge: Ethereum Governance Executor Updated - 2. 🚨 Optimism Gov Bridge: Guardian Updated - 3. ⚠️ Optimism Gov Bridge: Delay Updated - 4. ⚠️ Optimism Gov Bridge: Grace Period Updated - 5. ⚠️ Optimism Gov Bridge: Min Delay Updated - 6. ⚠️ Optimism Gov Bridge: Max Delay Updated - 7. ℹ️ Optimism Gov Bridge: Action set queued - 8. ℹ️ Optimism Gov Bridge: Action set executed - 9. ℹ️ Optimism Gov Bridge: Action set canceled -3. Proxy events - 1. 🚨 Optimism: Proxy ossified - 2. 🚨 Optimism: Proxy admin changed - 3. 🚨 Optimism: Proxy implementation changed - 4. 🚨 Optimism: Proxy upgraded - 5. 🚨 Optimism: Proxy beacon upgraded -4. Monitor Withdrawals - 1. ⚠️ Optimism: Huge withdrawals during the last ... diff --git a/l2-bridge-optimism/jest.config.js b/l2-bridge-optimism/jest.config.js deleted file mode 100644 index 9dfeb5d27..000000000 --- a/l2-bridge-optimism/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['dist'], -} diff --git a/l2-bridge-optimism/package.json b/l2-bridge-optimism/package.json deleted file mode 100644 index 6aca30a56..000000000 --- a/l2-bridge-optimism/package.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "name": "lido-l2-bridge-optimism-bot", - "version": "0.0.1", - "description": "Lido Detection Bot for Optimism part of L2 bridge", - "chainIds": [ - 10 - ], - "chainSettings": { - "default": { - "shards": 1, - "target": 5 - } - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "build": "tsc && yarn run copy-version && mkdir dist/generated/proto && make gen_proto_prod", - "copy-version": "cp version.json dist", - "start": "ts-node src/main.ts", - "start:prod": "node dist/main.js", - "start:docker:prod": "node src/main.js", - "push": "yarn run update-version && forta-agent push", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated/typechain ./src/brief/abi/*", - "generate-proto": "make gen_ts && make gen_js", - "eslint:lint": "eslint ./src", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src README.md", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types && yarn generate-proto" - }, - "dependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@grpc/grpc-js": "^1.10.2", - "@types/lodash": "^4.14.202", - "@types/node": "^20.14.2", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "dotenv": "^16.4.5", - "ethers": "^5.5.1", - "express": "^4.19.2", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "lodash": "^4.17.21", - "prom-client": "^15.1.2", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@faker-js/faker": "^8.3.1", - "@jest/globals": "^29.7.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/express": "^4.17.21", - "@types/jest": "^29.5.11", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "grpc-tools": "^1.12.4", - "grpc_tools_node_protoc_ts": "^5.3.3", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.1.0", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.2", - "ts-node": "^10.9.2", - "typechain": "^8.3.2", - "typescript": "^5.3.2" - }, - "packageManager": "yarn@1.22.22" -} diff --git a/l2-bridge-optimism/src/brief/abi/ERC20Bridged.json b/l2-bridge-optimism/src/brief/abi/ERC20Bridged.json deleted file mode 100644 index 5569dc148..000000000 --- a/l2-bridge-optimism/src/brief/abi/ERC20Bridged.json +++ /dev/null @@ -1,350 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "string", - "name": "name_", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol_", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "bridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeBurn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "bridgeMint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "bridge_", - "type": "address" - } - ], - "name": "setBridge", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/l2-bridge-optimism/src/brief/abi/L2ERC20TokenBridge.json b/l2-bridge-optimism/src/brief/abi/L2ERC20TokenBridge.json deleted file mode 100644 index 1a073acbd..000000000 --- a/l2-bridge-optimism/src/brief/abi/L2ERC20TokenBridge.json +++ /dev/null @@ -1,759 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "messenger_", - "type": "address" - }, - { - "internalType": "address", - "name": "l1TokenBridge_", - "type": "address" - }, - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "l2Token_", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ErrorAccountIsZeroAddress", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorAlreadyInitialized", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnauthorizedMessenger", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL1Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL2Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWrongCrossDomainSender", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "DepositFailed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "DepositFinalized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "DepositsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "DepositsEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "admin", - "type": "address" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "WithdrawalInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "WithdrawalsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "WithdrawalsEnabled", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "disableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l1Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "l2Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "from_", - "type": "address" - }, - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "name": "finalizeDeposit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "admin_", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isDepositsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isInitialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isWithdrawalsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1TokenBridge", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "contract ICrossDomainMessenger", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l2Token_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "l1Gas_", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "name": "withdraw", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "l2Token_", - "type": "address" - }, - { - "internalType": "address", - "name": "to_", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount_", - "type": "uint256" - }, - { - "internalType": "uint32", - "name": "l1Gas_", - "type": "uint32" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "name": "withdrawTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/l2-bridge-optimism/src/brief/abi/OssifiableProxy.json b/l2-bridge-optimism/src/brief/abi/OssifiableProxy.json deleted file mode 100644 index 78296f939..000000000 --- a/l2-bridge-optimism/src/brief/abi/OssifiableProxy.json +++ /dev/null @@ -1,187 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "implementation_", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data_", - "type": "bytes" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ErrorNotAdmin", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorProxyIsOssified", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [], - "name": "ProxyOssified", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newAdmin_", - "type": "address" - } - ], - "name": "proxy__changeAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__getIsOssified", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "proxy__ossify", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation_", - "type": "address" - } - ], - "name": "proxy__upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "setupCalldata_", - "type": "bytes" - }, - { - "internalType": "bool", - "name": "forceCall_", - "type": "bool" - } - ], - "name": "proxy__upgradeToAndCall", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] diff --git a/l2-bridge-optimism/src/brief/proto/agent.proto b/l2-bridge-optimism/src/brief/proto/agent.proto deleted file mode 100644 index 95b9af4b6..000000000 --- a/l2-bridge-optimism/src/brief/proto/agent.proto +++ /dev/null @@ -1,348 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -import public "alert.proto"; - -option go_package = "./;protocol"; - - -service Agent { - rpc Initialize (InitializeRequest) returns (InitializeResponse) {} - rpc EvaluateTx (EvaluateTxRequest) returns (EvaluateTxResponse) {} - rpc EvaluateBlock (EvaluateBlockRequest) returns (EvaluateBlockResponse) {} - rpc EvaluateAlert (EvaluateAlertRequest) returns (EvaluateAlertResponse) {} - rpc HealthCheck (HealthCheckRequest) returns (HealthCheckResponse) {} -} - -message Error { - string message = 1; -} - -enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; -} - -message HealthCheckRequest {} - -message HealthCheckResponse { - enum ResponseStatus { - UNKNOWN = 0; - ERROR = 1; - SUCCESS = 2; - } - - ResponseStatus status = 1; - repeated Error errors = 2; -} - -message InitializeRequest { - string agentId = 1; - string proxyHost = 2; - int32 shardId = 3; -} - -message InitializeResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated string addresses = 3; - AlertConfig alertConfig = 4; -} - -message AlertConfig { - repeated CombinerBotSubscription subscriptions = 1; -} - -message CombinerBotSubscription { - string botId = 1; - string alertId = 2; - repeated string alertIds = 3; - uint64 chainId = 4; -} - -message EvaluateTxRequest { - string requestId = 1; - TransactionEvent event = 2; - int32 shardId = 3; -} - -message EvaluateBlockRequest { - string requestId = 1; - BlockEvent event = 2; - int32 shardId = 3; -} - -message EvaluateAlertRequest { - string requestId = 1; - AlertEvent event = 2; - string targetBotId = 3; - int32 shardId = 4; -} - -message EvaluateTxResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateBlockResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message EvaluateAlertResponse { - ResponseStatus status = 1; - repeated Error errors = 2; - repeated Finding findings = 3; - map metadata = 4; - string timestamp = 5; - uint32 latencyMs = 6; - bool private = 7; -} - -message BlockEvent { - enum EventType { - BLOCK = 0; - REORG = 1 [deprecated = true]; - } - message Network { - string chainId = 1; - } - - message EthBlock { - string difficulty = 1; - string extraData = 2; - string gasLimit = 3; - string gasUsed = 4; - string hash = 5; - string logsBloom = 6; - string miner = 7; - string mixHash = 8; - string nonce = 9; - string number = 10; - string parentHash = 11; - string receiptsRoot = 12; - string sha3Uncles = 13; - string size = 14; - string stateRoot = 15; - string timestamp = 16; - string totalDifficulty = 17; - repeated string transactions = 18; - string transactionsRoot = 19; - repeated string uncles = 20; - string baseFeePerGas = 21; - } - - EventType type = 1; - string blockHash = 2; - string blockNumber = 3; - Network network = 4; - EthBlock block = 5; - TrackingTimestamps timestamps = 6; -} - -message TransactionEvent { - - enum EventType { - BLOCK = 0; - REORG = 1; - } - - message Network { - string chainId = 1; - } - - message EthBlock { - string blockHash = 1; - string blockNumber = 2; - string blockTimestamp = 3; - string baseFeePerGas = 4; - } - - message EthTransaction { - string type = 1; - string nonce = 2; - string gasPrice = 3; - string gas = 4; - string value = 5; - string input = 6; - string v = 7; - string r = 8; - string s = 9; - string to = 10; - string hash = 11; - string from = 12; - string maxFeePerGas = 13; - string maxPriorityFeePerGas = 14; - } - - message Log { - string address = 1; - repeated string topics = 2; - string data = 3; - string blockNumber = 4; - string transactionHash = 5; - string transactionIndex = 6; - string blockHash = 7; - string logIndex = 8; - bool removed = 9; - } - - message EthReceipt { - string root = 1; - string status = 2; - string cumulativeGasUsed = 3; - string logsBloom = 4; - repeated Log logs = 5; - string transactionHash = 6; - string contractAddress = 7; - string gasUsed = 8; - string blockHash = 9; - string blockNumber = 10; - string transactionIndex = 11; - } - - message TraceAction { - string callType = 1; - string to = 2; - string input = 3; - string from = 4; - string value = 5; - string init = 6; - string address = 7; - string balance = 8; - string refundAddress = 9; - } - - message TraceResult { - string gasUsed = 1; - string address = 2; - string code = 3; - string output = 4; - } - - message Trace { - TraceAction action = 1; - string blockHash = 2; - int64 blockNumber = 3; - TraceResult result = 4; - int64 subtraces = 5; - repeated int64 traceAddress = 6; - string transactionHash = 7; - int64 transactionPosition = 8; - string type = 9; - string error = 10; - } - - EventType type = 1; - EthTransaction transaction = 2; - EthReceipt receipt = 3 [deprecated = true]; - Network network = 4; - repeated Trace traces = 5; - map addresses = 6; - EthBlock block = 7; - repeated Log logs = 8; - bool isContractDeployment = 9; - string contractAddress = 10; - TrackingTimestamps timestamps = 11; - map txAddresses = 12; -} - -message AlertEvent { - message Alert { - message Contract { - string name = 1; - string projectId = 2; - } - - message Project { - string id = 1; - } - - message Block { - uint64 number = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Bot { - repeated string chainIds = 1; - string createdAt = 2; - string description = 3; - string developer = 4; - string DocReference = 5; - bool enabled = 6; - string id = 7; - string image = 8; - string name = 9; - string reference = 10; - string repository = 11; - repeated string projects = 12; - repeated string scanNodes = 13; - string version = 14; - } - - message SourceAlertEvent { - string botId = 1; - string hash = 2; - string timestamp = 3; - uint64 chainId = 4; - } - - message Source { - string transactionHash = 1; - Bot bot = 2; - Block block = 3; - SourceAlertEvent sourceAlert = 4; - } - - message Label { - string label = 1; - float confidence = 2; - string entity = 3; - string entityType = 4; - bool remove = 5; - repeated string metadata = 6; - string uniqueKey = 7; - } - - // Unique string to identify this class of finding, - // primarily used to group similar findings for the end user - string alertId = 1; - // List of addresses involved in the alert - repeated string addresses = 2; - // List of contracts related to the alert - repeated Contract contracts = 3; - // Timestamp when the alert was published - string createdAt = 4; - string description = 5; - string hash = 6; - map metadata = 7; - string name = 8; - repeated Project projects = 9; - int32 scanNodeCount = 10; - string severity = 11; - Source source = 12; - string findingType = 13; - repeated string relatedAlerts = 14; - uint64 chainId = 15; - repeated Label labels = 16; - bool truncated = 17; - BloomFilter addressBloomFilter = 18; - } - - Alert alert = 1; - TrackingTimestamps timestamps = 2; -} diff --git a/l2-bridge-optimism/src/brief/proto/alert.proto b/l2-bridge-optimism/src/brief/proto/alert.proto deleted file mode 100644 index 16c089991..000000000 --- a/l2-bridge-optimism/src/brief/proto/alert.proto +++ /dev/null @@ -1,179 +0,0 @@ -syntax = "proto3"; - -package network.forta; - -option go_package = "./;protocol"; - -message TrackingTimestamps { - string block = 1; - string feed = 2; - string botRequest = 3; - string botResponse = 4; - string sourceAlert = 5; -} - -enum AlertType { - UNKNOWN_ALERT_TYPE = 0; - TRANSACTION = 1; - BLOCK = 2; - PRIVATE = 3; - COMBINATION = 4; - API = 5; -} - -message AgentInfo { - string image = 1; - string imageHash = 2; - string id = 3; - bool isTest = 4; - string manifest = 5; -} - -message ScannerInfo { - string address = 1; -} - -message AlertResponse { - repeated SignedAlert alerts = 1; - string nextPageToken = 2; -} - -message Signature { - string signature = 1; - string algorithm = 2; - string signer = 3; -} - -message BloomFilter { - string k = 1; - string m = 2; - string bitset = 3; - uint32 itemCount = 4; -} - -message Alert { - string id = 1; - AlertType type = 2; - Finding finding = 3; - string timestamp = 4; - map metadata = 5; - AgentInfo agent = 6; - map tags = 7; - ScannerInfo scanner = 8; - TrackingTimestamps timestamps = 9; - bool truncated = 10; - BloomFilter addressBloomFilter = 11; -} - -message SignedAlert { - Alert alert = 1; - Signature signature = 2; - string chainId = 3; - string blockNumber = 4; - string publishedWithTx = 5; -} - -message Label { - enum EntityType { - UNKNOWN_ENTITY_TYPE = 0; - ADDRESS = 1; - TRANSACTION = 2; - BLOCK = 3; - URL = 4; - } - - EntityType entityType = 1; - string entity = 2; - reserved 3; - float confidence = 4; - reserved 5; - bool remove = 6; - string label = 7; - repeated string metadata = 8; - string uniqueKey = 9; -} - -message Source { - message TransactionSource { - uint64 chainId = 1; - string hash = 2; - } - - message BlockSource { - uint64 chainId = 1; - string hash = 2; - uint64 number = 3; - } - - message URLSource { - string url = 1; - } - - message ChainSource { - uint64 chainId = 1; - } - - message AlertSource { - string id = 1; - } - - message CustomSource { - string name = 1; - string value = 2; - } - - repeated TransactionSource transactions = 1; - repeated BlockSource blocks = 2; - repeated URLSource urls = 3; - repeated ChainSource chains = 4; - repeated AlertSource alerts = 5; - repeated CustomSource customSources = 6; -} - -message Finding { - enum Severity { - UNKNOWN = 0; - INFO = 1; - LOW = 2; - MEDIUM = 3; - HIGH = 4; - CRITICAL = 5; - } - - enum FindingType { - UNKNOWN_TYPE = 0; - EXPLOIT = 1; - SUSPICIOUS = 2; - DEGRADED = 3; - INFORMATION = 4; - SCAM = 5; - } - - string protocol = 1; - Severity severity = 2; - map metadata = 3; - FindingType type = 4; - string alertId = 5; - string name = 6; - string description = 7; - reserved 8; - bool private = 9; - repeated string addresses = 10; - map indicators = 11; - repeated Label labels = 12; - repeated string relatedAlerts = 13; - string uniqueKey = 14; - Source source = 15; - string timestamp = 16; -} - -message APIAlert { - message APIAlertAgent { - string id = 1; - } - string id = 1; - AlertType type = 2; - Finding finding = 3; - APIAlertAgent agent = 4; - string timestamp = 5; -} \ No newline at end of file diff --git a/l2-bridge-optimism/src/clients/eth_client.spec.ts b/l2-bridge-optimism/src/clients/eth_client.spec.ts deleted file mode 100644 index 81744fd06..000000000 --- a/l2-bridge-optimism/src/clients/eth_client.spec.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { ethers } from 'forta-agent' -import { ERC20Bridged__factory } from '../generated/typechain' -import { ETHProvider } from './eth_provider_client' -import { Config } from '../utils/env/env' -import { Address, ETH_DECIMALS } from '../utils/constants' -import promClient from 'prom-client' -import { Metrics } from '../utils/metrics/metrics' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' - -const TEST_TIMEOUT = 120_000 - -describe('ethProvider', () => { - const config = new Config() - - const adr = Address - - const mainnet = 1 - const ethProvider = new ethers.providers.JsonRpcProvider(config.ethereumRpcUrl, mainnet) - - const wSthEthRunner = ERC20Bridged__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ldoRunner = ERC20Bridged__factory.connect(adr.L1_LDO_ADDRESS, ethProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - - const l1Client = new ETHProvider(metrics, wSthEthRunner, ldoRunner, ethProvider) - const l1BlockNumber = 20_183_793 - - test( - 'getWstEthBalance is 27_955.207971774187581172 wstEth', - async () => { - const wStethBalance = await l1Client.getWstEthBalance(l1BlockNumber, adr.OPTIMISM_L1_TOKEN_BRIDGE) - if (E.isLeft(wStethBalance)) { - throw wStethBalance.left - } - - expect(wStethBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('27955.207971774187581172')) - }, - TEST_TIMEOUT, - ) - - test( - 'getLDOBalance is 433_878.808823633772748493 wstEth', - async () => { - const ldoBalance = await l1Client.getLDOBalance(l1BlockNumber, adr.OPTIMISM_L1_LDO_BRIDGE) - if (E.isLeft(ldoBalance)) { - throw ldoBalance.left - } - - expect(ldoBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('433878.808823633772748493')) - }, - TEST_TIMEOUT, - ) - - test( - 'getBlockNumber', - async () => { - const blockNumber = await l1Client.getBlockNumber() - if (E.isLeft(blockNumber)) { - throw blockNumber.left - } - - expect(Number.isInteger(blockNumber.right)).toBe(true) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-optimism/src/clients/eth_provider_client.ts b/l2-bridge-optimism/src/clients/eth_provider_client.ts deleted file mode 100644 index 9e8fcd9a8..000000000 --- a/l2-bridge-optimism/src/clients/eth_provider_client.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { IL1BridgeBalanceClient } from '../services/bridge_balance' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' -import { retryAsync } from 'ts-retry' -import { ERC20Bridged } from '../generated/typechain' -import { NetworkError } from '../utils/errors' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { ethers } from 'ethers' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IL1BridgeBalanceClient { - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly wStEthRunner: ERC20Bridged - private readonly ldoRunner: ERC20Bridged - private readonly metrics: Metrics - - constructor( - metric: Metrics, - wStEthRunner: ERC20Bridged, - ldoRunner: ERC20Bridged, - jsonRpcProvider: ethers.providers.JsonRpcProvider, - ) { - this.metrics = metric - this.wStEthRunner = wStEthRunner - this.ldoRunner = ldoRunner - this.jsonRpcProvider = jsonRpcProvider - } - - public async getWstEthBalance( - l1blockNumber: number, - optimismL1TokenBridge: string, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWstEthBalance.name }).startTimer() - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.wStEthRunner.functions.balanceOf(optimismL1TokenBridge, { - blockTag: l1blockNumber, - }) - - this.metrics.etherJsRequest.labels({ method: this.getWstEthBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWstEthBalance.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call wStEthRunner.functions.balanceOf`)) - } - } - - public async getLDOBalance(l1blockNumber: number, optimismL1LdoBridge: string): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getLDOBalance.name }).startTimer() - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.ldoRunner.functions.balanceOf(optimismL1LdoBridge, { - blockTag: l1blockNumber, - }) - - this.metrics.etherJsRequest.labels({ method: this.getLDOBalance.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getLDOBalance.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call ldoRunner.functions.balanceOf`)) - } - } - - public async getBlockNumber(): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getBlockNumber.name }).startTimer() - try { - const latestBlockNumber = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlockNumber() - }, - { delay: DELAY_IN_500MS, maxTry: 10 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(latestBlockNumber) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } -} diff --git a/l2-bridge-optimism/src/clients/optimism_client.spec.ts b/l2-bridge-optimism/src/clients/optimism_client.spec.ts deleted file mode 100644 index ec0f7253e..000000000 --- a/l2-bridge-optimism/src/clients/optimism_client.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { ERC20Bridged__factory, L2ERC20TokenBridge__factory } from '../generated/typechain' -import { OptimismClient } from './optimism_client' -import { Address, ETH_DECIMALS } from '../utils/constants' -import { ethers } from 'forta-agent' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import * as E from 'fp-ts/Either' -import { Metrics } from '../utils/metrics/metrics' -import BigNumber from 'bignumber.js' - -const TEST_TIMEOUT = 120_000 - -describe('OptimismProvider', () => { - const config = new Config() - const adr: Address = Address - - const optimismProvider = new ethers.providers.JsonRpcProvider(config.optimismRpcUrl, config.chainId) - - const l2Bridge = L2ERC20TokenBridge__factory.connect(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, optimismProvider) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_WSTETH_BRIDGED.address, optimismProvider) - const bridgedLdoRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_LDO_BRIDGED_ADDRESS, optimismProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - const l2Client = new OptimismClient(optimismProvider, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - - const l2BlockNumber = 121_951_308 - test( - 'getWithdrawalEvents is 1', - async () => { - const wEvents = await l2Client.getWithdrawalEvents(121_867_825, 121_867_825) - if (E.isLeft(wEvents)) { - throw wEvents.left - } - - expect(wEvents.right.length).toEqual(1) - }, - TEST_TIMEOUT, - ) - - test( - 'getWithdrawalRecords is 2.008529093774247442 wstEth', - async () => { - const wEvents = await l2Client.getWithdrawalEvents(121_867_825, 121_867_825) - if (E.isLeft(wEvents)) { - throw wEvents.left - } - - const wRecords = await l2Client.getWithdrawalRecords(wEvents.right) - if (E.isLeft(wRecords)) { - throw wRecords.left - } - - expect(wRecords.right[0].amount.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('2.008529093774247442')) - }, - TEST_TIMEOUT, - ) - - test( - 'getBlockNumber is 7620.760541243359204164 wstEth', - async () => { - const blockNumber = await l2Client.getBlockNumber() - if (E.isLeft(blockNumber)) { - throw blockNumber.left - } - - expect(Number.isInteger(blockNumber.right)).toBe(true) - }, - TEST_TIMEOUT, - ) - - test( - 'getWstEthTotalSupply is 27_714.2248906558075528 wstEth', - async () => { - const wstBalance = await l2Client.getWstEthTotalSupply(l2BlockNumber) - if (E.isLeft(wstBalance)) { - throw wstBalance.left - } - - expect(wstBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('27714.2248906558075528')) - }, - TEST_TIMEOUT, - ) - - test( - 'getLdoTotalSupply is 43_1964.875080527270013624 wstEth', - async () => { - const ldoBalance = await l2Client.getLdoTotalSupply(l2BlockNumber) - if (E.isLeft(ldoBalance)) { - throw ldoBalance.left - } - - expect(ldoBalance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('431964.875080527270013624')) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-optimism/src/clients/optimism_client.ts b/l2-bridge-optimism/src/clients/optimism_client.ts deleted file mode 100644 index 20eb56e75..000000000 --- a/l2-bridge-optimism/src/clients/optimism_client.ts +++ /dev/null @@ -1,175 +0,0 @@ -import { Block } from '@ethersproject/abstract-provider' -import { ethers } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { WithdrawalRecord } from '../entity/blockDto' -import BigNumber from 'bignumber.js' -import { ERC20Bridged, L2ERC20TokenBridge as L2BridgeRunner } from '../generated/typechain' -import { NetworkError } from '../utils/errors' -import { WithdrawalInitiatedEvent } from '../generated/typechain/L2ERC20TokenBridge' -import { IMonitorWithdrawalsClient } from '../services/monitor_withdrawals' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { IL2BridgeBalanceClient } from '../services/bridge_balance' - -export class OptimismClient implements IMonitorWithdrawalsClient, IL2BridgeBalanceClient { - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly l2BridgeRunner: L2BridgeRunner - private readonly metrics: Metrics - - private readonly bridgedWstEthRunner: ERC20Bridged - private readonly bridgedLdoRunner: ERC20Bridged - - constructor( - jsonRpcProvider: ethers.providers.JsonRpcProvider, - metrics: Metrics, - l2BridgeRunner: L2BridgeRunner, - bridgedWstEthRunner: ERC20Bridged, - bridgedLdoRunner: ERC20Bridged, - ) { - this.jsonRpcProvider = jsonRpcProvider - this.metrics = metrics - this.l2BridgeRunner = l2BridgeRunner - this.bridgedWstEthRunner = bridgedWstEthRunner - this.bridgedLdoRunner = bridgedLdoRunner - } - - public async getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWithdrawalEvents.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - return await this.l2BridgeRunner.queryFilter( - this.l2BridgeRunner.filters.WithdrawalInitiated(), - fromBlockNumber, - toBlockNumber, - ) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch withdrawEvents`)) - } - } - - public async getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWithdrawalRecords.name }).startTimer() - - const out: WithdrawalRecord[] = [] - - for (const withdrawEvent of withdrawalEvents) { - if (withdrawEvent.args) { - let block: Block - try { - block = await retryAsync( - async (): Promise => { - return await withdrawEvent.getBlock() - }, - { delay: 500, maxTry: 5 }, - ) - - const record: WithdrawalRecord = { - timestamp: block.timestamp, - amount: new BigNumber(String(withdrawEvent.args._amount)), - } - - out.push(record) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalRecords.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch block from withdrawEvent`)) - } - } - } - - this.metrics.etherJsRequest.labels({ method: this.getWithdrawalEvents.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(out) - } - - public async getBlockNumber(): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getBlockNumber.name }).startTimer() - try { - const latestBlockNumber = await this.jsonRpcProvider.getBlockNumber() - - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(latestBlockNumber) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getBlockNumber.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch latest block number`)) - } - } - - public async getWstEthTotalSupply(l2blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getWstEthTotalSupply.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedWstEthRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getWstEthTotalSupply.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getWstEthTotalSupply.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call bridgedWstEthRunner.functions.totalSupply`)) - } - } - - public async getLdoTotalSupply(l2blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getLdoTotalSupply.name }).startTimer() - - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedLdoRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getLdoTotalSupply.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(new BigNumber(out)) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getLdoTotalSupply.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not call bridgedLdoRunner.functions.totalSupply`)) - } - } -} diff --git a/l2-bridge-optimism/src/clients/proxy_contract_client.spec.ts b/l2-bridge-optimism/src/clients/proxy_contract_client.spec.ts deleted file mode 100644 index a323fba37..000000000 --- a/l2-bridge-optimism/src/clients/proxy_contract_client.spec.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { OssifiableProxy__factory } from '../generated/typechain' -import { Address } from '../utils/constants' -import { ethers } from 'forta-agent' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import * as E from 'fp-ts/Either' -import { Metrics } from '../utils/metrics/metrics' -import { ProxyContractClient } from './proxy_contract_client' - -const TEST_TIMEOUT = 120_000 - -describe('ProxyContractClient', () => { - const config = new Config() - const adr: Address = Address - - const optimismProvider = new ethers.providers.JsonRpcProvider(config.optimismRpcUrl, config.chainId) - - const l2BlockNumber = 121_951_308 - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - - const wstProxy = new ProxyContractClient( - adr.OPTIMISM_WSTETH_BRIDGED.name, - OssifiableProxy__factory.connect(adr.OPTIMISM_WSTETH_BRIDGED.address, optimismProvider), - metrics, - ) - - const l2TokenGateway = new ProxyContractClient( - adr.OPTIMISM_L2_TOKEN_GATEWAY.name, - OssifiableProxy__factory.connect(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, optimismProvider), - metrics, - ) - - test( - 'getProxyAdmin wst - 0xEfa0dB536d2c8089685630fafe88CF7805966FC3', - async () => { - const proxyAdmin = await wstProxy.getProxyAdmin(l2BlockNumber) - if (E.isLeft(proxyAdmin)) { - throw proxyAdmin.left - } - - expect(proxyAdmin.right).toEqual('0xEfa0dB536d2c8089685630fafe88CF7805966FC3') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyImplementation wst - 0x92834c37dF982A13bb0f8C3F6608E26F0546538e', - async () => { - const proxyImpl = await wstProxy.getProxyImplementation(l2BlockNumber) - if (E.isLeft(proxyImpl)) { - throw proxyImpl.left - } - - expect(proxyImpl.right).toEqual('0x92834c37dF982A13bb0f8C3F6608E26F0546538e') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyAdmin l2TokenGateway - 0xEfa0dB536d2c8089685630fafe88CF7805966FC3', - async () => { - const proxyAdmin = await l2TokenGateway.getProxyAdmin(l2BlockNumber) - if (E.isLeft(proxyAdmin)) { - throw proxyAdmin.left - } - - expect(proxyAdmin.right).toEqual('0xEfa0dB536d2c8089685630fafe88CF7805966FC3') - }, - TEST_TIMEOUT, - ) - - test( - 'getProxyImplementation l2TokenGateway - 0x23B96aDD54c479C6784Dd504670B5376B808f4C7', - async () => { - const proxyImpl = await l2TokenGateway.getProxyImplementation(l2BlockNumber) - if (E.isLeft(proxyImpl)) { - throw proxyImpl.left - } - - expect(proxyImpl.right).toEqual('0x23B96aDD54c479C6784Dd504670B5376B808f4C7') - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-optimism/src/clients/proxy_contract_client.ts b/l2-bridge-optimism/src/clients/proxy_contract_client.ts deleted file mode 100644 index 8a9c0c601..000000000 --- a/l2-bridge-optimism/src/clients/proxy_contract_client.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { OssifiableProxy } from '../generated/typechain' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { NetworkError } from '../utils/errors' -import { Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' - -export abstract class IProxyContractClient { - abstract getName(): string - - abstract getAddress(): string - - abstract getProxyAdmin(blockNumber: number): Promise> - - abstract getProxyImplementation(blockNumber: number): Promise> -} - -export class ProxyContractClient implements IProxyContractClient { - private readonly name: string - private readonly proxyAdminContract: OssifiableProxy - private readonly metrics: Metrics - - constructor(name: string, proxyAdmin: OssifiableProxy, metric: Metrics) { - this.name = name - this.proxyAdminContract = proxyAdmin - this.metrics = metric - } - - public getName(): string { - return this.name - } - - public getAddress(): string { - return this.proxyAdminContract.address - } - - public async getProxyAdmin(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getProxyAdmin.name }).startTimer() - - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.proxy__getAdmin({ - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getProxyAdmin.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(resp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getProxyAdmin.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch admin`)) - } - } - - public async getProxyImplementation(blockNumber: number): Promise> { - const end = this.metrics.etherJsDurationHistogram.labels({ method: this.getProxyImplementation.name }).startTimer() - - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.proxy__getImplementation({ - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - this.metrics.etherJsRequest.labels({ method: this.getProxyImplementation.name, status: StatusOK }).inc() - end({ status: StatusOK }) - - return E.right(resp) - } catch (e) { - this.metrics.etherJsRequest.labels({ method: this.getProxyImplementation.name, status: StatusFail }).inc() - end({ status: StatusFail }) - - return E.left(new NetworkError(e, `Could not fetch implementation`)) - } - } -} diff --git a/l2-bridge-optimism/src/entity/blockDto.ts b/l2-bridge-optimism/src/entity/blockDto.ts deleted file mode 100644 index f1d026922..000000000 --- a/l2-bridge-optimism/src/entity/blockDto.ts +++ /dev/null @@ -1,13 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type BlockDto = { - number: number - timestamp: number - parentHash: string - hash: string -} - -export type WithdrawalRecord = { - timestamp: number - amount: BigNumber -} diff --git a/l2-bridge-optimism/src/entity/events.ts b/l2-bridge-optimism/src/entity/events.ts deleted file mode 100644 index c8d3780e4..000000000 --- a/l2-bridge-optimism/src/entity/events.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { Log } from '@ethersproject/abstract-provider' -import BigNumber from 'bignumber.js' -import * as agent_pb from '../generated/proto/agent_pb' -import { TransactionEvent } from '../generated/proto/agent_pb' -import { Finding } from '../generated/proto/alert_pb' - -export type EventOfNotice = { - name: string - address: string - event: string - alertId: string - description: CallableFunction - severity: Finding.Severity - type: Finding.FindingType -} - -export type Metadata = { [key: string]: string } - -export type TransactionDto = { - logs: Log[] - to: string | null - block: { - timestamp: number - number: number - } -} - -export function newTransactionDto(request: agent_pb.EvaluateTxRequest): TransactionDto { - const txEvent = request.getEvent() - const transaction = txEvent.getTransaction() - const logList = >txEvent.getLogsList() - const block = txEvent.getBlock() - - const logs: Log[] = [] - for (const l of logList) { - logs.push({ - blockNumber: new BigNumber(l.getBlocknumber(), 10).toNumber(), - blockHash: l.getTransactionhash(), - transactionIndex: new BigNumber(l.getTransactionindex(), 10).toNumber(), - removed: l.getRemoved(), - address: l.getAddress(), - data: l.getData(), - topics: l.getTopicsList(), - transactionHash: l.getTransactionhash(), - logIndex: new BigNumber(l.getLogindex(), 10).toNumber(), - }) - } - - return { - logs: logs, - to: transaction.getTo() ? transaction.getTo().toLowerCase() : null, - block: { - number: new BigNumber(block.getBlocknumber(), 10).toNumber(), - timestamp: new BigNumber(block.getBlocktimestamp(), 10).toNumber(), - }, - } -} diff --git a/l2-bridge-optimism/src/generated/proto/.gitignore b/l2-bridge-optimism/src/generated/proto/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/l2-bridge-optimism/src/generated/proto/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/l2-bridge-optimism/src/generated/typechain/.gitignore b/l2-bridge-optimism/src/generated/typechain/.gitignore deleted file mode 100644 index f59ec20aa..000000000 --- a/l2-bridge-optimism/src/generated/typechain/.gitignore +++ /dev/null @@ -1 +0,0 @@ -* \ No newline at end of file diff --git a/l2-bridge-optimism/src/handlers/alert.handler.ts b/l2-bridge-optimism/src/handlers/alert.handler.ts deleted file mode 100644 index 2ee864d13..000000000 --- a/l2-bridge-optimism/src/handlers/alert.handler.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { EvaluateAlertRequest, EvaluateAlertResponse, ResponseStatus } from '../generated/proto/agent_pb' - -export class AlertHandler { - public handleAlert() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new EvaluateAlertResponse() - resp.setStatus(ResponseStatus.SUCCESS) - resp.setFindingsList([]) - resp.setTimestamp(new Date().toISOString()) - - callback(null, resp) - } - } -} diff --git a/l2-bridge-optimism/src/handlers/block.handler.ts b/l2-bridge-optimism/src/handlers/block.handler.ts deleted file mode 100644 index 6bbc0514d..000000000 --- a/l2-bridge-optimism/src/handlers/block.handler.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { BlockEvent, EvaluateBlockRequest, EvaluateBlockResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' -import BigNumber from 'bignumber.js' -import { Finding } from '../generated/proto/alert_pb' -import { HandleBlockLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from '../services/monitor_withdrawals' -import { BlockDto } from '../entity/blockDto' -import { ProxyWatcher } from '../services/proxy_watcher' -import { BridgeBalanceSrv } from '../services/bridge_balance' -import { ETHProvider } from '../clients/eth_provider_client' -import * as E from 'fp-ts/Either' -import { networkAlert } from '../utils/errors' - -export class BlockHandler { - private logger: Logger - private metrics: Metrics - private readonly proxyWatchers: ProxyWatcher[] - private WithdrawalsSrv: MonitorWithdrawals - private bridgeBalanceSrv: BridgeBalanceSrv - private healthChecker: HealthChecker - private ethProvider: ETHProvider - - private onAppStartFindings: Finding[] = [] - - constructor( - logger: Logger, - metrics: Metrics, - proxyWatchers: ProxyWatcher[], - WithdrawalsSrv: MonitorWithdrawals, - bridgeBalanceSrv: BridgeBalanceSrv, - healthChecker: HealthChecker, - ethProvider: ETHProvider, - onAppStartFindings: Finding[], - ) { - this.logger = logger - this.metrics = metrics - this.proxyWatchers = proxyWatchers - this.WithdrawalsSrv = WithdrawalsSrv - this.bridgeBalanceSrv = bridgeBalanceSrv - this.healthChecker = healthChecker - this.ethProvider = ethProvider - this.onAppStartFindings = onAppStartFindings - } - - public handleBlock() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - this.metrics.lastAgentTouch.labels({ method: HandleBlockLabel }).set(new Date().getTime()) - const end = this.metrics.summaryHandlers.labels({ method: HandleBlockLabel }).startTimer() - - const event = call.request.getEvent() - const block = event.getBlock() - - const l2blockDtoEvent: BlockDto = { - number: new BigNumber(block.getNumber(), 10).toNumber(), - timestamp: new BigNumber(block.getTimestamp(), 10).toNumber(), - parentHash: block.getParenthash(), - hash: block.getHash(), - } - - const findings: Finding[] = [] - - this.logger.info(`#Optimism block: ${l2blockDtoEvent.number}`) - const startTime = new Date().getTime() - - if (this.onAppStartFindings.length > 0) { - findings.push(...this.onAppStartFindings) - this.onAppStartFindings = [] - } - - const l1BlockNumber = await this.ethProvider.getBlockNumber() - if (E.isLeft(l1BlockNumber)) { - this.logger.warn(`#ETH block skipped`) - findings.push( - networkAlert( - l1BlockNumber.left, - `Error in ${BlockHandler.name}.${this.ethProvider.getBlockNumber.name}:80`, - `Could not call clientL1.getBlockNumber`, - ), - ) - } - - if (E.isRight(l1BlockNumber)) { - this.logger.info(`#ETH block: ${l1BlockNumber.right}`) - const bridgeBalanceFindings = await this.bridgeBalanceSrv.handleBlock( - l1BlockNumber.right, - l2blockDtoEvent.number, - ) - findings.push(...bridgeBalanceFindings) - } - - for (const proxyWatcher of this.proxyWatchers) { - const fnds = await proxyWatcher.handleL2Block(l2blockDtoEvent.number) - findings.push(...fnds) - } - - const withdrawalsFindings = this.WithdrawalsSrv.handleL2Block(l2blockDtoEvent) - findings.push(...withdrawalsFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleBlockLabel, status: StatusFail }).inc() - - const blockResponse = new EvaluateBlockResponse() - blockResponse.setStatus(ResponseStatus.SUCCESS) - blockResponse.setPrivate(false) - blockResponse.setFindingsList(findings) - const m = blockResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - this.logger.info(elapsedTime('handleBlock', startTime) + '\n') - this.metrics.lastBlockNumber.set(l2blockDtoEvent.number) - - end() - callback(null, blockResponse) - } - } -} diff --git a/l2-bridge-optimism/src/handlers/health.handler.ts b/l2-bridge-optimism/src/handlers/health.handler.ts deleted file mode 100644 index 403730746..000000000 --- a/l2-bridge-optimism/src/handlers/health.handler.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import * as agent_pb from '../generated/proto/agent_pb' -import { HealthCheckRequest, HealthCheckResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { Metrics } from '../utils/metrics/metrics' -import express, { Request, Response } from 'express' -import BigNumber from 'bignumber.js' -import { Logger } from 'winston' - -export class HealthHandler { - private healthChecker: HealthChecker - private metrics: Metrics - private logger: Logger - private readonly ethereumRpcUrl: string - private readonly chainId: number - - constructor(healthChecker: HealthChecker, metrics: Metrics, logger: Logger, ethereumRpcUrl: string, chainId: number) { - this.healthChecker = healthChecker - this.metrics = metrics - this.logger = logger - this.ethereumRpcUrl = ethereumRpcUrl - this.chainId = chainId - } - - public healthGrpc() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const resp = new HealthCheckResponse() - resp.setStatus(ResponseStatus.SUCCESS) - this.metrics.healthStatus.set(1) - - if (!this.healthChecker.isHealth()) { - const e: agent_pb.Error = new agent_pb.Error() - e.setMessage('There is too much network errors') - - const errList: Array = [] - errList.push(e) - - resp.setErrorsList(errList) - this.metrics.healthStatus.set(0) - } - - callback(null, resp) - } - } - - public healthHttp(): express.Handler { - return async (req: Request, res: Response) => { - try { - type data = { - jsonrpc: string - id: number - result: string - } - - const resp = await fetch(this.ethereumRpcUrl, { - method: 'POST', - body: JSON.stringify({ - method: 'eth_chainId', - }), - }) - - // @ts-expect-error @typescript-eslint/ban-ts-comment - const data: data = await resp.json() - const chainId = new BigNumber(data.result) - if (chainId.toNumber() === this.chainId) { - return res.status(200).send('ok') - } - } catch (e) { - this.logger.error(e) - } - - return res.status(503).send('not ok') - } - } -} diff --git a/l2-bridge-optimism/src/handlers/init.handler.ts b/l2-bridge-optimism/src/handlers/init.handler.ts deleted file mode 100644 index 4ca4d0925..000000000 --- a/l2-bridge-optimism/src/handlers/init.handler.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { InitializeRequest, InitializeResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { Logger } from 'winston' -import Version from '../utils/version' -import { elapsedTime } from '../utils/time' -import { Finding } from '../generated/proto/alert_pb' - -export class InitHandler { - private readonly logger: Logger - private readonly appName: string - - private onAppStartFindings: Finding[] = [] - - constructor(appName: string, logger: Logger, onAppStartFindings: Finding[]) { - this.appName = appName - this.logger = logger - this.onAppStartFindings = onAppStartFindings - } - - public handleInit() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const startTime = new Date().getTime() - - const f: Finding = new Finding() - f.setName(`${this.appName} launched`) - f.setDescription(`Version: ${Version.desc}`) - f.setAlertid('LIDO-AGENT-LAUNCHED') - f.setSeverity(Finding.Severity.INFO) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('version.commitHash', Version.commitHash) - m.set('version.commitMsg', Version.commitMsg) - - this.logger.info(elapsedTime('L2 bridge optimism started', startTime) + '\n') - - this.onAppStartFindings.push(f) - const resp = new InitializeResponse() - resp.setStatus(ResponseStatus.SUCCESS) - - callback(null, resp) - } - } -} diff --git a/l2-bridge-optimism/src/handlers/tx.handler.ts b/l2-bridge-optimism/src/handlers/tx.handler.ts deleted file mode 100644 index b104d0634..000000000 --- a/l2-bridge-optimism/src/handlers/tx.handler.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { sendUnaryData, ServerUnaryCall } from '@grpc/grpc-js' -import { HealthChecker } from '../services/health-checker/health-checker.srv' -import { EvaluateTxRequest, EvaluateTxResponse, ResponseStatus } from '../generated/proto/agent_pb' -import { newTransactionDto } from '../entity/events' -import { Finding } from '../generated/proto/alert_pb' -import { HandleTxLabel, Metrics, StatusFail, StatusOK } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from '../services/monitor_withdrawals' -import { EventWatcher } from '../services/event_watcher' - -export class TxHandler { - private metrics: Metrics - private bridgeWatcher: EventWatcher - private govWatcher: EventWatcher - private proxyWatcher: EventWatcher - private WithdrawalsSrv: MonitorWithdrawals - private healthChecker: HealthChecker - - constructor( - metrics: Metrics, - bridgeWatcher: EventWatcher, - govWatcher: EventWatcher, - proxyWatcher: EventWatcher, - WithdrawalsSrv: MonitorWithdrawals, - healthChecker: HealthChecker, - ) { - this.metrics = metrics - this.bridgeWatcher = bridgeWatcher - this.WithdrawalsSrv = WithdrawalsSrv - this.govWatcher = govWatcher - this.proxyWatcher = proxyWatcher - this.healthChecker = healthChecker - } - - public handleTx() { - return async ( - call: ServerUnaryCall, - callback: sendUnaryData, - ) => { - const end = this.metrics.summaryHandlers.labels({ method: HandleTxLabel }).startTimer() - this.metrics.lastAgentTouch.labels({ method: HandleTxLabel }).set(new Date().getTime()) - - const txEvent = newTransactionDto(call.request) - - const findings: Finding[] = [] - - const bridgeFindings = this.bridgeWatcher.handleL2Logs(txEvent.logs) - const govFindings = this.govWatcher.handleL2Logs(txEvent.logs) - const proxyFindings = this.proxyWatcher.handleL2Logs(txEvent.logs) - this.WithdrawalsSrv.handleTransaction(txEvent) - - findings.push(...bridgeFindings, ...govFindings, ...proxyFindings) - - const errCount = this.healthChecker.check(findings) - errCount === 0 - ? this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusOK }).inc() - : this.metrics.processedIterations.labels({ method: HandleTxLabel, status: StatusFail }).inc() - - const txResponse = new EvaluateTxResponse() - txResponse.setStatus(ResponseStatus.SUCCESS) - txResponse.setPrivate(false) - txResponse.setFindingsList(findings) - const m = txResponse.getMetadataMap() - m.set('timestamp', new Date().toISOString()) - - end() - callback(null, txResponse) - } - } -} diff --git a/l2-bridge-optimism/src/main.ts b/l2-bridge-optimism/src/main.ts deleted file mode 100644 index 96934d840..000000000 --- a/l2-bridge-optimism/src/main.ts +++ /dev/null @@ -1,195 +0,0 @@ -import * as grpc from '@grpc/grpc-js' -import { either as E } from 'fp-ts' -import { BlockHandler } from './handlers/block.handler' -import { HealthHandler } from './handlers/health.handler' -import { InitHandler } from './handlers/init.handler' -import { AgentService } from './generated/proto/agent_grpc_pb' -import express, { Express, Request, Response } from 'express' -import Version from './utils/version' -import { Finding } from './generated/proto/alert_pb' -import { Config } from './utils/env/env' -import * as Winston from 'winston' -import { Address } from './utils/constants' -import promClient from 'prom-client' -import { Metrics } from './utils/metrics/metrics' -import { getEthersProvider } from 'forta-agent/dist/sdk/utils' -import { MonitorWithdrawals } from './services/monitor_withdrawals' -import { OptimismClient } from './clients/optimism_client' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' -import { TxHandler } from './handlers/tx.handler' -import { ProxyWatcher } from './services/proxy_watcher' -import { ProxyContractClient } from './clients/proxy_contract_client' -import process from 'process' -import { EventWatcher } from './services/event_watcher' -import { getL2BridgeEvents } from './utils/events/bridge_events' -import { getGovEvents } from './utils/events/gov_events' -import { getProxyAdminEvents } from './utils/events/proxy_admin_events' -import { AlertHandler } from './handlers/alert.handler' -import { BridgeBalanceSrv } from './services/bridge_balance' -import { ETHProvider } from './clients/eth_provider_client' -import { ethers } from 'forta-agent' -import { ERC20Bridged__factory, L2ERC20TokenBridge__factory, OssifiableProxy__factory } from './generated/typechain' - -const main = async () => { - const config = new Config() - - const logger: Winston.Logger = Winston.createLogger({ - format: config.logFormat === 'simple' ? Winston.format.simple() : Winston.format.json(), - transports: [new Winston.transports.Console()], - }) - - const defaultRegistry = promClient - defaultRegistry.collectDefaultMetrics({ - prefix: config.promPrefix, - }) - - const customRegister = new promClient.Registry() - const mergedRegistry = promClient.Registry.merge([defaultRegistry.register, customRegister]) - mergedRegistry.setDefaultLabels({ instance: config.instance, dataProvider: config.dataProvider }) - - const metrics = new Metrics(mergedRegistry, config.promPrefix) - - const optimismProvider = new ethers.providers.JsonRpcProvider(config.optimismRpcUrl, config.chainId) - let nodeClient = getEthersProvider() - if (!config.useFortaProvider) { - nodeClient = optimismProvider - } - - const adr: Address = Address - - const onAppFindings: Finding[] = [] - const healthChecker = new HealthChecker(logger, metrics, BorderTime, MaxNumberErrorsPerBorderTime) - - const l2Bridge = L2ERC20TokenBridge__factory.connect(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, nodeClient) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_WSTETH_BRIDGED.address, nodeClient) - const bridgedLdoRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_LDO_BRIDGED_ADDRESS, nodeClient) - - const optimismClient = new OptimismClient(nodeClient, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - const withdrawalsSrv = new MonitorWithdrawals(optimismClient, adr.OPTIMISM_L2_TOKEN_GATEWAY.address, logger) - - const proxyWatchers: ProxyWatcher[] = [ - new ProxyWatcher( - new ProxyContractClient( - adr.OPTIMISM_WSTETH_BRIDGED.name, - OssifiableProxy__factory.connect(adr.OPTIMISM_WSTETH_BRIDGED.address, nodeClient), - metrics, - ), - logger, - ), - new ProxyWatcher( - new ProxyContractClient( - adr.OPTIMISM_L2_TOKEN_GATEWAY.name, - OssifiableProxy__factory.connect(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, nodeClient), - metrics, - ), - logger, - ), - ] - - const bridgeEventWatcher = new EventWatcher( - 'BridgeEventWatcher', - getL2BridgeEvents(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, adr.RolesMap), - ) - const govEventWatcher = new EventWatcher('GovEventWatcher', getGovEvents(adr.GOV_BRIDGE_ADDRESS)) - const proxyEventWatcher = new EventWatcher( - 'ProxyEventWatcher', - getProxyAdminEvents(adr.OPTIMISM_WSTETH_BRIDGED, adr.OPTIMISM_L2_TOKEN_GATEWAY), - ) - - const mainnet = 1 - const ethProvider = new ethers.providers.JsonRpcProvider(config.ethereumRpcUrl, mainnet) - - const wSthEthRunner = ERC20Bridged__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ldoRunner = ERC20Bridged__factory.connect(adr.L1_LDO_ADDRESS, ethProvider) - - const l1Client = new ETHProvider(metrics, wSthEthRunner, ldoRunner, ethProvider) - const bridgeBalanceSrv = new BridgeBalanceSrv( - logger, - l1Client, - adr.OPTIMISM_L1_TOKEN_BRIDGE, - adr.OPTIMISM_L1_LDO_BRIDGE, - optimismClient, - ) - - const gRPCserver = new grpc.Server() - const blockH = new BlockHandler( - logger, - metrics, - proxyWatchers, - withdrawalsSrv, - bridgeBalanceSrv, - healthChecker, - l1Client, - onAppFindings, - ) - - const txH = new TxHandler( - metrics, - bridgeEventWatcher, - govEventWatcher, - proxyEventWatcher, - withdrawalsSrv, - healthChecker, - ) - const healthH = new HealthHandler(healthChecker, metrics, logger, config.ethereumRpcUrl, config.chainId) - const initH = new InitHandler(config.appName, logger, onAppFindings) - const alertH = new AlertHandler() - - gRPCserver.addService(AgentService, { - initialize: initH.handleInit(), - evaluateBlock: blockH.handleBlock(), - evaluateTx: txH.handleTx(), - healthCheck: healthH.healthGrpc(), - // not used, but required for grpc contract - evaluateAlert: alertH.handleAlert(), - }) - - const latestL2BlockNumber = await optimismClient.getBlockNumber() - if (E.isLeft(latestL2BlockNumber)) { - logger.error(latestL2BlockNumber.left) - - process.exit(1) - } - - const withdrawalsSrvErr = await withdrawalsSrv.initialize(latestL2BlockNumber.right) - if (E.isLeft(withdrawalsSrvErr)) { - logger.error('Could not init withdrawalsSrvErr', withdrawalsSrvErr.left) - - process.exit(1) - } - - for (const proxyWatcher of proxyWatchers) { - const proxyWatcherErr = await proxyWatcher.initialize(latestL2BlockNumber.right) - if (proxyWatcherErr !== null) { - logger.error('Could not init proxyWatcherSrv', proxyWatcherErr.message) - - process.exit(1) - } - } - - metrics.buildInfo.set({ commitHash: Version.commitHash }, 1) - - gRPCserver.bindAsync(`0.0.0.0:${config.grpcPort}`, grpc.ServerCredentials.createInsecure(), (err, port) => { - if (err != null) { - logger.error(err) - - process.exit(1) - } - logger.info(`${config.appName} is listening on ${port}`) - }) - - const httpService: Express = express() - - httpService.get('/metrics', async (req: Request, res: Response) => { - res.set('Content-Type', mergedRegistry.contentType) - res.send(await mergedRegistry.metrics()) - }) - - httpService.get('/health', healthH.healthHttp()) - - httpService.listen(config.httpPort, () => { - logger.info(`Http server is running at http://localhost:${config.httpPort}`) - }) -} - -main() diff --git a/l2-bridge-optimism/src/services/bridge_balance.ts b/l2-bridge-optimism/src/services/bridge_balance.ts deleted file mode 100644 index 2f8b66af6..000000000 --- a/l2-bridge-optimism/src/services/bridge_balance.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { ETH_DECIMALS } from '../utils/constants' -import { networkAlert } from '../utils/errors' -import { Finding } from '../generated/proto/alert_pb' - -export abstract class IL1BridgeBalanceClient { - abstract getWstEthBalance(l1blockNumber: number, address: string): Promise> - abstract getLDOBalance(l1blockNumber: number, optimismL1LdoBridge: string): Promise> -} - -export abstract class IL2BridgeBalanceClient { - abstract getWstEthTotalSupply(l1blockNumber: number): Promise> - abstract getLdoTotalSupply(l2blockNumber: number): Promise> -} - -export class BridgeBalanceSrv { - private name = `BridgeBalanceSrv` - private readonly logger: Logger - private readonly clientL1: IL1BridgeBalanceClient - private readonly clientL2: IL2BridgeBalanceClient - - private readonly optimismL1TokenBridge: string - private readonly optimismL1LdoBridge: string - - constructor( - logger: Logger, - clientL1: IL1BridgeBalanceClient, - optimismL1TokenBridge: string, - optimismL1LdoBridge: string, - clientL2: IL2BridgeBalanceClient, - ) { - this.logger = logger - this.clientL1 = clientL1 - this.clientL2 = clientL2 - this.optimismL1TokenBridge = optimismL1TokenBridge - this.optimismL1LdoBridge = optimismL1LdoBridge - } - - async handleBlock(l1BlockNumber: number, l2BlockNumber: number): Promise { - const start = new Date().getTime() - - const out: Finding[] = [] - const [wStethFindings, ldoFindings] = await Promise.all([ - this.handleBridgeBalanceWstETH(l1BlockNumber, l2BlockNumber), - this.handleBridgeBalanceLDO(l1BlockNumber, l2BlockNumber), - ]) - - out.push(...wStethFindings, ...ldoFindings) - - this.logger.info(elapsedTime(this.name + '.' + this.handleBlock.name, start)) - return out - } - - private async handleBridgeBalanceWstETH(l1BlockNumber: number, l2BlockNumber: number): Promise { - const [wstETHBalance_onL1OptimismBridge, wstETHTotalSupply_onOptimism] = await Promise.all([ - this.clientL1.getWstEthBalance(l1BlockNumber, this.optimismL1TokenBridge), - this.clientL2.getWstEthTotalSupply(l2BlockNumber), - ]) - - const out: Finding[] = [] - if (E.isRight(wstETHTotalSupply_onOptimism) && E.isRight(wstETHBalance_onL1OptimismBridge)) { - if (wstETHTotalSupply_onOptimism.right.isGreaterThan(wstETHBalance_onL1OptimismBridge.right)) { - const f = new Finding() - - f.setName(`🚨🚨🚨 Optimism bridge wstETH:stEth balance mismatch`) - f.setDescription( - `Total supply of bridged wstETH is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${wstETHTotalSupply_onOptimism.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${wstETHBalance_onL1OptimismBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `Optimism: ${l2BlockNumber}\n`, - ) - f.setSeverity(Finding.Severity.CRITICAL) - f.setAlertid('OP-STETH-BRIDGE-BALANCE-MISMATCH') - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('optimism') - - out.push(f) - } - } else { - if (E.isLeft(wstETHBalance_onL1OptimismBridge)) { - out.push( - networkAlert( - wstETHBalance_onL1OptimismBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:46`, - `Could not call clientL1.getWstEthBalance`, - ), - ) - - if (E.isLeft(wstETHTotalSupply_onOptimism)) { - out.push( - networkAlert( - wstETHTotalSupply_onOptimism.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:46`, - `Could not call clientL2.getWstEthTotalSupply`, - ), - ) - } - } - } - - return out - } - - private async handleBridgeBalanceLDO(l1BlockNumber: number, l2BlockNumber: number): Promise { - const [ldoBalance_onL1OptimismBridge, ldoTotalSupply_onOptimism] = await Promise.all([ - this.clientL1.getLDOBalance(l1BlockNumber, this.optimismL1LdoBridge), - this.clientL2.getLdoTotalSupply(l2BlockNumber), - ]) - - const out: Finding[] = [] - - if (E.isRight(ldoBalance_onL1OptimismBridge) && E.isRight(ldoTotalSupply_onOptimism)) { - if (ldoTotalSupply_onOptimism.right.isGreaterThan(ldoBalance_onL1OptimismBridge.right)) { - const f = new Finding() - - f.setName(`🚨🚨🚨 Optimism bridge LDO balance mismatch`) - f.setDescription( - `Total supply of bridged LDO is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${ldoTotalSupply_onOptimism.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${ldoBalance_onL1OptimismBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `Optimism: ${l2BlockNumber}\n`, - ) - f.setSeverity(Finding.Severity.CRITICAL) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setSeverity(Finding.Severity.CRITICAL) - f.setAlertid('OP-LDO-BRIDGE-BALANCE-MISMATCH') - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('optimism') - - out.push(f) - } - } else { - if (E.isLeft(ldoBalance_onL1OptimismBridge)) { - out.push( - networkAlert( - ldoBalance_onL1OptimismBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceLDO.name}:103`, - `Could not call clientL1.getLDOBalance`, - ), - ) - - if (E.isLeft(ldoTotalSupply_onOptimism)) { - out.push( - networkAlert( - ldoTotalSupply_onOptimism.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceLDO.name}:102`, - `Could not call clientL2.getLdoTotalSupply`, - ), - ) - } - } - } - - return out - } -} diff --git a/l2-bridge-optimism/src/services/event_watcher.ts b/l2-bridge-optimism/src/services/event_watcher.ts deleted file mode 100644 index acbd06dea..000000000 --- a/l2-bridge-optimism/src/services/event_watcher.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { EventOfNotice } from '../entity/events' -import { Log } from '@ethersproject/abstract-provider' -import { ethers } from 'ethers' -import { Finding } from '../generated/proto/alert_pb' - -export class EventWatcher { - private readonly name: string - private readonly eventsToFinding: EventOfNotice[] - - constructor(botName: string, events: EventOfNotice[]) { - this.name = botName - this.eventsToFinding = events - } - - public getName(): string { - return this.name - } - - public handleL2Logs(l2logs: Log[]): Finding[] { - const addresses: string[] = [] - - for (const l2log of l2logs) { - addresses.push(l2log.address.toLowerCase()) - } - - const findings: Finding[] = [] - for (const eventToFinding of this.eventsToFinding) { - const ind = addresses.indexOf(eventToFinding.address) - if (ind >= 0) { - for (const log of l2logs) { - if (log.address.toLowerCase() !== eventToFinding.address.toLowerCase()) { - continue - } - - const parser = new ethers.utils.Interface([eventToFinding.event]) - try { - const logDesc = parser.parseLog(log) - const f: Finding = new Finding() - - f.setName(eventToFinding.name) - f.setDescription(eventToFinding.description(logDesc.args)) - f.setAlertid(eventToFinding.alertId) - f.setSeverity(eventToFinding.severity) - f.setType(eventToFinding.type) - f.setProtocol('optimism') - - const m = f.getMetadataMap() - m.set('args', String(logDesc.args)) - - findings.push(f) - } catch (e) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - } - } - } - } - - return findings - } -} diff --git a/l2-bridge-optimism/src/services/health-checker/health-checker.srv.spec.ts b/l2-bridge-optimism/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 977b86c2c..000000000 --- a/l2-bridge-optimism/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { networkAlert } from '../../utils/errors' -import { HealthChecker } from './health-checker.srv' -import promClient from 'prom-client' -import * as Winston from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc')] - const borderTime = 1_000 - const timeForNextCheck = 250 - - const registry = new promClient.Registry() - const m = new Metrics(registry, 'test_') - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(logger, m, borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - networkAlert(new Error('Some err'), 'err name', 'err desc'), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/l2-bridge-optimism/src/services/health-checker/health-checker.srv.ts b/l2-bridge-optimism/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 5f07ca97a..000000000 --- a/l2-bridge-optimism/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { NetworkErrorFinding } from '../../utils/errors' -import { Finding } from '../../generated/proto/alert_pb' -import { Logger } from 'winston' -import { Metrics } from '../../utils/metrics/metrics' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - private logger: Logger - private metrics: Metrics - - constructor(logger: Logger, metrics: Metrics, borderTime: number, maxCountErrors: number) { - this.logger = logger - this.metrics = metrics - - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): number { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.getAlertid() === NetworkErrorFinding) { - this.logger.warn(f.getName(), { - desc: f.getDescription(), - err: { - stack: f.getMetadataMap()['stack'], - msg: f.getMetadataMap()['message'], - err: f.getMetadataMap()['name'], - }, - }) - errCount += 1 - - this.metrics.networkErrors.inc() - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return errCount - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - - return errCount - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/l2-bridge-optimism/src/services/monitor_withdrawals.spec.ts b/l2-bridge-optimism/src/services/monitor_withdrawals.spec.ts deleted file mode 100644 index 6ddc0c900..000000000 --- a/l2-bridge-optimism/src/services/monitor_withdrawals.spec.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { ERC20Bridged__factory, L2ERC20TokenBridge__factory } from '../generated/typechain' -import { Address } from '../utils/constants' -import { ethers } from 'forta-agent' -import { Config } from '../utils/env/env' -import promClient from 'prom-client' -import { Metrics } from '../utils/metrics/metrics' -import { MonitorWithdrawals } from './monitor_withdrawals' -import { TransactionDto } from '../entity/events' -import { OptimismClient } from '../clients/optimism_client' -import * as Winston from 'winston' -import BigNumber from 'bignumber.js' -import { WithdrawalRecord } from '../entity/blockDto' - -const TEST_TIMEOUT = 120_000 - -describe('monitor_withdrawals', () => { - const config = new Config() - const adr: Address = Address - - const logger: Winston.Logger = Winston.createLogger({ - format: config.logFormat === 'simple' ? Winston.format.simple() : Winston.format.json(), - transports: [new Winston.transports.Console()], - }) - - const optimismProvider = new ethers.providers.JsonRpcProvider(config.optimismRpcUrl, config.chainId) - - const l2Bridge = L2ERC20TokenBridge__factory.connect(adr.OPTIMISM_L2_TOKEN_GATEWAY.address, optimismProvider) - const bridgedWSthEthRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_WSTETH_BRIDGED.address, optimismProvider) - const bridgedLdoRunner = ERC20Bridged__factory.connect(adr.OPTIMISM_LDO_BRIDGED_ADDRESS, optimismProvider) - - const customRegister = new promClient.Registry() - const metrics = new Metrics(customRegister, config.promPrefix) - const l2Client = new OptimismClient(optimismProvider, metrics, l2Bridge, bridgedWSthEthRunner, bridgedLdoRunner) - - const l2BlockNumber = 121_867_825 - const withdrawalsSrv = new MonitorWithdrawals(l2Client, adr.OPTIMISM_L2_TOKEN_GATEWAY.address, logger) - - test( - 'handleTransaction is 2.008529093774247442', - async () => { - const trx = await optimismProvider.getTransaction( - '0x3c122943576f8b1577782edc98a5634830e3131d3dfdc6d36c16e2411b3c2d7a', - ) - - const logs = await optimismProvider.getLogs({ - blockHash: '0x8104eec958e7be1b0ff637d9392ffc680ecc89c831d97a06df8fcec58e6fc62f', - }) - - const trxDto: TransactionDto = { - logs: logs, - to: trx.to ? trx.to.toLowerCase() : null, - block: { - number: new BigNumber(trx.blockNumber ? trx.blockNumber : l2BlockNumber, 10).toNumber(), - timestamp: new BigNumber(trx.timestamp ? trx.timestamp : 1719323627, 10).toNumber(), - }, - } - - const withdrawalRecord = withdrawalsSrv.handleTransaction(trxDto) - if (withdrawalRecord === null) { - throw new Error('Could not parse log') - } - - const expectedAmount = new BigNumber('2008529093774247442') - - const expected: WithdrawalRecord = { - timestamp: 1719323627, - amount: expectedAmount, - } - - expect(withdrawalRecord).toEqual(expected) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-optimism/src/services/monitor_withdrawals.ts b/l2-bridge-optimism/src/services/monitor_withdrawals.ts deleted file mode 100644 index d271d0d0d..000000000 --- a/l2-bridge-optimism/src/services/monitor_withdrawals.ts +++ /dev/null @@ -1,166 +0,0 @@ -import BigNumber from 'bignumber.js' -import { BlockDto, WithdrawalRecord } from '../entity/blockDto' -import * as E from 'fp-ts/Either' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import { NetworkError } from '../utils/errors' -import { WithdrawalInitiatedEvent } from '../generated/typechain/L2ERC20TokenBridge' -import { Finding } from '../generated/proto/alert_pb' -import { TransactionDto } from '../entity/events' -import { ethers } from 'forta-agent' -import { ETH_DECIMALS } from '../utils/constants' - -// 10k wstETH -const MAX_WITHDRAWALS_10K_WstEth = 10_000 - -export type MonitorWithdrawalsInitResp = { - currentWithdrawals: string -} - -export const HOURS_48 = 60 * 60 * 24 * 2 -export const AVG_BLOCK_TIME_2SECONDS: number = 2 //s - -export abstract class IMonitorWithdrawalsClient { - public abstract getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> - - public abstract getWithdrawalRecords( - withdrawalEvents: WithdrawalInitiatedEvent[], - ): Promise> -} - -export class MonitorWithdrawals { - private readonly name: string = 'WithdrawalsMonitor' - private readonly withdrawalInitiatedEvent = - 'event WithdrawalInitiated(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data)' - - private readonly logger: Logger - private readonly optimismL2TokenGateway: string - private readonly withdrawalsClient: IMonitorWithdrawalsClient - - private withdrawalStore: WithdrawalRecord[] = [] - private toManyWithdrawalsTimestamp = 0 - - constructor(withdrawalsClient: IMonitorWithdrawalsClient, optimismL2TokenGateway: string, logger: Logger) { - this.withdrawalsClient = withdrawalsClient - this.optimismL2TokenGateway = optimismL2TokenGateway - this.logger = logger - } - - public getName(): string { - return this.name - } - - public async initialize(currentBlock: number): Promise> { - // 48 hours - const pastBlock = currentBlock - Math.ceil(HOURS_48 / AVG_BLOCK_TIME_2SECONDS) - - const withdrawalEvents = await this.withdrawalsClient.getWithdrawalEvents(pastBlock, currentBlock - 1) - if (E.isLeft(withdrawalEvents)) { - return withdrawalEvents - } - - const withdrawalRecords = await this.withdrawalsClient.getWithdrawalRecords(withdrawalEvents.right) - if (E.isLeft(withdrawalRecords)) { - return withdrawalRecords - } - - const withdrawalsSum = new BigNumber(0) - for (const wc of withdrawalRecords.right) { - withdrawalsSum.plus(wc.amount) - this.withdrawalStore.push(wc) - } - - this.logger.info(`${MonitorWithdrawals.name} started on block ${currentBlock}`) - return E.right({ - currentWithdrawals: withdrawalsSum.div(ETH_DECIMALS).toFixed(2), - }) - } - - public handleL2Block(l2BlockDto: BlockDto): Finding[] { - const start = new Date().getTime() - - const out: Finding[] = [] - - // remove withdrawals records older than MAX_WITHDRAWALS_WINDOW - const withdrawalsCache: WithdrawalRecord[] = [] - for (const wc of this.withdrawalStore) { - if (l2BlockDto.timestamp - HOURS_48 < wc.timestamp) { - withdrawalsCache.push(wc) - } - } - - this.withdrawalStore = withdrawalsCache - - const withdrawalsSum = new BigNumber(0) - for (const wc of this.withdrawalStore) { - withdrawalsSum.plus(wc.amount) - } - - // block number condition is meant to "sync" agents alerts - if ( - withdrawalsSum.div(ETH_DECIMALS).isGreaterThanOrEqualTo(MAX_WITHDRAWALS_10K_WstEth) && - l2BlockDto.number % 10 === 0 - ) { - const period = - l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp < HOURS_48 - ? l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp - : HOURS_48 - - const f: Finding = new Finding() - f.setName(`⚠️ Optimism: Huge withdrawals during the last ` + `${Math.floor(period / (60 * 60))} hour(s)`) - f.setDescription( - `There were withdrawals requests from L2 to L1 for the ` + - `${withdrawalsSum.div(ETH_DECIMALS).toFixed(4)} wstETH in total`, - ) - f.setAlertid('HUGE-WITHDRAWALS-FROM-L2') - f.setSeverity(Finding.Severity.MEDIUM) - f.setType(Finding.FindingType.SUSPICIOUS) - f.setProtocol('optimism') - - out.push(f) - - this.toManyWithdrawalsTimestamp = l2BlockDto.timestamp - - const tmp: WithdrawalRecord[] = [] - for (const wc of this.withdrawalStore) { - if (l2BlockDto.timestamp - this.toManyWithdrawalsTimestamp < wc.timestamp) { - tmp.push(wc) - } - } - - this.withdrawalStore = tmp - } - - this.logger.info(elapsedTime(MonitorWithdrawals.name + '.' + this.handleL2Block.name, start)) - return out - } - - public handleTransaction(txDto: TransactionDto): WithdrawalRecord | null { - for (const log of txDto.logs) { - if (log.address.toLowerCase() !== this.optimismL2TokenGateway.toLowerCase()) { - continue - } - - const parser = new ethers.utils.Interface([this.withdrawalInitiatedEvent]) - try { - const logDesc = parser.parseLog(log) - - const out: WithdrawalRecord = { - timestamp: txDto.block.timestamp, - amount: new BigNumber(String(logDesc.args._amount)), - } - - this.withdrawalStore.push(out) - - return out - } catch (e) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - } - } - - return null - } -} diff --git a/l2-bridge-optimism/src/services/proxy_watcher.ts b/l2-bridge-optimism/src/services/proxy_watcher.ts deleted file mode 100644 index 045407c83..000000000 --- a/l2-bridge-optimism/src/services/proxy_watcher.ts +++ /dev/null @@ -1,161 +0,0 @@ -import { IProxyContractClient } from '../clients/proxy_contract_client' -import * as E from 'fp-ts/Either' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import { networkAlert } from '../utils/errors' -import { Finding } from '../generated/proto/alert_pb' - -export class ProxyWatcher { - private readonly name: string = 'ProxyWatcher' - - private lastImpl: string = '' - private lastAdmin: string = '' - - private readonly proxyContract: IProxyContractClient - private readonly logger: Logger - - constructor(proxyContract: IProxyContractClient, logger: Logger) { - this.proxyContract = proxyContract - this.logger = logger - } - - public getName(): string { - return this.proxyContract.getName() + `(${this.proxyContract.getAddress()}).` + this.name - } - - public getAdmin(): string { - return this.lastAdmin.toLowerCase() - } - - public getImpl(): string { - return this.lastImpl.toLowerCase() - } - - public setAdmin(admin: string) { - this.lastAdmin = admin.toLowerCase() - } - - public setImpl(impl: string) { - this.lastImpl = impl.toLowerCase() - } - - async initialize(currentL2Block: number): Promise { - const [lastImpl, lastAdmin] = await Promise.all([ - this.proxyContract.getProxyImplementation(currentL2Block), - this.proxyContract.getProxyAdmin(currentL2Block), - ]) - - if (E.isLeft(lastImpl)) { - return lastImpl.left - } - - if (E.isLeft(lastAdmin)) { - return lastAdmin.left - } - - this.setImpl(lastImpl.right) - this.setAdmin(lastAdmin.right) - - this.logger.info(`${this.getName()}. started on block ${currentL2Block}`) - - return null - } - - async handleL2Block(l2blockNumber: number): Promise { - const start = new Date().getTime() - - const BLOCK_INTERVAL = 25 - const out: Finding[] = [] - - if (l2blockNumber % BLOCK_INTERVAL === 0) { - const [impl, admin] = await Promise.all([ - this.handleProxyImplementationChanges(l2blockNumber), - this.handleProxyAdminChanges(l2blockNumber), - ]) - - out.push(...impl, ...admin) - } - - this.logger.info(this.getName() + '.impl = ' + this.getImpl()) - this.logger.info(this.getName() + '.adm = ' + this.getAdmin()) - this.logger.info(elapsedTime(this.proxyContract.getName() + `.` + this.handleL2Block.name, start)) - return out - } - - private async handleProxyImplementationChanges(l2BlockNumber: number): Promise { - const out: Finding[] = [] - - const newImpl = await this.proxyContract.getProxyImplementation(l2BlockNumber) - if (E.isLeft(newImpl)) { - return [ - networkAlert( - newImpl.left, - `Error in ${this.getName()}.${this.handleProxyImplementationChanges.name}:98`, - `Could not fetch proxyImplementation on ${l2BlockNumber}`, - ), - ] - } - - if (newImpl.right.toLowerCase() != this.getImpl().toLowerCase()) { - const f: Finding = new Finding() - - f.setName('🚨 Optimism: Proxy implementation changed') - f.setDescription( - `Proxy implementation for ${this.proxyContract.getName()}(${this.proxyContract.getAddress()}) ` + - `was changed form ${this.getImpl()} to ${newImpl}` + - `\n(detected by func call)`, - ) - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('optimism') - - const m = f.getMetadataMap() - m.set('newImpl', newImpl.right) - m.set('lastImpl', this.getImpl()) - - out.push(f) - - this.setImpl(newImpl.right.toLowerCase()) - } - - return out - } - - private async handleProxyAdminChanges(l2blockNumber: number): Promise { - const out: Finding[] = [] - - const newAdmin = await this.proxyContract.getProxyAdmin(l2blockNumber) - if (E.isLeft(newAdmin)) { - return [ - networkAlert( - newAdmin.left, - `Error in ${this.getName()}.${this.handleProxyAdminChanges.name}:138`, - `Could not fetch getProxyAdmin on ${l2blockNumber}`, - ), - ] - } - - if (newAdmin.right.toLowerCase() != this.getAdmin().toLowerCase()) { - const f: Finding = new Finding() - f.setName('🚨 Optimism: Proxy admin changed') - f.setDescription( - `Proxy admin for ${this.proxyContract.getName()}(${this.proxyContract.getAddress()}) ` + - `was changed from ${this.getAdmin()} to ${newAdmin}` + - `\n(detected by func call)`, - ) - f.setSeverity(Finding.Severity.HIGH) - f.setType(Finding.FindingType.INFORMATION) - f.setProtocol('optimism') - - const m = f.getMetadataMap() - m.set('newAdmin', newAdmin.right) - m.set('lastAdmin', this.getAdmin()) - - this.setAdmin(newAdmin.right.toLowerCase()) - - out.push(f) - } - - return out - } -} diff --git a/l2-bridge-optimism/src/utils/constants.ts b/l2-bridge-optimism/src/utils/constants.ts deleted file mode 100644 index a244c5230..000000000 --- a/l2-bridge-optimism/src/utils/constants.ts +++ /dev/null @@ -1,60 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ContractInfo = { - address: string - name: string -} - -export type Address = { - L1_LDO_ADDRESS: string - L1_WSTETH_ADDRESS: string - OPTIMISM_L1_TOKEN_BRIDGE: string - OPTIMISM_L1_LDO_BRIDGE: string - GOV_BRIDGE_ADDRESS: string - RolesMap: RoleHashToNameMap - OPTIMISM_L2_TOKEN_GATEWAY: ContractInfo - OPTIMISM_WSTETH_BRIDGED: ContractInfo - OPTIMISM_LDO_BRIDGED_ADDRESS: string -} - -export type RoleHashToNameMap = Map -export const ETH_DECIMALS = new BigNumber(10).pow(18) - -const L1_LDO_ADDRESS = '0x5a98fcbea516cf06857215779fd812ca3bef1b32' -const L1_WSTETH_ADDRESS = '0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0' -const OPTIMISM_L1_TOKEN_BRIDGE = `0x76943c0d61395d8f2edf9060e1533529cae05de6` -const OPTIMISM_L1_LDO_BRIDGE = `0x99c9fc46f92e8a1c0dec1b1747d010903e884be1` -const GOV_BRIDGE_ADDRESS: string = '0xefa0db536d2c8089685630fafe88cf7805966fc3' -const OPTIMISM_WSTETH_BRIDGED = '0x1f32b1c2345538c0c6f582fcb022739c4a194ebb' -const OPTIMISM_LDO_BRIDGED_ADDRESS = '0xfdb794692724153d1488ccdbe0c56c252596735f' -const OPTIMISM_L2_TOKEN_GATEWAY = '0x8e01013243a96601a86eb3153f0d9fa4fbfb6957' - -const DEPOSITS_DISABLER_ROLE_HASH: string = '0x63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6' -const DEPOSITS_ENABLER_ROLE_HASH: string = '0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a' -const WITHDRAWALS_ENABLER_ROLE_HASH: string = '0x9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d' -const WITHDRAWALS_DISABLER_ROLE_HASH: string = '0x94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c' -const DEFAULT_ADMIN_ROLE_HASH: string = '0x0000000000000000000000000000000000000000000000000000000000000000' - -export const Address: Address = { - L1_LDO_ADDRESS: L1_LDO_ADDRESS, - L1_WSTETH_ADDRESS: L1_WSTETH_ADDRESS, - OPTIMISM_L1_TOKEN_BRIDGE: OPTIMISM_L1_TOKEN_BRIDGE, - OPTIMISM_L1_LDO_BRIDGE: OPTIMISM_L1_LDO_BRIDGE, - GOV_BRIDGE_ADDRESS: GOV_BRIDGE_ADDRESS, - OPTIMISM_WSTETH_BRIDGED: { - name: 'OPTIMISM_WSTETH_BRIDGED', - address: OPTIMISM_WSTETH_BRIDGED, - }, - OPTIMISM_L2_TOKEN_GATEWAY: { - name: 'OPTIMISM_L2_TOKEN_GATEWAY', - address: OPTIMISM_L2_TOKEN_GATEWAY, - }, - RolesMap: new Map([ - [DEPOSITS_ENABLER_ROLE_HASH, 'DEPOSITS ENABLER ROLE'], - [DEPOSITS_DISABLER_ROLE_HASH, 'DEPOSITS DISABLER ROLE'], - [WITHDRAWALS_ENABLER_ROLE_HASH, 'WITHDRAWALS ENABLER ROLE'], - [WITHDRAWALS_DISABLER_ROLE_HASH, 'WITHDRAWALS DISABLER ROLE'], - [DEFAULT_ADMIN_ROLE_HASH, 'DEFAULT ADMIN ROLE'], - ]), - OPTIMISM_LDO_BRIDGED_ADDRESS: OPTIMISM_LDO_BRIDGED_ADDRESS, -} diff --git a/l2-bridge-optimism/src/utils/env/env.ts b/l2-bridge-optimism/src/utils/env/env.ts deleted file mode 100644 index 4a5608732..000000000 --- a/l2-bridge-optimism/src/utils/env/env.ts +++ /dev/null @@ -1,50 +0,0 @@ -import 'dotenv/config' - -export class Config { - public readonly appName: string - public readonly nodeEnv: string - public readonly instance: string - public readonly ethereumRpcUrl: string - public readonly optimismRpcUrl: string - public readonly dataProvider: string - - public readonly grpcPort: number - public readonly httpPort: number - public readonly logFormat: string - public readonly logLevel: string - - public readonly chainId: number - public readonly promPrefix: string - public readonly useFortaProvider: boolean - - constructor() { - this.appName = process.env.APP_NAME || 'l2-bridge-optimism' - this.nodeEnv = process.env.NODE_ENV || 'production' - this.instance = process.env.INSTANCE || 'forta' - - this.grpcPort = parseInt(process.env.AGENT_GRPC_PORT!, 10) || 50051 - this.httpPort = parseInt(process.env.HTTP_PORT!, 10) || 3000 - this.logFormat = process.env.LOG_FORMAT || 'simple' - this.logLevel = process.env.LOG_LEVEL || 'info' - - this.chainId = parseInt(process.env.FORTA_CHAIN_ID!, 10) || 10 - this.ethereumRpcUrl = process.env.ETHEREUM_RPC_URL || 'https://eth.drpc.org' - this.optimismRpcUrl = process.env.OPTIMSIM_RPC_URL || 'https://optimism.drpc.org' - - this.promPrefix = this.appName.replaceAll('-', '_') - - if (process.env.USE_FORTA_RPC_URL === undefined) { - this.useFortaProvider = false - } else { - this.useFortaProvider = JSON.parse(process.env.USE_FORTA_RPC_URL) - } - - const urlRegex = /^(?:https?:\/\/)?(?:www\.)?([^/\n]+)/ - - this.dataProvider = '' - const match = this.optimismRpcUrl.match(urlRegex) - if (match) { - this.dataProvider = match[1] - } - } -} diff --git a/l2-bridge-optimism/src/utils/errors.ts b/l2-bridge-optimism/src/utils/errors.ts deleted file mode 100644 index ed0183cb7..000000000 --- a/l2-bridge-optimism/src/utils/errors.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Finding } from '../generated/proto/alert_pb' - -export const NetworkErrorFinding = 'NETWORK-ERROR' - -export function networkAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid(NetworkErrorFinding) - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export function dbAlert(err: Error, name: string, desc: string): Finding { - const f: Finding = new Finding() - f.setName(name) - f.setDescription(desc) - f.setAlertid('DB-ERROR') - f.setSeverity(Finding.Severity.UNKNOWN) - f.setType(Finding.FindingType.DEGRADED) - f.setProtocol('ethereum') - - const m = f.getMetadataMap() - m.set('stack', `${err.stack}`) - m.set('message', `${err.message}`) - m.set('name', `${err.name}`) - - return f -} - -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - this.cause = e.cause - } else { - this.message = `${e}` - } - } -} diff --git a/l2-bridge-optimism/src/utils/events/bridge_events.ts b/l2-bridge-optimism/src/utils/events/bridge_events.ts deleted file mode 100644 index e36c05f94..000000000 --- a/l2-bridge-optimism/src/utils/events/bridge_events.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import { Result } from '@ethersproject/abi/lib' - -export function getL2BridgeEvents(OPTIMISM_L2_TOKEN_GATEWAY: string, RolesMap: Map): EventOfNotice[] { - return [ - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event Initialized(address indexed admin)', - alertId: 'L2-BRIDGE-IMPLEMENTATION-INITIALIZED', - name: '🚨🚨🚨 Optimism L2 Bridge: Implementation initialized', - description: (args: Result) => - `Implementation of the Optimism L2 Bridge was initialized by ${args.admin}\n` + - `NOTE: This is not the thing that should be left unacted! ` + - `Make sure that this call was made by Lido!`, - severity: Finding.Severity.CRITICAL, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event DepositsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-DEPOSITS-DISABLED', - name: '🚨 Optimism L2 Bridge: Deposits Disabled', - description: (args: Result) => `Deposits were disabled by ${args.disabler}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: - 'event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)', - alertId: 'L2-BRIDGE-ROLE-ADMIN-CHANGED', - name: '🚨 Optimism L2 Bridge: Role Admin changed', - description: (args: Result) => - `Role Admin for role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was changed from ${args.previousAdminRole} to ${args.newAdminRole}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event WithdrawalsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-DISABLED', - name: '🚨 Optimism L2 Bridge: Withdrawals Disabled', - description: (args: Result) => `Withdrawals were disabled by ${args.enabler}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-GRANTED', - name: '⚠️ Optimism L2 Bridge: Role granted', - description: (args: Result) => - `Role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was granted to ${args.account} by ${args.sender}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-REVOKED', - name: '⚠️ Optimism L2 Bridge: Role revoked', - description: (args: Result) => - `Role ${args.role}(${RolesMap.get(args.role) || 'unknown'}) ` + - `was revoked to ${args.account} by ${args.sender}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event DepositsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-DEPOSITS-ENABLED', - name: 'ℹ️ Optimism L2 Bridge: Deposits Enabled', - description: (args: Result) => `Deposits were enabled by ${args.enabler}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - - { - address: OPTIMISM_L2_TOKEN_GATEWAY, - event: 'event WithdrawalsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-ENABLED', - name: 'ℹ️ Optimism L2 Bridge: Withdrawals Enabled', - description: (args: Result) => `Withdrawals were enabled by ${args.enabler}`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-optimism/src/utils/events/gov_events.ts b/l2-bridge-optimism/src/utils/events/gov_events.ts deleted file mode 100644 index 699e7f19b..000000000 --- a/l2-bridge-optimism/src/utils/events/gov_events.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import { Result } from '@ethersproject/abi/lib' - -export function getGovEvents(GOV_BRIDGE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event EthereumGovernanceExecutorUpdate(address oldEthereumGovernanceExecutor, address newEthereumGovernanceExecutor)', - alertId: 'GOV-BRIDGE-EXEC-UPDATED', - name: '🚨 Optimism Gov Bridge: Ethereum Governance Executor Updated', - description: (args: Result) => - `Ethereum Governance Executor was updated from ` + - `${args.oldEthereumGovernanceExecutor} to ${args.newEthereumGovernanceExecutor}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GuardianUpdate(address oldGuardian, address newGuardian)', - alertId: 'GOV-BRIDGE-GUARDIAN-UPDATED', - name: '🚨 Optimism Gov Bridge: Guardian Updated', - description: (args: Result) => `Guardian was updated from ` + `${args.oldGuardian} to ${args.newGuardian}`, - severity: Finding.Severity.HIGH, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event DelayUpdate(uint256 oldDelay, uint256 newDelay)', - alertId: 'GOV-BRIDGE-DELAY-UPDATED', - name: '⚠️ Optimism Gov Bridge: Delay Updated', - description: (args: Result) => `Delay was updated from ` + `${args.oldDelay} to ${args.newDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GracePeriodUpdate(uint256 oldGracePeriod, uint256 newGracePeriod)', - alertId: 'GOV-BRIDGE-GRACE-PERIOD-UPDATED', - name: '⚠️ Optimism Gov Bridge: Grace Period Updated', - description: (args: Result) => - `Grace Period was updated from ` + `${args.oldGracePeriod} to ${args.newGracePeriod}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MinimumDelayUpdate(uint256 oldMinimumDelay, uint256 newMinimumDelay)', - alertId: 'GOV-BRIDGE-MIN-DELAY-UPDATED', - name: '⚠️ Optimism Gov Bridge: Min Delay Updated', - description: (args: Result) => - `Min Delay was updated from ` + `${args.oldMinimumDelay} to ${args.newMinimumDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MaximumDelayUpdate(uint256 oldMaximumDelay, uint256 newMaximumDelay)', - alertId: 'GOV-BRIDGE-MAX-DELAY-UPDATED', - name: '⚠️ Optimism Gov Bridge: Max Delay Updated', - description: (args: Result) => - `Max Delay was updated from ` + `${args.oldMaximumDelay} to ${args.newMaximumDelay}`, - severity: Finding.Severity.MEDIUM, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event ActionsSetQueued(uint256 indexed id, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, bool[] withDelegatecalls, uint256 executionTime)', - alertId: 'GOV-BRIDGE-ACTION-SET-QUEUED', - name: ' ℹ️ Optimism Gov Bridge: Action set queued', - description: (args: Result) => `Action set ${args.id} was queued`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetExecuted(uint256 indexed id, address indexed initiatorExecution, bytes[] returnedData)', - alertId: 'GOV-BRIDGE-ACTION-SET-EXECUTED', - name: ' ℹ️ Optimism Gov Bridge: Action set executed', - description: (args: Result) => `Action set ${args.id} was executed`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetCanceled(uint256 indexed id)', - alertId: 'GOV-BRIDGE-ACTION-SET-CANCELED', - name: ' ℹ️ Optimism Gov Bridge: Action set canceled', - description: (args: Result) => `Action set ${args.id} was canceled`, - severity: Finding.Severity.INFO, - type: Finding.FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-optimism/src/utils/events/proxy_admin_events.ts b/l2-bridge-optimism/src/utils/events/proxy_admin_events.ts deleted file mode 100644 index ba22aab6a..000000000 --- a/l2-bridge-optimism/src/utils/events/proxy_admin_events.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { Finding } from '../../generated/proto/alert_pb' -import FindingType = Finding.FindingType -import { ContractInfo } from '../constants' -import { Result } from '@ethersproject/abi/lib' - -export function getProxyAdminEvents( - OPTIMISM_WSTETH_BRIDGED: ContractInfo, - OPTIMISM_L2_TOKEN_GATEWAY: ContractInfo, -): EventOfNotice[] { - return [ - { - address: OPTIMISM_WSTETH_BRIDGED.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Optimism: Proxy ossified', - description: () => - `Proxy for ${OPTIMISM_WSTETH_BRIDGED.name}(${OPTIMISM_WSTETH_BRIDGED.address}) was ossified` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_WSTETH_BRIDGED.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Optimism: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${OPTIMISM_WSTETH_BRIDGED.name}(${OPTIMISM_WSTETH_BRIDGED.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_WSTETH_BRIDGED.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Optimism: Proxy upgraded', - description: (args: Result) => - `Proxy for ${OPTIMISM_WSTETH_BRIDGED.name}(${OPTIMISM_WSTETH_BRIDGED.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_WSTETH_BRIDGED.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Optimism: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${OPTIMISM_WSTETH_BRIDGED.name}(${OPTIMISM_WSTETH_BRIDGED.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - //--- - { - address: OPTIMISM_L2_TOKEN_GATEWAY.address, - event: 'event ProxyOssified()', - alertId: 'PROXY-OSSIFIED', - name: '🚨 Optimism: Proxy ossified', - description: () => - `Proxy for ${OPTIMISM_L2_TOKEN_GATEWAY.name}(${OPTIMISM_L2_TOKEN_GATEWAY.address}) was ossified` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Optimism: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${OPTIMISM_L2_TOKEN_GATEWAY.name}(${OPTIMISM_L2_TOKEN_GATEWAY.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Optimism: Proxy upgraded', - description: (args: Result) => - `Proxy for ${OPTIMISM_L2_TOKEN_GATEWAY.name}(${OPTIMISM_L2_TOKEN_GATEWAY.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: Finding.Severity.CRITICAL, - type: FindingType.INFORMATION, - }, - { - address: OPTIMISM_L2_TOKEN_GATEWAY.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Optimism: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${OPTIMISM_L2_TOKEN_GATEWAY.name}(${OPTIMISM_L2_TOKEN_GATEWAY.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: Finding.Severity.HIGH, - type: FindingType.INFORMATION, - }, - ] -} diff --git a/l2-bridge-optimism/src/utils/metrics/metrics.ts b/l2-bridge-optimism/src/utils/metrics/metrics.ts deleted file mode 100644 index 743e4e790..000000000 --- a/l2-bridge-optimism/src/utils/metrics/metrics.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { Counter, Gauge, Histogram, Registry, Summary } from 'prom-client' - -export const StatusOK = 'ok' -export const StatusFail = 'fail' -export const HandleBlockLabel = 'handleBlock' -export const HandleTxLabel = 'handleTx' - -export class Metrics { - private readonly registry: Registry - private readonly prefix: string - - public readonly healthStatus: Gauge - public readonly buildInfo: Gauge - - public readonly etherJsRequest: Counter - public readonly networkErrors: Counter - public readonly lastBlockNumber: Gauge - public readonly etherJsDurationHistogram: Histogram - public readonly lastAgentTouch: Gauge - public readonly processedIterations: Counter - public readonly summaryHandlers: Summary - - constructor(registry: Registry, prefix: string) { - this.registry = registry - this.prefix = prefix - - this.buildInfo = new Gauge({ - name: this.prefix + 'build_info', - help: 'Build information', - labelNames: ['commitHash' as const], - registers: [this.registry], - }) - - this.healthStatus = new Gauge({ - name: this.prefix + 'health_status', - help: 'Bot health status', - labelNames: ['instance'] as const, - registers: [this.registry], - }) - - this.etherJsRequest = new Counter({ - name: this.prefix + 'etherjs_request_total', - help: 'Total number of requests via ether.js library', - labelNames: ['method' as const, 'status' as const] as const, - registers: [this.registry], - }) - - this.etherJsDurationHistogram = new Histogram({ - name: this.prefix + 'ether_requests_duration_seconds', - help: 'Histogram of the duration of requests in seconds', - labelNames: ['method', 'status'], - buckets: [0.001, 0.01, 0.1, 0.5, 1, 2.5, 5, 10], - }) - - this.lastAgentTouch = new Gauge({ - name: this.prefix + 'block_timestamp', - help: 'The last agent iteration', - labelNames: ['method' as const] as const, - registers: [this.registry], - }) - - this.lastBlockNumber = new Gauge({ - name: this.prefix + 'last_block_number', - help: 'The last agent block number', - registers: [this.registry], - }) - - this.networkErrors = new Counter({ - name: this.prefix + 'network_errors_total', - help: 'Total number of network errors', - registers: [this.registry], - }) - - this.processedIterations = new Counter({ - name: this.prefix + 'processed_iterations_total', - help: 'Total number of finding iterations', - labelNames: ['method', 'status'], - registers: [this.registry], - }) - - this.summaryHandlers = new Summary({ - name: this.prefix + 'request_processing_seconds', - help: 'Time spent processing request (block or transaction)', - labelNames: ['method'], - registers: [this.registry], - }) - } -} diff --git a/l2-bridge-optimism/src/utils/mutex.ts b/l2-bridge-optimism/src/utils/mutex.ts deleted file mode 100644 index 377f148fe..000000000 --- a/l2-bridge-optimism/src/utils/mutex.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Mutex, MutexInterface, withTimeout } from 'async-mutex' - -export class DataRW { - private mutex: MutexInterface - private value: T[] - - constructor(initialValue: T[]) { - this.mutex = withTimeout(new Mutex(), 100) - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: T[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/l2-bridge-optimism/src/utils/time.ts b/l2-bridge-optimism/src/utils/time.ts deleted file mode 100644 index 2b2433be3..000000000 --- a/l2-bridge-optimism/src/utils/time.ts +++ /dev/null @@ -1,32 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} - -export function formatDelay(fullDelaySec: number): string { - const sign = fullDelaySec >= 0 ? 1 : -1 - let delayHours = 0 - let delayMin = Math.floor((sign * fullDelaySec) / 60) - const delaySec = sign * fullDelaySec - delayMin * 60 - if (delayMin >= 60) { - delayHours = Math.floor(delayMin / 60) - delayMin -= delayHours * 60 - } - return ( - (sign == 1 ? '' : '-') + - (delayHours > 0 ? `${delayHours} hrs ` : '') + - (delayMin > 0 ? `${delayMin} min ` : '') + - `${delaySec} sec` - ) -} diff --git a/l2-bridge-optimism/src/utils/version.ts b/l2-bridge-optimism/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/l2-bridge-optimism/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/l2-bridge-optimism/tsconfig.json b/l2-bridge-optimism/tsconfig.json deleted file mode 100644 index 9f1e16f51..000000000 --- a/l2-bridge-optimism/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist" - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/l2-bridge-optimism/yarn.lock b/l2-bridge-optimism/yarn.lock deleted file mode 100644 index 847ed3cb2..000000000 --- a/l2-bridge-optimism/yarn.lock +++ /dev/null @@ -1,5571 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.2.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" - integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.24" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" - integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== - dependencies: - "@babel/highlight" "^7.24.7" - picocolors "^1.0.0" - -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.7.tgz#b676450141e0b52a3d43bc91da86aa608f950ac4" - integrity sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-module-transforms" "^7.24.7" - "@babel/helpers" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/template" "^7.24.7" - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.24.7", "@babel/generator@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.7.tgz#1654d01de20ad66b4b4d99c135471bc654c55e6d" - integrity sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA== - dependencies: - "@babel/types" "^7.24.7" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-module-imports@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" - integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-module-transforms@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz#31b6c9a2930679498db65b685b1698bfd6c7daf8" - integrity sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ== - dependencies: - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-simple-access" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz#98c84fe6fe3d0d3ae7bfc3a5e166a46844feb2a0" - integrity sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg== - -"@babel/helper-simple-access@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" - integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg== - dependencies: - "@babel/traverse" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-split-export-declaration@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-string-parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz#4d2d0f14820ede3b9807ea5fc36dfc8cd7da07f2" - integrity sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg== - -"@babel/helper-validator-identifier@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" - integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== - -"@babel/helper-validator-option@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz#24c3bb77c7a425d1742eec8fb433b5a1b38e62f6" - integrity sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw== - -"@babel/helpers@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.7.tgz#aa2ccda29f62185acb5d42fb4a3a1b1082107416" - integrity sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/highlight@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" - integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.7" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" - integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d" - integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c" - integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - -"@babel/template@^7.24.7", "@babel/template@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.7.tgz#02efcee317d0609d2c07117cb70ef8fb17ab7315" - integrity sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/traverse@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.7.tgz#de2b900163fa741721ba382163fe46a936c40cf5" - integrity sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA== - dependencies: - "@babel/code-frame" "^7.24.7" - "@babel/generator" "^7.24.7" - "@babel/helper-environment-visitor" "^7.24.7" - "@babel/helper-function-name" "^7.24.7" - "@babel/helper-hoist-variables" "^7.24.7" - "@babel/helper-split-export-declaration" "^7.24.7" - "@babel/parser" "^7.24.7" - "@babel/types" "^7.24.7" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.3.3": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.7.tgz#6027fe12bc1aa724cd32ab113fb7f1988f1f66f2" - integrity sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q== - dependencies: - "@babel/helper-string-parser" "^7.24.7" - "@babel/helper-validator-identifier" "^7.24.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.57.0": - version "8.57.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f" - integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@faker-js/faker@^8.3.1": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451" - integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg== - -"@grpc/grpc-js@^1.10.2", "@grpc/grpc-js@^1.3.6": - version "1.10.10" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.10.10.tgz#476d315feeb9dbb0f2d6560008c92688c30f13e0" - integrity sha512-HPa/K5NX6ahMoeBv15njAc/sfF4/jmiXLar9UlC2UfHFKZzsCVLc3wbe7+7qua7w9VPh2/L6EBxyAV7/E8Wftg== - dependencies: - "@grpc/proto-loader" "^0.7.13" - "@js-sdsl/ordered-map" "^4.4.2" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.13": - version "0.7.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.13.tgz#f6a44b2b7c9f7b609f5748c6eac2d420e37670cf" - integrity sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.5" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.14": - version "0.11.14" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" - integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg== - dependencies: - "@humanwhocodes/object-schema" "^2.0.2" - debug "^4.3.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" - integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@js-sdsl/ordered-map@^4.4.2": - version "4.4.2" - resolved "https://registry.yarnpkg.com/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz#9299f82874bab9e4c7f9c48d865becbfe8d6907c" - integrity sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw== - -"@mapbox/node-pre-gyp@^1.0.5": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@opentelemetry/api@^1.4.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" - integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== - -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@tsconfig/node20@^20.1.2": - version "20.1.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.4.tgz#3457d42eddf12d3bde3976186ab0cd22b85df928" - integrity sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" - integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/body-parser@*": - version "1.19.5" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.5.tgz#04ce9a3b677dc8bd681a17da1ab9835dc9d3ede4" - integrity sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg== - dependencies: - "@types/connect" "*" - "@types/node" "*" - -"@types/connect@*": - version "3.4.38" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" - integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== - dependencies: - "@types/node" "*" - -"@types/express-serve-static-core@^4.17.33": - version "4.19.5" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" - integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== - dependencies: - "@types/node" "*" - "@types/qs" "*" - "@types/range-parser" "*" - "@types/send" "*" - -"@types/express@^4.17.21": - version "4.17.21" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d" - integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ== - dependencies: - "@types/body-parser" "*" - "@types/express-serve-static-core" "^4.17.33" - "@types/qs" "*" - "@types/serve-static" "*" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/http-errors@*": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.4.tgz#7eb47726c391b7345a6ec35ad7f4de469cf5ba4f" - integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA== - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.11": - version "29.5.12" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.12.tgz#7f7dc6eb4cf246d2474ed78744b05d06ce025544" - integrity sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.17.5" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.5.tgz#e6c29b58e66995d57cd170ce3e2a61926d55ee04" - integrity sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mime@^1": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" - integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^20.14.2": - version "20.14.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.8.tgz#45c26a2a5de26c3534a9504530ddb3b27ce031ac" - integrity sha512-DO+2/jZinXfROG7j7WKFn/3C6nFwxy2lLpgLjEXJz+0XKphZlTLJ14mo8Vfg8X5BWN6XjyESXq+LcYdT7tR3bA== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/qs@*": - version "6.9.15" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce" - integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg== - -"@types/range-parser@*": - version "1.2.7" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" - integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== - -"@types/send@*": - version "0.17.4" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.4.tgz#6619cd24e7270793702e4e6a4b958a9010cfc57a" - integrity sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA== - dependencies: - "@types/mime" "^1" - "@types/node" "*" - -"@types/serve-static@*": - version "1.15.7" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.7.tgz#22174bbd74fb97fe303109738e9b5c2f3064f714" - integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw== - dependencies: - "@types/http-errors" "*" - "@types/node" "*" - "@types/send" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz#30830c1ca81fd5f3c2714e524c4303e0194f9cd3" - integrity sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/type-utils" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.21.0.tgz#af8fcf66feee2edc86bc5d1cf45e33b0630bf35b" - integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ== - dependencies: - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz#ea8a9bfc8f1504a6ac5d59a6df308d3a0630a2b1" - integrity sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - -"@typescript-eslint/type-utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz#6473281cfed4dacabe8004e8521cee0bd9d4c01e" - integrity sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag== - dependencies: - "@typescript-eslint/typescript-estree" "6.21.0" - "@typescript-eslint/utils" "6.21.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d" - integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz#c47ae7901db3b8bddc3ecd73daff2d0895688c46" - integrity sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ== - dependencies: - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/visitor-keys" "6.21.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - minimatch "9.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.21.0.tgz#4714e7a6b39e773c1c8e97ec587f520840cd8134" - integrity sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.21.0" - "@typescript-eslint/types" "6.21.0" - "@typescript-eslint/typescript-estree" "6.21.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.21.0": - version "6.21.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz#87a99d077aa507e20e238b11d56cc26ade45fe47" - integrity sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A== - dependencies: - "@typescript-eslint/types" "6.21.0" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.3" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e" - integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.4.1, acorn@^8.9.0: - version "8.12.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" - integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -async-mutex@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" - integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.2.tgz#b625db8a7051fbea61c35a3cbb3a1daa7b9c7621" - integrity sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== - dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.11.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.3.tgz#7afe4c01ec7ee59a89a558a4b75bd85ae62d4208" - integrity sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.5" - hash-base "~3.0" - inherits "^2.0.4" - parse-asn1 "^5.1.7" - readable-stream "^2.3.8" - safe-buffer "^5.2.1" - -browserslist@^4.22.2: - version "4.23.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.1.tgz#ce4af0534b3d37db5c1a4ca98b9080f985041e96" - integrity sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw== - dependencies: - caniuse-lite "^1.0.30001629" - electron-to-chromium "^1.4.796" - node-releases "^2.0.14" - update-browserslist-db "^1.0.16" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -call-bind@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" - integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - set-function-length "^1.2.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001629: - version "1.0.30001636" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001636.tgz#b15f52d2bdb95fad32c2f53c0b68032b85188a78" - integrity sha512-bMg2vmr8XBsbL6Lr0UHXy/21m84FTxDLWn2FSqMd5PrlbMxwJlQnC2YWYxVgp66PZE+BBNF2jYQUBKCo1FDeZg== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" - integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@~1.0.4, content-type@~1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" - integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" - integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== - dependencies: - ms "2.1.2" - -dedent@^1.0.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" - integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -define-data-property@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" - integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== - dependencies: - es-define-property "^1.0.0" - es-errors "^1.3.0" - gopd "^1.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dotenv@^16.4.5: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.4.796: - version "1.4.811" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.811.tgz#031c8b101e7d0a7cde1dfdb0623dbdb5e19655cd" - integrity sha512-CDyzcJ5XW78SHzsIOdn27z8J4ist8eaFLhdto2hSMSJQgsiwvbv2fbizcKUICryw1Wii1TI/FEkvzvJsR3awrA== - -elliptic@6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.5: - version "6.5.5" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.5.tgz#c715e09f78b6923977610d4c2346d6ce22e6dded" - integrity sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -escalade@^3.1.1, escalade@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" - integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.9.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz#7c98a33605e1d8b8442ace092b60e9919730000b" - integrity sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz#17cfade9e732cef32b5f5be53bd4e07afd8e67e1" - integrity sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.6" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.57.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668" - integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.57.0" - "@humanwhocodes/config-array" "^0.11.14" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -ethers@^5.5.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.2" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.6.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.11.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.6: - version "1.15.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" - integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@^2.16.1: - version "2.16.6" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.6.tgz#9d63c5b2a06355d627ae94c37a5cffda5c455d24" - integrity sha512-v7w209VPj4L6pPn/ftFRJu31Oa8QagwcVw7BZmLCUWU4AQoc954rX9ogSIahDf67Pg+GjPbkW/Kn9XWnlWJG0g== - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" - integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -google-protobuf@3.15.8: - version "3.15.8" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.15.8.tgz#5f3948905e4951c867d6bc143f385a80e2a39efe" - integrity sha512-2jtfdqTaSxk0cuBJBtTTWsot4WtR9RVr2rXg7x7OoqiuOKopPrwXpM1G4dXIkLcUNRh3RKzz76C8IOkksZSeOw== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -grpc-tools@^1.12.4: - version "1.12.4" - resolved "https://registry.yarnpkg.com/grpc-tools/-/grpc-tools-1.12.4.tgz#a044c9e8157941033ea7a5f144c2dc9dc4501de4" - integrity sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.5" - -grpc_tools_node_protoc_ts@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/grpc_tools_node_protoc_ts/-/grpc_tools_node_protoc_ts-5.3.3.tgz#9a6c1c2f41563a1ab259c0177496d7dfed30dbfe" - integrity sha512-M/YrklvVXMtuuj9kb42PxeouZhs7Ul+R4e/31XwrankUcKL8cQQP50Q9q+KEHGyHQaPt6VtKKsxMgLaKbCxeww== - dependencies: - google-protobuf "3.15.8" - handlebars "4.7.7" - -handlebars@4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.0" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" - integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== - dependencies: - es-define-property "^1.0.0" - -has-proto@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" - integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash-base@~3.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" - integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== - dependencies: - "@babel/core" "^7.23.9" - "@babel/parser" "^7.23.9" - "@istanbuljs/schema" "^0.1.3" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" - integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" - integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@9.0.3: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.3, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build@^4.2.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.1.tgz#976d3ad905e71b76086f4f0b0d3637fe79b6cda5" - integrity sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.1.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.1.4.tgz#c34dcd8eb46a05723ccde60cbdd25addcc8725e4" - integrity sha512-wjPBbFhtpJwmIeY2yP7QF+UKzPfltVGtfce1g/bB15/8vCGZj8uxD62b/b9M9/WVgme0NZudpownKN+c0plXlQ== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-inspect@^1.13.1: - version "1.13.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" - integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.7.tgz#73cdaaa822125f9647165625eb45f8a051d2df06" - integrity sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg== - dependencies: - asn1.js "^4.10.1" - browserify-aes "^1.2.0" - evp_bytestokey "^1.0.3" - hash-base "~3.0" - pbkdf2 "^3.1.2" - safe-buffer "^5.2.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3, pbkdf2@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picocolors@^1.0.0, picocolors@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" - integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.1.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.2.tgz#03ff86dc7c835f2d2559ee76876a3914cec4a90a" - integrity sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prom-client@^15.1.2: - version "15.1.2" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.2.tgz#78d79f12c35d395ca97edf7111c18210cf07f815" - integrity sha512-on3h1iXb04QFLLThrmVYg1SChBQ9N1c+nKAjebBjokBqipddH3uxmOUcEkTnzmJ8Jh/5TSUnUqS40i2QB2dJHQ== - dependencies: - "@opentelemetry/api" "^1.4.0" - tdigest "^0.1.1" - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.5: - version "7.3.2" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.3.2.tgz#60f3b7624968868f6f739430cfbc8c9370e26df4" - integrity sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" - integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -qs@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" - integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== - dependencies: - side-channel "^1.0.4" - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^18.0.0: - version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" - integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== - -readable-stream@^2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" - integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== - dependencies: - define-data-property "^1.1.4" - es-errors "^1.3.0" - function-bind "^1.1.2" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-property-descriptors "^1.0.2" - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" - integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== - dependencies: - call-bind "^1.0.7" - es-errors "^1.3.0" - get-intrinsic "^1.2.4" - object-inspect "^1.13.1" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.6: - version "0.8.8" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.8.tgz#fe7fe446518e3d3d49f5e429f443cf08b6edfcd7" - integrity sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ== - dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tar@^6.1.11: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" - integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tdigest@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" - integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== - dependencies: - bintrees "1.0.2" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -touch@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.1.tgz#097a23d7b161476435e5c1344a95c0f75b4a5694" - integrity sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1" - integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.2: - version "29.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.5.tgz#d6c0471cc78bffa2cb4664a0a6741ef36cfe8f69" - integrity sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -ts-retry@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.5.tgz#ee4638e66c68bb49da975aa4994d5f16bfb61bc2" - integrity sha512-dFBa4pxMBkt/bjzdBio8EwYfbAdycEAwe0KZgzlUKKwU9Wr1WErK7Hg9QLqJuDDYJXTW4KYZyXAyqYKOdO/ehA== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.2: - version "5.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507" - integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -uglify-js@^3.1.4: - version "3.18.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.18.0.tgz#73b576a7e8fda63d2831e293aeead73e0a270deb" - integrity sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -update-browserslist-db@^1.0.16: - version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" - integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== - dependencies: - escalade "^3.1.2" - picocolors "^1.0.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.3.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" - integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -winston-transport@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" - integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.13.0.tgz#e76c0d722f78e04838158c61adc1287201de7ce3" - integrity sha512-rwidmA1w3SE4j0E5MuIufFhyJPBDG7Nu71RkZor1p2+qHvJSZ9GYDA81AyleQcZbh/+V6HjeBdfnTZJm9rSeQQ== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.7.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/l2-bridge-scroll/.dockerignore b/l2-bridge-scroll/.dockerignore deleted file mode 100644 index 78972be8e..000000000 --- a/l2-bridge-scroll/.dockerignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -dist/ -forta.config.json diff --git a/l2-bridge-scroll/.eslintrc.json b/l2-bridge-scroll/.eslintrc.json deleted file mode 100644 index 867579eb0..000000000 --- a/l2-bridge-scroll/.eslintrc.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "prettier"], - "plugins": ["@typescript-eslint", "prettier"], - "env": { - "node": true, - "es6": true - }, - "rules": { - "prettier/prettier": "error", - "curly": "error" - } -} diff --git a/l2-bridge-scroll/.gitignore b/l2-bridge-scroll/.gitignore deleted file mode 100644 index cd3b4f403..000000000 --- a/l2-bridge-scroll/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store -src/generated \ No newline at end of file diff --git a/l2-bridge-scroll/.prettierrc.json b/l2-bridge-scroll/.prettierrc.json deleted file mode 100644 index 852349dd9..000000000 --- a/l2-bridge-scroll/.prettierrc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "semi": false, - "trailingComma": "all", - "singleQuote": true, - "printWidth": 120, - "tabWidth": 2 -} diff --git a/l2-bridge-scroll/Dockerfile b/l2-bridge-scroll/Dockerfile deleted file mode 100644 index c17212b6d..000000000 --- a/l2-bridge-scroll/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# Build stage: compile Typescript to Javascript -FROM node:20.9.0-alpine3.18 AS base - -FROM base as builder - -WORKDIR /app - -COPY . . -RUN yarn install --immutable && yarn run build -# Build app -RUN yarn run build - -# Final stage: copy compiled Javascript from previous stage and install production dependencies -FROM base as production -LABEL "network.forta.settings.agent-logs.enable"="true" -ENV NODE_ENV=production -WORKDIR /app - -COPY package*.json yarn.lock ./ -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/dist ./src -COPY version.json ./ - -CMD ["yarn", "run", "start:prod"] \ No newline at end of file diff --git a/l2-bridge-scroll/README.md b/l2-bridge-scroll/README.md deleted file mode 100644 index a8fc14aaa..000000000 --- a/l2-bridge-scroll/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# Lido Detection Scroll Bot - -How does it work. - -The bot works on two networks: ETH mainnet and Scroll. -Here's how it operates: The bot monitors new blocks on the ETH mainnet. -Since Forta doesn't currently support Scroll, the bot reads blocks on the L2 network (Scroll) and stores the latest one -in an in-memory cache. -When the bot reads the next block on ETH, it also retrieves a segment of Scroll blocks (cachedBlock, latestBlock) from -the cache. - -## Supported chains - -- Ethereum mainnet, Scroll network - -## Alerts - -1. Bridge events - 1. 🚨🚨🚨 Scroll bridge balance mismatch 🚨🚨🚨 - 2. 🚨 Scroll L2 Bridge: (re-)initialized - 3. 🚨 Scroll L2 Bridge: Deposits Disabled - 4. 🚨 Scroll: L2 gateway owner changed - 5. 🚨 Scroll L2 Bridge: Withdrawals Disabled - 6. ⚠️ Scroll L2 Bridge: Role granted - 7. ⚠️ Scroll L2 Bridge: Role revoked - 8. ℹ️ Scroll L2 Bridge: Deposits Enabled - 9. ℹ️ Scroll L2 Bridge: Withdrawals Enabled -2. Gov Events - 1. 🚨 Scroll Gov Bridge: Ethereum Governance Executor Updated - 2. 🚨 Scroll Gov Bridge: Guardian Updated - 3. ⚠️ Scroll Gov Bridge: Delay Updated - 4. ⚠️ Scroll Gov Bridge: Grace Period Updated - 5. ⚠️ Scroll Gov Bridge: Min Delay Updated - 6. ⚠️ Scroll Gov Bridge: Max Delay Updated - 7. ℹ️ Scroll Gov Bridge: Action set queued - 8. ℹ️ Scroll Gov Bridge: Action set executed - 9. ℹ️ Scroll Gov Bridge: Action set canceled -3. Proxy events - 1. 🚨 Scroll: Proxy admin changed - 2. 🚨 Scroll: Proxy implementation changed - 3. 🚨 Scroll: Proxy upgraded - 4. 🚨 Scroll: Proxy beacon upgraded -4. Monitor Withdrawals - 1. ⚠️ Scroll: Huge withdrawals during the last ... - -## Development (Forta specific) - -Edit `alerting-forta//forta.config.json` and set `jsonRpcUrl` to your JSON-RPC provider. Install deps: - -``` -yarn install -``` - -Running in a live mode: - -``` -yarn start:dev -``` - -Testing on a specific block/range/transaction: - -``` -yarn block 13626668 -yarn range '13626667..13626668' -yarn tx 0x2d2774c04e3faf9f17cd26e0978bb812081b9d0b5cc6fd8bf04cc441f92c0a8c -``` diff --git a/l2-bridge-scroll/jest.config.js b/l2-bridge-scroll/jest.config.js deleted file mode 100644 index 9dfeb5d27..000000000 --- a/l2-bridge-scroll/jest.config.js +++ /dev/null @@ -1,6 +0,0 @@ -/** @type {import("ts-jest").JestConfigWithTsJest} */ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - testPathIgnorePatterns: ['dist'], -} diff --git a/l2-bridge-scroll/package.json b/l2-bridge-scroll/package.json deleted file mode 100644 index 10c188d97..000000000 --- a/l2-bridge-scroll/package.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "name": "lido-l2-bridge-scroll-bot", - "displayName": "Forta Agent Starter", - "version": "0.0.1", - "description": "Lido Detection Bot for Scroll part of L2 bridge", - "repository": { - "type": "git", - "directory": "https://github.com/lidofinance/alerting-forta/tree/main/l2-bridge-scroll" - }, - "license": "MIT", - "chainIds": [ - 1 - ], - "chainSettings": { - "default": { - "shards": 1, - "target": 5 - } - }, - "husky": { - "hooks": { - "pre-commit": "yarn run lint" - } - }, - "scripts": { - "update-version": "node ../utils/write-version.js", - "build": "tsc && yarn run copy-version", - "copy-version": "cp version.json dist", - "start": "yarn run update-version && yarn run start:dev", - "start:dev": "nodemon --watch src --watch forta.config.json -e js,ts,json --exec \"yarn run build && yarn run copy-version && forta-agent run\"", - "start:prod": "forta-agent run --prod", - "tx": "yarn run build && forta-agent run --tx", - "block": "yarn run build && forta-agent run --block", - "range": "yarn run build && forta-agent run --range", - "alert": "yarn run build && forta-agent run --alert", - "sequence": "yarn run build && forta-agent run --sequence", - "file": "yarn run build && forta-agent run --file", - "publish": "yarn run update-version && forta-agent publish", - "info": "forta-agent info", - "logs": "forta-agent logs", - "push": "yarn run update-version && forta-agent push", - "disable": "forta-agent disable", - "enable": "forta-agent enable", - "keyfile": "forta-agent keyfile", - "stake": "forta-agent stake", - "test": "jest", - "generate-types": "typechain --target=ethers-v5 --out-dir=./src/generated ./src/abi/*", - "eslint:lint": "eslint ./src", - "eslint:format": "eslint ./src --fix", - "prettier:check": "prettier --check ./src", - "prettier:format": "prettier --write ./src", - "lint": "yarn run prettier:check && yarn run eslint:lint", - "format": "yarn run eslint:format && yarn run prettier:format", - "postinstall": "yarn generate-types" - }, - "dependencies": { - "@types/lodash": "^4.14.202", - "async-mutex": "^0.4.0", - "bignumber.js": "^9.1.2", - "ethers": "^5.5.1", - "forta-agent": "^0.1.48", - "fp-ts": "^2.16.1", - "lodash": "^4.17.21", - "ts-retry": "^4.2.4", - "winston": "^3.11.0" - }, - "devDependencies": { - "@ethersproject/abi": "^5.0.0", - "@ethersproject/providers": "^5.0.0", - "@jest/globals": "^29.7.0", - "@tsconfig/node20": "^20.1.2", - "@typechain/ethers-v5": "^11.1.2", - "@types/jest": "^29.5.10", - "@types/nodemon": "^1.19.0", - "@types/ws": "^8.5.10", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.12.0", - "eslint": "^8.54.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-jest": "^27.6.0", - "eslint-plugin-prettier": "^5.0.1", - "husky": "^8.0.3", - "jest": "^29.7.0", - "nodemon": "^3.0.1", - "postinstall": "^0.8.0", - "prettier": "^3.1.0", - "ts-generator": "^0.1.1", - "ts-jest": "^29.1.1", - "typechain": "^8.3.2", - "typescript": "^5.3.2" - }, - "packageManager": "yarn@1.22.21" -} diff --git a/l2-bridge-scroll/src/abi/ERC20Short.json b/l2-bridge-scroll/src/abi/ERC20Short.json deleted file mode 100644 index 81b8dd008..000000000 --- a/l2-bridge-scroll/src/abi/ERC20Short.json +++ /dev/null @@ -1,34 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } -] diff --git a/l2-bridge-scroll/src/abi/L2LidoGateway.json b/l2-bridge-scroll/src/abi/L2LidoGateway.json deleted file mode 100644 index e392396d8..000000000 --- a/l2-bridge-scroll/src/abi/L2LidoGateway.json +++ /dev/null @@ -1,861 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_counterpart", - "type": "address" - }, - { - "internalType": "address", - "name": "_router", - "type": "address" - }, - { - "internalType": "address", - "name": "_messenger", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "ErrorAccountIsZeroAddress", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotCounterpartGateway", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotDepositsDisabler", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotDepositsEnabler", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotMessenger", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotWithdrawalsDisabler", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorCallerIsNotWithdrawalsEnabler", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorDepositsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorNonZeroMsgValue", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorNotInDropMessageContext", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL1Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorUnsupportedL2Token", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawZeroAmount", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsDisabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorWithdrawalsEnabled", - "type": "error" - }, - { - "inputs": [], - "name": "ErrorZeroAddress", - "type": "error" - }, - { - "inputs": [], - "name": "WithdrawAndCallIsNotAllowed", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "DepositsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "DepositsEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "FinalizeDepositERC20", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "version", - "type": "uint8" - } - ], - "name": "Initialized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "l1Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "l2Token", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "WithdrawERC20", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "disabler", - "type": "address" - } - ], - "name": "WithdrawalsDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "enabler", - "type": "address" - } - ], - "name": "WithdrawalsEnabled", - "type": "event" - }, - { - "inputs": [], - "name": "DEPOSITS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DEPOSITS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_DISABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "WITHDRAWALS_ENABLER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "counterpart", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "disableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "disableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableDeposits", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "enableWithdrawals", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - }, - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "name": "finalizeDepositERC20", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l2Token", - "type": "address" - } - ], - "name": "getL1ERC20Address", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_l1Token", - "type": "address" - } - ], - "name": "getL2ERC20Address", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_role", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "_index", - "type": "uint256" - } - ], - "name": "getRoleMember", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_role", - "type": "bytes32" - } - ], - "name": "getRoleMemberCount", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_counterpart", - "type": "address" - }, - { - "internalType": "address", - "name": "_router", - "type": "address" - }, - { - "internalType": "address", - "name": "_messenger", - "type": "address" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_depositsEnabler", - "type": "address" - }, - { - "internalType": "address", - "name": "_depositsDisabler", - "type": "address" - }, - { - "internalType": "address", - "name": "_withdrawalsEnabler", - "type": "address" - }, - { - "internalType": "address", - "name": "_withdrawalsDisabler", - "type": "address" - } - ], - "name": "initializeV2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "isDepositsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "isWithdrawalsEnabled", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l1Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "l2Token", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "messenger", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "router", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_gasLimit", - "type": "uint256" - } - ], - "name": "withdrawERC20", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "_gasLimit", - "type": "uint256" - } - ], - "name": "withdrawERC20", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "address", - "name": "_to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - }, - { - "internalType": "uint256", - "name": "_gasLimit", - "type": "uint256" - } - ], - "name": "withdrawERC20AndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] diff --git a/l2-bridge-scroll/src/abi/ProxyAdmin.json b/l2-bridge-scroll/src/abi/ProxyAdmin.json deleted file mode 100644 index 7793e0d84..000000000 --- a/l2-bridge-scroll/src/abi/ProxyAdmin.json +++ /dev/null @@ -1,151 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "contract ITransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "changeProxyAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ITransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyAdmin", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ITransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - } - ], - "name": "getProxyImplementation", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "renounceOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ITransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract ITransparentUpgradeableProxy", - "name": "proxy", - "type": "address" - }, - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "upgradeAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } -] diff --git a/l2-bridge-scroll/src/abi/TransparentUpgradableProxy.json b/l2-bridge-scroll/src/abi/TransparentUpgradableProxy.json deleted file mode 100644 index 27423cca1..000000000 --- a/l2-bridge-scroll/src/abi/TransparentUpgradableProxy.json +++ /dev/null @@ -1,76 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "address", - "name": "_logic", - "type": "address" - }, - { - "internalType": "address", - "name": "admin_", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_data", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] diff --git a/l2-bridge-scroll/src/agent.ts b/l2-bridge-scroll/src/agent.ts deleted file mode 100644 index c60758d9a..000000000 --- a/l2-bridge-scroll/src/agent.ts +++ /dev/null @@ -1,135 +0,0 @@ -import { BlockEvent, Finding, FindingSeverity, FindingType, HandleBlock } from 'forta-agent' -import * as process from 'process' -import { InitializeResponse } from 'forta-agent/dist/sdk/initialize.response' -import { Initialize } from 'forta-agent/dist/sdk/handlers' -import * as E from 'fp-ts/Either' -import VERSION from './utils/version' -import { App } from './app' -import { elapsedTime } from './utils/time' -import BigNumber from 'bignumber.js' - -export function initialize(): Initialize { - type Metadata = { [key: string]: string } - - const metadata: Metadata = { - 'version.commitHash': VERSION.commitHash, - 'version.commitMsg': VERSION.commitMsg, - } - - return async function (): Promise { - const app = await App.getInstance() - - const latestL2Block = await app.scrollClient.getLatestL2Block() - if (E.isLeft(latestL2Block)) { - app.logger.error(latestL2Block.left) - - process.exit(1) - } - - const agentMeta = await app.proxyWatcher.initialize(latestL2Block.right.number) - if (E.isLeft(agentMeta)) { - app.logger.error(agentMeta.left) - - process.exit(1) - } - - const monitorWithdrawalsInitResp = await app.monitorWithdrawals.initialize(latestL2Block.right.number) - if (E.isLeft(monitorWithdrawalsInitResp)) { - app.logger.error(monitorWithdrawalsInitResp.left) - - process.exit(1) - } - - metadata[`${app.proxyWatcher.getName()}.lastAdmins`] = agentMeta.right.lastAdmins - metadata[`${app.proxyWatcher.getName()}.lastImpls`] = agentMeta.right.lastImpls - metadata[`${app.monitorWithdrawals.getName()}.currentWithdrawals`] = - monitorWithdrawalsInitResp.right.currentWithdrawals - - const agents: string[] = [app.proxyWatcher.getName(), app.monitorWithdrawals.getName()] - metadata.agents = '[' + agents.toString() + ']' - - await app.findingsRW.write([ - Finding.fromObject({ - name: 'Agent launched', - description: `Version: ${VERSION.desc}`, - alertId: 'LIDO-AGENT-LAUNCHED', - severity: FindingSeverity.Info, - type: FindingType.Info, - metadata, - }), - ]) - - app.logger.info('Bot initialization is done!') - } -} - -let isHandleBLockRunning: boolean = false -export const handleBlock = (): HandleBlock => { - return async function (blockEvent: BlockEvent): Promise { - const startTime = new Date().getTime() - if (isHandleBLockRunning) { - return [] - } - - isHandleBLockRunning = true - const app = await App.getInstance() - - const findings: Finding[] = [] - const findingsAsync = await app.findingsRW.read() - if (findingsAsync.length > 0) { - findings.push(...findingsAsync) - } - - const l2blocksDto = await app.blockSrv.getL2Blocks() - if (E.isLeft(l2blocksDto)) { - isHandleBLockRunning = false - return [l2blocksDto.left] - } - app.logger.info( - `ETH block ${blockEvent.blockNumber.toString()}. Fetched Scroll blocks from ${l2blocksDto.right[0].number} to ${ - l2blocksDto.right[l2blocksDto.right.length - 1].number - }. Total: ${l2blocksDto.right.length}`, - ) - - const logs = await app.blockSrv.getL2Logs(l2blocksDto.right) - if (E.isLeft(logs)) { - isHandleBLockRunning = false - return [logs.left] - } - - const bridgeEventFindings = app.bridgeWatcher.handleLogs(logs.right) - const govEventFindings = app.govWatcher.handleLogs(logs.right) - const proxyAdminEventFindings = app.proxyEventWatcher.handleLogs(logs.right) - const monitorWithdrawalsFindings = app.monitorWithdrawals.handleBlocks(logs.right, l2blocksDto.right) - - const l2blockNumbersSet: Set = new Set() - for (const log of logs.right) { - l2blockNumbersSet.add(new BigNumber(log.blockNumber, 10).toNumber()) - } - - const l2blockNumbers = Array.from(l2blockNumbersSet) - - const [proxyWatcherFindings, bridgeBalanceFindings] = await Promise.all([ - app.proxyWatcher.handleBlocks(l2blockNumbers), - app.bridgeBalanceSrv.handleBlock(blockEvent.block.number, l2blockNumbers), - ]) - - findings.push( - ...bridgeEventFindings, - ...govEventFindings, - ...proxyAdminEventFindings, - ...monitorWithdrawalsFindings, - ...proxyWatcherFindings, - ...bridgeBalanceFindings, - ) - - app.logger.info(elapsedTime('handleBlock', startTime) + '\n') - isHandleBLockRunning = false - return findings - } -} - -export default { - initialize: initialize(), - handleBlock: handleBlock(), -} diff --git a/l2-bridge-scroll/src/app.ts b/l2-bridge-scroll/src/app.ts deleted file mode 100644 index 60c786196..000000000 --- a/l2-bridge-scroll/src/app.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { ethers, Finding } from 'forta-agent' -import { ScrollClient } from './clients/scroll_client' -import { EventWatcher } from './services/event_watcher' -import { getProxyAdminEvents } from './utils/events/proxy_admin_events' -import { ProxyContractClient } from './clients/proxy_contract_client' -import { L2LidoGateway__factory, ProxyAdmin__factory, ERC20Short__factory } from './generated' -import { ScrollBlockClient } from './clients/scroll_block_client' -import { ProxyWatcher } from './services/proxy_watcher' -import { MonitorWithdrawals } from './services/monitor_withdrawals' -import { DataRW } from './utils/mutex' -import * as Winston from 'winston' -import { getBridgeEvents } from './utils/events/bridge_events' -import { getGovEvents } from './utils/events/gov_events' -import { Constants } from './utils/constants' -import { Logger } from 'winston' -import { ETHProvider } from './clients/eth_provider_client' -import { BridgeBalanceSrv } from './services/bridge_balance' -import { getJsonRpcUrl } from 'forta-agent/dist/sdk/utils' -import { BorderTime, HealthChecker, MaxNumberErrorsPerBorderTime } from './services/health-checker/health-checker.srv' - -export type Container = { - scrollClient: ScrollClient - proxyWatcher: ProxyWatcher - monitorWithdrawals: MonitorWithdrawals - blockSrv: ScrollBlockClient - bridgeWatcher: EventWatcher - bridgeBalanceSrv: BridgeBalanceSrv - govWatcher: EventWatcher - proxyEventWatcher: EventWatcher - findingsRW: DataRW - logger: Logger - healthChecker: HealthChecker -} - -export class App { - private static instance: Container - - private constructor() {} - - public static async getInstance(): Promise { - if (!App.instance) { - const logger: Winston.Logger = Winston.createLogger({ - format: Winston.format.simple(), - transports: [new Winston.transports.Console()], - }) - - const adr = Constants - const scrollRpcURL = adr.SCROLL_NETWORK_RPC - - const nodeClient = new ethers.providers.JsonRpcProvider(scrollRpcURL, adr.SCROLL_NETWORK_ID) - - const l2Bridge = L2LidoGateway__factory.connect(adr.L2_ERC20_TOKEN_GATEWAY.address, nodeClient) - const bridgedWSthEthRunner = ERC20Short__factory.connect(adr.SCROLL_WSTETH_BRIDGED.address, nodeClient) - - const scrollClient = new ScrollClient(nodeClient, logger, l2Bridge, bridgedWSthEthRunner) - - const bridgeEventWatcher = new EventWatcher( - 'BridgeEventWatcher', - getBridgeEvents(adr.L2_ERC20_TOKEN_GATEWAY.address, adr.RolesMap), - logger, - ) - const govEventWatcher = new EventWatcher('GovEventWatcher', getGovEvents(adr.GOV_BRIDGE_ADDRESS), logger) - const proxyEventWatcher = new EventWatcher( - 'ProxyEventWatcher', - getProxyAdminEvents(adr.SCROLL_WSTETH_BRIDGED, adr.L2_ERC20_TOKEN_GATEWAY), - logger, - ) - - const LIDO_PROXY_CONTRACTS: ProxyContractClient[] = [ - new ProxyContractClient( - adr.L2_ERC20_TOKEN_GATEWAY.name, - adr.L2_ERC20_TOKEN_GATEWAY.address, - ProxyAdmin__factory.connect(adr.L2_PROXY_ADMIN_CONTRACT_ADDRESS, nodeClient), - ), - new ProxyContractClient( - adr.SCROLL_WSTETH_BRIDGED.name, - adr.SCROLL_WSTETH_BRIDGED.address, - ProxyAdmin__factory.connect(adr.L2_PROXY_ADMIN_CONTRACT_ADDRESS, nodeClient), - ), - ] - - const blockSrv = new ScrollBlockClient(scrollClient, logger) - const proxyWorker = new ProxyWatcher(LIDO_PROXY_CONTRACTS, logger) - - const monitorWithdrawals = new MonitorWithdrawals(scrollClient, adr.L2_ERC20_TOKEN_GATEWAY.address, logger) - - const mainnet = 1 - const drpcUrl = 'https://eth.drpc.org/' - const ethProvider = new ethers.providers.FallbackProvider([ - new ethers.providers.JsonRpcProvider(getJsonRpcUrl(), mainnet), - new ethers.providers.JsonRpcProvider(drpcUrl, mainnet), - ]) - - const wSthEthRunner = ERC20Short__factory.connect(adr.L1_WSTETH_ADDRESS, ethProvider) - const ethClient = new ETHProvider(logger, wSthEthRunner) - const bridgeBalanceSrv = new BridgeBalanceSrv(logger, ethClient, scrollClient, adr.L1_ERC20_TOKEN_GATEWAY_ADDRESS) - - App.instance = { - scrollClient: scrollClient, - proxyWatcher: proxyWorker, - monitorWithdrawals: monitorWithdrawals, - blockSrv: blockSrv, - bridgeWatcher: bridgeEventWatcher, - bridgeBalanceSrv: bridgeBalanceSrv, - govWatcher: govEventWatcher, - proxyEventWatcher: proxyEventWatcher, - findingsRW: new DataRW([]), - logger: logger, - healthChecker: new HealthChecker(BorderTime, MaxNumberErrorsPerBorderTime), - } - } - - return App.instance - } -} diff --git a/l2-bridge-scroll/src/clients/eth_provider_client.ts b/l2-bridge-scroll/src/clients/eth_provider_client.ts deleted file mode 100644 index b0a214cf9..000000000 --- a/l2-bridge-scroll/src/clients/eth_provider_client.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Logger } from 'winston' -import { IL1BridgeBalanceClient } from '../services/bridge_balance' -import * as E from 'fp-ts/Either' -import BigNumber from 'bignumber.js' -import { NetworkError } from '../utils/error' -import { retryAsync } from 'ts-retry' -import { ERC20Short as wStEthRunner } from '../generated' - -const DELAY_IN_500MS = 500 -const ATTEMPTS_5 = 5 - -export class ETHProvider implements IL1BridgeBalanceClient { - private readonly wStEthRunner: wStEthRunner - private readonly logger: Logger - - constructor(logger: Logger, wStEthRunner: wStEthRunner) { - this.wStEthRunner = wStEthRunner - this.logger = logger - } - - public async getWstEthBalance(l1blockNumber: number, address: string): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.wStEthRunner.functions.balanceOf(address, { - blockTag: l1blockNumber, - }) - - return balance.toString() - }, - { delay: DELAY_IN_500MS, maxTry: ATTEMPTS_5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - return E.left(new NetworkError(e, `Could not call wStEthRunner.functions.balanceOf`)) - } - } -} diff --git a/l2-bridge-scroll/src/clients/proxy_contract_client.ts b/l2-bridge-scroll/src/clients/proxy_contract_client.ts deleted file mode 100644 index ccd08cf9a..000000000 --- a/l2-bridge-scroll/src/clients/proxy_contract_client.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { ProxyAdmin } from '../generated' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { NetworkError } from '../utils/error' - -export abstract class IProxyContractClient { - abstract getName(): string - - abstract getAddress(): string - - abstract getProxyAdmin(blockNumber: number): Promise> - - abstract getProxyImplementation(blockNumber: number): Promise> -} - -export class ProxyContractClient implements IProxyContractClient { - private readonly name: string - private readonly address: string - private readonly proxyAdminContract: ProxyAdmin - - constructor(name: string, address: string, proxyAdmin: ProxyAdmin) { - this.name = name - this.address = address - this.proxyAdminContract = proxyAdmin - } - - public getName(): string { - return this.name - } - - public getAddress(): string { - return this.address - } - - public async getProxyAdmin(blockNumber: number): Promise> { - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.getProxyAdmin(this.address, { - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(resp) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch admin`)) - } - } - - public async getProxyImplementation(blockNumber: number): Promise> { - try { - const resp = await retryAsync( - async (): Promise => { - return await this.proxyAdminContract.getProxyImplementation(this.address, { - blockTag: blockNumber, - }) - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(resp) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch implementation`)) - } - } -} diff --git a/l2-bridge-scroll/src/clients/scroll_block_client.ts b/l2-bridge-scroll/src/clients/scroll_block_client.ts deleted file mode 100644 index 80cb62b84..000000000 --- a/l2-bridge-scroll/src/clients/scroll_block_client.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { BlockDto } from '../entity/blockDto' -import { IScrollClient } from './scroll_client' -import { Log } from '@ethersproject/abstract-provider' -import { Finding } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { networkAlert } from '../utils/finding.helpers' -import { Logger } from 'winston' -import { elapsedTime } from '../utils/time' - -export class ScrollBlockClient { - private provider: IScrollClient - private logger: Logger - private cachedBlockDto: BlockDto | undefined = undefined - - constructor(provider: IScrollClient, logger: Logger) { - this.provider = provider - this.logger = logger - } - - public async getL2Blocks(): Promise> { - const start = new Date().getTime() - const blocks = await this.fetchL2Blocks() - this.logger.info(elapsedTime(ScrollBlockClient.name + '.' + this.getL2Blocks.name, start)) - - return blocks - } - - public async getL2Logs(workingBlocks: BlockDto[]): Promise> { - const start = new Date().getTime() - const logs = await this.fetchL2Logs(workingBlocks) - this.logger.info(elapsedTime(ScrollBlockClient.name + '.' + this.getL2Logs.name, start)) - - return logs - } - - private async fetchL2Blocks(): Promise> { - const out: BlockDto[] = [] - - if (this.cachedBlockDto === undefined) { - const l2Block = await this.provider.getLatestL2Block() - if (E.isLeft(l2Block)) { - return E.left( - networkAlert( - l2Block.left, - `Error in ${ScrollBlockClient.name}.${this.getL2Blocks.name}:21`, - `Could not call scrollProvider.getLatestBlock`, - 0, - ), - ) - } - - this.cachedBlockDto = { - number: l2Block.right.number, - timestamp: l2Block.right.timestamp, - } - - out.push(this.cachedBlockDto) - } else { - const latestL2Block = await this.provider.getLatestL2Block() - if (E.isLeft(latestL2Block)) { - this.cachedBlockDto = undefined - return E.left( - networkAlert( - latestL2Block.left, - `Error in ${ScrollBlockClient.name}.${this.getL2Blocks.name}:39`, - `Could not call scrollProvider.getLatestBlock`, - 0, - ), - ) - } - - const l2Blocks = await this.provider.fetchL2Blocks(this.cachedBlockDto.number, latestL2Block.right.number - 1) - for (const l2Block of l2Blocks) { - out.push({ - number: l2Block.number, - timestamp: l2Block.timestamp, - }) - } - - this.cachedBlockDto = { - number: latestL2Block.right.number, - timestamp: latestL2Block.right.timestamp, - } - - // hint: we requested blocks like [cachedBlockDto.number, latestBlock.number) - // and here we do [cachedBlockDto.number, latestBlock.number] - out.push({ - number: latestL2Block.right.number, - timestamp: latestL2Block.right.timestamp, - }) - } - - return E.right(out) - } - - private async fetchL2Logs(workingL2Blocks: BlockDto[]): Promise> { - const l2Logs = await this.provider.getL2Logs( - workingL2Blocks[0].number, - workingL2Blocks[workingL2Blocks.length - 1].number, - ) - if (E.isLeft(l2Logs)) { - return E.left( - networkAlert( - l2Logs.left, - `Error in ${ScrollBlockClient.name}.${this.getL2Logs.name}:76`, - `Could not call scrollProvider.getLogs`, - workingL2Blocks[workingL2Blocks.length - 1].number, - ), - ) - } - - return E.right(l2Logs.right) - } -} diff --git a/l2-bridge-scroll/src/clients/scroll_client.spec.ts b/l2-bridge-scroll/src/clients/scroll_client.spec.ts deleted file mode 100644 index 3c9482aa1..000000000 --- a/l2-bridge-scroll/src/clients/scroll_client.spec.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { App } from '../app' -import BigNumber from 'bignumber.js' -import { ETH_DECIMALS } from '../utils/constants' -import * as E from 'fp-ts/Either' - -const TEST_TIMEOUT = 120_000 - -describe('ScrollProvider', () => { - test( - 'fetchBlocks', - async () => { - const app = await App.getInstance() - - const startL2BlockNumber = 5_927_000 - const endL2BlockNumber = 5_927_050 - const l2Blocks = await app.scrollClient.fetchL2Blocks(startL2BlockNumber, endL2BlockNumber) - - expect(l2Blocks.length).toEqual(endL2BlockNumber - startL2BlockNumber + 1) - }, - TEST_TIMEOUT, - ) - - test( - 'getWstEthTotalSupply is 7620.760541243359204164 wstEth', - async () => { - const app = await App.getInstance() - - const baseBlockNumber = 5_927_366 - const balance = await app.scrollClient.getWstEthTotalSupply(baseBlockNumber) - if (E.isLeft(balance)) { - throw balance.left - } - - expect(balance.right.dividedBy(ETH_DECIMALS)).toEqual(new BigNumber('7620.760541243359204164')) - }, - TEST_TIMEOUT, - ) -}) diff --git a/l2-bridge-scroll/src/clients/scroll_client.ts b/l2-bridge-scroll/src/clients/scroll_client.ts deleted file mode 100644 index 5f625a308..000000000 --- a/l2-bridge-scroll/src/clients/scroll_client.ts +++ /dev/null @@ -1,241 +0,0 @@ -import { Block, Log } from '@ethersproject/abstract-provider' -import { ethers } from 'forta-agent' -import * as E from 'fp-ts/Either' -import { retryAsync } from 'ts-retry' -import { NetworkError } from '../utils/error' -import { Logger } from 'winston' -import { WithdrawalRecord } from '../entity/blockDto' -import BigNumber from 'bignumber.js' -import { WithdrawERC20Event } from '../generated/L2LidoGateway' -import { IL2BridgeBalanceClient } from '../services/bridge_balance' -import { ERC20Short as BridgedWstEthRunner, L2LidoGateway as ScrollL2BridgeRunner } from '../generated' - -export abstract class IMonitorWithdrawalsClient { - public abstract getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> - - public abstract getWithdrawalRecords( - withdrawalEvents: WithdrawERC20Event[], - ): Promise> -} - -export abstract class IScrollClient { - public abstract fetchL2Blocks(startBlock: number, endBlock: number): Promise - - public abstract getL2Logs(startBlock: number, endBlock: number): Promise> - - public abstract getLatestL2Block(): Promise> -} - -export class ScrollClient implements IScrollClient, IMonitorWithdrawalsClient, IL2BridgeBalanceClient { - private readonly logger: Logger - private readonly jsonRpcProvider: ethers.providers.JsonRpcProvider - private readonly scrollL2BridgeRunner: ScrollL2BridgeRunner - private readonly bridgedWstEthRunner: BridgedWstEthRunner - - constructor( - jsonRpcProvider: ethers.providers.JsonRpcProvider, - logger: Logger, - scrollL2BridgeRunner: ScrollL2BridgeRunner, - bridgedWstEthRunner: BridgedWstEthRunner, - ) { - this.jsonRpcProvider = jsonRpcProvider - this.logger = logger - this.scrollL2BridgeRunner = scrollL2BridgeRunner - this.bridgedWstEthRunner = bridgedWstEthRunner - } - - public async fetchL2Blocks(startBlock: number, endBlock: number): Promise { - const batchRequests = [] - for (let i = startBlock; i <= endBlock; i++) { - batchRequests.push({ - jsonrpc: '2.0', - method: 'eth_getBlockByNumber', - params: [`0x${i.toString(16)}`, false], - id: i, // Use a unique identifier for each request - }) - } - const formatter = new ethers.providers.Formatter() - const doRequest = (request: unknown[]): Promise => { - return retryAsync( - async (): Promise => { - const response: Response = await fetch(this.jsonRpcProvider.connection.url, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify(request), - }) - - if (!response.ok) { - throw new NetworkError(`Status: ${response.status}, request: ${JSON.stringify(request)}`, 'FetchBlocksErr') - } - - const result: Block[] = [] - const objects = (await response.json()) as unknown[] - - for (const obj of objects) { - if (Object.prototype.hasOwnProperty.call(obj, 'result')) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - result.push(formatter.block(obj.result)) - } else { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - throw new Error(obj.error.message) - } - } - - return result - }, - { delay: 500, maxTry: 5 }, - ) - } - - const chunkSize = 25 - const out: Block[] = [] - - let allowedExtraRequest: number = 30 - for (let i = 0; i < batchRequests.length; i += chunkSize) { - const request = batchRequests.slice(i, i + chunkSize) - try { - const blocks = await doRequest(request) - out.push(...blocks) - } catch (e) { - this.logger.warn(`${e}`) - if (allowedExtraRequest === 0) { - break - } - - batchRequests.push(...request) - allowedExtraRequest -= 1 - } - } - - return out.toSorted((a, b) => a.number - b.number) - } - - public async getL2Logs(startBlock: number, endBlock: number): Promise> { - const logs: Log[] = [] - const batchSize = 15 - - for (let i = startBlock; i <= endBlock; i += batchSize) { - const start = i - const end = Math.min(i + batchSize - 1, endBlock) - - let chunkLogs: Log[] = [] - try { - chunkLogs = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.send('eth_getLogs', [ - { - fromBlock: `0x${start.toString(16)}`, - toBlock: `0x${end.toString(16)}`, - }, - ]) - }, - { delay: 500, maxTry: 5 }, - ) - } catch (e) { - this.logger.warn( - `Could not fetch blocks logs. cause: ${e}, startBlock: ${start}, toBlock: ${end}. Total ${end - start}`, - ) - - continue - } - - logs.push(...chunkLogs) - } - - return E.right(logs) - } - - public async getLatestL2Block(): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - return await this.jsonRpcProvider.getBlock('latest') - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(out) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch latest block`)) - } - } - - public async getWithdrawalEvents( - fromBlockNumber: number, - toBlockNumber: number, - ): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - return await this.scrollL2BridgeRunner.queryFilter( - this.scrollL2BridgeRunner.filters.WithdrawERC20(), - fromBlockNumber, - toBlockNumber, - ) - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(out) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch withdrawEvents`)) - } - } - - public async getWithdrawalRecords( - withdrawalEvents: WithdrawERC20Event[], - ): Promise> { - const out: WithdrawalRecord[] = [] - - for (const withdrawEvent of withdrawalEvents) { - if (withdrawEvent.args) { - let block: Block - try { - block = await retryAsync( - async (): Promise => { - return await withdrawEvent.getBlock() - }, - { delay: 500, maxTry: 5 }, - ) - - const record: WithdrawalRecord = { - time: block.timestamp, - amount: new BigNumber(String(withdrawEvent.args.amount)), - } - - out.push(record) - } catch (e) { - return E.left(new NetworkError(e, `Could not fetch block from withdrawEvent`)) - } - } - } - - return E.right(out) - } - - public async getWstEthTotalSupply(l2blockNumber: number): Promise> { - try { - const out = await retryAsync( - async (): Promise => { - const [balance] = await this.bridgedWstEthRunner.functions.totalSupply({ - blockTag: l2blockNumber, - }) - - return balance.toString() - }, - { delay: 500, maxTry: 5 }, - ) - - return E.right(new BigNumber(out)) - } catch (e) { - return E.left(new NetworkError(e, `Could not call bridgedWstEthRunner.functions.totalSupply`)) - } - } -} diff --git a/l2-bridge-scroll/src/entity/blockDto.ts b/l2-bridge-scroll/src/entity/blockDto.ts deleted file mode 100644 index b7aec27ca..000000000 --- a/l2-bridge-scroll/src/entity/blockDto.ts +++ /dev/null @@ -1,11 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type BlockDto = { - number: number - timestamp: number -} - -export type WithdrawalRecord = { - time: number - amount: BigNumber -} diff --git a/l2-bridge-scroll/src/entity/events.ts b/l2-bridge-scroll/src/entity/events.ts deleted file mode 100644 index c806a8c67..000000000 --- a/l2-bridge-scroll/src/entity/events.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' - -export type EventOfNotice = { - name: string - address: string - event: string - alertId: string - description: CallableFunction - severity: FindingSeverity - type: FindingType - uniqueKey: string -} diff --git a/l2-bridge-scroll/src/services/bridge_balance.ts b/l2-bridge-scroll/src/services/bridge_balance.ts deleted file mode 100644 index 5db5fe024..000000000 --- a/l2-bridge-scroll/src/services/bridge_balance.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import BigNumber from 'bignumber.js' -import * as E from 'fp-ts/Either' -import { getUniqueKey, networkAlert } from '../utils/finding.helpers' -import { ETH_DECIMALS } from '../utils/constants' - -export abstract class IL1BridgeBalanceClient { - abstract getWstEthBalance(l1blockNumber: number, address: string): Promise> -} - -export abstract class IL2BridgeBalanceClient { - abstract getWstEthTotalSupply(l1blockNumber: number): Promise> -} - -export class BridgeBalanceSrv { - private name = `BridgeBalanceSrv` - private readonly logger: Logger - private readonly clientL1: IL1BridgeBalanceClient - private readonly clientL2: IL2BridgeBalanceClient - - private readonly scrollL1TokenBridge: string - - constructor( - logger: Logger, - clientL1: IL1BridgeBalanceClient, - clientL2: IL2BridgeBalanceClient, - scrollL1TokenBridge: string, - ) { - this.logger = logger - this.clientL1 = clientL1 - this.clientL2 = clientL2 - this.scrollL1TokenBridge = scrollL1TokenBridge - } - - async handleBlock(l1BlockNumber: number, l2BlockNumbers: number[]): Promise { - const start = new Date().getTime() - - const findings = await this.handleBridgeBalanceWstETH(l1BlockNumber, l2BlockNumbers) - - this.logger.info(elapsedTime(this.name + '.' + this.handleBlock.name, start)) - return findings - } - - private async handleBridgeBalanceWstETH(l1BlockNumber: number, l2BlockNumbers: number[]): Promise { - const wstETHBalance_onL1ScrollBridge = await this.clientL1.getWstEthBalance(l1BlockNumber, this.scrollL1TokenBridge) - - const out: Finding[] = [] - if (E.isLeft(wstETHBalance_onL1ScrollBridge)) { - return [ - networkAlert( - wstETHBalance_onL1ScrollBridge.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:36`, - `Could not call clientL1.getWstEth`, - l1BlockNumber, - ), - ] - } - - for (const l2blockNumber of l2BlockNumbers) { - const wstETHTotalSupply_onScroll = await this.clientL2.getWstEthTotalSupply(l2blockNumber) - - if (E.isLeft(wstETHTotalSupply_onScroll)) { - out.push( - networkAlert( - wstETHTotalSupply_onScroll.left, - `Error in ${BridgeBalanceSrv.name}.${this.handleBridgeBalanceWstETH.name}:62`, - `Could not call clientL2.getWstEth`, - l2blockNumber, - ), - ) - - continue - } - - if (wstETHTotalSupply_onScroll.right.isGreaterThan(wstETHBalance_onL1ScrollBridge.right)) { - out.push( - Finding.fromObject({ - name: `🚨🚨🚨 Scroll bridge balance mismatch 🚨🚨🚨`, - description: - `Total supply of bridged wstETH is greater than balanceOf L1 bridge side!\n` + - `L2 total supply: ${wstETHTotalSupply_onScroll.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n` + - `L1 balanceOf: ${wstETHBalance_onL1ScrollBridge.right.dividedBy(ETH_DECIMALS).toFixed(2)}\n\n` + - `ETH: ${l1BlockNumber}\n` + - `Scroll: ${l2blockNumber}\n`, - alertId: 'BRIDGE-BALANCE-MISMATCH', - severity: FindingSeverity.Critical, - type: FindingType.Suspicious, - uniqueKey: getUniqueKey('c0563986-fce6-4036-898e-31cc9583d49e', l1BlockNumber + l2blockNumber), - }), - ) - } - } - - return out - } -} diff --git a/l2-bridge-scroll/src/services/event_watcher.ts b/l2-bridge-scroll/src/services/event_watcher.ts deleted file mode 100644 index 9234dafe8..000000000 --- a/l2-bridge-scroll/src/services/event_watcher.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { EventOfNotice } from '../entity/events' -import { Log } from '@ethersproject/abstract-provider' -import { filterLog, Finding } from 'forta-agent' -import { getUniqueKey } from '../utils/finding.helpers' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' -import { formatAddress } from 'forta-agent/dist/cli/utils' - -export class EventWatcher { - private readonly name: string - private readonly eventsToFinding: EventOfNotice[] - private readonly logger: Logger - - constructor(botName: string, events: EventOfNotice[], logger: Logger) { - this.name = botName - this.eventsToFinding = events - this.logger = logger - } - - public getName(): string { - return this.name - } - - public handleLogs(logs: Log[]): Finding[] { - const start = new Date().getTime() - const addresses: string[] = [] - - for (const log of logs) { - addresses.push(log.address) - } - - const findings: Finding[] = [] - for (const eventToFinding of this.eventsToFinding) { - const ind = addresses.indexOf(formatAddress(eventToFinding.address)) - if (ind >= 0) { - const filteredEvents = filterLog(logs, eventToFinding.event, eventToFinding.address) - - for (const event of filteredEvents) { - findings.push( - Finding.fromObject({ - name: eventToFinding.name, - description: eventToFinding.description(event.args), - alertId: eventToFinding.alertId, - severity: eventToFinding.severity, - type: eventToFinding.type, - metadata: { args: String(event.args) }, - uniqueKey: getUniqueKey(eventToFinding.uniqueKey, logs[ind].blockNumber), - }), - ) - } - } - } - - this.logger.info(elapsedTime(this.getName() + '.' + this.handleLogs.name, start)) - return findings - } -} diff --git a/l2-bridge-scroll/src/services/health-checker/health-checker.srv.spec.ts b/l2-bridge-scroll/src/services/health-checker/health-checker.srv.spec.ts deleted file mode 100644 index 81d4aa7bb..000000000 --- a/l2-bridge-scroll/src/services/health-checker/health-checker.srv.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { networkAlert } from '../../utils/finding.helpers' -import { HealthChecker } from './health-checker.srv' - -function sleep(ms: number): Promise { - return new Promise((resolve) => setTimeout(resolve, ms)) -} - -describe('HealthChecker', () => { - const networkFindings = [networkAlert(new Error('Some err'), 'err name', 'err desc', 100_000)] - const borderTime = 1_000 - const timeForNextCheck = 250 - - test('should become healthy', async () => { - const maxCountErrors = 6 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 < maxCountErrors = 6 => app is healthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(true) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 5 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // 0 250 500 750 1000 1250 1500 1750 2000 2250 - // | <- found 5 errors on 1000-th millisecond - // | found 5 === maxCountErrors = 5 => app is unhealthy - // 1 2 3 4 [5] 6 7 8 9 10 - for (let i = 1; i <= 10; i++) { - await sleep(timeForNextCheck) - healthChecker.check(networkFindings) - } - - expect(healthChecker.isHealth()).toBe(false) - }) - - test('should become unhealthy', async () => { - const maxCountErrors = 3 - const healthChecker = new HealthChecker(borderTime, maxCountErrors) - - // Found per once 3 errors -> app is unhealthy - const findings3 = [ - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1001), - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1002), - networkAlert(new Error('Some err'), 'err name', 'err desc', 100_1003), - ] - healthChecker.check(findings3) - - expect(healthChecker.isHealth()).toBe(false) - }) -}) diff --git a/l2-bridge-scroll/src/services/health-checker/health-checker.srv.ts b/l2-bridge-scroll/src/services/health-checker/health-checker.srv.ts deleted file mode 100644 index 347dd17ff..000000000 --- a/l2-bridge-scroll/src/services/health-checker/health-checker.srv.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Finding } from 'forta-agent' -import { NetworkErrorFinding } from '../../utils/finding.helpers' - -export const BorderTime = 15 * 60 * 1000 // 15 minutes -export const MaxNumberErrorsPerBorderTime = 25 - -export class HealthChecker { - private errorCount: number - private isAppOk: boolean - private readonly borderTime: number - private readonly maxCountErrors: number - - private errorStartedAt: number | null - - constructor(borderTime: number, maxCountErrors: number) { - this.errorCount = 0 - this.errorStartedAt = null - this.isAppOk = true - this.borderTime = borderTime - this.maxCountErrors = maxCountErrors - } - - public check(findings: Finding[]): void { - const currentTime = Date.now() - - let errCount: number = 0 - for (const f of findings) { - if (f.alertId === NetworkErrorFinding) { - errCount += 1 - } - } - - // if for one iteration we have more than maxCountErrors - // then app is unhealthy - if (errCount >= this.maxCountErrors) { - this.isAppOk = false - return - } - - if (this.errorStartedAt === null && errCount > 0) { - this.errorStartedAt = currentTime - } - - this.errorCount += errCount - - if (this.errorStartedAt !== null && currentTime - this.errorStartedAt >= this.borderTime) { - if (this.errorCount >= this.maxCountErrors) { - this.isAppOk = false - } else { - this.errorCount = 0 - this.errorStartedAt = null - } - } - } - - public isHealth(): boolean { - return this.isAppOk - } -} diff --git a/l2-bridge-scroll/src/services/monitor_withdrawals.ts b/l2-bridge-scroll/src/services/monitor_withdrawals.ts deleted file mode 100644 index d2eb69236..000000000 --- a/l2-bridge-scroll/src/services/monitor_withdrawals.ts +++ /dev/null @@ -1,172 +0,0 @@ -import BigNumber from 'bignumber.js' -import { filterLog, Finding, FindingSeverity, FindingType } from 'forta-agent' -import { Logger } from 'winston' -import { Log } from '@ethersproject/abstract-provider' -import * as E from 'fp-ts/Either' -import { BlockDto, WithdrawalRecord } from 'src/entity/blockDto' -import { IMonitorWithdrawalsClient } from '../clients/scroll_client' -import { NetworkError } from '../utils/error' -import { elapsedTime } from '../utils/time' -import { getUniqueKey } from '../utils/finding.helpers' -import { Constants, ETH_DECIMALS } from '../utils/constants' -import { formatAddress } from 'forta-agent/dist/cli/utils' - -// 10k wstETH -const MAX_WITHDRAWALS_SUM = 10_000 - -export type MonitorWithdrawalsInitResp = { - currentWithdrawals: string -} -export const HOURS_48 = 60 * 60 * 24 * 2 - -export class MonitorWithdrawals { - private readonly name: string = 'WithdrawalsMonitor' - - private readonly withdrawalInitiatedEvent = - 'event WithdrawERC20(address indexed l1Token, address indexed l2Token, address indexed from, uint256 amount, bytes data)' - - private readonly logger: Logger - private readonly l2Erc20TokenGatewayAddress: string - private readonly withdrawalsClient: IMonitorWithdrawalsClient - - private withdrawalsStore: WithdrawalRecord[] = [] - private lastReportedTooManyWithdrawalsTimestamp = 0 - - constructor(withdrawalsClient: IMonitorWithdrawalsClient, l2Erc20TokenGatewayAddress: string, logger: Logger) { - this.withdrawalsClient = withdrawalsClient - this.l2Erc20TokenGatewayAddress = l2Erc20TokenGatewayAddress - this.logger = logger - } - - public getName(): string { - return this.name - } - - public async initialize(currentBlock: number): Promise> { - const pastBlock = currentBlock - Math.ceil(HOURS_48 / Constants.SCROLL_APPROX_BLOCK_TIME_3_SECONDS) - - const withdrawalEvents = await this.withdrawalsClient.getWithdrawalEvents(pastBlock, currentBlock - 1) - if (E.isLeft(withdrawalEvents)) { - return withdrawalEvents - } - - const withdrawalRecords = await this.withdrawalsClient.getWithdrawalRecords(withdrawalEvents.right) - if (E.isLeft(withdrawalRecords)) { - return withdrawalRecords - } - - const withdrawalsSum = new BigNumber(0) - for (const wc of withdrawalRecords.right) { - withdrawalsSum.plus(wc.amount) - this.withdrawalsStore.push(wc) - } - - this.logger.info(`${MonitorWithdrawals.name} started on block ${currentBlock}`) - return E.right({ - currentWithdrawals: withdrawalsSum.div(ETH_DECIMALS).toFixed(2), - }) - } - - public handleBlocks(l2Logs: Log[], l2BlocksDto: BlockDto[]): Finding[] { - const start = new Date().getTime() - - // adds records into withdrawalsCache - const withdrawalRecords = this.getWithdrawalRecords(l2Logs, l2BlocksDto) - if (withdrawalRecords.length !== 0) { - this.logger.info(`Withdrawals count = ${withdrawalRecords.length}`) - } - this.withdrawalsStore.push(...withdrawalRecords) - - const out: Finding[] = [] - - for (const l2Block of l2BlocksDto) { - // remove withdrawals records older than MAX_WITHDRAWALS_WINDOW - const withdrawalsCache: WithdrawalRecord[] = [] - for (const wc of this.withdrawalsStore) { - if (wc.time > l2Block.timestamp - HOURS_48) { - withdrawalsCache.push(wc) - } - } - - this.withdrawalsStore = withdrawalsCache - - const withdrawalsSum = new BigNumber(0) - for (const wc of this.withdrawalsStore) { - withdrawalsSum.plus(wc.amount) - } - - // block number condition is meant to "sync" agents alerts - if (withdrawalsSum.div(ETH_DECIMALS).isGreaterThanOrEqualTo(MAX_WITHDRAWALS_SUM) && l2Block.number % 10 === 0) { - const period = - l2Block.timestamp - this.lastReportedTooManyWithdrawalsTimestamp < HOURS_48 - ? l2Block.timestamp - this.lastReportedTooManyWithdrawalsTimestamp - : HOURS_48 - - const uniqueKey = `C167F276-D519-4906-90CB-C4455E9ABBD4` - - const finding: Finding = Finding.fromObject({ - name: `⚠️ Scroll: Huge withdrawals during the last ` + `${Math.floor(period / (60 * 60))} hour(s)`, - description: - `There were withdrawals requests from L2 to L1 for the ` + - `${withdrawalsSum.div(ETH_DECIMALS).toFixed(4)} wstETH in total`, - alertId: 'HUGE-WITHDRAWALS-FROM-L2', - severity: FindingSeverity.Medium, - type: FindingType.Suspicious, - uniqueKey: getUniqueKey(uniqueKey, l2Block.number), - }) - - out.push(finding) - - this.lastReportedTooManyWithdrawalsTimestamp = l2Block.timestamp - - const tmp: WithdrawalRecord[] = [] - for (const wc of this.withdrawalsStore) { - if (wc.time > l2Block.timestamp - this.lastReportedTooManyWithdrawalsTimestamp) { - tmp.push(wc) - } - } - - this.withdrawalsStore = tmp - } - } - - this.logger.info(elapsedTime(MonitorWithdrawals.name + '.' + this.handleBlocks.name, start)) - return out - } - - private getWithdrawalRecords(l2Logs: Log[], l2BlocksDto: BlockDto[]): WithdrawalRecord[] { - const blockNumberToBlock = new Map() - const logIndexToLogs = new Map() - const addresses = new Set() - - for (const l2Log of l2Logs) { - logIndexToLogs.set(l2Log.logIndex, l2Log) - addresses.add(l2Log.address.toLowerCase()) - } - - for (const l2BlockDto of l2BlocksDto) { - blockNumberToBlock.set(l2BlockDto.number, l2BlockDto) - } - - const out: WithdrawalRecord[] = [] - if (formatAddress(this.l2Erc20TokenGatewayAddress) in addresses) { - const events = filterLog(l2Logs, this.withdrawalInitiatedEvent, formatAddress(this.l2Erc20TokenGatewayAddress)) - - for (const event of events) { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const log: Log = logIndexToLogs.get(event.logIndex) - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - const blockDto: BlockDto = blockNumberToBlock.get(log.blockNumber) - - out.push({ - time: blockDto.timestamp, - amount: new BigNumber(String(event.args.amount)), - }) - } - } - - return out - } -} diff --git a/l2-bridge-scroll/src/services/proxy_watcher.ts b/l2-bridge-scroll/src/services/proxy_watcher.ts deleted file mode 100644 index 3b7c4b3c5..000000000 --- a/l2-bridge-scroll/src/services/proxy_watcher.ts +++ /dev/null @@ -1,165 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' -import { IProxyContractClient } from '../clients/proxy_contract_client' -import * as E from 'fp-ts/Either' -import { retry } from 'ts-retry' -import { getUniqueKey, networkAlert } from '../utils/finding.helpers' -import { elapsedTime } from '../utils/time' -import { Logger } from 'winston' - -export type ProxyWatcherInitResp = { - lastImpls: string - lastAdmins: string -} - -export class ProxyWatcher { - private readonly name: string = 'ProxyWatcher' - - private lastImpls = new Map() - private lastAdmins = new Map() - - private readonly contractCallers: IProxyContractClient[] - private readonly logger: Logger - - constructor(contractCallers: IProxyContractClient[], logger: Logger) { - this.contractCallers = contractCallers - this.logger = logger - } - - public getName(): string { - return this.name - } - - async initialize(currentBlock: number): Promise> { - for (const contract of this.contractCallers) { - const [lastImpl, lastAdmin] = await retry( - async () => { - return await Promise.all([ - contract.getProxyImplementation(currentBlock), - contract.getProxyAdmin(currentBlock), - ]) - }, - { delay: 1000, maxTry: 5 }, - ) - - if (E.isLeft(lastImpl)) { - return lastImpl - } - - if (E.isLeft(lastAdmin)) { - return lastAdmin - } - - this.lastImpls.set(contract.getAddress(), lastImpl.right) - this.lastAdmins.set(contract.getAddress(), lastAdmin.right) - } - - this.logger.info(`${ProxyWatcher.name} started on block ${currentBlock}`) - return E.right({ - lastImpls: JSON.stringify(Object.fromEntries(this.lastImpls)), - lastAdmins: JSON.stringify(Object.fromEntries(this.lastAdmins)), - }) - } - - async handleBlocks(blockNumbers: number[]): Promise { - const start = new Date().getTime() - const findings: Finding[] = [] - - const BLOCK_INTERVAL = 25 - for (const l2BlockNumber of blockNumbers) { - if (l2BlockNumber % BLOCK_INTERVAL === 0) { - const [implFindings, adminFindings] = await Promise.all([ - this.handleProxyImplementationChanges(l2BlockNumber), - this.handleProxyAdminChanges(l2BlockNumber), - ]) - findings.push(...implFindings, ...adminFindings) - } - } - - this.logger.info(elapsedTime(ProxyWatcher.name + '.' + this.handleBlocks.name, start)) - return findings - } - - private async handleProxyImplementationChanges(blockNumber: number): Promise { - const out: Finding[] = [] - - for (const contract of this.contractCallers) { - const lastImpl = this.lastImpls.get(contract.getAddress()) || '' - - const newImpl = await contract.getProxyImplementation(blockNumber) - if (E.isLeft(newImpl)) { - return [ - networkAlert( - newImpl.left, - `Error in ${ProxyWatcher.name}.${this.handleProxyAdminChanges.name}:89`, - newImpl.left.message, - blockNumber, - ), - ] - } - - if (newImpl.right != lastImpl) { - const uniqueKey = 'EFC29EB4-2A50-4CC8-A8BE-5AD9044FFFD5' - out.push( - Finding.fromObject({ - name: '🚨 Scroll: Proxy implementation changed', - description: - `Proxy implementation for ${contract.getName()}(${contract.getAddress()}) ` + - `was changed form ${lastImpl} to ${newImpl}` + - `\n(detected by func call)`, - alertId: 'PROXY-UPGRADED', - severity: FindingSeverity.High, - type: FindingType.Info, - metadata: { newImpl: newImpl.right, lastImpl: lastImpl }, - uniqueKey: getUniqueKey(uniqueKey + '-' + contract.getAddress(), blockNumber), - }), - ) - } - - this.lastImpls.set(contract.getAddress(), newImpl.right) - } - - return out - } - - private async handleProxyAdminChanges(blockNumber: number): Promise { - const out: Finding[] = [] - - for (const contract of this.contractCallers) { - const lastAdmin: string = this.lastAdmins.get(contract.getAddress()) || '' - - const newAdmin = await contract.getProxyAdmin(blockNumber) - if (E.isLeft(newAdmin)) { - return [ - networkAlert( - newAdmin.left, - `Error in ${ProxyWatcher.name}.${this.handleProxyAdminChanges.name}:132`, - newAdmin.left.message, - blockNumber, - ), - ] - } - - if (newAdmin.right != lastAdmin) { - const uniqueKey = '575AFC07-6AA9-4FC7-B35E-D20D8232866F' - out.push( - Finding.fromObject({ - name: '🚨 Scroll: Proxy admin changed', - description: - `Proxy admin for ${contract.getName()}(${contract.getAddress()}) ` + - `was changed from ${lastAdmin} to ${newAdmin}` + - `\n(detected by func call)`, - alertId: 'PROXY-ADMIN-CHANGED', - severity: FindingSeverity.High, - type: FindingType.Info, - metadata: { newAdmin: newAdmin.right, lastAdmin: lastAdmin }, - uniqueKey: getUniqueKey(uniqueKey + '-' + contract.getAddress(), blockNumber), - }), - ) - } - - this.lastAdmins.set(contract.getAddress(), newAdmin.right) - } - - return out - } -} diff --git a/l2-bridge-scroll/src/utils/constants.ts b/l2-bridge-scroll/src/utils/constants.ts deleted file mode 100644 index 468e82fc5..000000000 --- a/l2-bridge-scroll/src/utils/constants.ts +++ /dev/null @@ -1,34 +0,0 @@ -import BigNumber from 'bignumber.js' - -export type ContractInfo = { - name: string - address: string -} - -export type RoleHashToName = Map - -export const ETH_DECIMALS = new BigNumber(10).pow(18) -export const Constants = { - SCROLL_NETWORK_RPC: 'https://rpc.scroll.io', - SCROLL_NETWORK_ID: 534352, - SCROLL_APPROX_BLOCK_TIME_3_SECONDS: 3, - L2_PROXY_ADMIN_CONTRACT_ADDRESS: '0x8e34d07eb348716a1f0a48a507a9de8a3a6dce45', - GOV_BRIDGE_ADDRESS: '0x0c67d8d067e349669dfeab132a7c03a90594ee09', - L1_WSTETH_ADDRESS: '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', - L1_ERC20_TOKEN_GATEWAY_ADDRESS: '0x6625c6332c9f91f2d27c304e729b86db87a3f504', - L2_ERC20_TOKEN_GATEWAY: { - name: 'L2_ERC20_TOKEN_GATEWAY', - address: '0x8ae8f22226b9d789a36ac81474e633f8be2856c9', - }, - SCROLL_WSTETH_BRIDGED: { - name: 'SCROLL_WSTETH_BRIDGED', - address: '0xf610a9dfb7c89644979b4a0f27063e9e7d7cda32', - }, - RolesMap: new Map([ - ['0x4b43b36766bde12c5e9cbbc37d15f8d1f769f08f54720ab370faeb4ce893753a', 'DEPOSITS_ENABLER_ROLE'], - ['0x63f736f21cb2943826cd50b191eb054ebbea670e4e962d0527611f830cd399d6', 'DEPOSITS_DISABLER_ROLE'], - ['0x9ab8816a3dc0b3849ec1ac00483f6ec815b07eee2fd766a353311c823ad59d0d', 'WITHDRAWALS_ENABLER_ROLE'], - ['0x94a954c0bc99227eddbc0715a62a7e1056ed8784cd719c2303b685683908857c', 'WITHDRAWALS_DISABLER_ROLE'], - ['0x0000000000000000000000000000000000000000000000000000000000000000', 'DEFAULT_ADMIN_ROLE'], - ]), -} diff --git a/l2-bridge-scroll/src/utils/error.ts b/l2-bridge-scroll/src/utils/error.ts deleted file mode 100644 index b81d7726a..000000000 --- a/l2-bridge-scroll/src/utils/error.ts +++ /dev/null @@ -1,17 +0,0 @@ -export class NetworkError extends Error { - constructor(e: unknown, name?: string) { - super() - - if (name !== undefined) { - this.name = name - } - - if (e instanceof Error) { - this.stack = e.stack - this.message = e.message - this.cause = e.cause - } else { - this.message = `${e}` - } - } -} diff --git a/l2-bridge-scroll/src/utils/events/bridge_events.ts b/l2-bridge-scroll/src/utils/events/bridge_events.ts deleted file mode 100644 index 98f75d92a..000000000 --- a/l2-bridge-scroll/src/utils/events/bridge_events.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { FindingSeverity, FindingType } from 'forta-agent' -import { EventOfNotice } from '../../entity/events' -import { Result } from '@ethersproject/abi/lib' -import { RoleHashToName } from '../constants' - -export function getBridgeEvents(l2GatewayAddress: string, RolesAddrToNameMap: RoleHashToName): EventOfNotice[] { - return [ - { - address: l2GatewayAddress, - event: 'event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)', - alertId: 'L2-BRIDGE-OWNER-CHANGED', - name: '🚨 Scroll: L2 gateway owner changed', - description: (args: Result) => - `Owner of L2LidoGateway ${l2GatewayAddress} was changed to ${args.newOwner} (detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '136546BE-E1BF-40DA-98FB-17B741E12A35', - }, - { - address: l2GatewayAddress, - event: 'event DepositsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-DEPOSITS-DISABLED', - name: '🚨 Scroll L2 Bridge: Deposits Disabled', - description: (args: Result) => `Deposits were disabled by ${args.disabler}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '7CBC6E3F-BABA-437A-9142-0C1CD8AAA827', - }, - { - address: l2GatewayAddress, - event: 'event WithdrawalsDisabled(address indexed disabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-DISABLED', - name: '🚨 Scroll L2 Bridge: Withdrawals Disabled', - description: (args: Result) => `Withdrawals were disabled by ${args.enabler}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'C6DBFF28-C12D-4CEC-8087-2F0898F7AEAB', - }, - { - address: l2GatewayAddress, - event: 'event DepositsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-DEPOSITS-ENABLED', - name: 'ℹ️ Scroll L2 Bridge: Deposits Enabled', - description: (args: Result) => `Deposits were enabled by ${args.enabler}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: 'EA60F6DC-9A59-4FAE-8467-521DF56813C5', - }, - { - address: l2GatewayAddress, - event: 'event WithdrawalsEnabled(address indexed enabler)', - alertId: 'L2-BRIDGE-WITHDRAWALS-ENABLED', - name: 'ℹ️ Scroll L2 Bridge: Withdrawals Enabled', - description: (args: Result) => `Withdrawals were enabled by ${args.enabler}`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '0CEE896B-6BDD-45C5-9ADD-46A1558F1BBC', - }, - { - address: l2GatewayAddress, - event: 'event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-GRANTED', - name: '⚠️ Scroll L2 Bridge: Role granted', - description: (args: Result) => - `Role ${args.role}(${RolesAddrToNameMap.get(args.role) || 'unknown'}) ` + - `was granted to ${args.account} by ${args.sender}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: 'F58F36AD-9811-40D7-ACD2-667A7624D85B', - }, - { - address: l2GatewayAddress, - event: 'event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)', - alertId: 'L2-BRIDGE-ROLE-REVOKED', - name: '⚠️ Scroll L2 Bridge: Role revoked', - description: (args: Result) => - `Role ${args.role}(${RolesAddrToNameMap.get(args.role) || 'unknown'}) ` + - `was revoked to ${args.account} by ${args.sender}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '42816CCE-24C3-4CE2-BC21-4F2202A66EFD', - }, - { - address: l2GatewayAddress, - event: 'event Initialized(uint8 version)', - alertId: 'L2-BRIDGE-INITIALIZED', - name: '🚨 Scroll L2 Bridge: (re-)initialized', - description: (args: Result) => - `Implementation of the Scroll L2 Bridge was initialized by version: ${args.version}\n` + - `NOTE: This is not the thing that should be left unacted! ` + - `Make sure that this call was made by Lido!`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'E42BC7A0-0715-4D55-AB9D-0A041F639B20', - }, - ] -} diff --git a/l2-bridge-scroll/src/utils/events/gov_events.ts b/l2-bridge-scroll/src/utils/events/gov_events.ts deleted file mode 100644 index f88263892..000000000 --- a/l2-bridge-scroll/src/utils/events/gov_events.ts +++ /dev/null @@ -1,105 +0,0 @@ -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' - -export function getGovEvents(GOV_BRIDGE_ADDRESS: string): EventOfNotice[] { - return [ - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event EthereumGovernanceExecutorUpdate(address oldEthereumGovernanceExecutor, address newEthereumGovernanceExecutor)', - alertId: 'GOV-BRIDGE-EXEC-UPDATED', - name: '🚨 Scroll Gov Bridge: Ethereum Governance Executor Updated', - description: (args: Result) => - `Ethereum Governance Executor was updated from ` + - `${args.oldEthereumGovernanceExecutor} to ${args.newEthereumGovernanceExecutor}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '73EE62B0-E0CF-4527-8E44-566D72667F22', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GuardianUpdate(address oldGuardian, address newGuardian)', - alertId: 'GOV-BRIDGE-GUARDIAN-UPDATED', - name: '🚨 Scroll Gov Bridge: Guardian Updated', - description: (args: Result) => `Guardian was updated from ` + `${args.oldGuardian} to ${args.newGuardian}`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '8C586373-5040-4BDA-8EF8-16CBE582D6B0', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event DelayUpdate(uint256 oldDelay, uint256 newDelay)', - alertId: 'GOV-BRIDGE-DELAY-UPDATED', - name: '⚠️ Scroll Gov Bridge: Delay Updated', - description: (args: Result) => `Delay was updated from ` + `${args.oldDelay} to ${args.newDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '073F04A8-B232-4671-A34E-D42A3729FE34', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event GracePeriodUpdate(uint256 oldGracePeriod, uint256 newGracePeriod)', - alertId: 'GOV-BRIDGE-GRACE-PERIOD-UPDATED', - name: '⚠️ Scroll Gov Bridge: Grace Period Updated', - description: (args: Result) => - `Grace Period was updated from ` + `${args.oldGracePeriod} to ${args.newGracePeriod}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '26574C78-EBD1-42D3-A9C7-3E4A2976FCB7', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MinimumDelayUpdate(uint256 oldMinimumDelay, uint256 newMinimumDelay)', - alertId: 'GOV-BRIDGE-MIN-DELAY-UPDATED', - name: '⚠️ Scroll Gov Bridge: Min Delay Updated', - description: (args: Result) => - `Min Delay was updated from ` + `${args.oldMinimumDelay} to ${args.newMinimumDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '35391E05-CBB4-4013-ACA1-A75F8C5D6991', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event MaximumDelayUpdate(uint256 oldMaximumDelay, uint256 newMaximumDelay)', - alertId: 'GOV-BRIDGE-MAX-DELAY-UPDATED', - name: '⚠️ Scroll Gov Bridge: Max Delay Updated', - description: (args: Result) => - `Max Delay was updated from ` + `${args.oldMaximumDelay} to ${args.newMaximumDelay}`, - severity: FindingSeverity.Medium, - type: FindingType.Info, - uniqueKey: '003CCEDE-551A-4310-86A7-F8EC22135C45', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: - 'event ActionsSetQueued(uint256 indexed id, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, bool[] withDelegatecalls, uint256 executionTime)', - alertId: 'GOV-BRIDGE-ACTION-SET-QUEUED', - name: 'ℹ️ Scroll Gov Bridge: Action set queued', - description: (args: Result) => `Action set ${args.id} was queued`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '84D309D8-AB13-4B41-A9CE-8DE4AB77E77A', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetExecuted(uint256 indexed id, address indexed initiatorExecution, bytes[] returnedData)', - alertId: 'GOV-BRIDGE-ACTION-SET-EXECUTED', - name: 'ℹ️ Scroll Gov Bridge: Action set executed', - description: (args: Result) => `Action set ${args.id} was executed`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '31FE6EEB-4619-4579-9C0B-58EECC3D7724', - }, - { - address: GOV_BRIDGE_ADDRESS, - event: 'event ActionsSetCanceled(uint256 indexed id)', - alertId: 'GOV-BRIDGE-ACTION-SET-CANCELED', - name: 'ℹ️ Scroll Gov Bridge: Action set canceled', - description: (args: Result) => `Action set ${args.id} was canceled`, - severity: FindingSeverity.Info, - type: FindingType.Info, - uniqueKey: '76022839-385E-4AD7-85E9-3739C1CACA09', - }, - ] -} diff --git a/l2-bridge-scroll/src/utils/events/proxy_admin_events.ts b/l2-bridge-scroll/src/utils/events/proxy_admin_events.ts deleted file mode 100644 index 4fa0f7957..000000000 --- a/l2-bridge-scroll/src/utils/events/proxy_admin_events.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { ContractInfo } from '../constants' -import { EventOfNotice } from '../../entity/events' -import { FindingSeverity, FindingType } from 'forta-agent' -import { Result } from '@ethersproject/abi/lib' - -export function getProxyAdminEvents(l2WstethContract: ContractInfo, l2GatewayContract: ContractInfo): EventOfNotice[] { - return [ - { - address: l2WstethContract.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Scroll: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${l2WstethContract.name}(${l2WstethContract.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '18BA44FB-E5AC-4F7D-A556-3B49D9381B0C', - }, - { - address: l2WstethContract.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Scroll: Proxy upgraded', - description: (args: Result) => - `Proxy for ${l2WstethContract.name}(${l2WstethContract.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '6D0FC28D-0D3E-41D3-8F9A-2A52AFDA7543', - }, - { - address: l2WstethContract.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Scroll: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${l2WstethContract.name}(${l2WstethContract.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: '913345D0-B591-4699-9E5B-384C2640A9C3', - }, - { - address: l2GatewayContract.address, - event: 'event AdminChanged(address previousAdmin, address newAdmin)', - alertId: 'PROXY-ADMIN-CHANGED', - name: '🚨 Scroll: Proxy admin changed', - description: (args: Result) => - `Proxy admin for ${l2GatewayContract.name}(${l2GatewayContract.address}) ` + - `was changed from ${args.previousAdmin} to ${args.newAdmin}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'DE3F6E46-984B-435F-B88C-E5198386CCF6', - }, - { - address: l2GatewayContract.address, - event: 'event Upgraded(address indexed implementation)', - alertId: 'PROXY-UPGRADED', - name: '🚨 Scroll: Proxy upgraded', - description: (args: Result) => - `Proxy for ${l2GatewayContract.name}(${l2GatewayContract.address}) ` + - `was updated to ${args.implementation}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'CFA25A7F-69C4-45BE-8CAE-884EE8FEF5CA', - }, - { - address: l2GatewayContract.address, - event: 'event BeaconUpgraded(address indexed beacon)', - alertId: 'PROXY-BEACON-UPGRADED', - name: '🚨 Scroll: Proxy beacon upgraded', - description: (args: Result) => - `Proxy for ${l2GatewayContract.name}(${l2GatewayContract.address}) ` + - `beacon was updated to ${args.beacon}` + - `\n(detected by event)`, - severity: FindingSeverity.High, - type: FindingType.Info, - uniqueKey: 'B7193990-458E-4F41-ADD9-82848D235F5B', - }, - ] -} diff --git a/l2-bridge-scroll/src/utils/finding.helpers.ts b/l2-bridge-scroll/src/utils/finding.helpers.ts deleted file mode 100644 index fe4567960..000000000 --- a/l2-bridge-scroll/src/utils/finding.helpers.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Finding, FindingSeverity, FindingType } from 'forta-agent' - -export const NetworkErrorFinding = 'NETWORK-ERROR' - -export function networkAlert(err: Error, name: string, desc: string, blockNumber: number): Finding { - return Finding.fromObject({ - name: name, - description: desc, - alertId: NetworkErrorFinding, - severity: FindingSeverity.Unknown, - type: FindingType.Degraded, - metadata: { - stack: `${err.stack}`, - message: `${err.message}`, - name: `${err.name}`, - }, - uniqueKey: getUniqueKey(name, blockNumber), - }) -} - -export function getUniqueKey(uniqueKey: string, blockNumber: number): string { - return uniqueKey + '-' + blockNumber.toString() -} diff --git a/l2-bridge-scroll/src/utils/mutex.ts b/l2-bridge-scroll/src/utils/mutex.ts deleted file mode 100644 index 809234836..000000000 --- a/l2-bridge-scroll/src/utils/mutex.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { Mutex, MutexInterface, withTimeout } from 'async-mutex' - -export class DataRW { - private mutex: MutexInterface - private value: T[] - - constructor(initialValue: T[]) { - this.mutex = withTimeout(new Mutex(), 100) - this.value = initialValue - } - - async read(): Promise { - await this.mutex.acquire() - try { - const out = this.value - this.value = [] - - return out - } finally { - this.mutex.release() - } - } - - async write(newValue: T[]): Promise { - await this.mutex.acquire() - try { - this.value.push(...newValue) - } finally { - this.mutex.release() - } - } - - async append(newValue: T): Promise { - await this.mutex.acquire() - try { - this.value.push(newValue) - } finally { - this.mutex.release() - } - } -} diff --git a/l2-bridge-scroll/src/utils/time.ts b/l2-bridge-scroll/src/utils/time.ts deleted file mode 100644 index acd3cb72f..000000000 --- a/l2-bridge-scroll/src/utils/time.ts +++ /dev/null @@ -1,15 +0,0 @@ -export function formatTime(timeInMillis: number): string { - const seconds = (timeInMillis / 1000).toFixed(3) - return `${seconds} seconds` -} - -export function elapsedTime(methodName: string, startTime: number): string { - const elapsedTime = new Date().getTime() - startTime - return `${methodName} started at ${formatTimeToHumanReadable(new Date(startTime))}. Elapsed: ${formatTime( - elapsedTime, - )}` -} - -function formatTimeToHumanReadable(date: Date): string { - return `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}` -} diff --git a/l2-bridge-scroll/src/utils/version.ts b/l2-bridge-scroll/src/utils/version.ts deleted file mode 100644 index 34c3048c8..000000000 --- a/l2-bridge-scroll/src/utils/version.ts +++ /dev/null @@ -1,27 +0,0 @@ -import path from 'path' - -export interface Version { - desc: string - commitHash: string - commitHashShort: string - commitMsg: string - commitMsgShort: string - isWdClean: boolean -} - -export default readVersion(path.join(__dirname, '..', './version.json')) - -function readVersion(versionFilePath: string): Version { - try { - return require(versionFilePath) - } catch (e) { - return { - desc: 'unknown', - commitHash: 'unknown', - commitHashShort: 'unknown', - commitMsg: 'unknown', - commitMsgShort: 'unknown', - isWdClean: false, - } - } -} diff --git a/l2-bridge-scroll/tsconfig.json b/l2-bridge-scroll/tsconfig.json deleted file mode 100644 index 72ba777bb..000000000 --- a/l2-bridge-scroll/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "compilerOptions": { - "outDir": "dist", - "baseUrl": "." - }, - "exclude": [ - "node_modules", - "tests", - "dist", - "**/*spec.ts", - "**/*mock.ts" - ] -} diff --git a/l2-bridge-scroll/yarn.lock b/l2-bridge-scroll/yarn.lock deleted file mode 100644 index ee3375385..000000000 --- a/l2-bridge-scroll/yarn.lock +++ /dev/null @@ -1,4815 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.22.9": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.11.6", "@babel/core@^7.12.3": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.5.tgz#6e23f2acbcb77ad283c5ed141f824fd9f70101c7" - integrity sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.5" - "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.5" - "@babel/parser" "^7.23.5" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.5" - "@babel/types" "^7.23.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.5", "@babel/generator@^7.7.2": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.5.tgz#17d0a1ea6b62f351d281350a5f80b87a810c4755" - integrity sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA== - dependencies: - "@babel/types" "^7.23.5" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" - integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== - dependencies: - "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.15" - browserslist "^4.21.9" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.22.15": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.5.tgz#52f522840df8f1a848d06ea6a79b79eefa72401e" - integrity sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.5" - "@babel/types" "^7.23.5" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.5.tgz#37dee97c4752af148e1d38c34b856b2507660563" - integrity sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz#8f2e4f8a9b5f9aa16067e142c1ac9cd9f810f473" - integrity sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz#24f460c85dbbc983cd2b9c4994178bcc01df958f" - integrity sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/template@^7.22.15", "@babel/template@^7.3.3": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.5.tgz#f546bf9aba9ef2b042c0e00d245990c15508e7ec" - integrity sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.5" - "@babel/types" "^7.23.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.5", "@babel/types@^7.3.3": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.5.tgz#48d730a00c95109fa4393352705954d74fb5b602" - integrity sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@colors/colors@1.6.0", "@colors/colors@^1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0" - integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA== - -"@dabh/diagnostics@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" - integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - -"@danieldietrich/copy@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@danieldietrich/copy/-/copy-0.4.2.tgz#c1cabfa499d8b473ba95413c446c1c1efae64d24" - integrity sha512-ZVNZIrgb2KeomfNahP77rL445ho6aQj0HHqU6hNlQ61o4rhvca+NS+ePj0d82zQDq2UPk1mjVZBTXgP+ErsDgw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.55.0": - version "8.55.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" - integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== - -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.0.0": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@grpc/grpc-js@^1.3.6": - version "1.9.12" - resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.9.12.tgz#a45b23a7d9ee1eadc9fa8fe480e27edbc6544cdd" - integrity sha512-Um5MBuge32TS3lAKX02PGCnFM4xPT996yLgZNb5H03pn6NyJ4Iwn5YcPq6Jj9yxGRk7WOgaZFtVRH5iTdYBeUg== - dependencies: - "@grpc/proto-loader" "^0.7.8" - "@types/node" ">=12.12.47" - -"@grpc/proto-loader@^0.6.4": - version "0.6.13" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.6.13.tgz#008f989b72a40c60c96cd4088522f09b05ac66bc" - integrity sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g== - dependencies: - "@types/long" "^4.0.1" - lodash.camelcase "^4.3.0" - long "^4.0.0" - protobufjs "^6.11.3" - yargs "^16.2.0" - -"@grpc/proto-loader@^0.7.8": - version "0.7.10" - resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.10.tgz#6bf26742b1b54d0a473067743da5d3189d06d720" - integrity sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ== - dependencies: - lodash.camelcase "^4.3.0" - long "^5.0.0" - protobufjs "^7.2.4" - yargs "^17.7.2" - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgr/utils@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" - integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== - dependencies: - cross-spawn "^7.0.3" - fast-glob "^3.3.0" - is-glob "^4.0.3" - open "^9.1.0" - picocolors "^1.0.0" - tslib "^2.6.0" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@tsconfig/node20@^20.1.2": - version "20.1.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node20/-/node20-20.1.2.tgz#b93128c411d38e9507035255195bc8a6718541e3" - integrity sha512-madaWq2k+LYMEhmcp0fs+OGaLFk0OenpHa4gmI4VEmCKX4PJntQ6fnnGADVFrVkBj0wIdAlQnK/MrlYTHsa1gQ== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.7" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.7.tgz#a7aebf15c7bc0eb9abd638bdb5c0b8700399c9d0" - integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.4" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" - integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== - dependencies: - "@babel/types" "^7.20.7" - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" - integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== - -"@types/istanbul-lib-report@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" - integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" - integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.10": - version "29.5.10" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.10.tgz#a10fc5bab9e426081c12b2ef73d24d4f0c9b7f50" - integrity sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.14.202": - version "4.14.202" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" - integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0": - version "20.10.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.3.tgz#4900adcc7fc189d5af5bb41da8f543cea6962030" - integrity sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg== - dependencies: - undici-types "~5.26.4" - -"@types/nodemon@^1.19.0": - version "1.19.6" - resolved "https://registry.yarnpkg.com/@types/nodemon/-/nodemon-1.19.6.tgz#1c14bac51dfd3d354e2b5046949f925a742412c4" - integrity sha512-vjKuaQOLUA5EY2zkUmWG1ipXbKt9Wd+H/0SiIuHVeH4cHtt6509iRUGH9ZR0iqgUrtj3BrP9KqoTuV3ZCbQcYA== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/stack-utils@^2.0.0": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" - integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== - -"@types/triple-beam@^1.3.2": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c" - integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw== - -"@types/uuid@^8.3.4": - version "8.3.4" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" - integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== - -"@types/ws@^8.5.10": - version "8.5.10" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.10.tgz#4acfb517970853fa6574a3a6886791d04a396787" - integrity sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" - integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== - -"@types/yargs@^17.0.8": - version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" - integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^6.12.0": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.1.tgz#f98bd887bf95551203c917e734d113bf8d527a0c" - integrity sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.13.1" - "@typescript-eslint/type-utils" "6.13.1" - "@typescript-eslint/utils" "6.13.1" - "@typescript-eslint/visitor-keys" "6.13.1" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.12.0": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.13.1.tgz#29d6d4e5fab4669e58bc15f6904b67da65567487" - integrity sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ== - dependencies: - "@typescript-eslint/scope-manager" "6.13.1" - "@typescript-eslint/types" "6.13.1" - "@typescript-eslint/typescript-estree" "6.13.1" - "@typescript-eslint/visitor-keys" "6.13.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.13.1.tgz#58c7c37c6a957d3d9f59bc4f64c2888e0cac1d70" - integrity sha512-BW0kJ7ceiKi56GbT2KKzZzN+nDxzQK2DS6x0PiSMPjciPgd/JRQGMibyaN2cPt2cAvuoH0oNvn2fwonHI+4QUQ== - dependencies: - "@typescript-eslint/types" "6.13.1" - "@typescript-eslint/visitor-keys" "6.13.1" - -"@typescript-eslint/type-utils@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.13.1.tgz#e6e5885e387841cae9c38fc0638fd8b7561973d6" - integrity sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ== - dependencies: - "@typescript-eslint/typescript-estree" "6.13.1" - "@typescript-eslint/utils" "6.13.1" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.13.1.tgz#b56f26130e7eb8fa1e429c75fb969cae6ad7bb5c" - integrity sha512-gjeEskSmiEKKFIbnhDXUyiqVma1gRCQNbVZ1C8q7Zjcxh3WZMbzWVfGE9rHfWd1msQtPS0BVD9Jz9jded44eKg== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.1.tgz#d01dda78d2487434d1c503853fa00291c566efa4" - integrity sha512-sBLQsvOC0Q7LGcUHO5qpG1HxRgePbT6wwqOiGLpR8uOJvPJbfs0mW3jPA3ujsDvfiVwVlWUDESNXv44KtINkUQ== - dependencies: - "@typescript-eslint/types" "6.13.1" - "@typescript-eslint/visitor-keys" "6.13.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.13.1.tgz#925b3a2453a71ada914ae329b7bb7e7d96634b2f" - integrity sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.13.1" - "@typescript-eslint/types" "6.13.1" - "@typescript-eslint/typescript-estree" "6.13.1" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.10.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.13.1": - version "6.13.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.1.tgz#c4b692dcc23a4fc60685b718f10fde789d65a540" - integrity sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ== - dependencies: - "@typescript-eslint/types" "6.13.1" - eslint-visitor-keys "^3.4.1" - -"@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -async-mutex@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.0.tgz#ae8048cd4d04ace94347507504b3cf15e631c25f" - integrity sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA== - dependencies: - tslib "^2.4.0" - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -async@^3.2.3: - version "3.2.5" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" - integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -awilix@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/awilix/-/awilix-4.3.4.tgz#aeecc662efa96256981af3bc6243eb201c8b4a4f" - integrity sha512-NgRwUPxUnoK+OTRa2fXcRQVFPOPQXlwCN1FJPkhO3IHKQJHokhdVpDfgz9L3VZTcA1iSaOFE3N/Q/5P7lIDqig== - dependencies: - camel-case "^4.1.2" - glob "^7.1.6" - -axios@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" - integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -big-integer@^1.6.44: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - -bignumber.js@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" - integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e" - integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg== - dependencies: - bn.js "^5.2.1" - browserify-rsa "^4.1.0" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.4" - inherits "^2.0.4" - parse-asn1 "^5.1.6" - readable-stream "^3.6.2" - safe-buffer "^5.2.1" - -browserslist@^4.21.9: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer@6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bundle-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" - integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== - dependencies: - run-applescript "^5.0.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001565: - version "1.0.30001566" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz#61a8e17caf3752e3e426d4239c549ebbb37fef0d" - integrity sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA== - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -ci-info@^3.2.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" - integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - -color-convert@^1.9.0, color-convert@^1.9.3: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^1.6.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" - integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== - dependencies: - color-name "^1.0.0" - simple-swizzle "^0.2.2" - -color@^3.1.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" - integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== - dependencies: - color-convert "^1.9.3" - color-string "^1.6.0" - -colorspace@1.1.x: - version "1.1.4" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" - integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== - dependencies: - color "^3.1.3" - text-hex "1.0.x" - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -debug@^4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -default-browser-id@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - -default-browser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" - integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== - dependencies: - bundle-name "^3.0.0" - default-browser-id "^3.0.0" - execa "^7.1.1" - titleize "^3.0.0" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -des.js@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da" - integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.4.601: - version "1.4.601" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz#cac69868548aee89961ffe63ff5a7716f0685b75" - integrity sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA== - -elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-plugin-jest@^27.6.0: - version "27.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz#e5c0cf735b3c8cad0ef9db5b565b2fc99f5e55ed" - integrity sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-plugin-prettier@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" - integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.5" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.54.0: - version "8.55.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" - integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.55.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -ethers@^5.5.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9, fast-glob@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - 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" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== - dependencies: - bser "2.1.1" - -fecha@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" - integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - -follow-redirects@^1.15.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -forta-agent@^0.1.48: - version "0.1.48" - resolved "https://registry.yarnpkg.com/forta-agent/-/forta-agent-0.1.48.tgz#d2660eb0c8db3daf554079176836ba5bec8d3d4f" - integrity sha512-fk3mar7/Avqg/4OHFmgv01ww/azr1XM+g5KcSnwvNxZy3KDMi7aFp1jAjPCsBjs8ZyVcR03ITUlbtFpRVgZB4Q== - dependencies: - "@grpc/grpc-js" "^1.3.6" - "@grpc/proto-loader" "^0.6.4" - "@types/uuid" "^8.3.4" - async-retry "^1.3.3" - awilix "^4.3.4" - axios "^1.6.2" - base64-arraybuffer "^1.0.2" - ethers "^5.5.1" - flat-cache "^3.0.4" - form-data "^4.0.0" - jsonc "^2.0.0" - keythereum "^1.2.0" - lodash "^4.17.21" - murmurhash3js "^3.0.1" - n-readlines "^1.0.1" - prompts "^2.4.1" - python-shell "^3.0.0" - sha3 "^2.1.4" - shelljs "^0.8.4" - uuid "^8.3.2" - yargs "^17.0.1" - -fp-ts@^2.16.1: - version "2.16.1" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.16.1.tgz#6abc401ce42b65364ca8f0b0d995c5840c68a930" - integrity sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA== - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.23.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" - integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.9: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -husky@^8.0.3: - version "8.0.3" - resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.3.tgz#4936d7212e46d1dea28fef29bb3a108872cd9184" - integrity sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-arrayish@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" - integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" - integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" - integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" - integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^4.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.6" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" - integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.0.0, jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/jsonc/-/jsonc-2.0.0.tgz#9e2a25100d164a9bb864c57517563717fa882551" - integrity sha512-B281bLCT2TRMQa+AQUQY5AGcqSOXBOKaYGP4wDzoA/+QswUfN8sODektbPEs9Baq7LGKun5jQbNFpzwGuVYKhw== - dependencies: - fast-safe-stringify "^2.0.6" - graceful-fs "^4.1.15" - mkdirp "^0.5.1" - parse-json "^4.0.0" - strip-bom "^4.0.0" - strip-json-comments "^3.0.1" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keythereum@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/keythereum/-/keythereum-1.2.0.tgz#3e6c2d7451ef4fde011f8008348c194f7e58c86a" - integrity sha512-u3XnjIruOmjIvJ4tH1Wdr2y0X8+z8BZTQ+dqJuDMyLvNWw6VnH9XKtt0yauSE+96Bq97h6CPm4w5LbW3i28x0g== - dependencies: - crypto-browserify "3.12.0" - keccak "3.0.1" - scrypt-js "3.0.1" - secp256k1 "4.0.2" - sjcl "1.0.6" - uuid "3.0.0" - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.memoize@4.x: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -logform@^2.3.2, logform@^2.4.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.0.tgz#8c82a983f05d6eaeb2d75e3decae7a768b2bf9b5" - integrity sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ== - dependencies: - "@colors/colors" "1.6.0" - "@types/triple-beam" "^1.3.2" - fecha "^4.2.0" - ms "^2.1.1" - safe-stable-stringify "^2.3.1" - triple-beam "^1.3.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" - integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== - dependencies: - semver "^7.5.3" - -make-error@1.x: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -murmurhash3js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/murmurhash3js/-/murmurhash3js-3.0.1.tgz#3e983e5b47c2a06f43a713174e7e435ca044b998" - integrity sha512-KL8QYUaxq7kUbcl0Yto51rMcYt7E/4N4BG3/c96Iqw1PQrTRspu8Cpx4TZ4Nunib1d4bEkIH3gjCYlP2RLBdow== - -n-readlines@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e" - integrity sha512-z4SyAIVgMy7CkgsoNw7YVz40v0g4+WWvvqy8+ZdHrCtgevcEO758WQyrYcw3XPxcLxF+//RszTz/rO48nzD0wQ== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-gyp-build@^4.2.0: - version "4.7.1" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.7.1.tgz#cd7d2eb48e594874053150a9418ac85af83ca8f7" - integrity sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nodemon@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.2.tgz#222dd0de79fc7b7b3eedba422d2b9e5fc678621e" - integrity sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA== - dependencies: - chokidar "^3.5.2" - debug "^4" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" - integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== - dependencies: - default-browser "^4.0.0" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^2.2.0" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pbkdf2@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pirates@^4.0.4: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -postinstall@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/postinstall/-/postinstall-0.8.0.tgz#4acd1d9113831055a35e8670cefb2bf57aa7f87b" - integrity sha512-onh5cnUw4ue+iBzwoyHZNfih1iopqm5abfc/0vK/A9QyYVPxCbLW0DxwrRpHFZ2/Fs5Uo7j4TiaVDNWriq0HIg== - dependencies: - "@danieldietrich/copy" "^0.4.2" - glob "^8.0.3" - minimist "^1.2.6" - resolve-from "^5.0.0" - resolve-pkg "^2.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2, prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e" - integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -prompts@^2.0.1, prompts@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.11.3: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.2.4: - version "7.2.5" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.5.tgz#45d5c57387a6d29a17aab6846dcc283f9b8e7f2d" - integrity sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pstree.remy@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - -python-shell@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/python-shell/-/python-shell-3.0.1.tgz#c3d3b11536e6ebdb8d6a2602482f7180d940bb13" - integrity sha512-TWeotuxe1auhXa5bGRScxnc2J+0r41NBntSa6RYZtMBLtAEsvCboKrEbW6DvASosWQepVkhZZlT3B5Ei766G+Q== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -readable-stream@^3.4.0, readable-stream@^3.6.0, readable-stream@^3.6.2: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" - integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== - dependencies: - resolve-from "^5.0.0" - -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.1.6, resolve@^1.20.0, resolve@^1.8.1: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-applescript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" - integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== - dependencies: - execa "^5.0.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-stable-stringify@^2.3.1: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - -safer-buffer@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -secp256k1@4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.4: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-swizzle@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" - integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== - dependencies: - is-arrayish "^0.3.1" - -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -sjcl@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.6.tgz#6415462a63cc0d4215c49baec9d3fa0c1b53520f" - integrity sha512-oUVs+hzMSWEZ3rdeDL461QilvvEU2OL9q6T42lpVi2C5Proej9obVZ1nQeY9T96NxoMy/dqw82m33MfNNEmYJg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== - -stack-utils@^2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== - dependencies: - escape-string-regexp "^2.0.0" - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -synckit@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.6.tgz#b69b7fbce3917c2673cbdc0d87fb324db4a5b409" - integrity sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA== - dependencies: - "@pkgr/utils" "^2.4.2" - tslib "^2.6.2" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -titleize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" - integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -triple-beam@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984" - integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^29.1.1: - version "29.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" - integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-retry@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/ts-retry/-/ts-retry-4.2.4.tgz#151e813adec2e7edffa5493c2f07b47e71fd336e" - integrity sha512-r9hIgfdCyU5yBe090s3E1VdPWGifBHx6uzu5hjRn6fbK0jpV8t4TGzNBghnxZXbm2ZNsm909E5WbwPGWAHdQOQ== - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typescript@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43" - integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== - -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.0.tgz#6728fc0459c450d796a99c31837569bdf672d728" - integrity sha512-rqE1LoOVLv3QrZMjb4NkF5UWlkurCfPyItVnFPNKDDGkHw4dQUdE4zMcLqx28+0Kcf3+bnUk4PisaiRJT4aiaQ== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-to-istanbul@^9.0.1: - version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" - integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -winston-transport@^4.5.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.7.0.tgz#e302e6889e6ccb7f383b926df6936a5b781bd1f0" - integrity sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg== - dependencies: - logform "^2.3.2" - readable-stream "^3.6.0" - triple-beam "^1.3.0" - -winston@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.11.0.tgz#2d50b0a695a2758bb1c95279f0a88e858163ed91" - integrity sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g== - dependencies: - "@colors/colors" "^1.6.0" - "@dabh/diagnostics" "^2.0.2" - async "^3.2.3" - is-stream "^2.0.0" - logform "^2.4.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - safe-stable-stringify "^2.3.1" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.5.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.0.1, yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.0.1, yargs@^17.3.1, yargs@^17.7.2: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/storage-watcher/.dockerignore b/storage-watcher/.dockerignore deleted file mode 100644 index 4514cae5a..000000000 --- a/storage-watcher/.dockerignore +++ /dev/null @@ -1,5 +0,0 @@ -node_modules/ -.yarn/ -!.yarn/releases/ -dist/ -forta.config.json diff --git a/storage-watcher/.gitignore b/storage-watcher/.gitignore deleted file mode 100644 index f73222b7d..000000000 --- a/storage-watcher/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -node_modules -dist -forta.config.json -.yarn/* -!.yarn/releases/ -*.log -version.json -.DS_Store diff --git a/storage-watcher/.nvmrc b/storage-watcher/.nvmrc deleted file mode 100644 index e0325e5ad..000000000 --- a/storage-watcher/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v16.17.1 diff --git a/storage-watcher/.yarn/releases/yarn-3.3.0.cjs b/storage-watcher/.yarn/releases/yarn-3.3.0.cjs deleted file mode 100755 index 47f24f66e..000000000 --- a/storage-watcher/.yarn/releases/yarn-3.3.0.cjs +++ /dev/null @@ -1,807 +0,0 @@ -#!/usr/bin/env node -/* eslint-disable */ -//prettier-ignore -(()=>{var lfe=Object.create;var GS=Object.defineProperty;var cfe=Object.getOwnPropertyDescriptor;var ufe=Object.getOwnPropertyNames;var gfe=Object.getPrototypeOf,ffe=Object.prototype.hasOwnProperty;var J=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var y=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ht=(r,e)=>{for(var t in e)GS(r,t,{get:e[t],enumerable:!0})},hfe=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of ufe(e))!ffe.call(r,n)&&n!==t&&GS(r,n,{get:()=>e[n],enumerable:!(i=cfe(e,n))||i.enumerable});return r};var ne=(r,e,t)=>(t=r!=null?lfe(gfe(r)):{},hfe(e||!r||!r.__esModule?GS(t,"default",{value:r,enumerable:!0}):t,r));var iU=y((iZe,rU)=>{rU.exports=tU;tU.sync=Lfe;var $1=J("fs");function Nfe(r,e){var t=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!t||(t=t.split(";"),t.indexOf("")!==-1))return!0;for(var i=0;i{aU.exports=sU;sU.sync=Tfe;var nU=J("fs");function sU(r,e,t){nU.stat(r,function(i,n){t(i,i?!1:oU(n,e))})}function Tfe(r,e){return oU(nU.statSync(r),e)}function oU(r,e){return r.isFile()&&Ofe(r,e)}function Ofe(r,e){var t=r.mode,i=r.uid,n=r.gid,s=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),o=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),a=parseInt("100",8),l=parseInt("010",8),c=parseInt("001",8),u=a|l,g=t&c||t&l&&n===o||t&a&&i===s||t&u&&s===0;return g}});var cU=y((oZe,lU)=>{var sZe=J("fs"),LI;process.platform==="win32"||global.TESTING_WINDOWS?LI=iU():LI=AU();lU.exports=sv;sv.sync=Mfe;function sv(r,e,t){if(typeof e=="function"&&(t=e,e={}),!t){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(i,n){sv(r,e||{},function(s,o){s?n(s):i(o)})})}LI(r,e||{},function(i,n){i&&(i.code==="EACCES"||e&&e.ignoreErrors)&&(i=null,n=!1),t(i,n)})}function Mfe(r,e){try{return LI.sync(r,e||{})}catch(t){if(e&&e.ignoreErrors||t.code==="EACCES")return!1;throw t}}});var CU=y((aZe,dU)=>{var Xg=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",uU=J("path"),Kfe=Xg?";":":",gU=cU(),fU=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),hU=(r,e)=>{let t=e.colon||Kfe,i=r.match(/\//)||Xg&&r.match(/\\/)?[""]:[...Xg?[process.cwd()]:[],...(e.path||process.env.PATH||"").split(t)],n=Xg?e.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=Xg?n.split(t):[""];return Xg&&r.indexOf(".")!==-1&&s[0]!==""&&s.unshift(""),{pathEnv:i,pathExt:s,pathExtExe:n}},pU=(r,e,t)=>{typeof e=="function"&&(t=e,e={}),e||(e={});let{pathEnv:i,pathExt:n,pathExtExe:s}=hU(r,e),o=[],a=c=>new Promise((u,g)=>{if(c===i.length)return e.all&&o.length?u(o):g(fU(r));let f=i[c],h=/^".*"$/.test(f)?f.slice(1,-1):f,p=uU.join(h,r),C=!h&&/^\.[\\\/]/.test(r)?r.slice(0,2)+p:p;u(l(C,c,0))}),l=(c,u,g)=>new Promise((f,h)=>{if(g===n.length)return f(a(u+1));let p=n[g];gU(c+p,{pathExt:s},(C,w)=>{if(!C&&w)if(e.all)o.push(c+p);else return f(c+p);return f(l(c,u,g+1))})});return t?a(0).then(c=>t(null,c),t):a(0)},Ufe=(r,e)=>{e=e||{};let{pathEnv:t,pathExt:i,pathExtExe:n}=hU(r,e),s=[];for(let o=0;o{"use strict";var mU=(r={})=>{let e=r.env||process.env;return(r.platform||process.platform)!=="win32"?"PATH":Object.keys(e).reverse().find(i=>i.toUpperCase()==="PATH")||"Path"};ov.exports=mU;ov.exports.default=mU});var BU=y((lZe,wU)=>{"use strict";var IU=J("path"),Hfe=CU(),Gfe=EU();function yU(r,e){let t=r.options.env||process.env,i=process.cwd(),n=r.options.cwd!=null,s=n&&process.chdir!==void 0&&!process.chdir.disabled;if(s)try{process.chdir(r.options.cwd)}catch{}let o;try{o=Hfe.sync(r.command,{path:t[Gfe({env:t})],pathExt:e?IU.delimiter:void 0})}catch{}finally{s&&process.chdir(i)}return o&&(o=IU.resolve(n?r.options.cwd:"",o)),o}function Yfe(r){return yU(r)||yU(r,!0)}wU.exports=Yfe});var QU=y((cZe,Av)=>{"use strict";var av=/([()\][%!^"`<>&|;, *?])/g;function jfe(r){return r=r.replace(av,"^$1"),r}function qfe(r,e){return r=`${r}`,r=r.replace(/(\\*)"/g,'$1$1\\"'),r=r.replace(/(\\*)$/,"$1$1"),r=`"${r}"`,r=r.replace(av,"^$1"),e&&(r=r.replace(av,"^$1")),r}Av.exports.command=jfe;Av.exports.argument=qfe});var SU=y((uZe,bU)=>{"use strict";bU.exports=/^#!(.*)/});var xU=y((gZe,vU)=>{"use strict";var Jfe=SU();vU.exports=(r="")=>{let e=r.match(Jfe);if(!e)return null;let[t,i]=e[0].replace(/#! ?/,"").split(" "),n=t.split("/").pop();return n==="env"?i:i?`${n} ${i}`:n}});var DU=y((fZe,PU)=>{"use strict";var lv=J("fs"),Wfe=xU();function zfe(r){let t=Buffer.alloc(150),i;try{i=lv.openSync(r,"r"),lv.readSync(i,t,0,150,0),lv.closeSync(i)}catch{}return Wfe(t.toString())}PU.exports=zfe});var NU=y((hZe,FU)=>{"use strict";var Vfe=J("path"),kU=BU(),RU=QU(),Xfe=DU(),_fe=process.platform==="win32",Zfe=/\.(?:com|exe)$/i,$fe=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function ehe(r){r.file=kU(r);let e=r.file&&Xfe(r.file);return e?(r.args.unshift(r.file),r.command=e,kU(r)):r.file}function the(r){if(!_fe)return r;let e=ehe(r),t=!Zfe.test(e);if(r.options.forceShell||t){let i=$fe.test(e);r.command=Vfe.normalize(r.command),r.command=RU.command(r.command),r.args=r.args.map(s=>RU.argument(s,i));let n=[r.command].concat(r.args).join(" ");r.args=["/d","/s","/c",`"${n}"`],r.command=process.env.comspec||"cmd.exe",r.options.windowsVerbatimArguments=!0}return r}function rhe(r,e,t){e&&!Array.isArray(e)&&(t=e,e=null),e=e?e.slice(0):[],t=Object.assign({},t);let i={command:r,args:e,options:t,file:void 0,original:{command:r,args:e}};return t.shell?i:the(i)}FU.exports=rhe});var OU=y((pZe,TU)=>{"use strict";var cv=process.platform==="win32";function uv(r,e){return Object.assign(new Error(`${e} ${r.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${e} ${r.command}`,path:r.command,spawnargs:r.args})}function ihe(r,e){if(!cv)return;let t=r.emit;r.emit=function(i,n){if(i==="exit"){let s=LU(n,e,"spawn");if(s)return t.call(r,"error",s)}return t.apply(r,arguments)}}function LU(r,e){return cv&&r===1&&!e.file?uv(e.original,"spawn"):null}function nhe(r,e){return cv&&r===1&&!e.file?uv(e.original,"spawnSync"):null}TU.exports={hookChildProcess:ihe,verifyENOENT:LU,verifyENOENTSync:nhe,notFoundError:uv}});var hv=y((dZe,_g)=>{"use strict";var MU=J("child_process"),gv=NU(),fv=OU();function KU(r,e,t){let i=gv(r,e,t),n=MU.spawn(i.command,i.args,i.options);return fv.hookChildProcess(n,i),n}function she(r,e,t){let i=gv(r,e,t),n=MU.spawnSync(i.command,i.args,i.options);return n.error=n.error||fv.verifyENOENTSync(n.status,i),n}_g.exports=KU;_g.exports.spawn=KU;_g.exports.sync=she;_g.exports._parse=gv;_g.exports._enoent=fv});var HU=y((CZe,UU)=>{"use strict";function ohe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function cc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,cc)}ohe(cc,Error);cc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g>",re=de(">>",!1),me=">&",tt=de(">&",!1),Rt=">",It=de(">",!1),Kr="<<<",oi=de("<<<",!1),pi="<&",pr=de("<&",!1),di="<",ai=de("<",!1),Os=function(m){return{type:"argument",segments:[].concat(...m)}},dr=function(m){return m},Bi="$'",_n=de("$'",!1),ha="'",mA=de("'",!1),Dg=function(m){return[{type:"text",text:m}]},Zn='""',EA=de('""',!1),pa=function(){return{type:"text",text:""}},jp='"',IA=de('"',!1),yA=function(m){return m},Br=function(m){return{type:"arithmetic",arithmetic:m,quoted:!0}},zl=function(m){return{type:"shell",shell:m,quoted:!0}},kg=function(m){return{type:"variable",...m,quoted:!0}},Eo=function(m){return{type:"text",text:m}},Rg=function(m){return{type:"arithmetic",arithmetic:m,quoted:!1}},qp=function(m){return{type:"shell",shell:m,quoted:!1}},Jp=function(m){return{type:"variable",...m,quoted:!1}},xr=function(m){return{type:"glob",pattern:m}},oe=/^[^']/,Io=Ye(["'"],!0,!1),kn=function(m){return m.join("")},Fg=/^[^$"]/,Qt=Ye(["$",'"'],!0,!1),Vl=`\\ -`,Rn=de(`\\ -`,!1),$n=function(){return""},es="\\",ut=de("\\",!1),yo=/^[\\$"`]/,at=Ye(["\\","$",'"',"`"],!1,!1),ln=function(m){return m},S="\\a",Tt=de("\\a",!1),Ng=function(){return"a"},Xl="\\b",Wp=de("\\b",!1),zp=function(){return"\b"},Vp=/^[Ee]/,Xp=Ye(["E","e"],!1,!1),_p=function(){return"\x1B"},G="\\f",yt=de("\\f",!1),wA=function(){return"\f"},Wi="\\n",_l=de("\\n",!1),We=function(){return` -`},da="\\r",Lg=de("\\r",!1),lI=function(){return"\r"},Zp="\\t",cI=de("\\t",!1),ar=function(){return" "},Fn="\\v",Zl=de("\\v",!1),$p=function(){return"\v"},Ms=/^[\\'"?]/,Ca=Ye(["\\","'",'"',"?"],!1,!1),cn=function(m){return String.fromCharCode(parseInt(m,16))},De="\\x",Tg=de("\\x",!1),$l="\\u",Ks=de("\\u",!1),ec="\\U",BA=de("\\U",!1),Og=function(m){return String.fromCodePoint(parseInt(m,16))},Mg=/^[0-7]/,ma=Ye([["0","7"]],!1,!1),Ea=/^[0-9a-fA-f]/,$e=Ye([["0","9"],["a","f"],["A","f"]],!1,!1),wo=rt(),QA="-",tc=de("-",!1),Us="+",rc=de("+",!1),uI=".",ed=de(".",!1),Kg=function(m,b,F){return{type:"number",value:(m==="-"?-1:1)*parseFloat(b.join("")+"."+F.join(""))}},td=function(m,b){return{type:"number",value:(m==="-"?-1:1)*parseInt(b.join(""))}},gI=function(m){return{type:"variable",...m}},ic=function(m){return{type:"variable",name:m}},fI=function(m){return m},Ug="*",bA=de("*",!1),Fr="/",hI=de("/",!1),Hs=function(m,b,F){return{type:b==="*"?"multiplication":"division",right:F}},Gs=function(m,b){return b.reduce((F,U)=>({left:F,...U}),m)},Hg=function(m,b,F){return{type:b==="+"?"addition":"subtraction",right:F}},SA="$((",R=de("$((",!1),q="))",pe=de("))",!1),Ne=function(m){return m},xe="$(",qe=de("$(",!1),dt=function(m){return m},Ft="${",Nn=de("${",!1),bS=":-",s1=de(":-",!1),o1=function(m,b){return{name:m,defaultValue:b}},SS=":-}",a1=de(":-}",!1),A1=function(m){return{name:m,defaultValue:[]}},vS=":+",l1=de(":+",!1),c1=function(m,b){return{name:m,alternativeValue:b}},xS=":+}",u1=de(":+}",!1),g1=function(m){return{name:m,alternativeValue:[]}},PS=function(m){return{name:m}},f1="$",h1=de("$",!1),p1=function(m){return e.isGlobPattern(m)},d1=function(m){return m},DS=/^[a-zA-Z0-9_]/,kS=Ye([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),RS=function(){return O()},FS=/^[$@*?#a-zA-Z0-9_\-]/,NS=Ye(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),C1=/^[(){}<>$|&; \t"']/,Gg=Ye(["(",")","{","}","<",">","$","|","&",";"," "," ",'"',"'"],!1,!1),LS=/^[<>&; \t"']/,TS=Ye(["<",">","&",";"," "," ",'"',"'"],!1,!1),pI=/^[ \t]/,dI=Ye([" "," "],!1,!1),Q=0,Re=0,vA=[{line:1,column:1}],d=0,E=[],I=0,k;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function O(){return r.substring(Re,Q)}function X(){return Et(Re,Q)}function te(m,b){throw b=b!==void 0?b:Et(Re,Q),Fi([At(m)],r.substring(Re,Q),b)}function ye(m,b){throw b=b!==void 0?b:Et(Re,Q),Ln(m,b)}function de(m,b){return{type:"literal",text:m,ignoreCase:b}}function Ye(m,b,F){return{type:"class",parts:m,inverted:b,ignoreCase:F}}function rt(){return{type:"any"}}function wt(){return{type:"end"}}function At(m){return{type:"other",description:m}}function et(m){var b=vA[m],F;if(b)return b;for(F=m-1;!vA[F];)F--;for(b=vA[F],b={line:b.line,column:b.column};Fd&&(d=Q,E=[]),E.push(m))}function Ln(m,b){return new cc(m,null,null,b)}function Fi(m,b,F){return new cc(cc.buildMessage(m,b),m,b,F)}function xA(){var m,b;return m=Q,b=Ur(),b===t&&(b=null),b!==t&&(Re=m,b=s(b)),m=b,m}function Ur(){var m,b,F,U,ce;if(m=Q,b=Hr(),b!==t){for(F=[],U=Me();U!==t;)F.push(U),U=Me();F!==t?(U=Ia(),U!==t?(ce=ts(),ce===t&&(ce=null),ce!==t?(Re=m,b=o(b,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;if(m===t)if(m=Q,b=Hr(),b!==t){for(F=[],U=Me();U!==t;)F.push(U),U=Me();F!==t?(U=Ia(),U===t&&(U=null),U!==t?(Re=m,b=a(b,U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function ts(){var m,b,F,U,ce;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t)if(F=Ur(),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();U!==t?(Re=m,b=l(F),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function Ia(){var m;return r.charCodeAt(Q)===59?(m=c,Q++):(m=t,I===0&&Be(u)),m===t&&(r.charCodeAt(Q)===38?(m=g,Q++):(m=t,I===0&&Be(f))),m}function Hr(){var m,b,F;return m=Q,b=m1(),b!==t?(F=Jge(),F===t&&(F=null),F!==t?(Re=m,b=h(b,F),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Jge(){var m,b,F,U,ce,be,ft;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t)if(F=Wge(),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();if(U!==t)if(ce=Hr(),ce!==t){for(be=[],ft=Me();ft!==t;)be.push(ft),ft=Me();be!==t?(Re=m,b=p(F,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Wge(){var m;return r.substr(Q,2)===C?(m=C,Q+=2):(m=t,I===0&&Be(w)),m===t&&(r.substr(Q,2)===B?(m=B,Q+=2):(m=t,I===0&&Be(v))),m}function m1(){var m,b,F;return m=Q,b=Xge(),b!==t?(F=zge(),F===t&&(F=null),F!==t?(Re=m,b=D(b,F),m=b):(Q=m,m=t)):(Q=m,m=t),m}function zge(){var m,b,F,U,ce,be,ft;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t)if(F=Vge(),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();if(U!==t)if(ce=m1(),ce!==t){for(be=[],ft=Me();ft!==t;)be.push(ft),ft=Me();be!==t?(Re=m,b=L(F,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;return m}function Vge(){var m;return r.substr(Q,2)===H?(m=H,Q+=2):(m=t,I===0&&Be(j)),m===t&&(r.charCodeAt(Q)===124?(m=$,Q++):(m=t,I===0&&Be(V))),m}function CI(){var m,b,F,U,ce,be;if(m=Q,b=D1(),b!==t)if(r.charCodeAt(Q)===61?(F=W,Q++):(F=t,I===0&&Be(Z)),F!==t)if(U=y1(),U!==t){for(ce=[],be=Me();be!==t;)ce.push(be),be=Me();ce!==t?(Re=m,b=A(b,U),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;else Q=m,m=t;if(m===t)if(m=Q,b=D1(),b!==t)if(r.charCodeAt(Q)===61?(F=W,Q++):(F=t,I===0&&Be(Z)),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();U!==t?(Re=m,b=ae(b),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t;return m}function Xge(){var m,b,F,U,ce,be,ft,Bt,Vr,Ci,rs;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t)if(r.charCodeAt(Q)===40?(F=ge,Q++):(F=t,I===0&&Be(_)),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();if(U!==t)if(ce=Ur(),ce!==t){for(be=[],ft=Me();ft!==t;)be.push(ft),ft=Me();if(be!==t)if(r.charCodeAt(Q)===41?(ft=T,Q++):(ft=t,I===0&&Be(N)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=rd();Ci!==t;)Vr.push(Ci),Ci=rd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Re=m,b=ue(ce,Vr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t)if(r.charCodeAt(Q)===123?(F=we,Q++):(F=t,I===0&&Be(Le)),F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();if(U!==t)if(ce=Ur(),ce!==t){for(be=[],ft=Me();ft!==t;)be.push(ft),ft=Me();if(be!==t)if(r.charCodeAt(Q)===125?(ft=Pe,Q++):(ft=t,I===0&&Be(Te)),ft!==t){for(Bt=[],Vr=Me();Vr!==t;)Bt.push(Vr),Vr=Me();if(Bt!==t){for(Vr=[],Ci=rd();Ci!==t;)Vr.push(Ci),Ci=rd();if(Vr!==t){for(Ci=[],rs=Me();rs!==t;)Ci.push(rs),rs=Me();Ci!==t?(Re=m,b=se(ce,Vr),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;else Q=m,m=t;if(m===t){for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t){for(F=[],U=CI();U!==t;)F.push(U),U=CI();if(F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();if(U!==t){if(ce=[],be=I1(),be!==t)for(;be!==t;)ce.push(be),be=I1();else ce=t;if(ce!==t){for(be=[],ft=Me();ft!==t;)be.push(ft),ft=Me();be!==t?(Re=m,b=Ae(F,ce),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t}else Q=m,m=t;if(m===t){for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t){if(F=[],U=CI(),U!==t)for(;U!==t;)F.push(U),U=CI();else F=t;if(F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();U!==t?(Re=m,b=Qe(F),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t}}}return m}function E1(){var m,b,F,U,ce;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t){if(F=[],U=mI(),U!==t)for(;U!==t;)F.push(U),U=mI();else F=t;if(F!==t){for(U=[],ce=Me();ce!==t;)U.push(ce),ce=Me();U!==t?(Re=m,b=fe(F),m=b):(Q=m,m=t)}else Q=m,m=t}else Q=m,m=t;return m}function I1(){var m,b,F;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();if(b!==t?(F=rd(),F!==t?(Re=m,b=le(F),m=b):(Q=m,m=t)):(Q=m,m=t),m===t){for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();b!==t?(F=mI(),F!==t?(Re=m,b=le(F),m=b):(Q=m,m=t)):(Q=m,m=t)}return m}function rd(){var m,b,F,U,ce;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();return b!==t?(Ge.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(ie)),F===t&&(F=null),F!==t?(U=_ge(),U!==t?(ce=mI(),ce!==t?(Re=m,b=Y(F,U,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function _ge(){var m;return r.substr(Q,2)===he?(m=he,Q+=2):(m=t,I===0&&Be(re)),m===t&&(r.substr(Q,2)===me?(m=me,Q+=2):(m=t,I===0&&Be(tt)),m===t&&(r.charCodeAt(Q)===62?(m=Rt,Q++):(m=t,I===0&&Be(It)),m===t&&(r.substr(Q,3)===Kr?(m=Kr,Q+=3):(m=t,I===0&&Be(oi)),m===t&&(r.substr(Q,2)===pi?(m=pi,Q+=2):(m=t,I===0&&Be(pr)),m===t&&(r.charCodeAt(Q)===60?(m=di,Q++):(m=t,I===0&&Be(ai))))))),m}function mI(){var m,b,F;for(m=Q,b=[],F=Me();F!==t;)b.push(F),F=Me();return b!==t?(F=y1(),F!==t?(Re=m,b=le(F),m=b):(Q=m,m=t)):(Q=m,m=t),m}function y1(){var m,b,F;if(m=Q,b=[],F=w1(),F!==t)for(;F!==t;)b.push(F),F=w1();else b=t;return b!==t&&(Re=m,b=Os(b)),m=b,m}function w1(){var m,b;return m=Q,b=Zge(),b!==t&&(Re=m,b=dr(b)),m=b,m===t&&(m=Q,b=$ge(),b!==t&&(Re=m,b=dr(b)),m=b,m===t&&(m=Q,b=efe(),b!==t&&(Re=m,b=dr(b)),m=b,m===t&&(m=Q,b=tfe(),b!==t&&(Re=m,b=dr(b)),m=b))),m}function Zge(){var m,b,F,U;return m=Q,r.substr(Q,2)===Bi?(b=Bi,Q+=2):(b=t,I===0&&Be(_n)),b!==t?(F=nfe(),F!==t?(r.charCodeAt(Q)===39?(U=ha,Q++):(U=t,I===0&&Be(mA)),U!==t?(Re=m,b=Dg(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function $ge(){var m,b,F,U;return m=Q,r.charCodeAt(Q)===39?(b=ha,Q++):(b=t,I===0&&Be(mA)),b!==t?(F=rfe(),F!==t?(r.charCodeAt(Q)===39?(U=ha,Q++):(U=t,I===0&&Be(mA)),U!==t?(Re=m,b=Dg(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function efe(){var m,b,F,U;if(m=Q,r.substr(Q,2)===Zn?(b=Zn,Q+=2):(b=t,I===0&&Be(EA)),b!==t&&(Re=m,b=pa()),m=b,m===t)if(m=Q,r.charCodeAt(Q)===34?(b=jp,Q++):(b=t,I===0&&Be(IA)),b!==t){for(F=[],U=B1();U!==t;)F.push(U),U=B1();F!==t?(r.charCodeAt(Q)===34?(U=jp,Q++):(U=t,I===0&&Be(IA)),U!==t?(Re=m,b=yA(F),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;return m}function tfe(){var m,b,F;if(m=Q,b=[],F=Q1(),F!==t)for(;F!==t;)b.push(F),F=Q1();else b=t;return b!==t&&(Re=m,b=yA(b)),m=b,m}function B1(){var m,b;return m=Q,b=x1(),b!==t&&(Re=m,b=Br(b)),m=b,m===t&&(m=Q,b=P1(),b!==t&&(Re=m,b=zl(b)),m=b,m===t&&(m=Q,b=US(),b!==t&&(Re=m,b=kg(b)),m=b,m===t&&(m=Q,b=ife(),b!==t&&(Re=m,b=Eo(b)),m=b))),m}function Q1(){var m,b;return m=Q,b=x1(),b!==t&&(Re=m,b=Rg(b)),m=b,m===t&&(m=Q,b=P1(),b!==t&&(Re=m,b=qp(b)),m=b,m===t&&(m=Q,b=US(),b!==t&&(Re=m,b=Jp(b)),m=b,m===t&&(m=Q,b=afe(),b!==t&&(Re=m,b=xr(b)),m=b,m===t&&(m=Q,b=ofe(),b!==t&&(Re=m,b=Eo(b)),m=b)))),m}function rfe(){var m,b,F;for(m=Q,b=[],oe.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Io));F!==t;)b.push(F),oe.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Io));return b!==t&&(Re=m,b=kn(b)),m=b,m}function ife(){var m,b,F;if(m=Q,b=[],F=b1(),F===t&&(Fg.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Qt))),F!==t)for(;F!==t;)b.push(F),F=b1(),F===t&&(Fg.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Qt)));else b=t;return b!==t&&(Re=m,b=kn(b)),m=b,m}function b1(){var m,b,F;return m=Q,r.substr(Q,2)===Vl?(b=Vl,Q+=2):(b=t,I===0&&Be(Rn)),b!==t&&(Re=m,b=$n()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Be(ut)),b!==t?(yo.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(at)),F!==t?(Re=m,b=ln(F),m=b):(Q=m,m=t)):(Q=m,m=t)),m}function nfe(){var m,b,F;for(m=Q,b=[],F=S1(),F===t&&(oe.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Io)));F!==t;)b.push(F),F=S1(),F===t&&(oe.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Io)));return b!==t&&(Re=m,b=kn(b)),m=b,m}function S1(){var m,b,F;return m=Q,r.substr(Q,2)===S?(b=S,Q+=2):(b=t,I===0&&Be(Tt)),b!==t&&(Re=m,b=Ng()),m=b,m===t&&(m=Q,r.substr(Q,2)===Xl?(b=Xl,Q+=2):(b=t,I===0&&Be(Wp)),b!==t&&(Re=m,b=zp()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Be(ut)),b!==t?(Vp.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Xp)),F!==t?(Re=m,b=_p(),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===G?(b=G,Q+=2):(b=t,I===0&&Be(yt)),b!==t&&(Re=m,b=wA()),m=b,m===t&&(m=Q,r.substr(Q,2)===Wi?(b=Wi,Q+=2):(b=t,I===0&&Be(_l)),b!==t&&(Re=m,b=We()),m=b,m===t&&(m=Q,r.substr(Q,2)===da?(b=da,Q+=2):(b=t,I===0&&Be(Lg)),b!==t&&(Re=m,b=lI()),m=b,m===t&&(m=Q,r.substr(Q,2)===Zp?(b=Zp,Q+=2):(b=t,I===0&&Be(cI)),b!==t&&(Re=m,b=ar()),m=b,m===t&&(m=Q,r.substr(Q,2)===Fn?(b=Fn,Q+=2):(b=t,I===0&&Be(Zl)),b!==t&&(Re=m,b=$p()),m=b,m===t&&(m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Be(ut)),b!==t?(Ms.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(Ca)),F!==t?(Re=m,b=ln(F),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=sfe()))))))))),m}function sfe(){var m,b,F,U,ce,be,ft,Bt,Vr,Ci,rs,HS;return m=Q,r.charCodeAt(Q)===92?(b=es,Q++):(b=t,I===0&&Be(ut)),b!==t?(F=OS(),F!==t?(Re=m,b=cn(F),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===De?(b=De,Q+=2):(b=t,I===0&&Be(Tg)),b!==t?(F=Q,U=Q,ce=OS(),ce!==t?(be=Tn(),be!==t?(ce=[ce,be],U=ce):(Q=U,U=t)):(Q=U,U=t),U===t&&(U=OS()),U!==t?F=r.substring(F,Q):F=U,F!==t?(Re=m,b=cn(F),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===$l?(b=$l,Q+=2):(b=t,I===0&&Be(Ks)),b!==t?(F=Q,U=Q,ce=Tn(),ce!==t?(be=Tn(),be!==t?(ft=Tn(),ft!==t?(Bt=Tn(),Bt!==t?(ce=[ce,be,ft,Bt],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?F=r.substring(F,Q):F=U,F!==t?(Re=m,b=cn(F),m=b):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===ec?(b=ec,Q+=2):(b=t,I===0&&Be(BA)),b!==t?(F=Q,U=Q,ce=Tn(),ce!==t?(be=Tn(),be!==t?(ft=Tn(),ft!==t?(Bt=Tn(),Bt!==t?(Vr=Tn(),Vr!==t?(Ci=Tn(),Ci!==t?(rs=Tn(),rs!==t?(HS=Tn(),HS!==t?(ce=[ce,be,ft,Bt,Vr,Ci,rs,HS],U=ce):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t)):(Q=U,U=t),U!==t?F=r.substring(F,Q):F=U,F!==t?(Re=m,b=Og(F),m=b):(Q=m,m=t)):(Q=m,m=t)))),m}function OS(){var m;return Mg.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Be(ma)),m}function Tn(){var m;return Ea.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Be($e)),m}function ofe(){var m,b,F,U,ce;if(m=Q,b=[],F=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Be(ut)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t),F===t&&(F=Q,U=Q,I++,ce=k1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t)),F!==t)for(;F!==t;)b.push(F),F=Q,r.charCodeAt(Q)===92?(U=es,Q++):(U=t,I===0&&Be(ut)),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t),F===t&&(F=Q,U=Q,I++,ce=k1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t));else b=t;return b!==t&&(Re=m,b=kn(b)),m=b,m}function MS(){var m,b,F,U,ce,be;if(m=Q,r.charCodeAt(Q)===45?(b=QA,Q++):(b=t,I===0&&Be(tc)),b===t&&(r.charCodeAt(Q)===43?(b=Us,Q++):(b=t,I===0&&Be(rc))),b===t&&(b=null),b!==t){if(F=[],Ge.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Be(ie)),U!==t)for(;U!==t;)F.push(U),Ge.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Be(ie));else F=t;if(F!==t)if(r.charCodeAt(Q)===46?(U=uI,Q++):(U=t,I===0&&Be(ed)),U!==t){if(ce=[],Ge.test(r.charAt(Q))?(be=r.charAt(Q),Q++):(be=t,I===0&&Be(ie)),be!==t)for(;be!==t;)ce.push(be),Ge.test(r.charAt(Q))?(be=r.charAt(Q),Q++):(be=t,I===0&&Be(ie));else ce=t;ce!==t?(Re=m,b=Kg(b,F,ce),m=b):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;if(m===t){if(m=Q,r.charCodeAt(Q)===45?(b=QA,Q++):(b=t,I===0&&Be(tc)),b===t&&(r.charCodeAt(Q)===43?(b=Us,Q++):(b=t,I===0&&Be(rc))),b===t&&(b=null),b!==t){if(F=[],Ge.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Be(ie)),U!==t)for(;U!==t;)F.push(U),Ge.test(r.charAt(Q))?(U=r.charAt(Q),Q++):(U=t,I===0&&Be(ie));else F=t;F!==t?(Re=m,b=td(b,F),m=b):(Q=m,m=t)}else Q=m,m=t;if(m===t&&(m=Q,b=US(),b!==t&&(Re=m,b=gI(b)),m=b,m===t&&(m=Q,b=nc(),b!==t&&(Re=m,b=ic(b)),m=b,m===t)))if(m=Q,r.charCodeAt(Q)===40?(b=ge,Q++):(b=t,I===0&&Be(_)),b!==t){for(F=[],U=Me();U!==t;)F.push(U),U=Me();if(F!==t)if(U=v1(),U!==t){for(ce=[],be=Me();be!==t;)ce.push(be),be=Me();ce!==t?(r.charCodeAt(Q)===41?(be=T,Q++):(be=t,I===0&&Be(N)),be!==t?(Re=m,b=fI(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t}return m}function KS(){var m,b,F,U,ce,be,ft,Bt;if(m=Q,b=MS(),b!==t){for(F=[],U=Q,ce=[],be=Me();be!==t;)ce.push(be),be=Me();if(ce!==t)if(r.charCodeAt(Q)===42?(be=Ug,Q++):(be=t,I===0&&Be(bA)),be===t&&(r.charCodeAt(Q)===47?(be=Fr,Q++):(be=t,I===0&&Be(hI))),be!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=MS(),Bt!==t?(Re=U,ce=Hs(b,be,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(F.push(U),U=Q,ce=[],be=Me();be!==t;)ce.push(be),be=Me();if(ce!==t)if(r.charCodeAt(Q)===42?(be=Ug,Q++):(be=t,I===0&&Be(bA)),be===t&&(r.charCodeAt(Q)===47?(be=Fr,Q++):(be=t,I===0&&Be(hI))),be!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=MS(),Bt!==t?(Re=U,ce=Hs(b,be,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}F!==t?(Re=m,b=Gs(b,F),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function v1(){var m,b,F,U,ce,be,ft,Bt;if(m=Q,b=KS(),b!==t){for(F=[],U=Q,ce=[],be=Me();be!==t;)ce.push(be),be=Me();if(ce!==t)if(r.charCodeAt(Q)===43?(be=Us,Q++):(be=t,I===0&&Be(rc)),be===t&&(r.charCodeAt(Q)===45?(be=QA,Q++):(be=t,I===0&&Be(tc))),be!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Re=U,ce=Hg(b,be,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t;for(;U!==t;){for(F.push(U),U=Q,ce=[],be=Me();be!==t;)ce.push(be),be=Me();if(ce!==t)if(r.charCodeAt(Q)===43?(be=Us,Q++):(be=t,I===0&&Be(rc)),be===t&&(r.charCodeAt(Q)===45?(be=QA,Q++):(be=t,I===0&&Be(tc))),be!==t){for(ft=[],Bt=Me();Bt!==t;)ft.push(Bt),Bt=Me();ft!==t?(Bt=KS(),Bt!==t?(Re=U,ce=Hg(b,be,Bt),U=ce):(Q=U,U=t)):(Q=U,U=t)}else Q=U,U=t;else Q=U,U=t}F!==t?(Re=m,b=Gs(b,F),m=b):(Q=m,m=t)}else Q=m,m=t;return m}function x1(){var m,b,F,U,ce,be;if(m=Q,r.substr(Q,3)===SA?(b=SA,Q+=3):(b=t,I===0&&Be(R)),b!==t){for(F=[],U=Me();U!==t;)F.push(U),U=Me();if(F!==t)if(U=v1(),U!==t){for(ce=[],be=Me();be!==t;)ce.push(be),be=Me();ce!==t?(r.substr(Q,2)===q?(be=q,Q+=2):(be=t,I===0&&Be(pe)),be!==t?(Re=m,b=Ne(U),m=b):(Q=m,m=t)):(Q=m,m=t)}else Q=m,m=t;else Q=m,m=t}else Q=m,m=t;return m}function P1(){var m,b,F,U;return m=Q,r.substr(Q,2)===xe?(b=xe,Q+=2):(b=t,I===0&&Be(qe)),b!==t?(F=Ur(),F!==t?(r.charCodeAt(Q)===41?(U=T,Q++):(U=t,I===0&&Be(N)),U!==t?(Re=m,b=dt(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m}function US(){var m,b,F,U,ce,be;return m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Be(Nn)),b!==t?(F=nc(),F!==t?(r.substr(Q,2)===bS?(U=bS,Q+=2):(U=t,I===0&&Be(s1)),U!==t?(ce=E1(),ce!==t?(r.charCodeAt(Q)===125?(be=Pe,Q++):(be=t,I===0&&Be(Te)),be!==t?(Re=m,b=o1(F,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Be(Nn)),b!==t?(F=nc(),F!==t?(r.substr(Q,3)===SS?(U=SS,Q+=3):(U=t,I===0&&Be(a1)),U!==t?(Re=m,b=A1(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Be(Nn)),b!==t?(F=nc(),F!==t?(r.substr(Q,2)===vS?(U=vS,Q+=2):(U=t,I===0&&Be(l1)),U!==t?(ce=E1(),ce!==t?(r.charCodeAt(Q)===125?(be=Pe,Q++):(be=t,I===0&&Be(Te)),be!==t?(Re=m,b=c1(F,ce),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Be(Nn)),b!==t?(F=nc(),F!==t?(r.substr(Q,3)===xS?(U=xS,Q+=3):(U=t,I===0&&Be(u1)),U!==t?(Re=m,b=g1(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.substr(Q,2)===Ft?(b=Ft,Q+=2):(b=t,I===0&&Be(Nn)),b!==t?(F=nc(),F!==t?(r.charCodeAt(Q)===125?(U=Pe,Q++):(U=t,I===0&&Be(Te)),U!==t?(Re=m,b=PS(F),m=b):(Q=m,m=t)):(Q=m,m=t)):(Q=m,m=t),m===t&&(m=Q,r.charCodeAt(Q)===36?(b=f1,Q++):(b=t,I===0&&Be(h1)),b!==t?(F=nc(),F!==t?(Re=m,b=PS(F),m=b):(Q=m,m=t)):(Q=m,m=t)))))),m}function afe(){var m,b,F;return m=Q,b=Afe(),b!==t?(Re=Q,F=p1(b),F?F=void 0:F=t,F!==t?(Re=m,b=d1(b),m=b):(Q=m,m=t)):(Q=m,m=t),m}function Afe(){var m,b,F,U,ce;if(m=Q,b=[],F=Q,U=Q,I++,ce=R1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t),F!==t)for(;F!==t;)b.push(F),F=Q,U=Q,I++,ce=R1(),I--,ce===t?U=void 0:(Q=U,U=t),U!==t?(r.length>Q?(ce=r.charAt(Q),Q++):(ce=t,I===0&&Be(wo)),ce!==t?(Re=F,U=ln(ce),F=U):(Q=F,F=t)):(Q=F,F=t);else b=t;return b!==t&&(Re=m,b=kn(b)),m=b,m}function D1(){var m,b,F;if(m=Q,b=[],DS.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(kS)),F!==t)for(;F!==t;)b.push(F),DS.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(kS));else b=t;return b!==t&&(Re=m,b=RS()),m=b,m}function nc(){var m,b,F;if(m=Q,b=[],FS.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(NS)),F!==t)for(;F!==t;)b.push(F),FS.test(r.charAt(Q))?(F=r.charAt(Q),Q++):(F=t,I===0&&Be(NS));else b=t;return b!==t&&(Re=m,b=RS()),m=b,m}function k1(){var m;return C1.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Be(Gg)),m}function R1(){var m;return LS.test(r.charAt(Q))?(m=r.charAt(Q),Q++):(m=t,I===0&&Be(TS)),m}function Me(){var m,b;if(m=[],pI.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Be(dI)),b!==t)for(;b!==t;)m.push(b),pI.test(r.charAt(Q))?(b=r.charAt(Q),Q++):(b=t,I===0&&Be(dI));else m=t;return m}if(k=n(),k!==t&&Q===r.length)return k;throw k!==t&&Q{"use strict";function Ahe(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function gc(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,gc)}Ahe(gc,Error);gc.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;gH&&(H=v,j=[]),j.push(ie))}function Te(ie,Y){return new gc(ie,null,null,Y)}function se(ie,Y,he){return new gc(gc.buildMessage(ie,Y),ie,Y,he)}function Ae(){var ie,Y,he,re;return ie=v,Y=Qe(),Y!==t?(r.charCodeAt(v)===47?(he=s,v++):(he=t,$===0&&Pe(o)),he!==t?(re=Qe(),re!==t?(D=ie,Y=a(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=Qe(),Y!==t&&(D=ie,Y=l(Y)),ie=Y),ie}function Qe(){var ie,Y,he,re;return ie=v,Y=fe(),Y!==t?(r.charCodeAt(v)===64?(he=c,v++):(he=t,$===0&&Pe(u)),he!==t?(re=Ge(),re!==t?(D=ie,Y=g(Y,re),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=fe(),Y!==t&&(D=ie,Y=f(Y)),ie=Y),ie}function fe(){var ie,Y,he,re,me;return ie=v,r.charCodeAt(v)===64?(Y=c,v++):(Y=t,$===0&&Pe(u)),Y!==t?(he=le(),he!==t?(r.charCodeAt(v)===47?(re=s,v++):(re=t,$===0&&Pe(o)),re!==t?(me=le(),me!==t?(D=ie,Y=h(),ie=Y):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t)):(v=ie,ie=t),ie===t&&(ie=v,Y=le(),Y!==t&&(D=ie,Y=h()),ie=Y),ie}function le(){var ie,Y,he;if(ie=v,Y=[],p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C)),he!==t)for(;he!==t;)Y.push(he),p.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(C));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}function Ge(){var ie,Y,he;if(ie=v,Y=[],w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B)),he!==t)for(;he!==t;)Y.push(he),w.test(r.charAt(v))?(he=r.charAt(v),v++):(he=t,$===0&&Pe(B));else Y=t;return Y!==t&&(D=ie,Y=h()),ie=Y,ie}if(V=n(),V!==t&&v===r.length)return V;throw V!==t&&v{"use strict";function JU(r){return typeof r>"u"||r===null}function che(r){return typeof r=="object"&&r!==null}function uhe(r){return Array.isArray(r)?r:JU(r)?[]:[r]}function ghe(r,e){var t,i,n,s;if(e)for(s=Object.keys(e),t=0,i=s.length;t{"use strict";function dd(r,e){Error.call(this),this.name="YAMLException",this.reason=r,this.mark=e,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}dd.prototype=Object.create(Error.prototype);dd.prototype.constructor=dd;dd.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t};WU.exports=dd});var XU=y((LZe,VU)=>{"use strict";var zU=hc();function Iv(r,e,t,i,n){this.name=r,this.buffer=e,this.position=t,this.line=i,this.column=n}Iv.prototype.getSnippet=function(e,t){var i,n,s,o,a;if(!this.buffer)return null;for(e=e||4,t=t||75,i="",n=this.position;n>0&&`\0\r -\x85\u2028\u2029`.indexOf(this.buffer.charAt(n-1))===-1;)if(n-=1,this.position-n>t/2-1){i=" ... ",n+=5;break}for(s="",o=this.position;ot/2-1){s=" ... ",o-=5;break}return a=this.buffer.slice(n,o),zU.repeat(" ",e)+i+a+s+` -`+zU.repeat(" ",e+this.position-n+i.length)+"^"};Iv.prototype.toString=function(e){var t,i="";return this.name&&(i+='in "'+this.name+'" '),i+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(i+=`: -`+t)),i};VU.exports=Iv});var Ai=y((TZe,ZU)=>{"use strict";var _U=ef(),phe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],dhe=["scalar","sequence","mapping"];function Che(r){var e={};return r!==null&&Object.keys(r).forEach(function(t){r[t].forEach(function(i){e[String(i)]=t})}),e}function mhe(r,e){if(e=e||{},Object.keys(e).forEach(function(t){if(phe.indexOf(t)===-1)throw new _U('Unknown option "'+t+'" is met in definition of "'+r+'" YAML type.')}),this.tag=r,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.defaultStyle=e.defaultStyle||null,this.styleAliases=Che(e.styleAliases||null),dhe.indexOf(this.kind)===-1)throw new _U('Unknown kind "'+this.kind+'" is specified for "'+r+'" YAML type.')}ZU.exports=mhe});var pc=y((OZe,e2)=>{"use strict";var $U=hc(),GI=ef(),Ehe=Ai();function yv(r,e,t){var i=[];return r.include.forEach(function(n){t=yv(n,e,t)}),r[e].forEach(function(n){t.forEach(function(s,o){s.tag===n.tag&&s.kind===n.kind&&i.push(o)}),t.push(n)}),t.filter(function(n,s){return i.indexOf(s)===-1})}function Ihe(){var r={scalar:{},sequence:{},mapping:{},fallback:{}},e,t;function i(n){r[n.kind][n.tag]=r.fallback[n.tag]=n}for(e=0,t=arguments.length;e{"use strict";var yhe=Ai();t2.exports=new yhe("tag:yaml.org,2002:str",{kind:"scalar",construct:function(r){return r!==null?r:""}})});var n2=y((KZe,i2)=>{"use strict";var whe=Ai();i2.exports=new whe("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(r){return r!==null?r:[]}})});var o2=y((UZe,s2)=>{"use strict";var Bhe=Ai();s2.exports=new Bhe("tag:yaml.org,2002:map",{kind:"mapping",construct:function(r){return r!==null?r:{}}})});var YI=y((HZe,a2)=>{"use strict";var Qhe=pc();a2.exports=new Qhe({explicit:[r2(),n2(),o2()]})});var l2=y((GZe,A2)=>{"use strict";var bhe=Ai();function She(r){if(r===null)return!0;var e=r.length;return e===1&&r==="~"||e===4&&(r==="null"||r==="Null"||r==="NULL")}function vhe(){return null}function xhe(r){return r===null}A2.exports=new bhe("tag:yaml.org,2002:null",{kind:"scalar",resolve:She,construct:vhe,predicate:xhe,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})});var u2=y((YZe,c2)=>{"use strict";var Phe=Ai();function Dhe(r){if(r===null)return!1;var e=r.length;return e===4&&(r==="true"||r==="True"||r==="TRUE")||e===5&&(r==="false"||r==="False"||r==="FALSE")}function khe(r){return r==="true"||r==="True"||r==="TRUE"}function Rhe(r){return Object.prototype.toString.call(r)==="[object Boolean]"}c2.exports=new Phe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Dhe,construct:khe,predicate:Rhe,represent:{lowercase:function(r){return r?"true":"false"},uppercase:function(r){return r?"TRUE":"FALSE"},camelcase:function(r){return r?"True":"False"}},defaultStyle:"lowercase"})});var f2=y((jZe,g2)=>{"use strict";var Fhe=hc(),Nhe=Ai();function Lhe(r){return 48<=r&&r<=57||65<=r&&r<=70||97<=r&&r<=102}function The(r){return 48<=r&&r<=55}function Ohe(r){return 48<=r&&r<=57}function Mhe(r){if(r===null)return!1;var e=r.length,t=0,i=!1,n;if(!e)return!1;if(n=r[t],(n==="-"||n==="+")&&(n=r[++t]),n==="0"){if(t+1===e)return!0;if(n=r[++t],n==="b"){for(t++;t=0?"0b"+r.toString(2):"-0b"+r.toString(2).slice(1)},octal:function(r){return r>=0?"0"+r.toString(8):"-0"+r.toString(8).slice(1)},decimal:function(r){return r.toString(10)},hexadecimal:function(r){return r>=0?"0x"+r.toString(16).toUpperCase():"-0x"+r.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})});var d2=y((qZe,p2)=>{"use strict";var h2=hc(),Hhe=Ai(),Ghe=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Yhe(r){return!(r===null||!Ghe.test(r)||r[r.length-1]==="_")}function jhe(r){var e,t,i,n;return e=r.replace(/_/g,"").toLowerCase(),t=e[0]==="-"?-1:1,n=[],"+-".indexOf(e[0])>=0&&(e=e.slice(1)),e===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(s){n.unshift(parseFloat(s,10))}),e=0,i=1,n.forEach(function(s){e+=s*i,i*=60}),t*e):t*parseFloat(e,10)}var qhe=/^[-+]?[0-9]+e/;function Jhe(r,e){var t;if(isNaN(r))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===r)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===r)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h2.isNegativeZero(r))return"-0.0";return t=r.toString(10),qhe.test(t)?t.replace("e",".e"):t}function Whe(r){return Object.prototype.toString.call(r)==="[object Number]"&&(r%1!==0||h2.isNegativeZero(r))}p2.exports=new Hhe("tag:yaml.org,2002:float",{kind:"scalar",resolve:Yhe,construct:jhe,predicate:Whe,represent:Jhe,defaultStyle:"lowercase"})});var wv=y((JZe,C2)=>{"use strict";var zhe=pc();C2.exports=new zhe({include:[YI()],implicit:[l2(),u2(),f2(),d2()]})});var Bv=y((WZe,m2)=>{"use strict";var Vhe=pc();m2.exports=new Vhe({include:[wv()]})});var w2=y((zZe,y2)=>{"use strict";var Xhe=Ai(),E2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),I2=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function _he(r){return r===null?!1:E2.exec(r)!==null||I2.exec(r)!==null}function Zhe(r){var e,t,i,n,s,o,a,l=0,c=null,u,g,f;if(e=E2.exec(r),e===null&&(e=I2.exec(r)),e===null)throw new Error("Date resolve error");if(t=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(t,i,n));if(s=+e[4],o=+e[5],a=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(u=+e[10],g=+(e[11]||0),c=(u*60+g)*6e4,e[9]==="-"&&(c=-c)),f=new Date(Date.UTC(t,i,n,s,o,a,l)),c&&f.setTime(f.getTime()-c),f}function $he(r){return r.toISOString()}y2.exports=new Xhe("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:_he,construct:Zhe,instanceOf:Date,represent:$he})});var Q2=y((VZe,B2)=>{"use strict";var epe=Ai();function tpe(r){return r==="<<"||r===null}B2.exports=new epe("tag:yaml.org,2002:merge",{kind:"scalar",resolve:tpe})});var v2=y((XZe,S2)=>{"use strict";var dc;try{b2=J,dc=b2("buffer").Buffer}catch{}var b2,rpe=Ai(),Qv=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= -\r`;function ipe(r){if(r===null)return!1;var e,t,i=0,n=r.length,s=Qv;for(t=0;t64)){if(e<0)return!1;i+=6}return i%8===0}function npe(r){var e,t,i=r.replace(/[\r\n=]/g,""),n=i.length,s=Qv,o=0,a=[];for(e=0;e>16&255),a.push(o>>8&255),a.push(o&255)),o=o<<6|s.indexOf(i.charAt(e));return t=n%4*6,t===0?(a.push(o>>16&255),a.push(o>>8&255),a.push(o&255)):t===18?(a.push(o>>10&255),a.push(o>>2&255)):t===12&&a.push(o>>4&255),dc?dc.from?dc.from(a):new dc(a):a}function spe(r){var e="",t=0,i,n,s=r.length,o=Qv;for(i=0;i>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]),t=(t<<8)+r[i];return n=s%3,n===0?(e+=o[t>>18&63],e+=o[t>>12&63],e+=o[t>>6&63],e+=o[t&63]):n===2?(e+=o[t>>10&63],e+=o[t>>4&63],e+=o[t<<2&63],e+=o[64]):n===1&&(e+=o[t>>2&63],e+=o[t<<4&63],e+=o[64],e+=o[64]),e}function ope(r){return dc&&dc.isBuffer(r)}S2.exports=new rpe("tag:yaml.org,2002:binary",{kind:"scalar",resolve:ipe,construct:npe,predicate:ope,represent:spe})});var P2=y((_Ze,x2)=>{"use strict";var ape=Ai(),Ape=Object.prototype.hasOwnProperty,lpe=Object.prototype.toString;function cpe(r){if(r===null)return!0;var e=[],t,i,n,s,o,a=r;for(t=0,i=a.length;t{"use strict";var gpe=Ai(),fpe=Object.prototype.toString;function hpe(r){if(r===null)return!0;var e,t,i,n,s,o=r;for(s=new Array(o.length),e=0,t=o.length;e{"use strict";var dpe=Ai(),Cpe=Object.prototype.hasOwnProperty;function mpe(r){if(r===null)return!0;var e,t=r;for(e in t)if(Cpe.call(t,e)&&t[e]!==null)return!1;return!0}function Epe(r){return r!==null?r:{}}R2.exports=new dpe("tag:yaml.org,2002:set",{kind:"mapping",resolve:mpe,construct:Epe})});var rf=y((e$e,N2)=>{"use strict";var Ipe=pc();N2.exports=new Ipe({include:[Bv()],implicit:[w2(),Q2()],explicit:[v2(),P2(),k2(),F2()]})});var T2=y((t$e,L2)=>{"use strict";var ype=Ai();function wpe(){return!0}function Bpe(){}function Qpe(){return""}function bpe(r){return typeof r>"u"}L2.exports=new ype("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:wpe,construct:Bpe,predicate:bpe,represent:Qpe})});var M2=y((r$e,O2)=>{"use strict";var Spe=Ai();function vpe(r){if(r===null||r.length===0)return!1;var e=r,t=/\/([gim]*)$/.exec(r),i="";return!(e[0]==="/"&&(t&&(i=t[1]),i.length>3||e[e.length-i.length-1]!=="/"))}function xpe(r){var e=r,t=/\/([gim]*)$/.exec(r),i="";return e[0]==="/"&&(t&&(i=t[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Ppe(r){var e="/"+r.source+"/";return r.global&&(e+="g"),r.multiline&&(e+="m"),r.ignoreCase&&(e+="i"),e}function Dpe(r){return Object.prototype.toString.call(r)==="[object RegExp]"}O2.exports=new Spe("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:vpe,construct:xpe,predicate:Dpe,represent:Ppe})});var H2=y((i$e,U2)=>{"use strict";var jI;try{K2=J,jI=K2("esprima")}catch{typeof window<"u"&&(jI=window.esprima)}var K2,kpe=Ai();function Rpe(r){if(r===null)return!1;try{var e="("+r+")",t=jI.parse(e,{range:!0});return!(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")}catch{return!1}}function Fpe(r){var e="("+r+")",t=jI.parse(e,{range:!0}),i=[],n;if(t.type!=="Program"||t.body.length!==1||t.body[0].type!=="ExpressionStatement"||t.body[0].expression.type!=="ArrowFunctionExpression"&&t.body[0].expression.type!=="FunctionExpression")throw new Error("Failed to resolve function");return t.body[0].expression.params.forEach(function(s){i.push(s.name)}),n=t.body[0].expression.body.range,t.body[0].expression.body.type==="BlockStatement"?new Function(i,e.slice(n[0]+1,n[1]-1)):new Function(i,"return "+e.slice(n[0],n[1]))}function Npe(r){return r.toString()}function Lpe(r){return Object.prototype.toString.call(r)==="[object Function]"}U2.exports=new kpe("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Rpe,construct:Fpe,predicate:Lpe,represent:Npe})});var Cd=y((n$e,Y2)=>{"use strict";var G2=pc();Y2.exports=G2.DEFAULT=new G2({include:[rf()],explicit:[T2(),M2(),H2()]})});var AH=y((s$e,md)=>{"use strict";var Qa=hc(),X2=ef(),Tpe=XU(),_2=rf(),Ope=Cd(),FA=Object.prototype.hasOwnProperty,qI=1,Z2=2,$2=3,JI=4,bv=1,Mpe=2,j2=3,Kpe=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,Upe=/[\x85\u2028\u2029]/,Hpe=/[,\[\]\{\}]/,eH=/^(?:!|!!|![a-z\-]+!)$/i,tH=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function q2(r){return Object.prototype.toString.call(r)}function So(r){return r===10||r===13}function mc(r){return r===9||r===32}function fn(r){return r===9||r===32||r===10||r===13}function nf(r){return r===44||r===91||r===93||r===123||r===125}function Gpe(r){var e;return 48<=r&&r<=57?r-48:(e=r|32,97<=e&&e<=102?e-97+10:-1)}function Ype(r){return r===120?2:r===117?4:r===85?8:0}function jpe(r){return 48<=r&&r<=57?r-48:-1}function J2(r){return r===48?"\0":r===97?"\x07":r===98?"\b":r===116||r===9?" ":r===110?` -`:r===118?"\v":r===102?"\f":r===114?"\r":r===101?"\x1B":r===32?" ":r===34?'"':r===47?"/":r===92?"\\":r===78?"\x85":r===95?"\xA0":r===76?"\u2028":r===80?"\u2029":""}function qpe(r){return r<=65535?String.fromCharCode(r):String.fromCharCode((r-65536>>10)+55296,(r-65536&1023)+56320)}var rH=new Array(256),iH=new Array(256);for(Cc=0;Cc<256;Cc++)rH[Cc]=J2(Cc)?1:0,iH[Cc]=J2(Cc);var Cc;function Jpe(r,e){this.input=r,this.filename=e.filename||null,this.schema=e.schema||Ope,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=r.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function nH(r,e){return new X2(e,new Tpe(r.filename,r.input,r.position,r.line,r.position-r.lineStart))}function gt(r,e){throw nH(r,e)}function WI(r,e){r.onWarning&&r.onWarning.call(null,nH(r,e))}var W2={YAML:function(e,t,i){var n,s,o;e.version!==null&>(e,"duplication of %YAML directive"),i.length!==1&>(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&>(e,"ill-formed argument of the YAML directive"),s=parseInt(n[1],10),o=parseInt(n[2],10),s!==1&>(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=o<2,o!==1&&o!==2&&WI(e,"unsupported YAML version of the document")},TAG:function(e,t,i){var n,s;i.length!==2&>(e,"TAG directive accepts exactly two arguments"),n=i[0],s=i[1],eH.test(n)||gt(e,"ill-formed tag handle (first argument) of the TAG directive"),FA.call(e.tagMap,n)&>(e,'there is a previously declared suffix for "'+n+'" tag handle'),tH.test(s)||gt(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[n]=s}};function RA(r,e,t,i){var n,s,o,a;if(e1&&(r.result+=Qa.repeat(` -`,e-1))}function Wpe(r,e,t){var i,n,s,o,a,l,c,u,g=r.kind,f=r.result,h;if(h=r.input.charCodeAt(r.position),fn(h)||nf(h)||h===35||h===38||h===42||h===33||h===124||h===62||h===39||h===34||h===37||h===64||h===96||(h===63||h===45)&&(n=r.input.charCodeAt(r.position+1),fn(n)||t&&nf(n)))return!1;for(r.kind="scalar",r.result="",s=o=r.position,a=!1;h!==0;){if(h===58){if(n=r.input.charCodeAt(r.position+1),fn(n)||t&&nf(n))break}else if(h===35){if(i=r.input.charCodeAt(r.position-1),fn(i))break}else{if(r.position===r.lineStart&&zI(r)||t&&nf(h))break;if(So(h))if(l=r.line,c=r.lineStart,u=r.lineIndent,_r(r,!1,-1),r.lineIndent>=e){a=!0,h=r.input.charCodeAt(r.position);continue}else{r.position=o,r.line=l,r.lineStart=c,r.lineIndent=u;break}}a&&(RA(r,s,o,!1),vv(r,r.line-l),s=o=r.position,a=!1),mc(h)||(o=r.position+1),h=r.input.charCodeAt(++r.position)}return RA(r,s,o,!1),r.result?!0:(r.kind=g,r.result=f,!1)}function zpe(r,e){var t,i,n;if(t=r.input.charCodeAt(r.position),t!==39)return!1;for(r.kind="scalar",r.result="",r.position++,i=n=r.position;(t=r.input.charCodeAt(r.position))!==0;)if(t===39)if(RA(r,i,r.position,!0),t=r.input.charCodeAt(++r.position),t===39)i=r.position,r.position++,n=r.position;else return!0;else So(t)?(RA(r,i,n,!0),vv(r,_r(r,!1,e)),i=n=r.position):r.position===r.lineStart&&zI(r)?gt(r,"unexpected end of the document within a single quoted scalar"):(r.position++,n=r.position);gt(r,"unexpected end of the stream within a single quoted scalar")}function Vpe(r,e){var t,i,n,s,o,a;if(a=r.input.charCodeAt(r.position),a!==34)return!1;for(r.kind="scalar",r.result="",r.position++,t=i=r.position;(a=r.input.charCodeAt(r.position))!==0;){if(a===34)return RA(r,t,r.position,!0),r.position++,!0;if(a===92){if(RA(r,t,r.position,!0),a=r.input.charCodeAt(++r.position),So(a))_r(r,!1,e);else if(a<256&&rH[a])r.result+=iH[a],r.position++;else if((o=Ype(a))>0){for(n=o,s=0;n>0;n--)a=r.input.charCodeAt(++r.position),(o=Gpe(a))>=0?s=(s<<4)+o:gt(r,"expected hexadecimal character");r.result+=qpe(s),r.position++}else gt(r,"unknown escape sequence");t=i=r.position}else So(a)?(RA(r,t,i,!0),vv(r,_r(r,!1,e)),t=i=r.position):r.position===r.lineStart&&zI(r)?gt(r,"unexpected end of the document within a double quoted scalar"):(r.position++,i=r.position)}gt(r,"unexpected end of the stream within a double quoted scalar")}function Xpe(r,e){var t=!0,i,n=r.tag,s,o=r.anchor,a,l,c,u,g,f={},h,p,C,w;if(w=r.input.charCodeAt(r.position),w===91)l=93,g=!1,s=[];else if(w===123)l=125,g=!0,s={};else return!1;for(r.anchor!==null&&(r.anchorMap[r.anchor]=s),w=r.input.charCodeAt(++r.position);w!==0;){if(_r(r,!0,e),w=r.input.charCodeAt(r.position),w===l)return r.position++,r.tag=n,r.anchor=o,r.kind=g?"mapping":"sequence",r.result=s,!0;t||gt(r,"missed comma between flow collection entries"),p=h=C=null,c=u=!1,w===63&&(a=r.input.charCodeAt(r.position+1),fn(a)&&(c=u=!0,r.position++,_r(r,!0,e))),i=r.line,of(r,e,qI,!1,!0),p=r.tag,h=r.result,_r(r,!0,e),w=r.input.charCodeAt(r.position),(u||r.line===i)&&w===58&&(c=!0,w=r.input.charCodeAt(++r.position),_r(r,!0,e),of(r,e,qI,!1,!0),C=r.result),g?sf(r,s,f,p,h,C):c?s.push(sf(r,null,f,p,h,C)):s.push(h),_r(r,!0,e),w=r.input.charCodeAt(r.position),w===44?(t=!0,w=r.input.charCodeAt(++r.position)):t=!1}gt(r,"unexpected end of the stream within a flow collection")}function _pe(r,e){var t,i,n=bv,s=!1,o=!1,a=e,l=0,c=!1,u,g;if(g=r.input.charCodeAt(r.position),g===124)i=!1;else if(g===62)i=!0;else return!1;for(r.kind="scalar",r.result="";g!==0;)if(g=r.input.charCodeAt(++r.position),g===43||g===45)bv===n?n=g===43?j2:Mpe:gt(r,"repeat of a chomping mode identifier");else if((u=jpe(g))>=0)u===0?gt(r,"bad explicit indentation width of a block scalar; it cannot be less than one"):o?gt(r,"repeat of an indentation width identifier"):(a=e+u-1,o=!0);else break;if(mc(g)){do g=r.input.charCodeAt(++r.position);while(mc(g));if(g===35)do g=r.input.charCodeAt(++r.position);while(!So(g)&&g!==0)}for(;g!==0;){for(Sv(r),r.lineIndent=0,g=r.input.charCodeAt(r.position);(!o||r.lineIndenta&&(a=r.lineIndent),So(g)){l++;continue}if(r.lineIndente)&&l!==0)gt(r,"bad indentation of a sequence entry");else if(r.lineIndente)&&(of(r,e,JI,!0,n)&&(p?f=r.result:h=r.result),p||(sf(r,c,u,g,f,h,s,o),g=f=h=null),_r(r,!0,-1),w=r.input.charCodeAt(r.position)),r.lineIndent>e&&w!==0)gt(r,"bad indentation of a mapping entry");else if(r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndente?l=1:r.lineIndent===e?l=0:r.lineIndent tag; it should be "scalar", not "'+r.kind+'"'),g=0,f=r.implicitTypes.length;g tag; it should be "'+h.kind+'", not "'+r.kind+'"'),h.resolve(r.result)?(r.result=h.construct(r.result),r.anchor!==null&&(r.anchorMap[r.anchor]=r.result)):gt(r,"cannot resolve a node with !<"+r.tag+"> explicit tag")):gt(r,"unknown tag !<"+r.tag+">");return r.listener!==null&&r.listener("close",r),r.tag!==null||r.anchor!==null||u}function rde(r){var e=r.position,t,i,n,s=!1,o;for(r.version=null,r.checkLineBreaks=r.legacy,r.tagMap={},r.anchorMap={};(o=r.input.charCodeAt(r.position))!==0&&(_r(r,!0,-1),o=r.input.charCodeAt(r.position),!(r.lineIndent>0||o!==37));){for(s=!0,o=r.input.charCodeAt(++r.position),t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);for(i=r.input.slice(t,r.position),n=[],i.length<1&>(r,"directive name must not be less than one character in length");o!==0;){for(;mc(o);)o=r.input.charCodeAt(++r.position);if(o===35){do o=r.input.charCodeAt(++r.position);while(o!==0&&!So(o));break}if(So(o))break;for(t=r.position;o!==0&&!fn(o);)o=r.input.charCodeAt(++r.position);n.push(r.input.slice(t,r.position))}o!==0&&Sv(r),FA.call(W2,i)?W2[i](r,i,n):WI(r,'unknown document directive "'+i+'"')}if(_r(r,!0,-1),r.lineIndent===0&&r.input.charCodeAt(r.position)===45&&r.input.charCodeAt(r.position+1)===45&&r.input.charCodeAt(r.position+2)===45?(r.position+=3,_r(r,!0,-1)):s&>(r,"directives end mark is expected"),of(r,r.lineIndent-1,JI,!1,!0),_r(r,!0,-1),r.checkLineBreaks&&Upe.test(r.input.slice(e,r.position))&&WI(r,"non-ASCII line breaks are interpreted as content"),r.documents.push(r.result),r.position===r.lineStart&&zI(r)){r.input.charCodeAt(r.position)===46&&(r.position+=3,_r(r,!0,-1));return}if(r.position"u"&&(t=e,e=null);var i=sH(r,t);if(typeof e!="function")return i;for(var n=0,s=i.length;n"u"&&(t=e,e=null),oH(r,e,Qa.extend({schema:_2},t))}function nde(r,e){return aH(r,Qa.extend({schema:_2},e))}md.exports.loadAll=oH;md.exports.load=aH;md.exports.safeLoadAll=ide;md.exports.safeLoad=nde});var kH=y((o$e,kv)=>{"use strict";var Id=hc(),yd=ef(),sde=Cd(),ode=rf(),dH=Object.prototype.toString,CH=Object.prototype.hasOwnProperty,ade=9,Ed=10,Ade=13,lde=32,cde=33,ude=34,mH=35,gde=37,fde=38,hde=39,pde=42,EH=44,dde=45,IH=58,Cde=61,mde=62,Ede=63,Ide=64,yH=91,wH=93,yde=96,BH=123,wde=124,QH=125,Li={};Li[0]="\\0";Li[7]="\\a";Li[8]="\\b";Li[9]="\\t";Li[10]="\\n";Li[11]="\\v";Li[12]="\\f";Li[13]="\\r";Li[27]="\\e";Li[34]='\\"';Li[92]="\\\\";Li[133]="\\N";Li[160]="\\_";Li[8232]="\\L";Li[8233]="\\P";var Bde=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function Qde(r,e){var t,i,n,s,o,a,l;if(e===null)return{};for(t={},i=Object.keys(e),n=0,s=i.length;n0?r.charCodeAt(s-1):null,f=f&&uH(o,a)}else{for(s=0;si&&r[g+1]!==" ",g=s);else if(!af(o))return VI;a=s>0?r.charCodeAt(s-1):null,f=f&&uH(o,a)}c=c||u&&s-g-1>i&&r[g+1]!==" "}return!l&&!c?f&&!n(r)?SH:vH:t>9&&bH(r)?VI:c?PH:xH}function Dde(r,e,t,i){r.dump=function(){if(e.length===0)return"''";if(!r.noCompatMode&&Bde.indexOf(e)!==-1)return"'"+e+"'";var n=r.indent*Math.max(1,t),s=r.lineWidth===-1?-1:Math.max(Math.min(r.lineWidth,40),r.lineWidth-n),o=i||r.flowLevel>-1&&t>=r.flowLevel;function a(l){return Sde(r,l)}switch(Pde(e,o,r.indent,s,a)){case SH:return e;case vH:return"'"+e.replace(/'/g,"''")+"'";case xH:return"|"+gH(e,r.indent)+fH(cH(e,n));case PH:return">"+gH(e,r.indent)+fH(cH(kde(e,s),n));case VI:return'"'+Rde(e,s)+'"';default:throw new yd("impossible error: invalid scalar style")}}()}function gH(r,e){var t=bH(r)?String(e):"",i=r[r.length-1]===` -`,n=i&&(r[r.length-2]===` -`||r===` -`),s=n?"+":i?"":"-";return t+s+` -`}function fH(r){return r[r.length-1]===` -`?r.slice(0,-1):r}function kde(r,e){for(var t=/(\n+)([^\n]*)/g,i=function(){var c=r.indexOf(` -`);return c=c!==-1?c:r.length,t.lastIndex=c,hH(r.slice(0,c),e)}(),n=r[0]===` -`||r[0]===" ",s,o;o=t.exec(r);){var a=o[1],l=o[2];s=l[0]===" ",i+=a+(!n&&!s&&l!==""?` -`:"")+hH(l,e),n=s}return i}function hH(r,e){if(r===""||r[0]===" ")return r;for(var t=/ [^ ]/g,i,n=0,s,o=0,a=0,l="";i=t.exec(r);)a=i.index,a-n>e&&(s=o>n?o:a,l+=` -`+r.slice(n,s),n=s+1),o=a;return l+=` -`,r.length-n>e&&o>n?l+=r.slice(n,o)+` -`+r.slice(o+1):l+=r.slice(n),l.slice(1)}function Rde(r){for(var e="",t,i,n,s=0;s=55296&&t<=56319&&(i=r.charCodeAt(s+1),i>=56320&&i<=57343)){e+=lH((t-55296)*1024+i-56320+65536),s++;continue}n=Li[t],e+=!n&&af(t)?r[s]:n||lH(t)}return e}function Fde(r,e,t){var i="",n=r.tag,s,o;for(s=0,o=t.length;s1024&&(u+="? "),u+=r.dump+(r.condenseFlow?'"':"")+":"+(r.condenseFlow?"":" "),Ec(r,e,c,!1,!1)&&(u+=r.dump,i+=u));r.tag=n,r.dump="{"+i+"}"}function Tde(r,e,t,i){var n="",s=r.tag,o=Object.keys(t),a,l,c,u,g,f;if(r.sortKeys===!0)o.sort();else if(typeof r.sortKeys=="function")o.sort(r.sortKeys);else if(r.sortKeys)throw new yd("sortKeys must be a boolean or a function");for(a=0,l=o.length;a1024,g&&(r.dump&&Ed===r.dump.charCodeAt(0)?f+="?":f+="? "),f+=r.dump,g&&(f+=xv(r,e)),Ec(r,e+1,u,!0,g)&&(r.dump&&Ed===r.dump.charCodeAt(0)?f+=":":f+=": ",f+=r.dump,n+=f));r.tag=s,r.dump=n||"{}"}function pH(r,e,t){var i,n,s,o,a,l;for(n=t?r.explicitTypes:r.implicitTypes,s=0,o=n.length;s tag resolver accepts not "'+l+'" style');r.dump=i}return!0}return!1}function Ec(r,e,t,i,n,s){r.tag=null,r.dump=t,pH(r,t,!1)||pH(r,t,!0);var o=dH.call(r.dump);i&&(i=r.flowLevel<0||r.flowLevel>e);var a=o==="[object Object]"||o==="[object Array]",l,c;if(a&&(l=r.duplicates.indexOf(t),c=l!==-1),(r.tag!==null&&r.tag!=="?"||c||r.indent!==2&&e>0)&&(n=!1),c&&r.usedDuplicates[l])r.dump="*ref_"+l;else{if(a&&c&&!r.usedDuplicates[l]&&(r.usedDuplicates[l]=!0),o==="[object Object]")i&&Object.keys(r.dump).length!==0?(Tde(r,e,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Lde(r,e,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump));else if(o==="[object Array]"){var u=r.noArrayIndent&&e>0?e-1:e;i&&r.dump.length!==0?(Nde(r,u,r.dump,n),c&&(r.dump="&ref_"+l+r.dump)):(Fde(r,u,r.dump),c&&(r.dump="&ref_"+l+" "+r.dump))}else if(o==="[object String]")r.tag!=="?"&&Dde(r,r.dump,e,s);else{if(r.skipInvalid)return!1;throw new yd("unacceptable kind of an object to dump "+o)}r.tag!==null&&r.tag!=="?"&&(r.dump="!<"+r.tag+"> "+r.dump)}return!0}function Ode(r,e){var t=[],i=[],n,s;for(Pv(r,t,i),n=0,s=i.length;n{"use strict";var XI=AH(),RH=kH();function _I(r){return function(){throw new Error("Function "+r+" is deprecated and cannot be used.")}}Lr.exports.Type=Ai();Lr.exports.Schema=pc();Lr.exports.FAILSAFE_SCHEMA=YI();Lr.exports.JSON_SCHEMA=wv();Lr.exports.CORE_SCHEMA=Bv();Lr.exports.DEFAULT_SAFE_SCHEMA=rf();Lr.exports.DEFAULT_FULL_SCHEMA=Cd();Lr.exports.load=XI.load;Lr.exports.loadAll=XI.loadAll;Lr.exports.safeLoad=XI.safeLoad;Lr.exports.safeLoadAll=XI.safeLoadAll;Lr.exports.dump=RH.dump;Lr.exports.safeDump=RH.safeDump;Lr.exports.YAMLException=ef();Lr.exports.MINIMAL_SCHEMA=YI();Lr.exports.SAFE_SCHEMA=rf();Lr.exports.DEFAULT_SCHEMA=Cd();Lr.exports.scan=_I("scan");Lr.exports.parse=_I("parse");Lr.exports.compose=_I("compose");Lr.exports.addConstructor=_I("addConstructor")});var LH=y((A$e,NH)=>{"use strict";var Kde=FH();NH.exports=Kde});var OH=y((l$e,TH)=>{"use strict";function Ude(r,e){function t(){this.constructor=r}t.prototype=e.prototype,r.prototype=new t}function Ic(r,e,t,i){this.message=r,this.expected=e,this.found=t,this.location=i,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,Ic)}Ude(Ic,Error);Ic.buildMessage=function(r,e){var t={literal:function(c){return'"'+n(c.text)+'"'},class:function(c){var u="",g;for(g=0;g0){for(g=1,f=1;g({[Ne]:pe})))},H=function(R){return R},j=function(R){return R},$=Ms("correct indentation"),V=" ",W=ar(" ",!1),Z=function(R){return R.length===SA*Hg},A=function(R){return R.length===(SA+1)*Hg},ae=function(){return SA++,!0},ge=function(){return SA--,!0},_=function(){return Lg()},T=Ms("pseudostring"),N=/^[^\r\n\t ?:,\][{}#&*!|>'"%@`\-]/,ue=Fn(["\r",` -`," "," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),we=/^[^\r\n\t ,\][{}:#"']/,Le=Fn(["\r",` -`," "," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),Pe=function(){return Lg().replace(/^ *| *$/g,"")},Te="--",se=ar("--",!1),Ae=/^[a-zA-Z\/0-9]/,Qe=Fn([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),fe=/^[^\r\n\t :,]/,le=Fn(["\r",` -`," "," ",":",","],!0,!1),Ge="null",ie=ar("null",!1),Y=function(){return null},he="true",re=ar("true",!1),me=function(){return!0},tt="false",Rt=ar("false",!1),It=function(){return!1},Kr=Ms("string"),oi='"',pi=ar('"',!1),pr=function(){return""},di=function(R){return R},ai=function(R){return R.join("")},Os=/^[^"\\\0-\x1F\x7F]/,dr=Fn(['"',"\\",["\0",""],"\x7F"],!0,!1),Bi='\\"',_n=ar('\\"',!1),ha=function(){return'"'},mA="\\\\",Dg=ar("\\\\",!1),Zn=function(){return"\\"},EA="\\/",pa=ar("\\/",!1),jp=function(){return"/"},IA="\\b",yA=ar("\\b",!1),Br=function(){return"\b"},zl="\\f",kg=ar("\\f",!1),Eo=function(){return"\f"},Rg="\\n",qp=ar("\\n",!1),Jp=function(){return` -`},xr="\\r",oe=ar("\\r",!1),Io=function(){return"\r"},kn="\\t",Fg=ar("\\t",!1),Qt=function(){return" "},Vl="\\u",Rn=ar("\\u",!1),$n=function(R,q,pe,Ne){return String.fromCharCode(parseInt(`0x${R}${q}${pe}${Ne}`))},es=/^[0-9a-fA-F]/,ut=Fn([["0","9"],["a","f"],["A","F"]],!1,!1),yo=Ms("blank space"),at=/^[ \t]/,ln=Fn([" "," "],!1,!1),S=Ms("white space"),Tt=/^[ \t\n\r]/,Ng=Fn([" "," ",` -`,"\r"],!1,!1),Xl=`\r -`,Wp=ar(`\r -`,!1),zp=` -`,Vp=ar(` -`,!1),Xp="\r",_p=ar("\r",!1),G=0,yt=0,wA=[{line:1,column:1}],Wi=0,_l=[],We=0,da;if("startRule"in e){if(!(e.startRule in i))throw new Error(`Can't start parsing from rule "`+e.startRule+'".');n=i[e.startRule]}function Lg(){return r.substring(yt,G)}function lI(){return cn(yt,G)}function Zp(R,q){throw q=q!==void 0?q:cn(yt,G),$l([Ms(R)],r.substring(yt,G),q)}function cI(R,q){throw q=q!==void 0?q:cn(yt,G),Tg(R,q)}function ar(R,q){return{type:"literal",text:R,ignoreCase:q}}function Fn(R,q,pe){return{type:"class",parts:R,inverted:q,ignoreCase:pe}}function Zl(){return{type:"any"}}function $p(){return{type:"end"}}function Ms(R){return{type:"other",description:R}}function Ca(R){var q=wA[R],pe;if(q)return q;for(pe=R-1;!wA[pe];)pe--;for(q=wA[pe],q={line:q.line,column:q.column};peWi&&(Wi=G,_l=[]),_l.push(R))}function Tg(R,q){return new Ic(R,null,null,q)}function $l(R,q,pe){return new Ic(Ic.buildMessage(R,q),R,q,pe)}function Ks(){var R;return R=Og(),R}function ec(){var R,q,pe;for(R=G,q=[],pe=BA();pe!==t;)q.push(pe),pe=BA();return q!==t&&(yt=R,q=s(q)),R=q,R}function BA(){var R,q,pe,Ne,xe;return R=G,q=Ea(),q!==t?(r.charCodeAt(G)===45?(pe=o,G++):(pe=t,We===0&&De(a)),pe!==t?(Ne=Fr(),Ne!==t?(xe=ma(),xe!==t?(yt=R,q=l(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R}function Og(){var R,q,pe;for(R=G,q=[],pe=Mg();pe!==t;)q.push(pe),pe=Mg();return q!==t&&(yt=R,q=c(q)),R=q,R}function Mg(){var R,q,pe,Ne,xe,qe,dt,Ft,Nn;if(R=G,q=Fr(),q===t&&(q=null),q!==t){if(pe=G,r.charCodeAt(G)===35?(Ne=u,G++):(Ne=t,We===0&&De(g)),Ne!==t){if(xe=[],qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&De(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t),qe!==t)for(;qe!==t;)xe.push(qe),qe=G,dt=G,We++,Ft=Gs(),We--,Ft===t?dt=void 0:(G=dt,dt=t),dt!==t?(r.length>G?(Ft=r.charAt(G),G++):(Ft=t,We===0&&De(f)),Ft!==t?(dt=[dt,Ft],qe=dt):(G=qe,qe=t)):(G=qe,qe=t);else xe=t;xe!==t?(Ne=[Ne,xe],pe=Ne):(G=pe,pe=t)}else G=pe,pe=t;if(pe===t&&(pe=null),pe!==t){if(Ne=[],xe=Hs(),xe!==t)for(;xe!==t;)Ne.push(xe),xe=Hs();else Ne=t;Ne!==t?(yt=R,q=h(),R=q):(G=R,R=t)}else G=R,R=t}else G=R,R=t;if(R===t&&(R=G,q=Ea(),q!==t?(pe=tc(),pe!==t?(Ne=Fr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&De(C)),xe!==t?(qe=Fr(),qe===t&&(qe=null),qe!==t?(dt=ma(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Ea(),q!==t?(pe=Us(),pe!==t?(Ne=Fr(),Ne===t&&(Ne=null),Ne!==t?(r.charCodeAt(G)===58?(xe=p,G++):(xe=t,We===0&&De(C)),xe!==t?(qe=Fr(),qe===t&&(qe=null),qe!==t?(dt=ma(),dt!==t?(yt=R,q=w(pe,dt),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))){if(R=G,q=Ea(),q!==t)if(pe=Us(),pe!==t)if(Ne=Fr(),Ne!==t)if(xe=uI(),xe!==t){if(qe=[],dt=Hs(),dt!==t)for(;dt!==t;)qe.push(dt),dt=Hs();else qe=t;qe!==t?(yt=R,q=w(pe,xe),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;else G=R,R=t;else G=R,R=t;if(R===t)if(R=G,q=Ea(),q!==t)if(pe=Us(),pe!==t){if(Ne=[],xe=G,qe=Fr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&De(v)),dt!==t?(Ft=Fr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Us(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t),xe!==t)for(;xe!==t;)Ne.push(xe),xe=G,qe=Fr(),qe===t&&(qe=null),qe!==t?(r.charCodeAt(G)===44?(dt=B,G++):(dt=t,We===0&&De(v)),dt!==t?(Ft=Fr(),Ft===t&&(Ft=null),Ft!==t?(Nn=Us(),Nn!==t?(yt=xe,qe=D(pe,Nn),xe=qe):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t)):(G=xe,xe=t);else Ne=t;Ne!==t?(xe=Fr(),xe===t&&(xe=null),xe!==t?(r.charCodeAt(G)===58?(qe=p,G++):(qe=t,We===0&&De(C)),qe!==t?(dt=Fr(),dt===t&&(dt=null),dt!==t?(Ft=ma(),Ft!==t?(yt=R,q=L(pe,Ne,Ft),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)}else G=R,R=t;else G=R,R=t}return R}function ma(){var R,q,pe,Ne,xe,qe,dt;if(R=G,q=G,We++,pe=G,Ne=Gs(),Ne!==t?(xe=$e(),xe!==t?(r.charCodeAt(G)===45?(qe=o,G++):(qe=t,We===0&&De(a)),qe!==t?(dt=Fr(),dt!==t?(Ne=[Ne,xe,qe,dt],pe=Ne):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t)):(G=pe,pe=t),We--,pe!==t?(G=q,q=void 0):q=t,q!==t?(pe=Hs(),pe!==t?(Ne=wo(),Ne!==t?(xe=ec(),xe!==t?(qe=QA(),qe!==t?(yt=R,q=H(xe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,q=Gs(),q!==t?(pe=wo(),pe!==t?(Ne=Og(),Ne!==t?(xe=QA(),xe!==t?(yt=R,q=H(Ne),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t),R===t))if(R=G,q=rc(),q!==t){if(pe=[],Ne=Hs(),Ne!==t)for(;Ne!==t;)pe.push(Ne),Ne=Hs();else pe=t;pe!==t?(yt=R,q=j(q),R=q):(G=R,R=t)}else G=R,R=t;return R}function Ea(){var R,q,pe;for(We++,R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&De(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&De(W));return q!==t?(yt=G,pe=Z(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),We--,R===t&&(q=t,We===0&&De($)),R}function $e(){var R,q,pe;for(R=G,q=[],r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&De(W));pe!==t;)q.push(pe),r.charCodeAt(G)===32?(pe=V,G++):(pe=t,We===0&&De(W));return q!==t?(yt=G,pe=A(q),pe?pe=void 0:pe=t,pe!==t?(q=[q,pe],R=q):(G=R,R=t)):(G=R,R=t),R}function wo(){var R;return yt=G,R=ae(),R?R=void 0:R=t,R}function QA(){var R;return yt=G,R=ge(),R?R=void 0:R=t,R}function tc(){var R;return R=ic(),R===t&&(R=ed()),R}function Us(){var R,q,pe;if(R=ic(),R===t){if(R=G,q=[],pe=Kg(),pe!==t)for(;pe!==t;)q.push(pe),pe=Kg();else q=t;q!==t&&(yt=R,q=_()),R=q}return R}function rc(){var R;return R=td(),R===t&&(R=gI(),R===t&&(R=ic(),R===t&&(R=ed()))),R}function uI(){var R;return R=td(),R===t&&(R=ic(),R===t&&(R=Kg())),R}function ed(){var R,q,pe,Ne,xe,qe;if(We++,R=G,N.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&De(ue)),q!==t){for(pe=[],Ne=G,xe=Fr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&De(Le)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Fr(),xe===t&&(xe=null),xe!==t?(we.test(r.charAt(G))?(qe=r.charAt(G),G++):(qe=t,We===0&&De(Le)),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;return We--,R===t&&(q=t,We===0&&De(T)),R}function Kg(){var R,q,pe,Ne,xe;if(R=G,r.substr(G,2)===Te?(q=Te,G+=2):(q=t,We===0&&De(se)),q===t&&(q=null),q!==t)if(Ae.test(r.charAt(G))?(pe=r.charAt(G),G++):(pe=t,We===0&&De(Qe)),pe!==t){for(Ne=[],fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&De(le));xe!==t;)Ne.push(xe),fe.test(r.charAt(G))?(xe=r.charAt(G),G++):(xe=t,We===0&&De(le));Ne!==t?(yt=R,q=Pe(),R=q):(G=R,R=t)}else G=R,R=t;else G=R,R=t;return R}function td(){var R,q;return R=G,r.substr(G,4)===Ge?(q=Ge,G+=4):(q=t,We===0&&De(ie)),q!==t&&(yt=R,q=Y()),R=q,R}function gI(){var R,q;return R=G,r.substr(G,4)===he?(q=he,G+=4):(q=t,We===0&&De(re)),q!==t&&(yt=R,q=me()),R=q,R===t&&(R=G,r.substr(G,5)===tt?(q=tt,G+=5):(q=t,We===0&&De(Rt)),q!==t&&(yt=R,q=It()),R=q),R}function ic(){var R,q,pe,Ne;return We++,R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&De(pi)),q!==t?(r.charCodeAt(G)===34?(pe=oi,G++):(pe=t,We===0&&De(pi)),pe!==t?(yt=R,q=pr(),R=q):(G=R,R=t)):(G=R,R=t),R===t&&(R=G,r.charCodeAt(G)===34?(q=oi,G++):(q=t,We===0&&De(pi)),q!==t?(pe=fI(),pe!==t?(r.charCodeAt(G)===34?(Ne=oi,G++):(Ne=t,We===0&&De(pi)),Ne!==t?(yt=R,q=di(pe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)),We--,R===t&&(q=t,We===0&&De(Kr)),R}function fI(){var R,q,pe;if(R=G,q=[],pe=Ug(),pe!==t)for(;pe!==t;)q.push(pe),pe=Ug();else q=t;return q!==t&&(yt=R,q=ai(q)),R=q,R}function Ug(){var R,q,pe,Ne,xe,qe;return Os.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&De(dr)),R===t&&(R=G,r.substr(G,2)===Bi?(q=Bi,G+=2):(q=t,We===0&&De(_n)),q!==t&&(yt=R,q=ha()),R=q,R===t&&(R=G,r.substr(G,2)===mA?(q=mA,G+=2):(q=t,We===0&&De(Dg)),q!==t&&(yt=R,q=Zn()),R=q,R===t&&(R=G,r.substr(G,2)===EA?(q=EA,G+=2):(q=t,We===0&&De(pa)),q!==t&&(yt=R,q=jp()),R=q,R===t&&(R=G,r.substr(G,2)===IA?(q=IA,G+=2):(q=t,We===0&&De(yA)),q!==t&&(yt=R,q=Br()),R=q,R===t&&(R=G,r.substr(G,2)===zl?(q=zl,G+=2):(q=t,We===0&&De(kg)),q!==t&&(yt=R,q=Eo()),R=q,R===t&&(R=G,r.substr(G,2)===Rg?(q=Rg,G+=2):(q=t,We===0&&De(qp)),q!==t&&(yt=R,q=Jp()),R=q,R===t&&(R=G,r.substr(G,2)===xr?(q=xr,G+=2):(q=t,We===0&&De(oe)),q!==t&&(yt=R,q=Io()),R=q,R===t&&(R=G,r.substr(G,2)===kn?(q=kn,G+=2):(q=t,We===0&&De(Fg)),q!==t&&(yt=R,q=Qt()),R=q,R===t&&(R=G,r.substr(G,2)===Vl?(q=Vl,G+=2):(q=t,We===0&&De(Rn)),q!==t?(pe=bA(),pe!==t?(Ne=bA(),Ne!==t?(xe=bA(),xe!==t?(qe=bA(),qe!==t?(yt=R,q=$n(pe,Ne,xe,qe),R=q):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)):(G=R,R=t)))))))))),R}function bA(){var R;return es.test(r.charAt(G))?(R=r.charAt(G),G++):(R=t,We===0&&De(ut)),R}function Fr(){var R,q;if(We++,R=[],at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&De(ln)),q!==t)for(;q!==t;)R.push(q),at.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&De(ln));else R=t;return We--,R===t&&(q=t,We===0&&De(yo)),R}function hI(){var R,q;if(We++,R=[],Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&De(Ng)),q!==t)for(;q!==t;)R.push(q),Tt.test(r.charAt(G))?(q=r.charAt(G),G++):(q=t,We===0&&De(Ng));else R=t;return We--,R===t&&(q=t,We===0&&De(S)),R}function Hs(){var R,q,pe,Ne,xe,qe;if(R=G,q=Gs(),q!==t){for(pe=[],Ne=G,xe=Fr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);Ne!==t;)pe.push(Ne),Ne=G,xe=Fr(),xe===t&&(xe=null),xe!==t?(qe=Gs(),qe!==t?(xe=[xe,qe],Ne=xe):(G=Ne,Ne=t)):(G=Ne,Ne=t);pe!==t?(q=[q,pe],R=q):(G=R,R=t)}else G=R,R=t;return R}function Gs(){var R;return r.substr(G,2)===Xl?(R=Xl,G+=2):(R=t,We===0&&De(Wp)),R===t&&(r.charCodeAt(G)===10?(R=zp,G++):(R=t,We===0&&De(Vp)),R===t&&(r.charCodeAt(G)===13?(R=Xp,G++):(R=t,We===0&&De(_p)))),R}let Hg=2,SA=0;if(da=n(),da!==t&&G===r.length)return da;throw da!==t&&G{"use strict";var Jde=r=>{let e=!1,t=!1,i=!1;for(let n=0;n{if(!(typeof r=="string"||Array.isArray(r)))throw new TypeError("Expected the input to be `string | string[]`");e=Object.assign({pascalCase:!1},e);let t=n=>e.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n;return Array.isArray(r)?r=r.map(n=>n.trim()).filter(n=>n.length).join("-"):r=r.trim(),r.length===0?"":r.length===1?e.pascalCase?r.toUpperCase():r.toLowerCase():(r!==r.toLowerCase()&&(r=Jde(r)),r=r.replace(/^[_.\- ]+/,"").toLowerCase().replace(/[_.\- ]+(\w|$)/g,(n,s)=>s.toUpperCase()).replace(/\d+(\w|$)/g,n=>n.toUpperCase()),t(r))};Fv.exports=GH;Fv.exports.default=GH});var jH=y((p$e,Wde)=>{Wde.exports=[{name:"AppVeyor",constant:"APPVEYOR",env:"APPVEYOR",pr:"APPVEYOR_PULL_REQUEST_NUMBER"},{name:"Azure Pipelines",constant:"AZURE_PIPELINES",env:"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",pr:"SYSTEM_PULLREQUEST_PULLREQUESTID"},{name:"Appcircle",constant:"APPCIRCLE",env:"AC_APPCIRCLE"},{name:"Bamboo",constant:"BAMBOO",env:"bamboo_planKey"},{name:"Bitbucket Pipelines",constant:"BITBUCKET",env:"BITBUCKET_COMMIT",pr:"BITBUCKET_PR_ID"},{name:"Bitrise",constant:"BITRISE",env:"BITRISE_IO",pr:"BITRISE_PULL_REQUEST"},{name:"Buddy",constant:"BUDDY",env:"BUDDY_WORKSPACE_ID",pr:"BUDDY_EXECUTION_PULL_REQUEST_ID"},{name:"Buildkite",constant:"BUILDKITE",env:"BUILDKITE",pr:{env:"BUILDKITE_PULL_REQUEST",ne:"false"}},{name:"CircleCI",constant:"CIRCLE",env:"CIRCLECI",pr:"CIRCLE_PULL_REQUEST"},{name:"Cirrus CI",constant:"CIRRUS",env:"CIRRUS_CI",pr:"CIRRUS_PR"},{name:"AWS CodeBuild",constant:"CODEBUILD",env:"CODEBUILD_BUILD_ARN"},{name:"Codefresh",constant:"CODEFRESH",env:"CF_BUILD_ID",pr:{any:["CF_PULL_REQUEST_NUMBER","CF_PULL_REQUEST_ID"]}},{name:"Codeship",constant:"CODESHIP",env:{CI_NAME:"codeship"}},{name:"Drone",constant:"DRONE",env:"DRONE",pr:{DRONE_BUILD_EVENT:"pull_request"}},{name:"dsari",constant:"DSARI",env:"DSARI"},{name:"GitHub Actions",constant:"GITHUB_ACTIONS",env:"GITHUB_ACTIONS",pr:{GITHUB_EVENT_NAME:"pull_request"}},{name:"GitLab CI",constant:"GITLAB",env:"GITLAB_CI",pr:"CI_MERGE_REQUEST_ID"},{name:"GoCD",constant:"GOCD",env:"GO_PIPELINE_LABEL"},{name:"LayerCI",constant:"LAYERCI",env:"LAYERCI",pr:"LAYERCI_PULL_REQUEST"},{name:"Hudson",constant:"HUDSON",env:"HUDSON_URL"},{name:"Jenkins",constant:"JENKINS",env:["JENKINS_URL","BUILD_ID"],pr:{any:["ghprbPullId","CHANGE_ID"]}},{name:"Magnum CI",constant:"MAGNUM",env:"MAGNUM"},{name:"Netlify CI",constant:"NETLIFY",env:"NETLIFY",pr:{env:"PULL_REQUEST",ne:"false"}},{name:"Nevercode",constant:"NEVERCODE",env:"NEVERCODE",pr:{env:"NEVERCODE_PULL_REQUEST",ne:"false"}},{name:"Render",constant:"RENDER",env:"RENDER",pr:{IS_PULL_REQUEST:"true"}},{name:"Sail CI",constant:"SAIL",env:"SAILCI",pr:"SAIL_PULL_REQUEST_NUMBER"},{name:"Semaphore",constant:"SEMAPHORE",env:"SEMAPHORE",pr:"PULL_REQUEST_NUMBER"},{name:"Screwdriver",constant:"SCREWDRIVER",env:"SCREWDRIVER",pr:{env:"SD_PULL_REQUEST",ne:"false"}},{name:"Shippable",constant:"SHIPPABLE",env:"SHIPPABLE",pr:{IS_PULL_REQUEST:"true"}},{name:"Solano CI",constant:"SOLANO",env:"TDDIUM",pr:"TDDIUM_PR_ID"},{name:"Strider CD",constant:"STRIDER",env:"STRIDER"},{name:"TaskCluster",constant:"TASKCLUSTER",env:["TASK_ID","RUN_ID"]},{name:"TeamCity",constant:"TEAMCITY",env:"TEAMCITY_VERSION"},{name:"Travis CI",constant:"TRAVIS",env:"TRAVIS",pr:{env:"TRAVIS_PULL_REQUEST",ne:"false"}},{name:"Vercel",constant:"VERCEL",env:"NOW_BUILDER"},{name:"Visual Studio App Center",constant:"APPCENTER",env:"APPCENTER_BUILD_ID"}]});var yc=y(Mn=>{"use strict";var JH=jH(),vo=process.env;Object.defineProperty(Mn,"_vendors",{value:JH.map(function(r){return r.constant})});Mn.name=null;Mn.isPR=null;JH.forEach(function(r){let t=(Array.isArray(r.env)?r.env:[r.env]).every(function(i){return qH(i)});if(Mn[r.constant]=t,t)switch(Mn.name=r.name,typeof r.pr){case"string":Mn.isPR=!!vo[r.pr];break;case"object":"env"in r.pr?Mn.isPR=r.pr.env in vo&&vo[r.pr.env]!==r.pr.ne:"any"in r.pr?Mn.isPR=r.pr.any.some(function(i){return!!vo[i]}):Mn.isPR=qH(r.pr);break;default:Mn.isPR=null}});Mn.isCI=!!(vo.CI||vo.CONTINUOUS_INTEGRATION||vo.BUILD_NUMBER||vo.RUN_ID||Mn.name);function qH(r){return typeof r=="string"?!!vo[r]:Object.keys(r).every(function(e){return vo[e]===r[e]})}});var ey=y(Kn=>{"use strict";Object.defineProperty(Kn,"__esModule",{value:!0});var zde=0,Vde=1,Xde=2,_de="",Zde="\0",$de=-1,eCe=/^(-h|--help)(?:=([0-9]+))?$/,tCe=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,rCe=/^-[a-zA-Z]{2,}$/,iCe=/^([^=]+)=([\s\S]*)$/,nCe=process.env.DEBUG_CLI==="1";Kn.BATCH_REGEX=rCe;Kn.BINDING_REGEX=iCe;Kn.DEBUG=nCe;Kn.END_OF_INPUT=Zde;Kn.HELP_COMMAND_INDEX=$de;Kn.HELP_REGEX=eCe;Kn.NODE_ERRORED=Xde;Kn.NODE_INITIAL=zde;Kn.NODE_SUCCESS=Vde;Kn.OPTION_REGEX=tCe;Kn.START_OF_INPUT=_de});var ty=y(Bd=>{"use strict";Object.defineProperty(Bd,"__esModule",{value:!0});var sCe=ey(),Nv=class extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}},Lv=class extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",this.candidates.length===0)this.message="Command not found, but we're not sure what's the alternative.";else if(this.candidates.every(i=>i.reason!==null&&i.reason===t[0].reason)){let[{reason:i}]=this.candidates;this.message=`${i} - -${this.candidates.map(({usage:n})=>`$ ${n}`).join(` -`)}`}else if(this.candidates.length===1){let[{usage:i}]=this.candidates;this.message=`Command not found; did you mean: - -$ ${i} -${Ov(e)}`}else this.message=`Command not found; did you mean one of: - -${this.candidates.map(({usage:i},n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${Ov(e)}`}},Tv=class extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find which to pick amongst the following alternatives: - -${this.usages.map((i,n)=>`${`${n}.`.padStart(4)} ${i}`).join(` -`)} - -${Ov(e)}`}},Ov=r=>`While running ${r.filter(e=>e!==sCe.END_OF_INPUT).map(e=>{let t=JSON.stringify(e);return e.match(/\s/)||e.length===0||t!==`"${e}"`?t:e}).join(" ")}`;Bd.AmbiguousSyntaxError=Tv;Bd.UnknownSyntaxError=Lv;Bd.UsageError=Nv});var Sa=y(NA=>{"use strict";Object.defineProperty(NA,"__esModule",{value:!0});var WH=ty(),zH=Symbol("clipanion/isOption");function oCe(r){return{...r,[zH]:!0}}function aCe(r,e){return typeof r>"u"?[r,e]:typeof r=="object"&&r!==null&&!Array.isArray(r)?[void 0,r]:[r,e]}function Mv(r,e=!1){let t=r.replace(/^\.: /,"");return e&&(t=t[0].toLowerCase()+t.slice(1)),t}function VH(r,e){return e.length===1?new WH.UsageError(`${r}: ${Mv(e[0],!0)}`):new WH.UsageError(`${r}: -${e.map(t=>` -- ${Mv(t)}`).join("")}`)}function ACe(r,e,t){if(typeof t>"u")return e;let i=[],n=[],s=a=>{let l=e;return e=a,s.bind(null,l)};if(!t(e,{errors:i,coercions:n,coercion:s}))throw VH(`Invalid value for ${r}`,i);for(let[,a]of n)a();return e}NA.applyValidator=ACe;NA.cleanValidationError=Mv;NA.formatError=VH;NA.isOptionSymbol=zH;NA.makeCommandOption=oCe;NA.rerouteArguments=aCe});var ns=y(st=>{"use strict";Object.defineProperty(st,"__esModule",{value:!0});var XH=/^[a-zA-Z_][a-zA-Z0-9_]*$/,_H=/^#[0-9a-f]{6}$/i,ZH=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,$H=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,eG=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Kv=/^(?:[1-9]\d{3}(-?)(?:(?:0[1-9]|1[0-2])\1(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])\1(?:29|30)|(?:0[13578]|1[02])(?:\1)31|00[1-9]|0[1-9]\d|[12]\d{2}|3(?:[0-5]\d|6[0-5]))|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)(?:(-?)02(?:\2)29|-?366))T(?:[01]\d|2[0-3])(:?)[0-5]\d(?:\3[0-5]\d)?(?:Z|[+-][01]\d(?:\3[0-5]\d)?)$/,tG=r=>()=>r;function bt({test:r}){return tG(r)()}function Zr(r){return r===null?"null":r===void 0?"undefined":r===""?"an empty string":JSON.stringify(r)}function LA(r,e){var t,i,n;return typeof e=="number"?`${(t=r==null?void 0:r.p)!==null&&t!==void 0?t:"."}[${e}]`:XH.test(e)?`${(i=r==null?void 0:r.p)!==null&&i!==void 0?i:""}.${e}`:`${(n=r==null?void 0:r.p)!==null&&n!==void 0?n:"."}[${JSON.stringify(e)}]`}function wc(r,e){return t=>{let i=r[e];return r[e]=t,wc(r,e).bind(null,i)}}function rG(r,e){return t=>{r[e]=t}}function ry(r,e,t){return r===1?e:t}function pt({errors:r,p:e}={},t){return r==null||r.push(`${e!=null?e:"."}: ${t}`),!1}var iG=()=>bt({test:(r,e)=>!0});function lCe(r){return bt({test:(e,t)=>e!==r?pt(t,`Expected a literal (got ${Zr(r)})`):!0})}var cCe=()=>bt({test:(r,e)=>typeof r!="string"?pt(e,`Expected a string (got ${Zr(r)})`):!0});function uCe(r){let e=Array.isArray(r)?r:Object.values(r),t=new Set(e);return bt({test:(i,n)=>t.has(i)?!0:pt(n,`Expected a valid enumeration value (got ${Zr(i)})`)})}var gCe=new Map([["true",!0],["True",!0],["1",!0],[1,!0],["false",!1],["False",!1],["0",!1],[0,!1]]),fCe=()=>bt({test:(r,e)=>{var t;if(typeof r!="boolean"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i=gCe.get(r);if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a boolean (got ${Zr(r)})`)}return!0}}),hCe=()=>bt({test:(r,e)=>{var t;if(typeof r!="number"){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"){let n;try{n=JSON.parse(r)}catch{}if(typeof n=="number")if(JSON.stringify(n)===r)i=n;else return pt(e,`Received a number that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a number (got ${Zr(r)})`)}return!0}}),pCe=()=>bt({test:(r,e)=>{var t;if(!(r instanceof Date)){if(typeof(e==null?void 0:e.coercions)<"u"){if(typeof(e==null?void 0:e.coercion)>"u")return pt(e,"Unbound coercion result");let i;if(typeof r=="string"&&Kv.test(r))i=new Date(r);else{let n;if(typeof r=="string"){let s;try{s=JSON.parse(r)}catch{}typeof s=="number"&&(n=s)}else typeof r=="number"&&(n=r);if(typeof n<"u")if(Number.isSafeInteger(n)||!Number.isSafeInteger(n*1e3))i=new Date(n*1e3);else return pt(e,`Received a timestamp that can't be safely represented by the runtime (${r})`)}if(typeof i<"u")return e.coercions.push([(t=e.p)!==null&&t!==void 0?t:".",e.coercion.bind(null,i)]),!0}return pt(e,`Expected a date (got ${Zr(r)})`)}return!0}}),dCe=(r,{delimiter:e}={})=>bt({test:(t,i)=>{var n;if(typeof t=="string"&&typeof e<"u"&&typeof(i==null?void 0:i.coercions)<"u"){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");t=t.split(e),i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,t)])}if(!Array.isArray(t))return pt(i,`Expected an array (got ${Zr(t)})`);let s=!0;for(let o=0,a=t.length;o{let t=nG(r.length);return bt({test:(i,n)=>{var s;if(typeof i=="string"&&typeof e<"u"&&typeof(n==null?void 0:n.coercions)<"u"){if(typeof(n==null?void 0:n.coercion)>"u")return pt(n,"Unbound coercion result");i=i.split(e),n.coercions.push([(s=n.p)!==null&&s!==void 0?s:".",n.coercion.bind(null,i)])}if(!Array.isArray(i))return pt(n,`Expected a tuple (got ${Zr(i)})`);let o=t(i,Object.assign({},n));for(let a=0,l=i.length;abt({test:(t,i)=>{if(typeof t!="object"||t===null)return pt(i,`Expected an object (got ${Zr(t)})`);let n=Object.keys(t),s=!0;for(let o=0,a=n.length;o{let t=Object.keys(r);return bt({test:(i,n)=>{if(typeof i!="object"||i===null)return pt(n,`Expected an object (got ${Zr(i)})`);let s=new Set([...t,...Object.keys(i)]),o={},a=!0;for(let l of s){if(l==="constructor"||l==="__proto__")a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),"Unsafe property name");else{let c=Object.prototype.hasOwnProperty.call(r,l)?r[l]:void 0,u=Object.prototype.hasOwnProperty.call(i,l)?i[l]:void 0;typeof c<"u"?a=c(u,Object.assign(Object.assign({},n),{p:LA(n,l),coercion:wc(i,l)}))&&a:e===null?a=pt(Object.assign(Object.assign({},n),{p:LA(n,l)}),`Extraneous property (got ${Zr(u)})`):Object.defineProperty(o,l,{enumerable:!0,get:()=>u,set:rG(i,l)})}if(!a&&(n==null?void 0:n.errors)==null)break}return e!==null&&(a||(n==null?void 0:n.errors)!=null)&&(a=e(o,n)&&a),a}})},ICe=r=>bt({test:(e,t)=>e instanceof r?!0:pt(t,`Expected an instance of ${r.name} (got ${Zr(e)})`)}),yCe=(r,{exclusive:e=!1}={})=>bt({test:(t,i)=>{var n,s,o;let a=[],l=typeof(i==null?void 0:i.errors)<"u"?[]:void 0;for(let c=0,u=r.length;c1?pt(i,`Expected to match exactly a single predicate (matched ${a.join(", ")})`):(o=i==null?void 0:i.errors)===null||o===void 0||o.push(...l),!1}}),wCe=(r,e)=>bt({test:(t,i)=>{var n,s;let o={value:t},a=typeof(i==null?void 0:i.coercions)<"u"?wc(o,"value"):void 0,l=typeof(i==null?void 0:i.coercions)<"u"?[]:void 0;if(!r(t,Object.assign(Object.assign({},i),{coercion:a,coercions:l})))return!1;let c=[];if(typeof l<"u")for(let[,u]of l)c.push(u());try{if(typeof(i==null?void 0:i.coercions)<"u"){if(o.value!==t){if(typeof(i==null?void 0:i.coercion)>"u")return pt(i,"Unbound coercion result");i.coercions.push([(n=i.p)!==null&&n!==void 0?n:".",i.coercion.bind(null,o.value)])}(s=i==null?void 0:i.coercions)===null||s===void 0||s.push(...l)}return e.every(u=>u(o.value,i))}finally{for(let u of c)u()}}}),BCe=r=>bt({test:(e,t)=>typeof e>"u"?!0:r(e,t)}),QCe=r=>bt({test:(e,t)=>e===null?!0:r(e,t)}),bCe=r=>bt({test:(e,t)=>e.length>=r?!0:pt(t,`Expected to have a length of at least ${r} elements (got ${e.length})`)}),SCe=r=>bt({test:(e,t)=>e.length<=r?!0:pt(t,`Expected to have a length of at most ${r} elements (got ${e.length})`)}),nG=r=>bt({test:(e,t)=>e.length!==r?pt(t,`Expected to have a length of exactly ${r} elements (got ${e.length})`):!0}),vCe=({map:r}={})=>bt({test:(e,t)=>{let i=new Set,n=new Set;for(let s=0,o=e.length;sbt({test:(r,e)=>r<=0?!0:pt(e,`Expected to be negative (got ${r})`)}),PCe=()=>bt({test:(r,e)=>r>=0?!0:pt(e,`Expected to be positive (got ${r})`)}),DCe=r=>bt({test:(e,t)=>e>=r?!0:pt(t,`Expected to be at least ${r} (got ${e})`)}),kCe=r=>bt({test:(e,t)=>e<=r?!0:pt(t,`Expected to be at most ${r} (got ${e})`)}),RCe=(r,e)=>bt({test:(t,i)=>t>=r&&t<=e?!0:pt(i,`Expected to be in the [${r}; ${e}] range (got ${t})`)}),FCe=(r,e)=>bt({test:(t,i)=>t>=r&&tbt({test:(e,t)=>e!==Math.round(e)?pt(t,`Expected to be an integer (got ${e})`):Number.isSafeInteger(e)?!0:pt(t,`Expected to be a safe integer (got ${e})`)}),LCe=r=>bt({test:(e,t)=>r.test(e)?!0:pt(t,`Expected to match the pattern ${r.toString()} (got ${Zr(e)})`)}),TCe=()=>bt({test:(r,e)=>r!==r.toLowerCase()?pt(e,`Expected to be all-lowercase (got ${r})`):!0}),OCe=()=>bt({test:(r,e)=>r!==r.toUpperCase()?pt(e,`Expected to be all-uppercase (got ${r})`):!0}),MCe=()=>bt({test:(r,e)=>eG.test(r)?!0:pt(e,`Expected to be a valid UUID v4 (got ${Zr(r)})`)}),KCe=()=>bt({test:(r,e)=>Kv.test(r)?!1:pt(e,`Expected to be a valid ISO 8601 date string (got ${Zr(r)})`)}),UCe=({alpha:r=!1})=>bt({test:(e,t)=>(r?_H.test(e):ZH.test(e))?!0:pt(t,`Expected to be a valid hexadecimal color string (got ${Zr(e)})`)}),HCe=()=>bt({test:(r,e)=>$H.test(r)?!0:pt(e,`Expected to be a valid base 64 string (got ${Zr(r)})`)}),GCe=(r=iG())=>bt({test:(e,t)=>{let i;try{i=JSON.parse(e)}catch{return pt(t,`Expected to be a valid JSON string (got ${Zr(e)})`)}return r(i,t)}}),YCe=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)||s.push(o);return s.length>0?pt(i,`Missing required ${ry(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},jCe=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>0?pt(i,`Forbidden ${ry(s.length,"property","properties")} ${s.map(o=>`"${o}"`).join(", ")}`):!0}})},qCe=r=>{let e=new Set(r);return bt({test:(t,i)=>{let n=new Set(Object.keys(t)),s=[];for(let o of e)n.has(o)&&s.push(o);return s.length>1?pt(i,`Mutually exclusive properties ${s.map(o=>`"${o}"`).join(", ")}`):!0}})};(function(r){r.Forbids="Forbids",r.Requires="Requires"})(st.KeyRelationship||(st.KeyRelationship={}));var JCe={[st.KeyRelationship.Forbids]:{expect:!1,message:"forbids using"},[st.KeyRelationship.Requires]:{expect:!0,message:"requires using"}},WCe=(r,e,t,{ignore:i=[]}={})=>{let n=new Set(i),s=new Set(t),o=JCe[e];return bt({test:(a,l)=>{let c=new Set(Object.keys(a));if(!c.has(r)||n.has(a[r]))return!0;let u=[];for(let g of s)(c.has(g)&&!n.has(a[g]))!==o.expect&&u.push(g);return u.length>=1?pt(l,`Property "${r}" ${o.message} ${ry(u.length,"property","properties")} ${u.map(g=>`"${g}"`).join(", ")}`):!0}})};st.applyCascade=wCe;st.base64RegExp=$H;st.colorStringAlphaRegExp=ZH;st.colorStringRegExp=_H;st.computeKey=LA;st.getPrintable=Zr;st.hasExactLength=nG;st.hasForbiddenKeys=jCe;st.hasKeyRelationship=WCe;st.hasMaxLength=SCe;st.hasMinLength=bCe;st.hasMutuallyExclusiveKeys=qCe;st.hasRequiredKeys=YCe;st.hasUniqueItems=vCe;st.isArray=dCe;st.isAtLeast=DCe;st.isAtMost=kCe;st.isBase64=HCe;st.isBoolean=fCe;st.isDate=pCe;st.isDict=mCe;st.isEnum=uCe;st.isHexColor=UCe;st.isISO8601=KCe;st.isInExclusiveRange=FCe;st.isInInclusiveRange=RCe;st.isInstanceOf=ICe;st.isInteger=NCe;st.isJSON=GCe;st.isLiteral=lCe;st.isLowerCase=TCe;st.isNegative=xCe;st.isNullable=QCe;st.isNumber=hCe;st.isObject=ECe;st.isOneOf=yCe;st.isOptional=BCe;st.isPositive=PCe;st.isString=cCe;st.isTuple=CCe;st.isUUID4=MCe;st.isUnknown=iG;st.isUpperCase=OCe;st.iso8601RegExp=Kv;st.makeCoercionFn=wc;st.makeSetter=rG;st.makeTrait=tG;st.makeValidator=bt;st.matchesRegExp=LCe;st.plural=ry;st.pushError=pt;st.simpleKeyRegExp=XH;st.uuid4RegExp=eG});var Bc=y(Uv=>{"use strict";Object.defineProperty(Uv,"__esModule",{value:!0});var sG=Sa();function zCe(r){if(r&&r.__esModule)return r;var e=Object.create(null);return r&&Object.keys(r).forEach(function(t){if(t!=="default"){var i=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(e,t,i.get?i:{enumerable:!0,get:function(){return r[t]}})}}),e.default=r,Object.freeze(e)}var Qd=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let t=this.constructor.schema;if(Array.isArray(t)){let{isDict:n,isUnknown:s,applyCascade:o}=await Promise.resolve().then(function(){return zCe(ns())}),a=o(n(s()),t),l=[],c=[];if(!a(this,{errors:l,coercions:c}))throw sG.formatError("Invalid option schema",l);for(let[,g]of c)g()}else if(t!=null)throw new Error("Invalid command schema");let i=await this.execute();return typeof i<"u"?i:0}};Qd.isOption=sG.isOptionSymbol;Qd.Default=[];Uv.Command=Qd});var Gv=y(bd=>{"use strict";Object.defineProperty(bd,"__esModule",{value:!0});var oG=80,Hv=Array(oG).fill("\u2501");for(let r=0;r<=24;++r)Hv[Hv.length-r]=`\x1B[38;5;${232+r}m\u2501`;var VCe={header:r=>`\x1B[1m\u2501\u2501\u2501 ${r}${r.length`\x1B[1m${r}\x1B[22m`,error:r=>`\x1B[31m\x1B[1m${r}\x1B[22m\x1B[39m`,code:r=>`\x1B[36m${r}\x1B[39m`},XCe={header:r=>r,bold:r=>r,error:r=>r,code:r=>r};function _Ce(r){let e=r.split(` -`),t=e.filter(n=>n.match(/\S/)),i=t.length>0?t.reduce((n,s)=>Math.min(n,s.length-s.trimStart().length),Number.MAX_VALUE):0;return e.map(n=>n.slice(i).trimRight()).join(` -`)}function ZCe(r,{format:e,paragraphs:t}){return r=r.replace(/\r\n?/g,` -`),r=_Ce(r),r=r.replace(/^\n+|\n+$/g,""),r=r.replace(/^(\s*)-([^\n]*?)\n+/gm,`$1-$2 - -`),r=r.replace(/\n(\n)?\n*/g,"$1"),t&&(r=r.split(/\n/).map(i=>{let n=i.match(/^\s*[*-][\t ]+(.*)/);if(!n)return i.match(/(.{1,80})(?: |$)/g).join(` -`);let s=i.length-i.trimStart().length;return n[1].match(new RegExp(`(.{1,${78-s}})(?: |$)`,"g")).map((o,a)=>" ".repeat(s)+(a===0?"- ":" ")+o).join(` -`)}).join(` - -`)),r=r.replace(/(`+)((?:.|[\n])*?)\1/g,(i,n,s)=>e.code(n+s+n)),r=r.replace(/(\*\*)((?:.|[\n])*?)\1/g,(i,n,s)=>e.bold(n+s+n)),r?`${r} -`:""}bd.formatMarkdownish=ZCe;bd.richFormat=VCe;bd.textFormat=XCe});var ay=y(Ar=>{"use strict";Object.defineProperty(Ar,"__esModule",{value:!0});var lt=ey(),sy=ty();function Vi(r){lt.DEBUG&&console.log(r)}var aG={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:lt.HELP_COMMAND_INDEX};function Yv(){return{nodes:[Ti(),Ti(),Ti()]}}function AG(r){let e=Yv(),t=[],i=e.nodes.length;for(let n of r){t.push(i);for(let s=0;s{if(e.has(i))return;e.add(i);let n=r.nodes[i];for(let o of Object.values(n.statics))for(let{to:a}of o)t(a);for(let[,{to:o}]of n.dynamics)t(o);for(let{to:o}of n.shortcuts)t(o);let s=new Set(n.shortcuts.map(({to:o})=>o));for(;n.shortcuts.length>0;){let{to:o}=n.shortcuts.shift(),a=r.nodes[o];for(let[l,c]of Object.entries(a.statics)){let u=Object.prototype.hasOwnProperty.call(n.statics,l)?n.statics[l]:n.statics[l]=[];for(let g of c)u.some(({to:f})=>g.to===f)||u.push(g)}for(let[l,c]of a.dynamics)n.dynamics.some(([u,{to:g}])=>l===u&&c.to===g)||n.dynamics.push([l,c]);for(let l of a.shortcuts)s.has(l.to)||(n.shortcuts.push(l),s.add(l.to))}};t(lt.NODE_INITIAL)}function cG(r,{prefix:e=""}={}){if(lt.DEBUG){Vi(`${e}Nodes are:`);for(let t=0;tl!==lt.NODE_ERRORED).map(({state:l})=>({usage:l.candidateUsage,reason:null})));if(a.every(({node:l})=>l===lt.NODE_ERRORED))throw new sy.UnknownSyntaxError(e,a.map(({state:l})=>({usage:l.candidateUsage,reason:l.errorMessage})));i=uG(a)}if(i.length>0){Vi(" Results:");for(let s of i)Vi(` - ${s.node} -> ${JSON.stringify(s.state)}`)}else Vi(" No results");return i}function $Ce(r,e){if(e.selectedIndex!==null)return!0;if(Object.prototype.hasOwnProperty.call(r.statics,lt.END_OF_INPUT)){for(let{to:t}of r.statics[lt.END_OF_INPUT])if(t===lt.NODE_SUCCESS)return!0}return!1}function eme(r,e,t){let i=t&&e.length>0?[""]:[],n=jv(r,e,t),s=[],o=new Set,a=(l,c,u=!0)=>{let g=[c];for(;g.length>0;){let h=g;g=[];for(let p of h){let C=r.nodes[p],w=Object.keys(C.statics);for(let B of Object.keys(C.statics)){let v=w[0];for(let{to:D,reducer:L}of C.statics[v])L==="pushPath"&&(u||l.push(v),g.push(D))}}u=!1}let f=JSON.stringify(l);o.has(f)||(s.push(l),o.add(f))};for(let{node:l,state:c}of n){if(c.remainder!==null){a([c.remainder],l);continue}let u=r.nodes[l],g=$Ce(u,c);for(let[f,h]of Object.entries(u.statics))(g&&f!==lt.END_OF_INPUT||!f.startsWith("-")&&h.some(({reducer:p})=>p==="pushPath"))&&a([...i,f],l);if(!!g)for(let[f,{to:h}]of u.dynamics){if(h===lt.NODE_ERRORED)continue;let p=dG(f,c);if(p!==null)for(let C of p)a([...i,C],l)}}return[...s].sort()}function tme(r,e){let t=jv(r,[...e,lt.END_OF_INPUT]);return gG(e,t.map(({state:i})=>i))}function uG(r){let e=0;for(let{state:t}of r)t.path.length>e&&(e=t.path.length);return r.filter(({state:t})=>t.path.length===e)}function gG(r,e){let t=e.filter(g=>g.selectedIndex!==null);if(t.length===0)throw new Error;let i=t.filter(g=>g.requiredOptions.every(f=>f.some(h=>g.options.find(p=>p.name===h))));if(i.length===0)throw new sy.UnknownSyntaxError(r,t.map(g=>({usage:g.candidateUsage,reason:null})));let n=0;for(let g of i)g.path.length>n&&(n=g.path.length);let s=i.filter(g=>g.path.length===n),o=g=>g.positionals.filter(({extra:f})=>!f).length+g.options.length,a=s.map(g=>({state:g,positionalCount:o(g)})),l=0;for(let{positionalCount:g}of a)g>l&&(l=g);let c=a.filter(({positionalCount:g})=>g===l).map(({state:g})=>g),u=fG(c);if(u.length>1)throw new sy.AmbiguousSyntaxError(r,u.map(g=>g.candidateUsage));return u[0]}function fG(r){let e=[],t=[];for(let i of r)i.selectedIndex===lt.HELP_COMMAND_INDEX?t.push(i):e.push(i);return t.length>0&&e.push({...aG,path:hG(...t.map(i=>i.path)),options:t.reduce((i,n)=>i.concat(n.options),[])}),e}function hG(r,e,...t){return e===void 0?Array.from(r):hG(r.filter((i,n)=>i===e[n]),...t)}function Ti(){return{dynamics:[],shortcuts:[],statics:{}}}function qv(r){return r===lt.NODE_SUCCESS||r===lt.NODE_ERRORED}function iy(r,e=0){return{to:qv(r.to)?r.to:r.to>2?r.to+e-2:r.to+e,reducer:r.reducer}}function pG(r,e=0){let t=Ti();for(let[i,n]of r.dynamics)t.dynamics.push([i,iy(n,e)]);for(let i of r.shortcuts)t.shortcuts.push(iy(i,e));for(let[i,n]of Object.entries(r.statics))t.statics[i]=n.map(s=>iy(s,e));return t}function Ei(r,e,t,i,n){r.nodes[e].dynamics.push([t,{to:i,reducer:n}])}function Qc(r,e,t,i){r.nodes[e].shortcuts.push({to:t,reducer:i})}function xo(r,e,t,i,n){(Object.prototype.hasOwnProperty.call(r.nodes[e].statics,t)?r.nodes[e].statics[t]:r.nodes[e].statics[t]=[]).push({to:i,reducer:n})}function Sd(r,e,t,i){if(Array.isArray(e)){let[n,...s]=e;return r[n](t,i,...s)}else return r[e](t,i)}function dG(r,e){let t=Array.isArray(r)?vd[r[0]]:vd[r];if(typeof t.suggest>"u")return null;let i=Array.isArray(r)?r.slice(1):[];return t.suggest(e,...i)}var vd={always:()=>!0,isOptionLike:(r,e)=>!r.ignoreOptions&&e!=="-"&&e.startsWith("-"),isNotOptionLike:(r,e)=>r.ignoreOptions||e==="-"||!e.startsWith("-"),isOption:(r,e,t,i)=>!r.ignoreOptions&&e===t,isBatchOption:(r,e,t)=>!r.ignoreOptions&<.BATCH_REGEX.test(e)&&[...e.slice(1)].every(i=>t.includes(`-${i}`)),isBoundOption:(r,e,t,i)=>{let n=e.match(lt.BINDING_REGEX);return!r.ignoreOptions&&!!n&<.OPTION_REGEX.test(n[1])&&t.includes(n[1])&&i.filter(s=>s.names.includes(n[1])).every(s=>s.allowBinding)},isNegatedOption:(r,e,t)=>!r.ignoreOptions&&e===`--no-${t.slice(2)}`,isHelp:(r,e)=>!r.ignoreOptions&<.HELP_REGEX.test(e),isUnsupportedOption:(r,e,t)=>!r.ignoreOptions&&e.startsWith("-")&<.OPTION_REGEX.test(e)&&!t.includes(e),isInvalidOption:(r,e)=>!r.ignoreOptions&&e.startsWith("-")&&!lt.OPTION_REGEX.test(e)};vd.isOption.suggest=(r,e,t=!0)=>t?null:[e];var ny={setCandidateState:(r,e,t)=>({...r,...t}),setSelectedIndex:(r,e,t)=>({...r,selectedIndex:t}),pushBatch:(r,e)=>({...r,options:r.options.concat([...e.slice(1)].map(t=>({name:`-${t}`,value:!0})))}),pushBound:(r,e)=>{let[,t,i]=e.match(lt.BINDING_REGEX);return{...r,options:r.options.concat({name:t,value:i})}},pushPath:(r,e)=>({...r,path:r.path.concat(e)}),pushPositional:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!1})}),pushExtra:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:!0})}),pushExtraNoLimits:(r,e)=>({...r,positionals:r.positionals.concat({value:e,extra:Po})}),pushTrue:(r,e,t=e)=>({...r,options:r.options.concat({name:e,value:!0})}),pushFalse:(r,e,t=e)=>({...r,options:r.options.concat({name:t,value:!1})}),pushUndefined:(r,e)=>({...r,options:r.options.concat({name:e,value:void 0})}),pushStringValue:(r,e)=>{var t;let i={...r,options:[...r.options]},n=r.options[r.options.length-1];return n.value=((t=n.value)!==null&&t!==void 0?t:[]).concat([e]),i},setStringValue:(r,e)=>{let t={...r,options:[...r.options]},i=r.options[r.options.length-1];return i.value=e,t},inhibateOptions:r=>({...r,ignoreOptions:!0}),useHelp:(r,e,t)=>{let[,,i]=e.match(lt.HELP_REGEX);return typeof i<"u"?{...r,options:[{name:"-c",value:String(t)},{name:"-i",value:i}]}:{...r,options:[{name:"-c",value:String(t)}]}},setError:(r,e,t)=>e===lt.END_OF_INPUT?{...r,errorMessage:`${t}.`}:{...r,errorMessage:`${t} ("${e}").`},setOptionArityError:(r,e)=>{let t=r.options[r.options.length-1];return{...r,errorMessage:`Not enough arguments to option ${t.name}.`}}},Po=Symbol(),oy=class{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:i=this.arity.extra,proxy:n=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:i,proxy:n})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===Po)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");!t&&this.arity.extra!==Po?this.arity.extra.push(e):this.arity.extra!==Po&&this.arity.extra.length===0?this.arity.leading.push(e):this.arity.trailing.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===Po)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let i=0;i1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(i))throw new Error(`The arity must be an integer, got ${i}`);if(i<0)throw new Error(`The arity must be positive, got ${i}`);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:i,hidden:n,required:s,allowBinding:o})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){let i=[this.cliOpts.binaryName],n=[];if(this.paths.length>0&&i.push(...this.paths[0]),e){for(let{names:o,arity:a,hidden:l,description:c,required:u}of this.options){if(l)continue;let g=[];for(let h=0;h`:`[${f}]`)}i.push(...this.arity.leading.map(o=>`<${o}>`)),this.arity.extra===Po?i.push("..."):i.push(...this.arity.extra.map(o=>`[${o}]`)),i.push(...this.arity.trailing.map(o=>`<${o}>`))}return{usage:i.join(" "),options:n}}compile(){if(typeof this.context>"u")throw new Error("Assertion failed: No context attached");let e=Yv(),t=lt.NODE_INITIAL,i=this.usage().usage,n=this.options.filter(a=>a.required).map(a=>a.names);t=ss(e,Ti()),xo(e,lt.NODE_INITIAL,lt.START_OF_INPUT,t,["setCandidateState",{candidateUsage:i,requiredOptions:n}]);let s=this.arity.proxy?"always":"isNotOptionLike",o=this.paths.length>0?this.paths:[[]];for(let a of o){let l=t;if(a.length>0){let f=ss(e,Ti());Qc(e,l,f),this.registerOptions(e,f),l=f}for(let f=0;f0||!this.arity.proxy){let f=ss(e,Ti());Ei(e,l,"isHelp",f,["useHelp",this.cliIndex]),xo(e,f,lt.END_OF_INPUT,lt.NODE_SUCCESS,["setSelectedIndex",lt.HELP_COMMAND_INDEX]),this.registerOptions(e,l)}this.arity.leading.length>0&&xo(e,l,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let c=l;for(let f=0;f0||f+1!==this.arity.leading.length)&&xo(e,h,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]),Ei(e,c,"isNotOptionLike",h,"pushPositional"),c=h}let u=c;if(this.arity.extra===Po||this.arity.extra.length>0){let f=ss(e,Ti());if(Qc(e,c,f),this.arity.extra===Po){let h=ss(e,Ti());this.arity.proxy||this.registerOptions(e,h),Ei(e,c,s,h,"pushExtraNoLimits"),Ei(e,h,s,h,"pushExtraNoLimits"),Qc(e,h,f)}else for(let h=0;h0&&xo(e,u,lt.END_OF_INPUT,lt.NODE_ERRORED,["setError","Not enough positional arguments"]);let g=u;for(let f=0;fo.length>s.length?o:s,"");if(i.arity===0)for(let s of i.names)Ei(e,t,["isOption",s,i.hidden||s!==n],t,"pushTrue"),s.startsWith("--")&&!s.startsWith("--no-")&&Ei(e,t,["isNegatedOption",s],t,["pushFalse",s]);else{let s=ss(e,Ti());for(let o of i.names)Ei(e,t,["isOption",o,i.hidden||o!==n],s,"pushUndefined");for(let o=0;o=0&&etme(i,n),suggest:(n,s)=>eme(i,n,s)}}};Ar.CliBuilder=xd;Ar.CommandBuilder=oy;Ar.NoLimits=Po;Ar.aggregateHelpStates=fG;Ar.cloneNode=pG;Ar.cloneTransition=iy;Ar.debug=Vi;Ar.debugMachine=cG;Ar.execute=Sd;Ar.injectNode=ss;Ar.isTerminalNode=qv;Ar.makeAnyOfMachine=AG;Ar.makeNode=Ti;Ar.makeStateMachine=Yv;Ar.reducers=ny;Ar.registerDynamic=Ei;Ar.registerShortcut=Qc;Ar.registerStatic=xo;Ar.runMachineInternal=jv;Ar.selectBestState=gG;Ar.simplifyMachine=lG;Ar.suggest=dG;Ar.tests=vd;Ar.trimSmallerBranches=uG});var CG=y(Jv=>{"use strict";Object.defineProperty(Jv,"__esModule",{value:!0});var rme=Bc(),Pd=class extends rme.Command{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){let i=new Pd(t);i.path=e.path;for(let n of e.options)switch(n.name){case"-c":i.commands.push(Number(n.value));break;case"-i":i.index=Number(n.value);break}return i}async execute(){let e=this.commands;if(typeof this.index<"u"&&this.index>=0&&this.index1){this.context.stdout.write(`Multiple commands match your selection: -`),this.context.stdout.write(` -`);let t=0;for(let i of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[i].commandClass,{prefix:`${t++}. `.padStart(5)}));this.context.stdout.write(` -`),this.context.stdout.write(`Run again with -h= to see the longer details of any of those commands. -`)}}};Jv.HelpCommand=Pd});var BG=y(Wv=>{"use strict";Object.defineProperty(Wv,"__esModule",{value:!0});var ime=ey(),mG=Bc(),nme=J("tty"),sme=ay(),hn=Gv(),ome=CG();function ame(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var EG=ame(nme),IG=Symbol("clipanion/errorCommand");function Ame(){return process.env.FORCE_COLOR==="0"?1:process.env.FORCE_COLOR==="1"||typeof process.stdout<"u"&&process.stdout.isTTY?8:1}var TA=class{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:i,enableCapture:n=!1,enableColors:s}={}){this.registrations=new Map,this.builder=new sme.CliBuilder({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=i,this.enableCapture=n,this.enableColors=s}static from(e,t={}){let i=new TA(t);for(let n of e)i.register(n);return i}register(e){var t;let i=new Map,n=new e;for(let l in n){let c=n[l];typeof c=="object"&&c!==null&&c[mG.Command.isOption]&&i.set(l,c)}let s=this.builder.command(),o=s.cliIndex,a=(t=e.paths)!==null&&t!==void 0?t:n.paths;if(typeof a<"u")for(let l of a)s.addPath(l);this.registrations.set(e,{specs:i,builder:s,index:o});for(let[l,{definition:c}]of i.entries())c(s,l);s.setContext({commandClass:e})}process(e){let{contexts:t,process:i}=this.builder.compile(),n=i(e);switch(n.selectedIndex){case ime.HELP_COMMAND_INDEX:return ome.HelpCommand.from(n,t);default:{let{commandClass:s}=t[n.selectedIndex],o=this.registrations.get(s);if(typeof o>"u")throw new Error("Assertion failed: Expected the command class to have been registered.");let a=new s;a.path=n.path;try{for(let[l,{transformer:c}]of o.specs.entries())a[l]=c(o.builder,l,n);return a}catch(l){throw l[IG]=a,l}}break}}async run(e,t){var i;let n,s={...TA.defaultContext,...t},o=(i=this.enableColors)!==null&&i!==void 0?i:s.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e)}catch(c){return s.stdout.write(this.error(c,{colored:o})),1}if(n.help)return s.stdout.write(this.usage(n,{colored:o,detailed:!0})),0;n.context=s,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(c,u)=>this.error(c,u),format:c=>this.format(c),process:c=>this.process(c),run:(c,u)=>this.run(c,{...s,...u}),usage:(c,u)=>this.usage(c,u)};let a=this.enableCapture?lme(s):wG,l;try{l=await a(()=>n.validateAndExecute().catch(c=>n.catch(c).then(()=>0)))}catch(c){return s.stdout.write(this.error(c,{colored:o,command:n})),1}return l}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){let{suggest:i}=this.builder.compile();return i(e,t)}definitions({colored:e=!1}={}){let t=[];for(let[i,{index:n}]of this.registrations){if(typeof i.usage>"u")continue;let{usage:s}=this.getUsageByIndex(n,{detailed:!1}),{usage:o,options:a}=this.getUsageByIndex(n,{detailed:!0,inlineOptions:!1}),l=typeof i.usage.category<"u"?hn.formatMarkdownish(i.usage.category,{format:this.format(e),paragraphs:!1}):void 0,c=typeof i.usage.description<"u"?hn.formatMarkdownish(i.usage.description,{format:this.format(e),paragraphs:!1}):void 0,u=typeof i.usage.details<"u"?hn.formatMarkdownish(i.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=typeof i.usage.examples<"u"?i.usage.examples.map(([f,h])=>[hn.formatMarkdownish(f,{format:this.format(e),paragraphs:!1}),h.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:s,usage:o,category:l,description:c,details:u,examples:g,options:a})}return t}usage(e=null,{colored:t,detailed:i=!1,prefix:n="$ "}={}){var s;if(e===null){for(let l of this.registrations.keys()){let c=l.paths,u=typeof l.usage<"u";if(!c||c.length===0||c.length===1&&c[0].length===0||((s=c==null?void 0:c.some(h=>h.length===0))!==null&&s!==void 0?s:!1))if(e){e=null;break}else e=l;else if(u){e=null;continue}}e&&(i=!0)}let o=e!==null&&e instanceof mG.Command?e.constructor:e,a="";if(o)if(i){let{description:l="",details:c="",examples:u=[]}=o.usage||{};l!==""&&(a+=hn.formatMarkdownish(l,{format:this.format(t),paragraphs:!1}).replace(/^./,h=>h.toUpperCase()),a+=` -`),(c!==""||u.length>0)&&(a+=`${this.format(t).header("Usage")} -`,a+=` -`);let{usage:g,options:f}=this.getUsageByRegistration(o,{inlineOptions:!1});if(a+=`${this.format(t).bold(n)}${g} -`,f.length>0){a+=` -`,a+=`${hn.richFormat.header("Options")} -`;let h=f.reduce((p,C)=>Math.max(p,C.definition.length),0);a+=` -`;for(let{definition:p,description:C}of f)a+=` ${this.format(t).bold(p.padEnd(h))} ${hn.formatMarkdownish(C,{format:this.format(t),paragraphs:!1})}`}if(c!==""&&(a+=` -`,a+=`${this.format(t).header("Details")} -`,a+=` -`,a+=hn.formatMarkdownish(c,{format:this.format(t),paragraphs:!0})),u.length>0){a+=` -`,a+=`${this.format(t).header("Examples")} -`;for(let[h,p]of u)a+=` -`,a+=hn.formatMarkdownish(h,{format:this.format(t),paragraphs:!1}),a+=`${p.replace(/^/m,` ${this.format(t).bold(n)}`).replace(/\$0/g,this.binaryName)} -`}}else{let{usage:l}=this.getUsageByRegistration(o);a+=`${this.format(t).bold(n)}${l} -`}else{let l=new Map;for(let[f,{index:h}]of this.registrations.entries()){if(typeof f.usage>"u")continue;let p=typeof f.usage.category<"u"?hn.formatMarkdownish(f.usage.category,{format:this.format(t),paragraphs:!1}):null,C=l.get(p);typeof C>"u"&&l.set(p,C=[]);let{usage:w}=this.getUsageByIndex(h);C.push({commandClass:f,usage:w})}let c=Array.from(l.keys()).sort((f,h)=>f===null?-1:h===null?1:f.localeCompare(h,"en",{usage:"sort",caseFirst:"upper"})),u=typeof this.binaryLabel<"u",g=typeof this.binaryVersion<"u";u||g?(u&&g?a+=`${this.format(t).header(`${this.binaryLabel} - ${this.binaryVersion}`)} - -`:u?a+=`${this.format(t).header(`${this.binaryLabel}`)} -`:a+=`${this.format(t).header(`${this.binaryVersion}`)} -`,a+=` ${this.format(t).bold(n)}${this.binaryName} -`):a+=`${this.format(t).bold(n)}${this.binaryName} -`;for(let f of c){let h=l.get(f).slice().sort((C,w)=>C.usage.localeCompare(w.usage,"en",{usage:"sort",caseFirst:"upper"})),p=f!==null?f.trim():"General commands";a+=` -`,a+=`${this.format(t).header(`${p}`)} -`;for(let{commandClass:C,usage:w}of h){let B=C.usage.description||"undocumented";a+=` -`,a+=` ${this.format(t).bold(w)} -`,a+=` ${hn.formatMarkdownish(B,{format:this.format(t),paragraphs:!1})}`}}a+=` -`,a+=hn.formatMarkdownish("You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return a}error(e,t){var i,{colored:n,command:s=(i=e[IG])!==null&&i!==void 0?i:null}=t===void 0?{}:t;e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let o="",a=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");a==="Error"&&(a="Internal Error"),o+=`${this.format(n).error(a)}: ${e.message} -`;let l=e.clipanion;return typeof l<"u"?l.type==="usage"&&(o+=` -`,o+=this.usage(s)):e.stack&&(o+=`${e.stack.replace(/^.*\n/,"")} -`),o}format(e){var t;return((t=e!=null?e:this.enableColors)!==null&&t!==void 0?t:TA.defaultContext.colorDepth>1)?hn.richFormat:hn.textFormat}getUsageByRegistration(e,t){let i=this.registrations.get(e);if(typeof i>"u")throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(i.index,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}};TA.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:"getColorDepth"in EG.default.WriteStream.prototype?EG.default.WriteStream.prototype.getColorDepth():Ame()};var yG;function lme(r){let e=yG;if(typeof e>"u"){if(r.stdout===process.stdout&&r.stderr===process.stderr)return wG;let{AsyncLocalStorage:t}=J("async_hooks");e=yG=new t;let i=process.stdout._write;process.stdout._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?i.call(this,s,o,a):l.stdout.write(s,o,a)};let n=process.stderr._write;process.stderr._write=function(s,o,a){let l=e.getStore();return typeof l>"u"?n.call(this,s,o,a):l.stderr.write(s,o,a)}}return t=>e.run(r,t)}function wG(r){return r()}Wv.Cli=TA});var QG=y(zv=>{"use strict";Object.defineProperty(zv,"__esModule",{value:!0});var cme=Bc(),Ay=class extends cme.Command{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)} -`)}};Ay.paths=[["--clipanion=definitions"]];zv.DefinitionsCommand=Ay});var bG=y(Vv=>{"use strict";Object.defineProperty(Vv,"__esModule",{value:!0});var ume=Bc(),ly=class extends ume.Command{async execute(){this.context.stdout.write(this.cli.usage())}};ly.paths=[["-h"],["--help"]];Vv.HelpCommand=ly});var SG=y(Xv=>{"use strict";Object.defineProperty(Xv,"__esModule",{value:!0});var gme=Bc(),cy=class extends gme.Command{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:""} -`)}};cy.paths=[["-v"],["--version"]];Xv.VersionCommand=cy});var vG=y(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var fme=QG(),hme=bG(),pme=SG();Dd.DefinitionsCommand=fme.DefinitionsCommand;Dd.HelpCommand=hme.HelpCommand;Dd.VersionCommand=pme.VersionCommand});var PG=y(_v=>{"use strict";Object.defineProperty(_v,"__esModule",{value:!0});var xG=Sa();function dme(r,e,t){let[i,n]=xG.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return xG.makeCommandOption({definition(l){l.addOption({names:o,arity:s,hidden:n==null?void 0:n.hidden,description:n==null?void 0:n.description,required:n.required})},transformer(l,c,u){let g=typeof i<"u"?[...i]:void 0;for(let{name:f,value:h}of u.options)!a.has(f)||(g=g!=null?g:[],g.push(h));return g}})}_v.Array=dme});var kG=y(Zv=>{"use strict";Object.defineProperty(Zv,"__esModule",{value:!0});var DG=Sa();function Cme(r,e,t){let[i,n]=DG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return DG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u=f);return u}})}Zv.Boolean=Cme});var FG=y($v=>{"use strict";Object.defineProperty($v,"__esModule",{value:!0});var RG=Sa();function mme(r,e,t){let[i,n]=RG.rerouteArguments(e,t!=null?t:{}),s=r.split(","),o=new Set(s);return RG.makeCommandOption({definition(a){a.addOption({names:s,allowBinding:!1,arity:0,hidden:n.hidden,description:n.description,required:n.required})},transformer(a,l,c){let u=i;for(let{name:g,value:f}of c.options)!o.has(g)||(u!=null||(u=0),f?u+=1:u=0);return u}})}$v.Counter=mme});var NG=y(ex=>{"use strict";Object.defineProperty(ex,"__esModule",{value:!0});var Eme=Sa();function Ime(r={}){return Eme.makeCommandOption({definition(e,t){var i;e.addProxy({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){return i.positionals.map(({value:n})=>n)}})}ex.Proxy=Ime});var LG=y(tx=>{"use strict";Object.defineProperty(tx,"__esModule",{value:!0});var yme=Sa(),wme=ay();function Bme(r={}){return yme.makeCommandOption({definition(e,t){var i;e.addRest({name:(i=r.name)!==null&&i!==void 0?i:t,required:r.required})},transformer(e,t,i){let n=o=>{let a=i.positionals[o];return a.extra===wme.NoLimits||a.extra===!1&&oo)}})}tx.Rest=Bme});var TG=y(rx=>{"use strict";Object.defineProperty(rx,"__esModule",{value:!0});var kd=Sa(),Qme=ay();function bme(r,e,t){let[i,n]=kd.rerouteArguments(e,t!=null?t:{}),{arity:s=1}=n,o=r.split(","),a=new Set(o);return kd.makeCommandOption({definition(l){l.addOption({names:o,arity:n.tolerateBoolean?0:s,hidden:n.hidden,description:n.description,required:n.required})},transformer(l,c,u){let g,f=i;for(let{name:h,value:p}of u.options)!a.has(h)||(g=h,f=p);return typeof f=="string"?kd.applyValidator(g!=null?g:c,f,n.validator):f}})}function Sme(r={}){let{required:e=!0}=r;return kd.makeCommandOption({definition(t,i){var n;t.addPositional({name:(n=r.name)!==null&&n!==void 0?n:i,required:r.required})},transformer(t,i,n){var s;for(let o=0;o{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});var Af=Sa(),xme=PG(),Pme=kG(),Dme=FG(),kme=NG(),Rme=LG(),Fme=TG();pn.applyValidator=Af.applyValidator;pn.cleanValidationError=Af.cleanValidationError;pn.formatError=Af.formatError;pn.isOptionSymbol=Af.isOptionSymbol;pn.makeCommandOption=Af.makeCommandOption;pn.rerouteArguments=Af.rerouteArguments;pn.Array=xme.Array;pn.Boolean=Pme.Boolean;pn.Counter=Dme.Counter;pn.Proxy=kme.Proxy;pn.Rest=Rme.Rest;pn.String=Fme.String});var Xe=y(OA=>{"use strict";Object.defineProperty(OA,"__esModule",{value:!0});var Nme=ty(),Lme=Bc(),Tme=Gv(),Ome=BG(),Mme=vG(),Kme=OG();OA.UsageError=Nme.UsageError;OA.Command=Lme.Command;OA.formatMarkdownish=Tme.formatMarkdownish;OA.Cli=Ome.Cli;OA.Builtins=Mme;OA.Option=Kme});var KG=y((M$e,MG)=>{"use strict";MG.exports=(r,...e)=>new Promise(t=>{t(r(...e))})});var lf=y((K$e,ix)=>{"use strict";var Ume=KG(),UG=r=>{if(r<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");let e=[],t=0,i=()=>{t--,e.length>0&&e.shift()()},n=(a,l,...c)=>{t++;let u=Ume(a,...c);l(u),u.then(i,i)},s=(a,l,...c)=>{tnew Promise(c=>s(a,c,...l));return Object.defineProperties(o,{activeCount:{get:()=>t},pendingCount:{get:()=>e.length}}),o};ix.exports=UG;ix.exports.default=UG});var Rd=y((H$e,HG)=>{var Hme="2.0.0",Gme=Number.MAX_SAFE_INTEGER||9007199254740991,Yme=16;HG.exports={SEMVER_SPEC_VERSION:Hme,MAX_LENGTH:256,MAX_SAFE_INTEGER:Gme,MAX_SAFE_COMPONENT_LENGTH:Yme}});var Fd=y((G$e,GG)=>{var jme=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...r)=>console.error("SEMVER",...r):()=>{};GG.exports=jme});var bc=y((KA,YG)=>{var{MAX_SAFE_COMPONENT_LENGTH:nx}=Rd(),qme=Fd();KA=YG.exports={};var Jme=KA.re=[],_e=KA.src=[],Ze=KA.t={},Wme=0,St=(r,e,t)=>{let i=Wme++;qme(i,e),Ze[r]=i,_e[i]=e,Jme[i]=new RegExp(e,t?"g":void 0)};St("NUMERICIDENTIFIER","0|[1-9]\\d*");St("NUMERICIDENTIFIERLOOSE","[0-9]+");St("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*");St("MAINVERSION",`(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})\\.(${_e[Ze.NUMERICIDENTIFIER]})`);St("MAINVERSIONLOOSE",`(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})\\.(${_e[Ze.NUMERICIDENTIFIERLOOSE]})`);St("PRERELEASEIDENTIFIER",`(?:${_e[Ze.NUMERICIDENTIFIER]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASEIDENTIFIERLOOSE",`(?:${_e[Ze.NUMERICIDENTIFIERLOOSE]}|${_e[Ze.NONNUMERICIDENTIFIER]})`);St("PRERELEASE",`(?:-(${_e[Ze.PRERELEASEIDENTIFIER]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIER]})*))`);St("PRERELEASELOOSE",`(?:-?(${_e[Ze.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${_e[Ze.PRERELEASEIDENTIFIERLOOSE]})*))`);St("BUILDIDENTIFIER","[0-9A-Za-z-]+");St("BUILD",`(?:\\+(${_e[Ze.BUILDIDENTIFIER]}(?:\\.${_e[Ze.BUILDIDENTIFIER]})*))`);St("FULLPLAIN",`v?${_e[Ze.MAINVERSION]}${_e[Ze.PRERELEASE]}?${_e[Ze.BUILD]}?`);St("FULL",`^${_e[Ze.FULLPLAIN]}$`);St("LOOSEPLAIN",`[v=\\s]*${_e[Ze.MAINVERSIONLOOSE]}${_e[Ze.PRERELEASELOOSE]}?${_e[Ze.BUILD]}?`);St("LOOSE",`^${_e[Ze.LOOSEPLAIN]}$`);St("GTLT","((?:<|>)?=?)");St("XRANGEIDENTIFIERLOOSE",`${_e[Ze.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);St("XRANGEIDENTIFIER",`${_e[Ze.NUMERICIDENTIFIER]}|x|X|\\*`);St("XRANGEPLAIN",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:\\.(${_e[Ze.XRANGEIDENTIFIER]})(?:${_e[Ze.PRERELEASE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGEPLAINLOOSE",`[v=\\s]*(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:\\.(${_e[Ze.XRANGEIDENTIFIERLOOSE]})(?:${_e[Ze.PRERELEASELOOSE]})?${_e[Ze.BUILD]}?)?)?`);St("XRANGE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAIN]}$`);St("XRANGELOOSE",`^${_e[Ze.GTLT]}\\s*${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COERCE",`(^|[^\\d])(\\d{1,${nx}})(?:\\.(\\d{1,${nx}}))?(?:\\.(\\d{1,${nx}}))?(?:$|[^\\d])`);St("COERCERTL",_e[Ze.COERCE],!0);St("LONETILDE","(?:~>?)");St("TILDETRIM",`(\\s*)${_e[Ze.LONETILDE]}\\s+`,!0);KA.tildeTrimReplace="$1~";St("TILDE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAIN]}$`);St("TILDELOOSE",`^${_e[Ze.LONETILDE]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("LONECARET","(?:\\^)");St("CARETTRIM",`(\\s*)${_e[Ze.LONECARET]}\\s+`,!0);KA.caretTrimReplace="$1^";St("CARET",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAIN]}$`);St("CARETLOOSE",`^${_e[Ze.LONECARET]}${_e[Ze.XRANGEPLAINLOOSE]}$`);St("COMPARATORLOOSE",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]})$|^$`);St("COMPARATOR",`^${_e[Ze.GTLT]}\\s*(${_e[Ze.FULLPLAIN]})$|^$`);St("COMPARATORTRIM",`(\\s*)${_e[Ze.GTLT]}\\s*(${_e[Ze.LOOSEPLAIN]}|${_e[Ze.XRANGEPLAIN]})`,!0);KA.comparatorTrimReplace="$1$2$3";St("HYPHENRANGE",`^\\s*(${_e[Ze.XRANGEPLAIN]})\\s+-\\s+(${_e[Ze.XRANGEPLAIN]})\\s*$`);St("HYPHENRANGELOOSE",`^\\s*(${_e[Ze.XRANGEPLAINLOOSE]})\\s+-\\s+(${_e[Ze.XRANGEPLAINLOOSE]})\\s*$`);St("STAR","(<|>)?=?\\s*\\*");St("GTE0","^\\s*>=\\s*0.0.0\\s*$");St("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")});var Nd=y((Y$e,jG)=>{var zme=["includePrerelease","loose","rtl"],Vme=r=>r?typeof r!="object"?{loose:!0}:zme.filter(e=>r[e]).reduce((e,t)=>(e[t]=!0,e),{}):{};jG.exports=Vme});var gy=y((j$e,WG)=>{var qG=/^[0-9]+$/,JG=(r,e)=>{let t=qG.test(r),i=qG.test(e);return t&&i&&(r=+r,e=+e),r===e?0:t&&!i?-1:i&&!t?1:rJG(e,r);WG.exports={compareIdentifiers:JG,rcompareIdentifiers:Xme}});var Oi=y((q$e,_G)=>{var fy=Fd(),{MAX_LENGTH:zG,MAX_SAFE_INTEGER:hy}=Rd(),{re:VG,t:XG}=bc(),_me=Nd(),{compareIdentifiers:Ld}=gy(),Un=class{constructor(e,t){if(t=_me(t),e instanceof Un){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid Version: ${e}`);if(e.length>zG)throw new TypeError(`version is longer than ${zG} characters`);fy("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let i=e.trim().match(t.loose?VG[XG.LOOSE]:VG[XG.FULL]);if(!i)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+i[1],this.minor=+i[2],this.patch=+i[3],this.major>hy||this.major<0)throw new TypeError("Invalid major version");if(this.minor>hy||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>hy||this.patch<0)throw new TypeError("Invalid patch version");i[4]?this.prerelease=i[4].split(".").map(n=>{if(/^[0-9]+$/.test(n)){let s=+n;if(s>=0&&s=0;)typeof this.prerelease[i]=="number"&&(this.prerelease[i]++,i=-2);i===-1&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error(`invalid increment argument: ${e}`)}return this.format(),this.raw=this.version,this}};_G.exports=Un});var Sc=y((J$e,tY)=>{var{MAX_LENGTH:Zme}=Rd(),{re:ZG,t:$G}=bc(),eY=Oi(),$me=Nd(),eEe=(r,e)=>{if(e=$me(e),r instanceof eY)return r;if(typeof r!="string"||r.length>Zme||!(e.loose?ZG[$G.LOOSE]:ZG[$G.FULL]).test(r))return null;try{return new eY(r,e)}catch{return null}};tY.exports=eEe});var iY=y((W$e,rY)=>{var tEe=Sc(),rEe=(r,e)=>{let t=tEe(r,e);return t?t.version:null};rY.exports=rEe});var sY=y((z$e,nY)=>{var iEe=Sc(),nEe=(r,e)=>{let t=iEe(r.trim().replace(/^[=v]+/,""),e);return t?t.version:null};nY.exports=nEe});var aY=y((V$e,oY)=>{var sEe=Oi(),oEe=(r,e,t,i)=>{typeof t=="string"&&(i=t,t=void 0);try{return new sEe(r,t).inc(e,i).version}catch{return null}};oY.exports=oEe});var os=y((X$e,lY)=>{var AY=Oi(),aEe=(r,e,t)=>new AY(r,t).compare(new AY(e,t));lY.exports=aEe});var py=y((_$e,cY)=>{var AEe=os(),lEe=(r,e,t)=>AEe(r,e,t)===0;cY.exports=lEe});var fY=y((Z$e,gY)=>{var uY=Sc(),cEe=py(),uEe=(r,e)=>{if(cEe(r,e))return null;{let t=uY(r),i=uY(e),n=t.prerelease.length||i.prerelease.length,s=n?"pre":"",o=n?"prerelease":"";for(let a in t)if((a==="major"||a==="minor"||a==="patch")&&t[a]!==i[a])return s+a;return o}};gY.exports=uEe});var pY=y(($$e,hY)=>{var gEe=Oi(),fEe=(r,e)=>new gEe(r,e).major;hY.exports=fEe});var CY=y((eet,dY)=>{var hEe=Oi(),pEe=(r,e)=>new hEe(r,e).minor;dY.exports=pEe});var EY=y((tet,mY)=>{var dEe=Oi(),CEe=(r,e)=>new dEe(r,e).patch;mY.exports=CEe});var yY=y((ret,IY)=>{var mEe=Sc(),EEe=(r,e)=>{let t=mEe(r,e);return t&&t.prerelease.length?t.prerelease:null};IY.exports=EEe});var BY=y((iet,wY)=>{var IEe=os(),yEe=(r,e,t)=>IEe(e,r,t);wY.exports=yEe});var bY=y((net,QY)=>{var wEe=os(),BEe=(r,e)=>wEe(r,e,!0);QY.exports=BEe});var dy=y((set,vY)=>{var SY=Oi(),QEe=(r,e,t)=>{let i=new SY(r,t),n=new SY(e,t);return i.compare(n)||i.compareBuild(n)};vY.exports=QEe});var PY=y((oet,xY)=>{var bEe=dy(),SEe=(r,e)=>r.sort((t,i)=>bEe(t,i,e));xY.exports=SEe});var kY=y((aet,DY)=>{var vEe=dy(),xEe=(r,e)=>r.sort((t,i)=>vEe(i,t,e));DY.exports=xEe});var Td=y((Aet,RY)=>{var PEe=os(),DEe=(r,e,t)=>PEe(r,e,t)>0;RY.exports=DEe});var Cy=y((cet,FY)=>{var kEe=os(),REe=(r,e,t)=>kEe(r,e,t)<0;FY.exports=REe});var sx=y((uet,NY)=>{var FEe=os(),NEe=(r,e,t)=>FEe(r,e,t)!==0;NY.exports=NEe});var my=y((get,LY)=>{var LEe=os(),TEe=(r,e,t)=>LEe(r,e,t)>=0;LY.exports=TEe});var Ey=y((fet,TY)=>{var OEe=os(),MEe=(r,e,t)=>OEe(r,e,t)<=0;TY.exports=MEe});var ox=y((het,OY)=>{var KEe=py(),UEe=sx(),HEe=Td(),GEe=my(),YEe=Cy(),jEe=Ey(),qEe=(r,e,t,i)=>{switch(e){case"===":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r===t;case"!==":return typeof r=="object"&&(r=r.version),typeof t=="object"&&(t=t.version),r!==t;case"":case"=":case"==":return KEe(r,t,i);case"!=":return UEe(r,t,i);case">":return HEe(r,t,i);case">=":return GEe(r,t,i);case"<":return YEe(r,t,i);case"<=":return jEe(r,t,i);default:throw new TypeError(`Invalid operator: ${e}`)}};OY.exports=qEe});var KY=y((pet,MY)=>{var JEe=Oi(),WEe=Sc(),{re:Iy,t:yy}=bc(),zEe=(r,e)=>{if(r instanceof JEe)return r;if(typeof r=="number"&&(r=String(r)),typeof r!="string")return null;e=e||{};let t=null;if(!e.rtl)t=r.match(Iy[yy.COERCE]);else{let i;for(;(i=Iy[yy.COERCERTL].exec(r))&&(!t||t.index+t[0].length!==r.length);)(!t||i.index+i[0].length!==t.index+t[0].length)&&(t=i),Iy[yy.COERCERTL].lastIndex=i.index+i[1].length+i[2].length;Iy[yy.COERCERTL].lastIndex=-1}return t===null?null:WEe(`${t[2]}.${t[3]||"0"}.${t[4]||"0"}`,e)};MY.exports=zEe});var HY=y((det,UY)=>{"use strict";UY.exports=function(r){r.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var Od=y((Cet,GY)=>{"use strict";GY.exports=Ht;Ht.Node=vc;Ht.create=Ht;function Ht(r){var e=this;if(e instanceof Ht||(e=new Ht),e.tail=null,e.head=null,e.length=0,r&&typeof r.forEach=="function")r.forEach(function(n){e.push(n)});else if(arguments.length>0)for(var t=0,i=arguments.length;t1)t=e;else if(this.head)i=this.head.next,t=this.head.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=0;i!==null;n++)t=r(t,i.value,n),i=i.next;return t};Ht.prototype.reduceReverse=function(r,e){var t,i=this.tail;if(arguments.length>1)t=e;else if(this.tail)i=this.tail.prev,t=this.tail.value;else throw new TypeError("Reduce of empty list with no initial value");for(var n=this.length-1;i!==null;n--)t=r(t,i.value,n),i=i.prev;return t};Ht.prototype.toArray=function(){for(var r=new Array(this.length),e=0,t=this.head;t!==null;e++)r[e]=t.value,t=t.next;return r};Ht.prototype.toArrayReverse=function(){for(var r=new Array(this.length),e=0,t=this.tail;t!==null;e++)r[e]=t.value,t=t.prev;return r};Ht.prototype.slice=function(r,e){e=e||this.length,e<0&&(e+=this.length),r=r||0,r<0&&(r+=this.length);var t=new Ht;if(ethis.length&&(e=this.length);for(var i=0,n=this.head;n!==null&&ithis.length&&(e=this.length);for(var i=this.length,n=this.tail;n!==null&&i>e;i--)n=n.prev;for(;n!==null&&i>r;i--,n=n.prev)t.push(n.value);return t};Ht.prototype.splice=function(r,e,...t){r>this.length&&(r=this.length-1),r<0&&(r=this.length+r);for(var i=0,n=this.head;n!==null&&i{"use strict";var ZEe=Od(),xc=Symbol("max"),xa=Symbol("length"),cf=Symbol("lengthCalculator"),Kd=Symbol("allowStale"),Pc=Symbol("maxAge"),va=Symbol("dispose"),YY=Symbol("noDisposeOnSet"),Ii=Symbol("lruList"),zs=Symbol("cache"),qY=Symbol("updateAgeOnGet"),ax=()=>1,lx=class{constructor(e){if(typeof e=="number"&&(e={max:e}),e||(e={}),e.max&&(typeof e.max!="number"||e.max<0))throw new TypeError("max must be a non-negative number");let t=this[xc]=e.max||1/0,i=e.length||ax;if(this[cf]=typeof i!="function"?ax:i,this[Kd]=e.stale||!1,e.maxAge&&typeof e.maxAge!="number")throw new TypeError("maxAge must be a number");this[Pc]=e.maxAge||0,this[va]=e.dispose,this[YY]=e.noDisposeOnSet||!1,this[qY]=e.updateAgeOnGet||!1,this.reset()}set max(e){if(typeof e!="number"||e<0)throw new TypeError("max must be a non-negative number");this[xc]=e||1/0,Md(this)}get max(){return this[xc]}set allowStale(e){this[Kd]=!!e}get allowStale(){return this[Kd]}set maxAge(e){if(typeof e!="number")throw new TypeError("maxAge must be a non-negative number");this[Pc]=e,Md(this)}get maxAge(){return this[Pc]}set lengthCalculator(e){typeof e!="function"&&(e=ax),e!==this[cf]&&(this[cf]=e,this[xa]=0,this[Ii].forEach(t=>{t.length=this[cf](t.value,t.key),this[xa]+=t.length})),Md(this)}get lengthCalculator(){return this[cf]}get length(){return this[xa]}get itemCount(){return this[Ii].length}rforEach(e,t){t=t||this;for(let i=this[Ii].tail;i!==null;){let n=i.prev;jY(this,e,i,t),i=n}}forEach(e,t){t=t||this;for(let i=this[Ii].head;i!==null;){let n=i.next;jY(this,e,i,t),i=n}}keys(){return this[Ii].toArray().map(e=>e.key)}values(){return this[Ii].toArray().map(e=>e.value)}reset(){this[va]&&this[Ii]&&this[Ii].length&&this[Ii].forEach(e=>this[va](e.key,e.value)),this[zs]=new Map,this[Ii]=new ZEe,this[xa]=0}dump(){return this[Ii].map(e=>wy(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Ii]}set(e,t,i){if(i=i||this[Pc],i&&typeof i!="number")throw new TypeError("maxAge must be a number");let n=i?Date.now():0,s=this[cf](t,e);if(this[zs].has(e)){if(s>this[xc])return uf(this,this[zs].get(e)),!1;let l=this[zs].get(e).value;return this[va]&&(this[YY]||this[va](e,l.value)),l.now=n,l.maxAge=i,l.value=t,this[xa]+=s-l.length,l.length=s,this.get(e),Md(this),!0}let o=new cx(e,t,s,n,i);return o.length>this[xc]?(this[va]&&this[va](e,t),!1):(this[xa]+=o.length,this[Ii].unshift(o),this[zs].set(e,this[Ii].head),Md(this),!0)}has(e){if(!this[zs].has(e))return!1;let t=this[zs].get(e).value;return!wy(this,t)}get(e){return Ax(this,e,!0)}peek(e){return Ax(this,e,!1)}pop(){let e=this[Ii].tail;return e?(uf(this,e),e.value):null}del(e){uf(this,this[zs].get(e))}load(e){this.reset();let t=Date.now();for(let i=e.length-1;i>=0;i--){let n=e[i],s=n.e||0;if(s===0)this.set(n.k,n.v);else{let o=s-t;o>0&&this.set(n.k,n.v,o)}}}prune(){this[zs].forEach((e,t)=>Ax(this,t,!1))}},Ax=(r,e,t)=>{let i=r[zs].get(e);if(i){let n=i.value;if(wy(r,n)){if(uf(r,i),!r[Kd])return}else t&&(r[qY]&&(i.value.now=Date.now()),r[Ii].unshiftNode(i));return n.value}},wy=(r,e)=>{if(!e||!e.maxAge&&!r[Pc])return!1;let t=Date.now()-e.now;return e.maxAge?t>e.maxAge:r[Pc]&&t>r[Pc]},Md=r=>{if(r[xa]>r[xc])for(let e=r[Ii].tail;r[xa]>r[xc]&&e!==null;){let t=e.prev;uf(r,e),e=t}},uf=(r,e)=>{if(e){let t=e.value;r[va]&&r[va](t.key,t.value),r[xa]-=t.length,r[zs].delete(t.key),r[Ii].removeNode(e)}},cx=class{constructor(e,t,i,n,s){this.key=e,this.value=t,this.length=i,this.now=n,this.maxAge=s||0}},jY=(r,e,t,i)=>{let n=t.value;wy(r,n)&&(uf(r,t),r[Kd]||(n=void 0)),n&&e.call(i,n.value,n.key,r)};JY.exports=lx});var as=y((Eet,_Y)=>{var Dc=class{constructor(e,t){if(t=eIe(t),e instanceof Dc)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Dc(e.raw,t);if(e instanceof ux)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(i=>this.parseRange(i.trim())).filter(i=>i.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${e}`);if(this.set.length>1){let i=this.set[0];if(this.set=this.set.filter(n=>!VY(n[0])),this.set.length===0)this.set=[i];else if(this.set.length>1){for(let n of this.set)if(n.length===1&&sIe(n[0])){this.set=[n];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){e=e.trim();let i=`parseRange:${Object.keys(this.options).join(",")}:${e}`,n=zY.get(i);if(n)return n;let s=this.options.loose,o=s?Mi[bi.HYPHENRANGELOOSE]:Mi[bi.HYPHENRANGE];e=e.replace(o,pIe(this.options.includePrerelease)),jr("hyphen replace",e),e=e.replace(Mi[bi.COMPARATORTRIM],rIe),jr("comparator trim",e,Mi[bi.COMPARATORTRIM]),e=e.replace(Mi[bi.TILDETRIM],iIe),e=e.replace(Mi[bi.CARETTRIM],nIe),e=e.split(/\s+/).join(" ");let a=s?Mi[bi.COMPARATORLOOSE]:Mi[bi.COMPARATOR],l=e.split(" ").map(f=>oIe(f,this.options)).join(" ").split(/\s+/).map(f=>hIe(f,this.options)).filter(this.options.loose?f=>!!f.match(a):()=>!0).map(f=>new ux(f,this.options)),c=l.length,u=new Map;for(let f of l){if(VY(f))return[f];u.set(f.value,f)}u.size>1&&u.has("")&&u.delete("");let g=[...u.values()];return zY.set(i,g),g}intersects(e,t){if(!(e instanceof Dc))throw new TypeError("a Range is required");return this.set.some(i=>XY(i,t)&&e.set.some(n=>XY(n,t)&&i.every(s=>n.every(o=>s.intersects(o,t)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new tIe(e,this.options)}catch{return!1}for(let t=0;tr.value==="<0.0.0-0",sIe=r=>r.value==="",XY=(r,e)=>{let t=!0,i=r.slice(),n=i.pop();for(;t&&i.length;)t=i.every(s=>n.intersects(s,e)),n=i.pop();return t},oIe=(r,e)=>(jr("comp",r,e),r=lIe(r,e),jr("caret",r),r=aIe(r,e),jr("tildes",r),r=uIe(r,e),jr("xrange",r),r=fIe(r,e),jr("stars",r),r),Xi=r=>!r||r.toLowerCase()==="x"||r==="*",aIe=(r,e)=>r.trim().split(/\s+/).map(t=>AIe(t,e)).join(" "),AIe=(r,e)=>{let t=e.loose?Mi[bi.TILDELOOSE]:Mi[bi.TILDE];return r.replace(t,(i,n,s,o,a)=>{jr("tilde",r,i,n,s,o,a);let l;return Xi(n)?l="":Xi(s)?l=`>=${n}.0.0 <${+n+1}.0.0-0`:Xi(o)?l=`>=${n}.${s}.0 <${n}.${+s+1}.0-0`:a?(jr("replaceTilde pr",a),l=`>=${n}.${s}.${o}-${a} <${n}.${+s+1}.0-0`):l=`>=${n}.${s}.${o} <${n}.${+s+1}.0-0`,jr("tilde return",l),l})},lIe=(r,e)=>r.trim().split(/\s+/).map(t=>cIe(t,e)).join(" "),cIe=(r,e)=>{jr("caret",r,e);let t=e.loose?Mi[bi.CARETLOOSE]:Mi[bi.CARET],i=e.includePrerelease?"-0":"";return r.replace(t,(n,s,o,a,l)=>{jr("caret",r,n,s,o,a,l);let c;return Xi(s)?c="":Xi(o)?c=`>=${s}.0.0${i} <${+s+1}.0.0-0`:Xi(a)?s==="0"?c=`>=${s}.${o}.0${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.0${i} <${+s+1}.0.0-0`:l?(jr("replaceCaret pr",l),s==="0"?o==="0"?c=`>=${s}.${o}.${a}-${l} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}-${l} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a}-${l} <${+s+1}.0.0-0`):(jr("no pr"),s==="0"?o==="0"?c=`>=${s}.${o}.${a}${i} <${s}.${o}.${+a+1}-0`:c=`>=${s}.${o}.${a}${i} <${s}.${+o+1}.0-0`:c=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),jr("caret return",c),c})},uIe=(r,e)=>(jr("replaceXRanges",r,e),r.split(/\s+/).map(t=>gIe(t,e)).join(" ")),gIe=(r,e)=>{r=r.trim();let t=e.loose?Mi[bi.XRANGELOOSE]:Mi[bi.XRANGE];return r.replace(t,(i,n,s,o,a,l)=>{jr("xRange",r,i,n,s,o,a,l);let c=Xi(s),u=c||Xi(o),g=u||Xi(a),f=g;return n==="="&&f&&(n=""),l=e.includePrerelease?"-0":"",c?n===">"||n==="<"?i="<0.0.0-0":i="*":n&&f?(u&&(o=0),a=0,n===">"?(n=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):n==="<="&&(n="<",u?s=+s+1:o=+o+1),n==="<"&&(l="-0"),i=`${n+s}.${o}.${a}${l}`):u?i=`>=${s}.0.0${l} <${+s+1}.0.0-0`:g&&(i=`>=${s}.${o}.0${l} <${s}.${+o+1}.0-0`),jr("xRange return",i),i})},fIe=(r,e)=>(jr("replaceStars",r,e),r.trim().replace(Mi[bi.STAR],"")),hIe=(r,e)=>(jr("replaceGTE0",r,e),r.trim().replace(Mi[e.includePrerelease?bi.GTE0PRE:bi.GTE0],"")),pIe=r=>(e,t,i,n,s,o,a,l,c,u,g,f,h)=>(Xi(i)?t="":Xi(n)?t=`>=${i}.0.0${r?"-0":""}`:Xi(s)?t=`>=${i}.${n}.0${r?"-0":""}`:o?t=`>=${t}`:t=`>=${t}${r?"-0":""}`,Xi(c)?l="":Xi(u)?l=`<${+c+1}.0.0-0`:Xi(g)?l=`<${c}.${+u+1}.0-0`:f?l=`<=${c}.${u}.${g}-${f}`:r?l=`<${c}.${u}.${+g+1}-0`:l=`<=${l}`,`${t} ${l}`.trim()),dIe=(r,e,t)=>{for(let i=0;i0){let n=r[i].semver;if(n.major===e.major&&n.minor===e.minor&&n.patch===e.patch)return!0}return!1}return!0}});var Ud=y((Iet,rj)=>{var Hd=Symbol("SemVer ANY"),gf=class{static get ANY(){return Hd}constructor(e,t){if(t=CIe(t),e instanceof gf){if(e.loose===!!t.loose)return e;e=e.value}fx("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===Hd?this.value="":this.value=this.operator+this.semver.version,fx("comp",this)}parse(e){let t=this.options.loose?ZY[$Y.COMPARATORLOOSE]:ZY[$Y.COMPARATOR],i=e.match(t);if(!i)throw new TypeError(`Invalid comparator: ${e}`);this.operator=i[1]!==void 0?i[1]:"",this.operator==="="&&(this.operator=""),i[2]?this.semver=new ej(i[2],this.options.loose):this.semver=Hd}toString(){return this.value}test(e){if(fx("Comparator.test",e,this.options.loose),this.semver===Hd||e===Hd)return!0;if(typeof e=="string")try{e=new ej(e,this.options)}catch{return!1}return gx(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof gf))throw new TypeError("a Comparator is required");if((!t||typeof t!="object")&&(t={loose:!!t,includePrerelease:!1}),this.operator==="")return this.value===""?!0:new tj(e.value,t).test(this.value);if(e.operator==="")return e.value===""?!0:new tj(this.value,t).test(e.semver);let i=(this.operator===">="||this.operator===">")&&(e.operator===">="||e.operator===">"),n=(this.operator==="<="||this.operator==="<")&&(e.operator==="<="||e.operator==="<"),s=this.semver.version===e.semver.version,o=(this.operator===">="||this.operator==="<=")&&(e.operator===">="||e.operator==="<="),a=gx(this.semver,"<",e.semver,t)&&(this.operator===">="||this.operator===">")&&(e.operator==="<="||e.operator==="<"),l=gx(this.semver,">",e.semver,t)&&(this.operator==="<="||this.operator==="<")&&(e.operator===">="||e.operator===">");return i||n||s&&o||a||l}};rj.exports=gf;var CIe=Nd(),{re:ZY,t:$Y}=bc(),gx=ox(),fx=Fd(),ej=Oi(),tj=as()});var Gd=y((yet,ij)=>{var mIe=as(),EIe=(r,e,t)=>{try{e=new mIe(e,t)}catch{return!1}return e.test(r)};ij.exports=EIe});var sj=y((wet,nj)=>{var IIe=as(),yIe=(r,e)=>new IIe(r,e).set.map(t=>t.map(i=>i.value).join(" ").trim().split(" "));nj.exports=yIe});var aj=y((Bet,oj)=>{var wIe=Oi(),BIe=as(),QIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new BIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===-1)&&(i=o,n=new wIe(i,t))}),i};oj.exports=QIe});var lj=y((Qet,Aj)=>{var bIe=Oi(),SIe=as(),vIe=(r,e,t)=>{let i=null,n=null,s=null;try{s=new SIe(e,t)}catch{return null}return r.forEach(o=>{s.test(o)&&(!i||n.compare(o)===1)&&(i=o,n=new bIe(i,t))}),i};Aj.exports=vIe});var gj=y((bet,uj)=>{var hx=Oi(),xIe=as(),cj=Td(),PIe=(r,e)=>{r=new xIe(r,e);let t=new hx("0.0.0");if(r.test(t)||(t=new hx("0.0.0-0"),r.test(t)))return t;t=null;for(let i=0;i{let a=new hx(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||cj(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!t||cj(t,s))&&(t=s)}return t&&r.test(t)?t:null};uj.exports=PIe});var hj=y((vet,fj)=>{var DIe=as(),kIe=(r,e)=>{try{return new DIe(r,e).range||"*"}catch{return null}};fj.exports=kIe});var By=y((xet,mj)=>{var RIe=Oi(),Cj=Ud(),{ANY:FIe}=Cj,NIe=as(),LIe=Gd(),pj=Td(),dj=Cy(),TIe=Ey(),OIe=my(),MIe=(r,e,t,i)=>{r=new RIe(r,i),e=new NIe(e,i);let n,s,o,a,l;switch(t){case">":n=pj,s=TIe,o=dj,a=">",l=">=";break;case"<":n=dj,s=OIe,o=pj,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(LIe(r,e,i))return!1;for(let c=0;c{h.semver===FIe&&(h=new Cj(">=0.0.0")),g=g||h,f=f||h,n(h.semver,g.semver,i)?g=h:o(h.semver,f.semver,i)&&(f=h)}),g.operator===a||g.operator===l||(!f.operator||f.operator===a)&&s(r,f.semver))return!1;if(f.operator===l&&o(r,f.semver))return!1}return!0};mj.exports=MIe});var Ij=y((Pet,Ej)=>{var KIe=By(),UIe=(r,e,t)=>KIe(r,e,">",t);Ej.exports=UIe});var wj=y((Det,yj)=>{var HIe=By(),GIe=(r,e,t)=>HIe(r,e,"<",t);yj.exports=GIe});var bj=y((ket,Qj)=>{var Bj=as(),YIe=(r,e,t)=>(r=new Bj(r,t),e=new Bj(e,t),r.intersects(e));Qj.exports=YIe});var vj=y((Ret,Sj)=>{var jIe=Gd(),qIe=os();Sj.exports=(r,e,t)=>{let i=[],n=null,s=null,o=r.sort((u,g)=>qIe(u,g,t));for(let u of o)jIe(u,e,t)?(s=u,n||(n=u)):(s&&i.push([n,s]),s=null,n=null);n&&i.push([n,null]);let a=[];for(let[u,g]of i)u===g?a.push(u):!g&&u===o[0]?a.push("*"):g?u===o[0]?a.push(`<=${g}`):a.push(`${u} - ${g}`):a.push(`>=${u}`);let l=a.join(" || "),c=typeof e.raw=="string"?e.raw:String(e);return l.length{var xj=as(),Qy=Ud(),{ANY:px}=Qy,Yd=Gd(),dx=os(),JIe=(r,e,t={})=>{if(r===e)return!0;r=new xj(r,t),e=new xj(e,t);let i=!1;e:for(let n of r.set){for(let s of e.set){let o=WIe(n,s,t);if(i=i||o!==null,o)continue e}if(i)return!1}return!0},WIe=(r,e,t)=>{if(r===e)return!0;if(r.length===1&&r[0].semver===px){if(e.length===1&&e[0].semver===px)return!0;t.includePrerelease?r=[new Qy(">=0.0.0-0")]:r=[new Qy(">=0.0.0")]}if(e.length===1&&e[0].semver===px){if(t.includePrerelease)return!0;e=[new Qy(">=0.0.0")]}let i=new Set,n,s;for(let h of r)h.operator===">"||h.operator===">="?n=Pj(n,h,t):h.operator==="<"||h.operator==="<="?s=Dj(s,h,t):i.add(h.semver);if(i.size>1)return null;let o;if(n&&s){if(o=dx(n.semver,s.semver,t),o>0)return null;if(o===0&&(n.operator!==">="||s.operator!=="<="))return null}for(let h of i){if(n&&!Yd(h,String(n),t)||s&&!Yd(h,String(s),t))return null;for(let p of e)if(!Yd(h,String(p),t))return!1;return!0}let a,l,c,u,g=s&&!t.includePrerelease&&s.semver.prerelease.length?s.semver:!1,f=n&&!t.includePrerelease&&n.semver.prerelease.length?n.semver:!1;g&&g.prerelease.length===1&&s.operator==="<"&&g.prerelease[0]===0&&(g=!1);for(let h of e){if(u=u||h.operator===">"||h.operator===">=",c=c||h.operator==="<"||h.operator==="<=",n){if(f&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===f.major&&h.semver.minor===f.minor&&h.semver.patch===f.patch&&(f=!1),h.operator===">"||h.operator===">="){if(a=Pj(n,h,t),a===h&&a!==n)return!1}else if(n.operator===">="&&!Yd(n.semver,String(h),t))return!1}if(s){if(g&&h.semver.prerelease&&h.semver.prerelease.length&&h.semver.major===g.major&&h.semver.minor===g.minor&&h.semver.patch===g.patch&&(g=!1),h.operator==="<"||h.operator==="<="){if(l=Dj(s,h,t),l===h&&l!==s)return!1}else if(s.operator==="<="&&!Yd(s.semver,String(h),t))return!1}if(!h.operator&&(s||n)&&o!==0)return!1}return!(n&&c&&!s&&o!==0||s&&u&&!n&&o!==0||f||g)},Pj=(r,e,t)=>{if(!r)return e;let i=dx(r.semver,e.semver,t);return i>0?r:i<0||e.operator===">"&&r.operator===">="?e:r},Dj=(r,e,t)=>{if(!r)return e;let i=dx(r.semver,e.semver,t);return i<0?r:i>0||e.operator==="<"&&r.operator==="<="?e:r};kj.exports=JIe});var $r=y((Net,Fj)=>{var Cx=bc();Fj.exports={re:Cx.re,src:Cx.src,tokens:Cx.t,SEMVER_SPEC_VERSION:Rd().SEMVER_SPEC_VERSION,SemVer:Oi(),compareIdentifiers:gy().compareIdentifiers,rcompareIdentifiers:gy().rcompareIdentifiers,parse:Sc(),valid:iY(),clean:sY(),inc:aY(),diff:fY(),major:pY(),minor:CY(),patch:EY(),prerelease:yY(),compare:os(),rcompare:BY(),compareLoose:bY(),compareBuild:dy(),sort:PY(),rsort:kY(),gt:Td(),lt:Cy(),eq:py(),neq:sx(),gte:my(),lte:Ey(),cmp:ox(),coerce:KY(),Comparator:Ud(),Range:as(),satisfies:Gd(),toComparators:sj(),maxSatisfying:aj(),minSatisfying:lj(),minVersion:gj(),validRange:hj(),outside:By(),gtr:Ij(),ltr:wj(),intersects:bj(),simplifyRange:vj(),subset:Rj()}});var mx=y(by=>{"use strict";Object.defineProperty(by,"__esModule",{value:!0});by.VERSION=void 0;by.VERSION="9.1.0"});var Gt=y((exports,module)=>{"use strict";var __spreadArray=exports&&exports.__spreadArray||function(r,e,t){if(t||arguments.length===2)for(var i=0,n=e.length,s;i{(function(r,e){typeof define=="function"&&define.amd?define([],e):typeof Sy=="object"&&Sy.exports?Sy.exports=e():r.regexpToAst=e()})(typeof self<"u"?self:Nj,function(){function r(){}r.prototype.saveState=function(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}},r.prototype.restoreState=function(p){this.idx=p.idx,this.input=p.input,this.groupIdx=p.groupIdx},r.prototype.pattern=function(p){this.idx=0,this.input=p,this.groupIdx=0,this.consumeChar("/");var C=this.disjunction();this.consumeChar("/");for(var w={type:"Flags",loc:{begin:this.idx,end:p.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};this.isRegExpFlag();)switch(this.popChar()){case"g":o(w,"global");break;case"i":o(w,"ignoreCase");break;case"m":o(w,"multiLine");break;case"u":o(w,"unicode");break;case"y":o(w,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:w,value:C,loc:this.loc(0)}},r.prototype.disjunction=function(){var p=[],C=this.idx;for(p.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),p.push(this.alternative());return{type:"Disjunction",value:p,loc:this.loc(C)}},r.prototype.alternative=function(){for(var p=[],C=this.idx;this.isTerm();)p.push(this.term());return{type:"Alternative",value:p,loc:this.loc(C)}},r.prototype.term=function(){return this.isAssertion()?this.assertion():this.atom()},r.prototype.assertion=function(){var p=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(p)};case"$":return{type:"EndAnchor",loc:this.loc(p)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(p)};case"B":return{type:"NonWordBoundary",loc:this.loc(p)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");var C;switch(this.popChar()){case"=":C="Lookahead";break;case"!":C="NegativeLookahead";break}a(C);var w=this.disjunction();return this.consumeChar(")"),{type:C,value:w,loc:this.loc(p)}}l()},r.prototype.quantifier=function(p){var C,w=this.idx;switch(this.popChar()){case"*":C={atLeast:0,atMost:1/0};break;case"+":C={atLeast:1,atMost:1/0};break;case"?":C={atLeast:0,atMost:1};break;case"{":var B=this.integerIncludingZero();switch(this.popChar()){case"}":C={atLeast:B,atMost:B};break;case",":var v;this.isDigit()?(v=this.integerIncludingZero(),C={atLeast:B,atMost:v}):C={atLeast:B,atMost:1/0},this.consumeChar("}");break}if(p===!0&&C===void 0)return;a(C);break}if(!(p===!0&&C===void 0))return a(C),this.peekChar(0)==="?"?(this.consumeChar("?"),C.greedy=!1):C.greedy=!0,C.type="Quantifier",C.loc=this.loc(w),C},r.prototype.atom=function(){var p,C=this.idx;switch(this.peekChar()){case".":p=this.dotAll();break;case"\\":p=this.atomEscape();break;case"[":p=this.characterClass();break;case"(":p=this.group();break}return p===void 0&&this.isPatternCharacter()&&(p=this.patternCharacter()),a(p),p.loc=this.loc(C),this.isQuantifier()&&(p.quantifier=this.quantifier()),p},r.prototype.dotAll=function(){return this.consumeChar("."),{type:"Set",complement:!0,value:[n(` -`),n("\r"),n("\u2028"),n("\u2029")]}},r.prototype.atomEscape=function(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}},r.prototype.decimalEscapeAtom=function(){var p=this.positiveInteger();return{type:"GroupBackReference",value:p}},r.prototype.characterClassEscape=function(){var p,C=!1;switch(this.popChar()){case"d":p=u;break;case"D":p=u,C=!0;break;case"s":p=f;break;case"S":p=f,C=!0;break;case"w":p=g;break;case"W":p=g,C=!0;break}return a(p),{type:"Set",value:p,complement:C}},r.prototype.controlEscapeAtom=function(){var p;switch(this.popChar()){case"f":p=n("\f");break;case"n":p=n(` -`);break;case"r":p=n("\r");break;case"t":p=n(" ");break;case"v":p=n("\v");break}return a(p),{type:"Character",value:p}},r.prototype.controlLetterEscapeAtom=function(){this.consumeChar("c");var p=this.popChar();if(/[a-zA-Z]/.test(p)===!1)throw Error("Invalid ");var C=p.toUpperCase().charCodeAt(0)-64;return{type:"Character",value:C}},r.prototype.nulCharacterAtom=function(){return this.consumeChar("0"),{type:"Character",value:n("\0")}},r.prototype.hexEscapeSequenceAtom=function(){return this.consumeChar("x"),this.parseHexDigits(2)},r.prototype.regExpUnicodeEscapeSequenceAtom=function(){return this.consumeChar("u"),this.parseHexDigits(4)},r.prototype.identityEscapeAtom=function(){var p=this.popChar();return{type:"Character",value:n(p)}},r.prototype.classPatternCharacterAtom=function(){switch(this.peekChar()){case` -`:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:var p=this.popChar();return{type:"Character",value:n(p)}}},r.prototype.characterClass=function(){var p=[],C=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),C=!0);this.isClassAtom();){var w=this.classAtom(),B=w.type==="Character";if(B&&this.isRangeDash()){this.consumeChar("-");var v=this.classAtom(),D=v.type==="Character";if(D){if(v.value=this.input.length)throw Error("Unexpected end of input");this.idx++},r.prototype.loc=function(p){return{begin:p,end:this.idx}};var e=/[0-9a-fA-F]/,t=/[0-9]/,i=/[1-9]/;function n(p){return p.charCodeAt(0)}function s(p,C){p.length!==void 0?p.forEach(function(w){C.push(w)}):C.push(p)}function o(p,C){if(p[C]===!0)throw"duplicate flag "+C;p[C]=!0}function a(p){if(p===void 0)throw Error("Internal Error - Should never get here!")}function l(){throw Error("Internal Error - Should never get here!")}var c,u=[];for(c=n("0");c<=n("9");c++)u.push(c);var g=[n("_")].concat(u);for(c=n("a");c<=n("z");c++)g.push(c);for(c=n("A");c<=n("Z");c++)g.push(c);var f=[n(" "),n("\f"),n(` -`),n("\r"),n(" "),n("\v"),n(" "),n("\xA0"),n("\u1680"),n("\u2000"),n("\u2001"),n("\u2002"),n("\u2003"),n("\u2004"),n("\u2005"),n("\u2006"),n("\u2007"),n("\u2008"),n("\u2009"),n("\u200A"),n("\u2028"),n("\u2029"),n("\u202F"),n("\u205F"),n("\u3000"),n("\uFEFF")];function h(){}return h.prototype.visitChildren=function(p){for(var C in p){var w=p[C];p.hasOwnProperty(C)&&(w.type!==void 0?this.visit(w):Array.isArray(w)&&w.forEach(function(B){this.visit(B)},this))}},h.prototype.visit=function(p){switch(p.type){case"Pattern":this.visitPattern(p);break;case"Flags":this.visitFlags(p);break;case"Disjunction":this.visitDisjunction(p);break;case"Alternative":this.visitAlternative(p);break;case"StartAnchor":this.visitStartAnchor(p);break;case"EndAnchor":this.visitEndAnchor(p);break;case"WordBoundary":this.visitWordBoundary(p);break;case"NonWordBoundary":this.visitNonWordBoundary(p);break;case"Lookahead":this.visitLookahead(p);break;case"NegativeLookahead":this.visitNegativeLookahead(p);break;case"Character":this.visitCharacter(p);break;case"Set":this.visitSet(p);break;case"Group":this.visitGroup(p);break;case"GroupBackReference":this.visitGroupBackReference(p);break;case"Quantifier":this.visitQuantifier(p);break}this.visitChildren(p)},h.prototype.visitPattern=function(p){},h.prototype.visitFlags=function(p){},h.prototype.visitDisjunction=function(p){},h.prototype.visitAlternative=function(p){},h.prototype.visitStartAnchor=function(p){},h.prototype.visitEndAnchor=function(p){},h.prototype.visitWordBoundary=function(p){},h.prototype.visitNonWordBoundary=function(p){},h.prototype.visitLookahead=function(p){},h.prototype.visitNegativeLookahead=function(p){},h.prototype.visitCharacter=function(p){},h.prototype.visitSet=function(p){},h.prototype.visitGroup=function(p){},h.prototype.visitGroupBackReference=function(p){},h.prototype.visitQuantifier=function(p){},{RegExpParser:r,BaseRegExpVisitor:h,VERSION:"0.5.0"}})});var Py=y(ff=>{"use strict";Object.defineProperty(ff,"__esModule",{value:!0});ff.clearRegExpParserCache=ff.getRegExpAst=void 0;var zIe=vy(),xy={},VIe=new zIe.RegExpParser;function XIe(r){var e=r.toString();if(xy.hasOwnProperty(e))return xy[e];var t=VIe.pattern(e);return xy[e]=t,t}ff.getRegExpAst=XIe;function _Ie(){xy={}}ff.clearRegExpParserCache=_Ie});var Kj=y(dn=>{"use strict";var ZIe=dn&&dn.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(dn,"__esModule",{value:!0});dn.canMatchCharCode=dn.firstCharOptimizedIndices=dn.getOptimizedStartCodesIndices=dn.failedOptimizationPrefixMsg=void 0;var Tj=vy(),As=Gt(),Oj=Py(),Pa=Ix(),Mj="Complement Sets are not supported for first char optimization";dn.failedOptimizationPrefixMsg=`Unable to use "first char" lexer optimizations: -`;function $Ie(r,e){e===void 0&&(e=!1);try{var t=(0,Oj.getRegExpAst)(r),i=ky(t.value,{},t.flags.ignoreCase);return i}catch(s){if(s.message===Mj)e&&(0,As.PRINT_WARNING)(""+dn.failedOptimizationPrefixMsg+(" Unable to optimize: < "+r.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var n="";e&&(n=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),(0,As.PRINT_ERROR)(dn.failedOptimizationPrefixMsg+` -`+(" Failed parsing: < "+r.toString()+` > -`)+(" Using the regexp-to-ast library version: "+Tj.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+n)}}return[]}dn.getOptimizedStartCodesIndices=$Ie;function ky(r,e,t){switch(r.type){case"Disjunction":for(var i=0;i=Pa.minOptimizationVal)for(var f=u.from>=Pa.minOptimizationVal?u.from:Pa.minOptimizationVal,h=u.to,p=(0,Pa.charCodeToOptimizedIndex)(f),C=(0,Pa.charCodeToOptimizedIndex)(h),w=p;w<=C;w++)e[w]=w}}});break;case"Group":ky(o.value,e,t);break;default:throw Error("Non Exhaustive Match")}var a=o.quantifier!==void 0&&o.quantifier.atLeast===0;if(o.type==="Group"&&Ex(o)===!1||o.type!=="Group"&&a===!1)break}break;default:throw Error("non exhaustive match!")}return(0,As.values)(e)}dn.firstCharOptimizedIndices=ky;function Dy(r,e,t){var i=(0,Pa.charCodeToOptimizedIndex)(r);e[i]=i,t===!0&&eye(r,e)}function eye(r,e){var t=String.fromCharCode(r),i=t.toUpperCase();if(i!==t){var n=(0,Pa.charCodeToOptimizedIndex)(i.charCodeAt(0));e[n]=n}else{var s=t.toLowerCase();if(s!==t){var n=(0,Pa.charCodeToOptimizedIndex)(s.charCodeAt(0));e[n]=n}}}function Lj(r,e){return(0,As.find)(r.value,function(t){if(typeof t=="number")return(0,As.contains)(e,t);var i=t;return(0,As.find)(e,function(n){return i.from<=n&&n<=i.to})!==void 0})}function Ex(r){return r.quantifier&&r.quantifier.atLeast===0?!0:r.value?(0,As.isArray)(r.value)?(0,As.every)(r.value,Ex):Ex(r.value):!1}var tye=function(r){ZIe(e,r);function e(t){var i=r.call(this)||this;return i.targetCharCodes=t,i.found=!1,i}return e.prototype.visitChildren=function(t){if(this.found!==!0){switch(t.type){case"Lookahead":this.visitLookahead(t);return;case"NegativeLookahead":this.visitNegativeLookahead(t);return}r.prototype.visitChildren.call(this,t)}},e.prototype.visitCharacter=function(t){(0,As.contains)(this.targetCharCodes,t.value)&&(this.found=!0)},e.prototype.visitSet=function(t){t.complement?Lj(t,this.targetCharCodes)===void 0&&(this.found=!0):Lj(t,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(Tj.BaseRegExpVisitor);function rye(r,e){if(e instanceof RegExp){var t=(0,Oj.getRegExpAst)(e),i=new tye(r);return i.visit(t),i.found}else return(0,As.find)(e,function(n){return(0,As.contains)(r,n.charCodeAt(0))})!==void 0}dn.canMatchCharCode=rye});var Ix=y(Je=>{"use strict";var Uj=Je&&Je.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Je,"__esModule",{value:!0});Je.charCodeToOptimizedIndex=Je.minOptimizationVal=Je.buildLineBreakIssueMessage=Je.LineTerminatorOptimizedTester=Je.isShortPattern=Je.isCustomPattern=Je.cloneEmptyGroups=Je.performWarningRuntimeChecks=Je.performRuntimeChecks=Je.addStickyFlag=Je.addStartOfInput=Je.findUnreachablePatterns=Je.findModesThatDoNotExist=Je.findInvalidGroupType=Je.findDuplicatePatterns=Je.findUnsupportedFlags=Je.findStartOfInputAnchor=Je.findEmptyMatchRegExps=Je.findEndOfInputAnchor=Je.findInvalidPatterns=Je.findMissingPatterns=Je.validatePatterns=Je.analyzeTokenTypes=Je.enableSticky=Je.disableSticky=Je.SUPPORT_STICKY=Je.MODES=Je.DEFAULT_MODE=void 0;var Hj=vy(),ir=jd(),Se=Gt(),hf=Kj(),Gj=Py(),Do="PATTERN";Je.DEFAULT_MODE="defaultMode";Je.MODES="modes";Je.SUPPORT_STICKY=typeof new RegExp("(?:)").sticky=="boolean";function iye(){Je.SUPPORT_STICKY=!1}Je.disableSticky=iye;function nye(){Je.SUPPORT_STICKY=!0}Je.enableSticky=nye;function sye(r,e){e=(0,Se.defaults)(e,{useSticky:Je.SUPPORT_STICKY,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(v,D){return D()}});var t=e.tracer;t("initCharCodeToOptimizedIndexMap",function(){pye()});var i;t("Reject Lexer.NA",function(){i=(0,Se.reject)(r,function(v){return v[Do]===ir.Lexer.NA})});var n=!1,s;t("Transform Patterns",function(){n=!1,s=(0,Se.map)(i,function(v){var D=v[Do];if((0,Se.isRegExp)(D)){var L=D.source;return L.length===1&&L!=="^"&&L!=="$"&&L!=="."&&!D.ignoreCase?L:L.length===2&&L[0]==="\\"&&!(0,Se.contains)(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],L[1])?L[1]:e.useSticky?Bx(D):wx(D)}else{if((0,Se.isFunction)(D))return n=!0,{exec:D};if((0,Se.has)(D,"exec"))return n=!0,D;if(typeof D=="string"){if(D.length===1)return D;var H=D.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),j=new RegExp(H);return e.useSticky?Bx(j):wx(j)}else throw Error("non exhaustive match")}})});var o,a,l,c,u;t("misc mapping",function(){o=(0,Se.map)(i,function(v){return v.tokenTypeIdx}),a=(0,Se.map)(i,function(v){var D=v.GROUP;if(D!==ir.Lexer.SKIPPED){if((0,Se.isString)(D))return D;if((0,Se.isUndefined)(D))return!1;throw Error("non exhaustive match")}}),l=(0,Se.map)(i,function(v){var D=v.LONGER_ALT;if(D){var L=(0,Se.isArray)(D)?(0,Se.map)(D,function(H){return(0,Se.indexOf)(i,H)}):[(0,Se.indexOf)(i,D)];return L}}),c=(0,Se.map)(i,function(v){return v.PUSH_MODE}),u=(0,Se.map)(i,function(v){return(0,Se.has)(v,"POP_MODE")})});var g;t("Line Terminator Handling",function(){var v=rq(e.lineTerminatorCharacters);g=(0,Se.map)(i,function(D){return!1}),e.positionTracking!=="onlyOffset"&&(g=(0,Se.map)(i,function(D){if((0,Se.has)(D,"LINE_BREAKS"))return D.LINE_BREAKS;if(eq(D,v)===!1)return(0,hf.canMatchCharCode)(v,D.PATTERN)}))});var f,h,p,C;t("Misc Mapping #2",function(){f=(0,Se.map)(i,bx),h=(0,Se.map)(s,$j),p=(0,Se.reduce)(i,function(v,D){var L=D.GROUP;return(0,Se.isString)(L)&&L!==ir.Lexer.SKIPPED&&(v[L]=[]),v},{}),C=(0,Se.map)(s,function(v,D){return{pattern:s[D],longerAlt:l[D],canLineTerminator:g[D],isCustom:f[D],short:h[D],group:a[D],push:c[D],pop:u[D],tokenTypeIdx:o[D],tokenType:i[D]}})});var w=!0,B=[];return e.safeMode||t("First Char Optimization",function(){B=(0,Se.reduce)(i,function(v,D,L){if(typeof D.PATTERN=="string"){var H=D.PATTERN.charCodeAt(0),j=Qx(H);yx(v,j,C[L])}else if((0,Se.isArray)(D.START_CHARS_HINT)){var $;(0,Se.forEach)(D.START_CHARS_HINT,function(W){var Z=typeof W=="string"?W.charCodeAt(0):W,A=Qx(Z);$!==A&&($=A,yx(v,A,C[L]))})}else if((0,Se.isRegExp)(D.PATTERN))if(D.PATTERN.unicode)w=!1,e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+hf.failedOptimizationPrefixMsg+(" Unable to analyze < "+D.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var V=(0,hf.getOptimizedStartCodesIndices)(D.PATTERN,e.ensureOptimizations);(0,Se.isEmpty)(V)&&(w=!1),(0,Se.forEach)(V,function(W){yx(v,W,C[L])})}else e.ensureOptimizations&&(0,Se.PRINT_ERROR)(""+hf.failedOptimizationPrefixMsg+(" TokenType: <"+D.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),w=!1;return v},[])}),t("ArrayPacking",function(){B=(0,Se.packArray)(B)}),{emptyGroups:p,patternIdxToConfig:C,charCodeToPatternIdxToConfig:B,hasCustom:n,canBeOptimized:w}}Je.analyzeTokenTypes=sye;function oye(r,e){var t=[],i=Yj(r);t=t.concat(i.errors);var n=jj(i.valid),s=n.valid;return t=t.concat(n.errors),t=t.concat(aye(s)),t=t.concat(Xj(s)),t=t.concat(_j(s,e)),t=t.concat(Zj(s)),t}Je.validatePatterns=oye;function aye(r){var e=[],t=(0,Se.filter)(r,function(i){return(0,Se.isRegExp)(i[Do])});return e=e.concat(qj(t)),e=e.concat(Wj(t)),e=e.concat(zj(t)),e=e.concat(Vj(t)),e=e.concat(Jj(t)),e}function Yj(r){var e=(0,Se.filter)(r,function(n){return!(0,Se.has)(n,Do)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- missing static 'PATTERN' property",type:ir.LexerDefinitionErrorType.MISSING_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findMissingPatterns=Yj;function jj(r){var e=(0,Se.filter)(r,function(n){var s=n[Do];return!(0,Se.isRegExp)(s)&&!(0,Se.isFunction)(s)&&!(0,Se.has)(s,"exec")&&!(0,Se.isString)(s)}),t=(0,Se.map)(e,function(n){return{message:"Token Type: ->"+n.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:ir.LexerDefinitionErrorType.INVALID_PATTERN,tokenTypes:[n]}}),i=(0,Se.difference)(r,e);return{errors:t,valid:i}}Je.findInvalidPatterns=jj;var Aye=/[^\\][\$]/;function qj(r){var e=function(n){Uj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitEndAnchor=function(o){this.found=!0},s}(Hj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Gj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return Aye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.EOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findEndOfInputAnchor=qj;function Jj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n.test("")}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' must not match an empty string",type:ir.LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,tokenTypes:[i]}});return t}Je.findEmptyMatchRegExps=Jj;var lye=/[^\\[][\^]|^\^/;function Wj(r){var e=function(n){Uj(s,n);function s(){var o=n!==null&&n.apply(this,arguments)||this;return o.found=!1,o}return s.prototype.visitStartAnchor=function(o){this.found=!0},s}(Hj.BaseRegExpVisitor),t=(0,Se.filter)(r,function(n){var s=n[Do];try{var o=(0,Gj.getRegExpAst)(s),a=new e;return a.visit(o),a.found}catch{return lye.test(s.source)}}),i=(0,Se.map)(t,function(n){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+n.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:ir.LexerDefinitionErrorType.SOI_ANCHOR_FOUND,tokenTypes:[n]}});return i}Je.findStartOfInputAnchor=Wj;function zj(r){var e=(0,Se.filter)(r,function(i){var n=i[Do];return n instanceof RegExp&&(n.multiline||n.global)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:ir.LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[i]}});return t}Je.findUnsupportedFlags=zj;function Vj(r){var e=[],t=(0,Se.map)(r,function(s){return(0,Se.reduce)(r,function(o,a){return s.PATTERN.source===a.PATTERN.source&&!(0,Se.contains)(e,a)&&a.PATTERN!==ir.Lexer.NA&&(e.push(a),o.push(a)),o},[])});t=(0,Se.compact)(t);var i=(0,Se.filter)(t,function(s){return s.length>1}),n=(0,Se.map)(i,function(s){var o=(0,Se.map)(s,function(l){return l.name}),a=(0,Se.first)(s).PATTERN;return{message:"The same RegExp pattern ->"+a+"<-"+("has been used in all of the following Token Types: "+o.join(", ")+" <-"),type:ir.LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,tokenTypes:s}});return n}Je.findDuplicatePatterns=Vj;function Xj(r){var e=(0,Se.filter)(r,function(i){if(!(0,Se.has)(i,"GROUP"))return!1;var n=i.GROUP;return n!==ir.Lexer.SKIPPED&&n!==ir.Lexer.NA&&!(0,Se.isString)(n)}),t=(0,Se.map)(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:ir.LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,tokenTypes:[i]}});return t}Je.findInvalidGroupType=Xj;function _j(r,e){var t=(0,Se.filter)(r,function(n){return n.PUSH_MODE!==void 0&&!(0,Se.contains)(e,n.PUSH_MODE)}),i=(0,Se.map)(t,function(n){var s="Token Type: ->"+n.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+n.PUSH_MODE+"<-which does not exist";return{message:s,type:ir.LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[n]}});return i}Je.findModesThatDoNotExist=_j;function Zj(r){var e=[],t=(0,Se.reduce)(r,function(i,n,s){var o=n.PATTERN;return o===ir.Lexer.NA||((0,Se.isString)(o)?i.push({str:o,idx:s,tokenType:n}):(0,Se.isRegExp)(o)&&uye(o)&&i.push({str:o.source,idx:s,tokenType:n})),i},[]);return(0,Se.forEach)(r,function(i,n){(0,Se.forEach)(t,function(s){var o=s.str,a=s.idx,l=s.tokenType;if(n"+i.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:c,type:ir.LexerDefinitionErrorType.UNREACHABLE_PATTERN,tokenTypes:[i,l]})}})}),e}Je.findUnreachablePatterns=Zj;function cye(r,e){if((0,Se.isRegExp)(e)){var t=e.exec(r);return t!==null&&t.index===0}else{if((0,Se.isFunction)(e))return e(r,0,[],{});if((0,Se.has)(e,"exec"))return e.exec(r,0,[],{});if(typeof e=="string")return e===r;throw Error("non exhaustive match")}}function uye(r){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return(0,Se.find)(e,function(t){return r.source.indexOf(t)!==-1})===void 0}function wx(r){var e=r.ignoreCase?"i":"";return new RegExp("^(?:"+r.source+")",e)}Je.addStartOfInput=wx;function Bx(r){var e=r.ignoreCase?"iy":"y";return new RegExp(""+r.source,e)}Je.addStickyFlag=Bx;function gye(r,e,t){var i=[];return(0,Se.has)(r,Je.DEFAULT_MODE)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.DEFAULT_MODE+`> property in its definition -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,Se.has)(r,Je.MODES)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+Je.MODES+`> property in its definition -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,Se.has)(r,Je.MODES)&&(0,Se.has)(r,Je.DEFAULT_MODE)&&!(0,Se.has)(r.modes,r.defaultMode)&&i.push({message:"A MultiMode Lexer cannot be initialized with a "+Je.DEFAULT_MODE+": <"+r.defaultMode+`>which does not exist -`,type:ir.LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,Se.has)(r,Je.MODES)&&(0,Se.forEach)(r.modes,function(n,s){(0,Se.forEach)(n,function(o,a){(0,Se.isUndefined)(o)&&i.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+s+"> at index: <"+a+`> -`),type:ir.LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),i}Je.performRuntimeChecks=gye;function fye(r,e,t){var i=[],n=!1,s=(0,Se.compact)((0,Se.flatten)((0,Se.mapValues)(r.modes,function(l){return l}))),o=(0,Se.reject)(s,function(l){return l[Do]===ir.Lexer.NA}),a=rq(t);return e&&(0,Se.forEach)(o,function(l){var c=eq(l,a);if(c!==!1){var u=tq(l,c),g={message:u,type:c.issue,tokenType:l};i.push(g)}else(0,Se.has)(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(n=!0):(0,hf.canMatchCharCode)(a,l.PATTERN)&&(n=!0)}),e&&!n&&i.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:ir.LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS}),i}Je.performWarningRuntimeChecks=fye;function hye(r){var e={},t=(0,Se.keys)(r);return(0,Se.forEach)(t,function(i){var n=r[i];if((0,Se.isArray)(n))e[i]=[];else throw Error("non exhaustive match")}),e}Je.cloneEmptyGroups=hye;function bx(r){var e=r.PATTERN;if((0,Se.isRegExp)(e))return!1;if((0,Se.isFunction)(e))return!0;if((0,Se.has)(e,"exec"))return!0;if((0,Se.isString)(e))return!1;throw Error("non exhaustive match")}Je.isCustomPattern=bx;function $j(r){return(0,Se.isString)(r)&&r.length===1?r.charCodeAt(0):!1}Je.isShortPattern=$j;Je.LineTerminatorOptimizedTester={test:function(r){for(var e=r.length,t=this.lastIndex;t Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===ir.LexerDefinitionErrorType.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+r.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}Je.buildLineBreakIssueMessage=tq;function rq(r){var e=(0,Se.map)(r,function(t){return(0,Se.isString)(t)&&t.length>0?t.charCodeAt(0):t});return e}function yx(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}Je.minOptimizationVal=256;var Ry=[];function Qx(r){return r255?255+~~(r/255):r}}});var pf=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.isTokenType=Nt.hasExtendingTokensTypesMapProperty=Nt.hasExtendingTokensTypesProperty=Nt.hasCategoriesProperty=Nt.hasShortKeyProperty=Nt.singleAssignCategoriesToksMap=Nt.assignCategoriesMapProp=Nt.assignCategoriesTokensProp=Nt.assignTokenDefaultProps=Nt.expandCategories=Nt.augmentTokenTypes=Nt.tokenIdxToClass=Nt.tokenShortNameIdx=Nt.tokenStructuredMatcherNoCategories=Nt.tokenStructuredMatcher=void 0;var ei=Gt();function dye(r,e){var t=r.tokenTypeIdx;return t===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[t]===!0}Nt.tokenStructuredMatcher=dye;function Cye(r,e){return r.tokenTypeIdx===e.tokenTypeIdx}Nt.tokenStructuredMatcherNoCategories=Cye;Nt.tokenShortNameIdx=1;Nt.tokenIdxToClass={};function mye(r){var e=iq(r);nq(e),oq(e),sq(e),(0,ei.forEach)(e,function(t){t.isParent=t.categoryMatches.length>0})}Nt.augmentTokenTypes=mye;function iq(r){for(var e=(0,ei.cloneArr)(r),t=r,i=!0;i;){t=(0,ei.compact)((0,ei.flatten)((0,ei.map)(t,function(s){return s.CATEGORIES})));var n=(0,ei.difference)(t,e);e=e.concat(n),(0,ei.isEmpty)(n)?i=!1:t=n}return e}Nt.expandCategories=iq;function nq(r){(0,ei.forEach)(r,function(e){aq(e)||(Nt.tokenIdxToClass[Nt.tokenShortNameIdx]=e,e.tokenTypeIdx=Nt.tokenShortNameIdx++),Sx(e)&&!(0,ei.isArray)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Sx(e)||(e.CATEGORIES=[]),Aq(e)||(e.categoryMatches=[]),lq(e)||(e.categoryMatchesMap={})})}Nt.assignTokenDefaultProps=nq;function sq(r){(0,ei.forEach)(r,function(e){e.categoryMatches=[],(0,ei.forEach)(e.categoryMatchesMap,function(t,i){e.categoryMatches.push(Nt.tokenIdxToClass[i].tokenTypeIdx)})})}Nt.assignCategoriesTokensProp=sq;function oq(r){(0,ei.forEach)(r,function(e){vx([],e)})}Nt.assignCategoriesMapProp=oq;function vx(r,e){(0,ei.forEach)(r,function(t){e.categoryMatchesMap[t.tokenTypeIdx]=!0}),(0,ei.forEach)(e.CATEGORIES,function(t){var i=r.concat(e);(0,ei.contains)(i,t)||vx(i,t)})}Nt.singleAssignCategoriesToksMap=vx;function aq(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.hasShortKeyProperty=aq;function Sx(r){return(0,ei.has)(r,"CATEGORIES")}Nt.hasCategoriesProperty=Sx;function Aq(r){return(0,ei.has)(r,"categoryMatches")}Nt.hasExtendingTokensTypesProperty=Aq;function lq(r){return(0,ei.has)(r,"categoryMatchesMap")}Nt.hasExtendingTokensTypesMapProperty=lq;function Eye(r){return(0,ei.has)(r,"tokenTypeIdx")}Nt.isTokenType=Eye});var xx=y(Fy=>{"use strict";Object.defineProperty(Fy,"__esModule",{value:!0});Fy.defaultLexerErrorProvider=void 0;Fy.defaultLexerErrorProvider={buildUnableToPopLexerModeMessage:function(r){return"Unable to pop Lexer Mode after encountering Token ->"+r.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(r,e,t,i,n){return"unexpected character: ->"+r.charAt(e)+"<- at offset: "+e+","+(" skipped "+t+" characters.")}}});var jd=y(kc=>{"use strict";Object.defineProperty(kc,"__esModule",{value:!0});kc.Lexer=kc.LexerDefinitionErrorType=void 0;var Vs=Ix(),nr=Gt(),Iye=pf(),yye=xx(),wye=Py(),Bye;(function(r){r[r.MISSING_PATTERN=0]="MISSING_PATTERN",r[r.INVALID_PATTERN=1]="INVALID_PATTERN",r[r.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",r[r.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",r[r.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",r[r.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",r[r.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",r[r.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",r[r.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",r[r.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",r[r.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",r[r.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",r[r.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",r[r.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",r[r.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",r[r.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",r[r.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(Bye=kc.LexerDefinitionErrorType||(kc.LexerDefinitionErrorType={}));var qd={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:yye.defaultLexerErrorProvider,traceInitPerf:!1,skipValidations:!1};Object.freeze(qd);var Qye=function(){function r(e,t){var i=this;if(t===void 0&&(t=qd),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof t=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=(0,nr.merge)(qd,t);var n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var s,o=!0;i.TRACE_INIT("Lexer Config handling",function(){if(i.config.lineTerminatorsPattern===qd.lineTerminatorsPattern)i.config.lineTerminatorsPattern=Vs.LineTerminatorOptimizedTester;else if(i.config.lineTerminatorCharacters===qd.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');i.trackStartLines=/full|onlyStart/i.test(i.config.positionTracking),i.trackEndLines=/full/i.test(i.config.positionTracking),(0,nr.isArray)(e)?(s={modes:{}},s.modes[Vs.DEFAULT_MODE]=(0,nr.cloneArr)(e),s[Vs.DEFAULT_MODE]=Vs.DEFAULT_MODE):(o=!1,s=(0,nr.cloneObj)(e))}),i.config.skipValidations===!1&&(i.TRACE_INIT("performRuntimeChecks",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.performRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))}),i.TRACE_INIT("performWarningRuntimeChecks",function(){i.lexerDefinitionWarning=i.lexerDefinitionWarning.concat((0,Vs.performWarningRuntimeChecks)(s,i.trackStartLines,i.config.lineTerminatorCharacters))})),s.modes=s.modes?s.modes:{},(0,nr.forEach)(s.modes,function(u,g){s.modes[g]=(0,nr.reject)(u,function(f){return(0,nr.isUndefined)(f)})});var a=(0,nr.keys)(s.modes);if((0,nr.forEach)(s.modes,function(u,g){i.TRACE_INIT("Mode: <"+g+"> processing",function(){if(i.modes.push(g),i.config.skipValidations===!1&&i.TRACE_INIT("validatePatterns",function(){i.lexerDefinitionErrors=i.lexerDefinitionErrors.concat((0,Vs.validatePatterns)(u,a))}),(0,nr.isEmpty)(i.lexerDefinitionErrors)){(0,Iye.augmentTokenTypes)(u);var f;i.TRACE_INIT("analyzeTokenTypes",function(){f=(0,Vs.analyzeTokenTypes)(u,{lineTerminatorCharacters:i.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:i.TRACE_INIT.bind(i)})}),i.patternIdxToConfig[g]=f.patternIdxToConfig,i.charCodeToPatternIdxToConfig[g]=f.charCodeToPatternIdxToConfig,i.emptyGroups=(0,nr.merge)(i.emptyGroups,f.emptyGroups),i.hasCustom=f.hasCustom||i.hasCustom,i.canModeBeOptimized[g]=f.canBeOptimized}})}),i.defaultMode=s.defaultMode,!(0,nr.isEmpty)(i.lexerDefinitionErrors)&&!i.config.deferDefinitionErrorsHandling){var l=(0,nr.map)(i.lexerDefinitionErrors,function(u){return u.message}),c=l.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+c)}(0,nr.forEach)(i.lexerDefinitionWarning,function(u){(0,nr.PRINT_WARNING)(u.message)}),i.TRACE_INIT("Choosing sub-methods implementations",function(){if(Vs.SUPPORT_STICKY?(i.chopInput=nr.IDENTITY,i.match=i.matchWithTest):(i.updateLastIndex=nr.NOOP,i.match=i.matchWithExec),o&&(i.handleModes=nr.NOOP),i.trackStartLines===!1&&(i.computeNewColumn=nr.IDENTITY),i.trackEndLines===!1&&(i.updateTokenEndLineColumnLocation=nr.NOOP),/full/i.test(i.config.positionTracking))i.createTokenInstance=i.createFullToken;else if(/onlyStart/i.test(i.config.positionTracking))i.createTokenInstance=i.createStartOnlyToken;else if(/onlyOffset/i.test(i.config.positionTracking))i.createTokenInstance=i.createOffsetOnlyToken;else throw Error('Invalid config option: "'+i.config.positionTracking+'"');i.hasCustom?(i.addToken=i.addTokenUsingPush,i.handlePayload=i.handlePayloadWithCustom):(i.addToken=i.addTokenUsingMemberAccess,i.handlePayload=i.handlePayloadNoCustom)}),i.TRACE_INIT("Failed Optimization Warnings",function(){var u=(0,nr.reduce)(i.canModeBeOptimized,function(g,f,h){return f===!1&&g.push(h),g},[]);if(t.ensureOptimizations&&!(0,nr.isEmpty)(u))throw Error("Lexer Modes: < "+u.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),i.TRACE_INIT("clearRegExpParserCache",function(){(0,wye.clearRegExpParserCache)()}),i.TRACE_INIT("toFastProperties",function(){(0,nr.toFastProperties)(i)})})}return r.prototype.tokenize=function(e,t){if(t===void 0&&(t=this.defaultMode),!(0,nr.isEmpty)(this.lexerDefinitionErrors)){var i=(0,nr.map)(this.lexerDefinitionErrors,function(o){return o.message}),n=i.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+n)}var s=this.tokenizeInternal(e,t);return s},r.prototype.tokenizeInternal=function(e,t){var i=this,n,s,o,a,l,c,u,g,f,h,p,C,w,B,v,D,L=e,H=L.length,j=0,$=0,V=this.hasCustom?0:Math.floor(e.length/10),W=new Array(V),Z=[],A=this.trackStartLines?1:void 0,ae=this.trackStartLines?1:void 0,ge=(0,Vs.cloneEmptyGroups)(this.emptyGroups),_=this.trackStartLines,T=this.config.lineTerminatorsPattern,N=0,ue=[],we=[],Le=[],Pe=[];Object.freeze(Pe);var Te=void 0;function se(){return ue}function Ae(dr){var Bi=(0,Vs.charCodeToOptimizedIndex)(dr),_n=we[Bi];return _n===void 0?Pe:_n}var Qe=function(dr){if(Le.length===1&&dr.tokenType.PUSH_MODE===void 0){var Bi=i.config.errorMessageProvider.buildUnableToPopLexerModeMessage(dr);Z.push({offset:dr.startOffset,line:dr.startLine!==void 0?dr.startLine:void 0,column:dr.startColumn!==void 0?dr.startColumn:void 0,length:dr.image.length,message:Bi})}else{Le.pop();var _n=(0,nr.last)(Le);ue=i.patternIdxToConfig[_n],we=i.charCodeToPatternIdxToConfig[_n],N=ue.length;var ha=i.canModeBeOptimized[_n]&&i.config.safeMode===!1;we&&ha?Te=Ae:Te=se}};function fe(dr){Le.push(dr),we=this.charCodeToPatternIdxToConfig[dr],ue=this.patternIdxToConfig[dr],N=ue.length,N=ue.length;var Bi=this.canModeBeOptimized[dr]&&this.config.safeMode===!1;we&&Bi?Te=Ae:Te=se}fe.call(this,t);for(var le;jc.length){c=a,u=g,le=tt;break}}}break}}if(c!==null){if(f=c.length,h=le.group,h!==void 0&&(p=le.tokenTypeIdx,C=this.createTokenInstance(c,j,p,le.tokenType,A,ae,f),this.handlePayload(C,u),h===!1?$=this.addToken(W,$,C):ge[h].push(C)),e=this.chopInput(e,f),j=j+f,ae=this.computeNewColumn(ae,f),_===!0&&le.canLineTerminator===!0){var It=0,Kr=void 0,oi=void 0;T.lastIndex=0;do Kr=T.test(c),Kr===!0&&(oi=T.lastIndex-1,It++);while(Kr===!0);It!==0&&(A=A+It,ae=f-oi,this.updateTokenEndLineColumnLocation(C,h,oi,It,A,ae,f))}this.handleModes(le,Qe,fe,C)}else{for(var pi=j,pr=A,di=ae,ai=!1;!ai&&j <"+e+">");var n=(0,nr.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",r.NA=/NOT_APPLICABLE/,r}();kc.Lexer=Qye});var UA=y(Si=>{"use strict";Object.defineProperty(Si,"__esModule",{value:!0});Si.tokenMatcher=Si.createTokenInstance=Si.EOF=Si.createToken=Si.hasTokenLabel=Si.tokenName=Si.tokenLabel=void 0;var Xs=Gt(),bye=jd(),Px=pf();function Sye(r){return mq(r)?r.LABEL:r.name}Si.tokenLabel=Sye;function vye(r){return r.name}Si.tokenName=vye;function mq(r){return(0,Xs.isString)(r.LABEL)&&r.LABEL!==""}Si.hasTokenLabel=mq;var xye="parent",cq="categories",uq="label",gq="group",fq="push_mode",hq="pop_mode",pq="longer_alt",dq="line_breaks",Cq="start_chars_hint";function Eq(r){return Pye(r)}Si.createToken=Eq;function Pye(r){var e=r.pattern,t={};if(t.name=r.name,(0,Xs.isUndefined)(e)||(t.PATTERN=e),(0,Xs.has)(r,xye))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return(0,Xs.has)(r,cq)&&(t.CATEGORIES=r[cq]),(0,Px.augmentTokenTypes)([t]),(0,Xs.has)(r,uq)&&(t.LABEL=r[uq]),(0,Xs.has)(r,gq)&&(t.GROUP=r[gq]),(0,Xs.has)(r,hq)&&(t.POP_MODE=r[hq]),(0,Xs.has)(r,fq)&&(t.PUSH_MODE=r[fq]),(0,Xs.has)(r,pq)&&(t.LONGER_ALT=r[pq]),(0,Xs.has)(r,dq)&&(t.LINE_BREAKS=r[dq]),(0,Xs.has)(r,Cq)&&(t.START_CHARS_HINT=r[Cq]),t}Si.EOF=Eq({name:"EOF",pattern:bye.Lexer.NA});(0,Px.augmentTokenTypes)([Si.EOF]);function Dye(r,e,t,i,n,s,o,a){return{image:e,startOffset:t,endOffset:i,startLine:n,endLine:s,startColumn:o,endColumn:a,tokenTypeIdx:r.tokenTypeIdx,tokenType:r}}Si.createTokenInstance=Dye;function kye(r,e){return(0,Px.tokenStructuredMatcher)(r,e)}Si.tokenMatcher=kye});var Cn=y(Wt=>{"use strict";var Da=Wt&&Wt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Wt,"__esModule",{value:!0});Wt.serializeProduction=Wt.serializeGrammar=Wt.Terminal=Wt.Alternation=Wt.RepetitionWithSeparator=Wt.Repetition=Wt.RepetitionMandatoryWithSeparator=Wt.RepetitionMandatory=Wt.Option=Wt.Alternative=Wt.Rule=Wt.NonTerminal=Wt.AbstractProduction=void 0;var lr=Gt(),Rye=UA(),ko=function(){function r(e){this._definition=e}return Object.defineProperty(r.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),r.prototype.accept=function(e){e.visit(this),(0,lr.forEach)(this.definition,function(t){t.accept(e)})},r}();Wt.AbstractProduction=ko;var Iq=function(r){Da(e,r);function e(t){var i=r.call(this,[])||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(t){},enumerable:!1,configurable:!0}),e.prototype.accept=function(t){t.visit(this)},e}(ko);Wt.NonTerminal=Iq;var yq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.orgText="",(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Rule=yq;var wq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.ignoreAmbiguities=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Alternative=wq;var Bq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Option=Bq;var Qq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatory=Qq;var bq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionMandatoryWithSeparator=bq;var Sq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.Repetition=Sq;var vq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return e}(ko);Wt.RepetitionWithSeparator=vq;var xq=function(r){Da(e,r);function e(t){var i=r.call(this,t.definition)||this;return i.idx=1,i.ignoreAmbiguities=!1,i.hasPredicates=!1,(0,lr.assign)(i,(0,lr.pick)(t,function(n){return n!==void 0})),i}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(t){this._definition=t},enumerable:!1,configurable:!0}),e}(ko);Wt.Alternation=xq;var Ny=function(){function r(e){this.idx=1,(0,lr.assign)(this,(0,lr.pick)(e,function(t){return t!==void 0}))}return r.prototype.accept=function(e){e.visit(this)},r}();Wt.Terminal=Ny;function Fye(r){return(0,lr.map)(r,Jd)}Wt.serializeGrammar=Fye;function Jd(r){function e(s){return(0,lr.map)(s,Jd)}if(r instanceof Iq){var t={type:"NonTerminal",name:r.nonTerminalName,idx:r.idx};return(0,lr.isString)(r.label)&&(t.label=r.label),t}else{if(r instanceof wq)return{type:"Alternative",definition:e(r.definition)};if(r instanceof Bq)return{type:"Option",idx:r.idx,definition:e(r.definition)};if(r instanceof Qq)return{type:"RepetitionMandatory",idx:r.idx,definition:e(r.definition)};if(r instanceof bq)return{type:"RepetitionMandatoryWithSeparator",idx:r.idx,separator:Jd(new Ny({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof vq)return{type:"RepetitionWithSeparator",idx:r.idx,separator:Jd(new Ny({terminalType:r.separator})),definition:e(r.definition)};if(r instanceof Sq)return{type:"Repetition",idx:r.idx,definition:e(r.definition)};if(r instanceof xq)return{type:"Alternation",idx:r.idx,definition:e(r.definition)};if(r instanceof Ny){var i={type:"Terminal",name:r.terminalType.name,label:(0,Rye.tokenLabel)(r.terminalType),idx:r.idx};(0,lr.isString)(r.label)&&(i.terminalLabel=r.label);var n=r.terminalType.PATTERN;return r.terminalType.PATTERN&&(i.pattern=(0,lr.isRegExp)(n)?n.source:n),i}else{if(r instanceof yq)return{type:"Rule",name:r.name,orgText:r.orgText,definition:e(r.definition)};throw Error("non exhaustive match")}}}Wt.serializeProduction=Jd});var Ty=y(Ly=>{"use strict";Object.defineProperty(Ly,"__esModule",{value:!0});Ly.RestWalker=void 0;var Dx=Gt(),mn=Cn(),Nye=function(){function r(){}return r.prototype.walk=function(e,t){var i=this;t===void 0&&(t=[]),(0,Dx.forEach)(e.definition,function(n,s){var o=(0,Dx.drop)(e.definition,s+1);if(n instanceof mn.NonTerminal)i.walkProdRef(n,o,t);else if(n instanceof mn.Terminal)i.walkTerminal(n,o,t);else if(n instanceof mn.Alternative)i.walkFlat(n,o,t);else if(n instanceof mn.Option)i.walkOption(n,o,t);else if(n instanceof mn.RepetitionMandatory)i.walkAtLeastOne(n,o,t);else if(n instanceof mn.RepetitionMandatoryWithSeparator)i.walkAtLeastOneSep(n,o,t);else if(n instanceof mn.RepetitionWithSeparator)i.walkManySep(n,o,t);else if(n instanceof mn.Repetition)i.walkMany(n,o,t);else if(n instanceof mn.Alternation)i.walkOr(n,o,t);else throw Error("non exhaustive match")})},r.prototype.walkTerminal=function(e,t,i){},r.prototype.walkProdRef=function(e,t,i){},r.prototype.walkFlat=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkOption=function(e,t,i){var n=t.concat(i);this.walk(e,n)},r.prototype.walkAtLeastOne=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkAtLeastOneSep=function(e,t,i){var n=Pq(e,t,i);this.walk(e,n)},r.prototype.walkMany=function(e,t,i){var n=[new mn.Option({definition:e.definition})].concat(t,i);this.walk(e,n)},r.prototype.walkManySep=function(e,t,i){var n=Pq(e,t,i);this.walk(e,n)},r.prototype.walkOr=function(e,t,i){var n=this,s=t.concat(i);(0,Dx.forEach)(e.definition,function(o){var a=new mn.Alternative({definition:[o]});n.walk(a,s)})},r}();Ly.RestWalker=Nye;function Pq(r,e,t){var i=[new mn.Option({definition:[new mn.Terminal({terminalType:r.separator})].concat(r.definition)})],n=i.concat(e,t);return n}});var df=y(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0});Oy.GAstVisitor=void 0;var Ro=Cn(),Lye=function(){function r(){}return r.prototype.visit=function(e){var t=e;switch(t.constructor){case Ro.NonTerminal:return this.visitNonTerminal(t);case Ro.Alternative:return this.visitAlternative(t);case Ro.Option:return this.visitOption(t);case Ro.RepetitionMandatory:return this.visitRepetitionMandatory(t);case Ro.RepetitionMandatoryWithSeparator:return this.visitRepetitionMandatoryWithSeparator(t);case Ro.RepetitionWithSeparator:return this.visitRepetitionWithSeparator(t);case Ro.Repetition:return this.visitRepetition(t);case Ro.Alternation:return this.visitAlternation(t);case Ro.Terminal:return this.visitTerminal(t);case Ro.Rule:return this.visitRule(t);default:throw Error("non exhaustive match")}},r.prototype.visitNonTerminal=function(e){},r.prototype.visitAlternative=function(e){},r.prototype.visitOption=function(e){},r.prototype.visitRepetition=function(e){},r.prototype.visitRepetitionMandatory=function(e){},r.prototype.visitRepetitionMandatoryWithSeparator=function(e){},r.prototype.visitRepetitionWithSeparator=function(e){},r.prototype.visitAlternation=function(e){},r.prototype.visitTerminal=function(e){},r.prototype.visitRule=function(e){},r}();Oy.GAstVisitor=Lye});var zd=y(Ki=>{"use strict";var Tye=Ki&&Ki.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Ki,"__esModule",{value:!0});Ki.collectMethods=Ki.DslMethodsCollectorVisitor=Ki.getProductionDslName=Ki.isBranchingProd=Ki.isOptionalProd=Ki.isSequenceProd=void 0;var Wd=Gt(),Qr=Cn(),Oye=df();function Mye(r){return r instanceof Qr.Alternative||r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionMandatory||r instanceof Qr.RepetitionMandatoryWithSeparator||r instanceof Qr.RepetitionWithSeparator||r instanceof Qr.Terminal||r instanceof Qr.Rule}Ki.isSequenceProd=Mye;function kx(r,e){e===void 0&&(e=[]);var t=r instanceof Qr.Option||r instanceof Qr.Repetition||r instanceof Qr.RepetitionWithSeparator;return t?!0:r instanceof Qr.Alternation?(0,Wd.some)(r.definition,function(i){return kx(i,e)}):r instanceof Qr.NonTerminal&&(0,Wd.contains)(e,r)?!1:r instanceof Qr.AbstractProduction?(r instanceof Qr.NonTerminal&&e.push(r),(0,Wd.every)(r.definition,function(i){return kx(i,e)})):!1}Ki.isOptionalProd=kx;function Kye(r){return r instanceof Qr.Alternation}Ki.isBranchingProd=Kye;function Uye(r){if(r instanceof Qr.NonTerminal)return"SUBRULE";if(r instanceof Qr.Option)return"OPTION";if(r instanceof Qr.Alternation)return"OR";if(r instanceof Qr.RepetitionMandatory)return"AT_LEAST_ONE";if(r instanceof Qr.RepetitionMandatoryWithSeparator)return"AT_LEAST_ONE_SEP";if(r instanceof Qr.RepetitionWithSeparator)return"MANY_SEP";if(r instanceof Qr.Repetition)return"MANY";if(r instanceof Qr.Terminal)return"CONSUME";throw Error("non exhaustive match")}Ki.getProductionDslName=Uye;var Dq=function(r){Tye(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.separator="-",t.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},t}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(t){var i=t.terminalType.name+this.separator+"Terminal";(0,Wd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitNonTerminal=function(t){var i=t.nonTerminalName+this.separator+"Terminal";(0,Wd.has)(this.dslMethods,i)||(this.dslMethods[i]=[]),this.dslMethods[i].push(t)},e.prototype.visitOption=function(t){this.dslMethods.option.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.dslMethods.repetitionWithSeparator.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.dslMethods.repetitionMandatory.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.dslMethods.repetitionMandatoryWithSeparator.push(t)},e.prototype.visitRepetition=function(t){this.dslMethods.repetition.push(t)},e.prototype.visitAlternation=function(t){this.dslMethods.alternation.push(t)},e}(Oye.GAstVisitor);Ki.DslMethodsCollectorVisitor=Dq;var My=new Dq;function Hye(r){My.reset(),r.accept(My);var e=My.dslMethods;return My.reset(),e}Ki.collectMethods=Hye});var Fx=y(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});Fo.firstForTerminal=Fo.firstForBranching=Fo.firstForSequence=Fo.first=void 0;var Ky=Gt(),kq=Cn(),Rx=zd();function Uy(r){if(r instanceof kq.NonTerminal)return Uy(r.referencedRule);if(r instanceof kq.Terminal)return Nq(r);if((0,Rx.isSequenceProd)(r))return Rq(r);if((0,Rx.isBranchingProd)(r))return Fq(r);throw Error("non exhaustive match")}Fo.first=Uy;function Rq(r){for(var e=[],t=r.definition,i=0,n=t.length>i,s,o=!0;n&&o;)s=t[i],o=(0,Rx.isOptionalProd)(s),e=e.concat(Uy(s)),i=i+1,n=t.length>i;return(0,Ky.uniq)(e)}Fo.firstForSequence=Rq;function Fq(r){var e=(0,Ky.map)(r.definition,function(t){return Uy(t)});return(0,Ky.uniq)((0,Ky.flatten)(e))}Fo.firstForBranching=Fq;function Nq(r){return[r.terminalType]}Fo.firstForTerminal=Nq});var Nx=y(Hy=>{"use strict";Object.defineProperty(Hy,"__esModule",{value:!0});Hy.IN=void 0;Hy.IN="_~IN~_"});var Kq=y(ls=>{"use strict";var Gye=ls&&ls.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(ls,"__esModule",{value:!0});ls.buildInProdFollowPrefix=ls.buildBetweenProdsFollowPrefix=ls.computeAllProdsFollows=ls.ResyncFollowsWalker=void 0;var Yye=Ty(),jye=Fx(),Lq=Gt(),Tq=Nx(),qye=Cn(),Oq=function(r){Gye(e,r);function e(t){var i=r.call(this)||this;return i.topProd=t,i.follows={},i}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(t,i,n){},e.prototype.walkProdRef=function(t,i,n){var s=Mq(t.referencedRule,t.idx)+this.topProd.name,o=i.concat(n),a=new qye.Alternative({definition:o}),l=(0,jye.first)(a);this.follows[s]=l},e}(Yye.RestWalker);ls.ResyncFollowsWalker=Oq;function Jye(r){var e={};return(0,Lq.forEach)(r,function(t){var i=new Oq(t).startWalking();(0,Lq.assign)(e,i)}),e}ls.computeAllProdsFollows=Jye;function Mq(r,e){return r.name+e+Tq.IN}ls.buildBetweenProdsFollowPrefix=Mq;function Wye(r){var e=r.terminalType.name;return e+r.idx+Tq.IN}ls.buildInProdFollowPrefix=Wye});var Vd=y(ka=>{"use strict";Object.defineProperty(ka,"__esModule",{value:!0});ka.defaultGrammarValidatorErrorProvider=ka.defaultGrammarResolverErrorProvider=ka.defaultParserErrorProvider=void 0;var Cf=UA(),zye=Gt(),_s=Gt(),Lx=Cn(),Uq=zd();ka.defaultParserErrorProvider={buildMismatchTokenMessage:function(r){var e=r.expected,t=r.actual,i=r.previous,n=r.ruleName,s=(0,Cf.hasTokenLabel)(e),o=s?"--> "+(0,Cf.tokenLabel)(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+o+" but found --> '"+t.image+"' <--";return a},buildNotAllInputParsedMessage:function(r){var e=r.firstRedundant,t=r.ruleName;return"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(r){var e=r.expectedPathsPerAlt,t=r.actual,i=r.previous,n=r.customUserDescription,s=r.ruleName,o="Expecting: ",a=(0,_s.first)(t).image,l=` -but found: '`+a+"'";if(n)return o+n+l;var c=(0,_s.reduce)(e,function(h,p){return h.concat(p)},[]),u=(0,_s.map)(c,function(h){return"["+(0,_s.map)(h,function(p){return(0,Cf.tokenLabel)(p)}).join(", ")+"]"}),g=(0,_s.map)(u,function(h,p){return" "+(p+1)+". "+h}),f=`one of these possible Token sequences: -`+g.join(` -`);return o+f+l},buildEarlyExitMessage:function(r){var e=r.expectedIterationPaths,t=r.actual,i=r.customUserDescription,n=r.ruleName,s="Expecting: ",o=(0,_s.first)(t).image,a=` -but found: '`+o+"'";if(i)return s+i+a;var l=(0,_s.map)(e,function(u){return"["+(0,_s.map)(u,function(g){return(0,Cf.tokenLabel)(g)}).join(",")+"]"}),c=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+l.join(" ,")+">");return s+c+a}};Object.freeze(ka.defaultParserErrorProvider);ka.defaultGrammarResolverErrorProvider={buildRuleNotFoundError:function(r,e){var t="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+r.name+"<-";return t}};ka.defaultGrammarValidatorErrorProvider={buildDuplicateFoundError:function(r,e){function t(u){return u instanceof Lx.Terminal?u.terminalType.name:u instanceof Lx.NonTerminal?u.nonTerminalName:""}var i=r.name,n=(0,_s.first)(e),s=n.idx,o=(0,Uq.getProductionDslName)(n),a=t(n),l=s>0,c="->"+o+(l?s:"")+"<- "+(a?"with argument: ->"+a+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+i+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return c=c.replace(/[ \t]+/g," "),c=c.replace(/\s\s+/g,` -`),c},buildNamespaceConflictError:function(r){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+r.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,Cf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous alternatives: <"+r.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+r.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return i},buildAlternationAmbiguityError:function(r){var e=(0,_s.map)(r.prefixPath,function(n){return(0,Cf.tokenLabel)(n)}).join(", "),t=r.alternation.idx===0?"":r.alternation.idx,i="Ambiguous Alternatives Detected: <"+r.ambiguityIndices.join(" ,")+"> in "+(" inside <"+r.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return i=i+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,i},buildEmptyRepetitionError:function(r){var e=(0,Uq.getProductionDslName)(r.repetition);r.repetition.idx!==0&&(e+=r.repetition.idx);var t="The repetition <"+e+"> within Rule <"+r.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return t},buildTokenNameError:function(r){return"deprecated"},buildEmptyAlternationError:function(r){var e="Ambiguous empty alternative: <"+(r.emptyChoiceIdx+1)+">"+(" in inside <"+r.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(r){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+r.topLevelRule.name+`> Rule. - has `+(r.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(r){var e=r.topLevelRule.name,t=zye.map(r.leftRecursionPath,function(s){return s.name}),i=e+" --> "+t.concat([e]).join(" --> "),n=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+i+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return n},buildInvalidRuleNameError:function(r){return"deprecated"},buildDuplicateRuleNameError:function(r){var e;r.topLevelRule instanceof Lx.Rule?e=r.topLevelRule.name:e=r.topLevelRule;var t="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+r.grammarName+"<-";return t}}});var Yq=y(HA=>{"use strict";var Vye=HA&&HA.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(HA,"__esModule",{value:!0});HA.GastRefResolverVisitor=HA.resolveGrammar=void 0;var Xye=Hn(),Hq=Gt(),_ye=df();function Zye(r,e){var t=new Gq(r,e);return t.resolveRefs(),t.errors}HA.resolveGrammar=Zye;var Gq=function(r){Vye(e,r);function e(t,i){var n=r.call(this)||this;return n.nameToTopRule=t,n.errMsgProvider=i,n.errors=[],n}return e.prototype.resolveRefs=function(){var t=this;(0,Hq.forEach)((0,Hq.values)(this.nameToTopRule),function(i){t.currTopLevel=i,i.accept(t)})},e.prototype.visitNonTerminal=function(t){var i=this.nameToTopRule[t.nonTerminalName];if(i)t.referencedRule=i;else{var n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,t);this.errors.push({message:n,type:Xye.ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:t.nonTerminalName})}},e}(_ye.GAstVisitor);HA.GastRefResolverVisitor=Gq});var _d=y(Tr=>{"use strict";var Rc=Tr&&Tr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Tr,"__esModule",{value:!0});Tr.nextPossibleTokensAfter=Tr.possiblePathsFrom=Tr.NextTerminalAfterAtLeastOneSepWalker=Tr.NextTerminalAfterAtLeastOneWalker=Tr.NextTerminalAfterManySepWalker=Tr.NextTerminalAfterManyWalker=Tr.AbstractNextTerminalAfterProductionWalker=Tr.NextAfterTokenWalker=Tr.AbstractNextPossibleTokensWalker=void 0;var jq=Ty(),Kt=Gt(),$ye=Fx(),Dt=Cn(),qq=function(r){Rc(e,r);function e(t,i){var n=r.call(this)||this;return n.topProd=t,n.path=i,n.possibleTokTypes=[],n.nextProductionName="",n.nextProductionOccurrence=0,n.found=!1,n.isAtEndOfPath=!1,n}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=(0,Kt.cloneArr)(this.path.ruleStack).reverse(),this.occurrenceStack=(0,Kt.cloneArr)(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(t,i){i===void 0&&(i=[]),this.found||r.prototype.walk.call(this,t,i)},e.prototype.walkProdRef=function(t,i,n){if(t.referencedRule.name===this.nextProductionName&&t.idx===this.nextProductionOccurrence){var s=i.concat(n);this.updateExpectedNext(),this.walk(t.referencedRule,s)}},e.prototype.updateExpectedNext=function(){(0,Kt.isEmpty)(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(jq.RestWalker);Tr.AbstractNextPossibleTokensWalker=qq;var ewe=function(r){Rc(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.path=i,n.nextTerminalName="",n.nextTerminalOccurrence=0,n.nextTerminalName=n.path.lastTok.name,n.nextTerminalOccurrence=n.path.lastTokOccurrence,n}return e.prototype.walkTerminal=function(t,i,n){if(this.isAtEndOfPath&&t.terminalType.name===this.nextTerminalName&&t.idx===this.nextTerminalOccurrence&&!this.found){var s=i.concat(n),o=new Dt.Alternative({definition:s});this.possibleTokTypes=(0,$ye.first)(o),this.found=!0}},e}(qq);Tr.NextAfterTokenWalker=ewe;var Xd=function(r){Rc(e,r);function e(t,i){var n=r.call(this)||this;return n.topRule=t,n.occurrence=i,n.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},n}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(jq.RestWalker);Tr.AbstractNextTerminalAfterProductionWalker=Xd;var twe=function(r){Rc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkMany=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkMany.call(this,t,i,n)},e}(Xd);Tr.NextTerminalAfterManyWalker=twe;var rwe=function(r){Rc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkManySep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkManySep.call(this,t,i,n)},e}(Xd);Tr.NextTerminalAfterManySepWalker=rwe;var iwe=function(r){Rc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOne.call(this,t,i,n)},e}(Xd);Tr.NextTerminalAfterAtLeastOneWalker=iwe;var nwe=function(r){Rc(e,r);function e(){return r!==null&&r.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(t,i,n){if(t.idx===this.occurrence){var s=(0,Kt.first)(i.concat(n));this.result.isEndOfRule=s===void 0,s instanceof Dt.Terminal&&(this.result.token=s.terminalType,this.result.occurrence=s.idx)}else r.prototype.walkAtLeastOneSep.call(this,t,i,n)},e}(Xd);Tr.NextTerminalAfterAtLeastOneSepWalker=nwe;function Jq(r,e,t){t===void 0&&(t=[]),t=(0,Kt.cloneArr)(t);var i=[],n=0;function s(c){return c.concat((0,Kt.drop)(r,n+1))}function o(c){var u=Jq(s(c),e,t);return i.concat(u)}for(;t.length=0;ge--){var _=B.definition[ge],T={idx:p,def:_.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:w};g.push(T),g.push(o)}else if(B instanceof Dt.Alternative)g.push({idx:p,def:B.definition.concat((0,Kt.drop)(h)),ruleStack:C,occurrenceStack:w});else if(B instanceof Dt.Rule)g.push(owe(B,p,C,w));else throw Error("non exhaustive match")}}return u}Tr.nextPossibleTokensAfter=swe;function owe(r,e,t,i){var n=(0,Kt.cloneArr)(t);n.push(r.name);var s=(0,Kt.cloneArr)(i);return s.push(1),{idx:e,def:r.definition,ruleStack:n,occurrenceStack:s}}});var Zd=y(_t=>{"use strict";var Vq=_t&&_t.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(_t,"__esModule",{value:!0});_t.areTokenCategoriesNotUsed=_t.isStrictPrefixOfPath=_t.containsPath=_t.getLookaheadPathsForOptionalProd=_t.getLookaheadPathsForOr=_t.lookAheadSequenceFromAlternatives=_t.buildSingleAlternativeLookaheadFunction=_t.buildAlternativesLookAheadFunc=_t.buildLookaheadFuncForOptionalProd=_t.buildLookaheadFuncForOr=_t.getProdType=_t.PROD_TYPE=void 0;var sr=Gt(),Wq=_d(),awe=Ty(),Gy=pf(),GA=Cn(),Awe=df(),li;(function(r){r[r.OPTION=0]="OPTION",r[r.REPETITION=1]="REPETITION",r[r.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",r[r.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",r[r.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",r[r.ALTERNATION=5]="ALTERNATION"})(li=_t.PROD_TYPE||(_t.PROD_TYPE={}));function lwe(r){if(r instanceof GA.Option)return li.OPTION;if(r instanceof GA.Repetition)return li.REPETITION;if(r instanceof GA.RepetitionMandatory)return li.REPETITION_MANDATORY;if(r instanceof GA.RepetitionMandatoryWithSeparator)return li.REPETITION_MANDATORY_WITH_SEPARATOR;if(r instanceof GA.RepetitionWithSeparator)return li.REPETITION_WITH_SEPARATOR;if(r instanceof GA.Alternation)return li.ALTERNATION;throw Error("non exhaustive match")}_t.getProdType=lwe;function cwe(r,e,t,i,n,s){var o=_q(r,e,t),a=Mx(o)?Gy.tokenStructuredMatcherNoCategories:Gy.tokenStructuredMatcher;return s(o,i,a,n)}_t.buildLookaheadFuncForOr=cwe;function uwe(r,e,t,i,n,s){var o=Zq(r,e,n,t),a=Mx(o)?Gy.tokenStructuredMatcherNoCategories:Gy.tokenStructuredMatcher;return s(o[0],a,i)}_t.buildLookaheadFuncForOptionalProd=uwe;function gwe(r,e,t,i){var n=r.length,s=(0,sr.every)(r,function(l){return(0,sr.every)(l,function(c){return c.length===1})});if(e)return function(l){for(var c=(0,sr.map)(l,function(D){return D.GATE}),u=0;u{"use strict";var Kx=zt&&zt.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(zt,"__esModule",{value:!0});zt.checkPrefixAlternativesAmbiguities=zt.validateSomeNonEmptyLookaheadPath=zt.validateTooManyAlts=zt.RepetionCollector=zt.validateAmbiguousAlternationAlternatives=zt.validateEmptyOrAlternative=zt.getFirstNoneTerminal=zt.validateNoLeftRecursion=zt.validateRuleIsOverridden=zt.validateRuleDoesNotAlreadyExist=zt.OccurrenceValidationCollector=zt.identifyProductionForDuplicates=zt.validateGrammar=void 0;var er=Gt(),br=Gt(),No=Hn(),Ux=zd(),mf=Zd(),Cwe=_d(),Zs=Cn(),Hx=df();function mwe(r,e,t,i,n){var s=er.map(r,function(h){return Ewe(h,i)}),o=er.map(r,function(h){return Gx(h,h,i)}),a=[],l=[],c=[];(0,br.every)(o,br.isEmpty)&&(a=(0,br.map)(r,function(h){return nJ(h,i)}),l=(0,br.map)(r,function(h){return sJ(h,e,i)}),c=AJ(r,e,i));var u=wwe(r,t,i),g=(0,br.map)(r,function(h){return aJ(h,i)}),f=(0,br.map)(r,function(h){return iJ(h,r,n,i)});return er.flatten(s.concat(c,o,a,l,u,g,f))}zt.validateGrammar=mwe;function Ewe(r,e){var t=new rJ;r.accept(t);var i=t.allProductions,n=er.groupBy(i,eJ),s=er.pick(n,function(a){return a.length>1}),o=er.map(er.values(s),function(a){var l=er.first(a),c=e.buildDuplicateFoundError(r,a),u=(0,Ux.getProductionDslName)(l),g={message:c,type:No.ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,ruleName:r.name,dslName:u,occurrence:l.idx},f=tJ(l);return f&&(g.parameter=f),g});return o}function eJ(r){return(0,Ux.getProductionDslName)(r)+"_#_"+r.idx+"_#_"+tJ(r)}zt.identifyProductionForDuplicates=eJ;function tJ(r){return r instanceof Zs.Terminal?r.terminalType.name:r instanceof Zs.NonTerminal?r.nonTerminalName:""}var rJ=function(r){Kx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitNonTerminal=function(t){this.allProductions.push(t)},e.prototype.visitOption=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e.prototype.visitAlternation=function(t){this.allProductions.push(t)},e.prototype.visitTerminal=function(t){this.allProductions.push(t)},e}(Hx.GAstVisitor);zt.OccurrenceValidationCollector=rJ;function iJ(r,e,t,i){var n=[],s=(0,br.reduce)(e,function(a,l){return l.name===r.name?a+1:a},0);if(s>1){var o=i.buildDuplicateRuleNameError({topLevelRule:r,grammarName:t});n.push({message:o,type:No.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:r.name})}return n}zt.validateRuleDoesNotAlreadyExist=iJ;function Iwe(r,e,t){var i=[],n;return er.contains(e,r)||(n="Invalid rule override, rule: ->"+r+"<- cannot be overridden in the grammar: ->"+t+"<-as it is not defined in any of the super grammars ",i.push({message:n,type:No.ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,ruleName:r})),i}zt.validateRuleIsOverridden=Iwe;function Gx(r,e,t,i){i===void 0&&(i=[]);var n=[],s=$d(e.definition);if(er.isEmpty(s))return[];var o=r.name,a=er.contains(s,r);a&&n.push({message:t.buildLeftRecursionError({topLevelRule:r,leftRecursionPath:i}),type:No.ParserDefinitionErrorType.LEFT_RECURSION,ruleName:o});var l=er.difference(s,i.concat([r])),c=er.map(l,function(u){var g=er.cloneArr(i);return g.push(u),Gx(r,u,t,g)});return n.concat(er.flatten(c))}zt.validateNoLeftRecursion=Gx;function $d(r){var e=[];if(er.isEmpty(r))return e;var t=er.first(r);if(t instanceof Zs.NonTerminal)e.push(t.referencedRule);else if(t instanceof Zs.Alternative||t instanceof Zs.Option||t instanceof Zs.RepetitionMandatory||t instanceof Zs.RepetitionMandatoryWithSeparator||t instanceof Zs.RepetitionWithSeparator||t instanceof Zs.Repetition)e=e.concat($d(t.definition));else if(t instanceof Zs.Alternation)e=er.flatten(er.map(t.definition,function(o){return $d(o.definition)}));else if(!(t instanceof Zs.Terminal))throw Error("non exhaustive match");var i=(0,Ux.isOptionalProd)(t),n=r.length>1;if(i&&n){var s=er.drop(r);return e.concat($d(s))}else return e}zt.getFirstNoneTerminal=$d;var Yx=function(r){Kx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.alternations=[],t}return e.prototype.visitAlternation=function(t){this.alternations.push(t)},e}(Hx.GAstVisitor);function nJ(r,e){var t=new Yx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){var a=er.dropRight(o.definition),l=er.map(a,function(c,u){var g=(0,Cwe.nextPossibleTokensAfter)([c],[],null,1);return er.isEmpty(g)?{message:e.buildEmptyAlternationError({topLevelRule:r,alternation:o,emptyChoiceIdx:u}),type:No.ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,ruleName:r.name,occurrence:o.idx,alternative:u+1}:null});return s.concat(er.compact(l))},[]);return n}zt.validateEmptyOrAlternative=nJ;function sJ(r,e,t){var i=new Yx;r.accept(i);var n=i.alternations;n=(0,br.reject)(n,function(o){return o.ignoreAmbiguities===!0});var s=er.reduce(n,function(o,a){var l=a.idx,c=a.maxLookahead||e,u=(0,mf.getLookaheadPathsForOr)(l,r,c,a),g=ywe(u,a,r,t),f=lJ(u,a,r,t);return o.concat(g,f)},[]);return s}zt.validateAmbiguousAlternationAlternatives=sJ;var oJ=function(r){Kx(e,r);function e(){var t=r!==null&&r.apply(this,arguments)||this;return t.allProductions=[],t}return e.prototype.visitRepetitionWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatory=function(t){this.allProductions.push(t)},e.prototype.visitRepetitionMandatoryWithSeparator=function(t){this.allProductions.push(t)},e.prototype.visitRepetition=function(t){this.allProductions.push(t)},e}(Hx.GAstVisitor);zt.RepetionCollector=oJ;function aJ(r,e){var t=new Yx;r.accept(t);var i=t.alternations,n=er.reduce(i,function(s,o){return o.definition.length>255&&s.push({message:e.buildTooManyAlternativesError({topLevelRule:r,alternation:o}),type:No.ParserDefinitionErrorType.TOO_MANY_ALTS,ruleName:r.name,occurrence:o.idx}),s},[]);return n}zt.validateTooManyAlts=aJ;function AJ(r,e,t){var i=[];return(0,br.forEach)(r,function(n){var s=new oJ;n.accept(s);var o=s.allProductions;(0,br.forEach)(o,function(a){var l=(0,mf.getProdType)(a),c=a.maxLookahead||e,u=a.idx,g=(0,mf.getLookaheadPathsForOptionalProd)(u,n,l,c),f=g[0];if((0,br.isEmpty)((0,br.flatten)(f))){var h=t.buildEmptyRepetitionError({topLevelRule:n,repetition:a});i.push({message:h,type:No.ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,ruleName:n.name})}})}),i}zt.validateSomeNonEmptyLookaheadPath=AJ;function ywe(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(a,l,c){return e.definition[c].ignoreAmbiguities===!0||(0,br.forEach)(l,function(u){var g=[c];(0,br.forEach)(r,function(f,h){c!==h&&(0,mf.containsPath)(f,u)&&e.definition[h].ignoreAmbiguities!==!0&&g.push(h)}),g.length>1&&!(0,mf.containsPath)(n,u)&&(n.push(u),a.push({alts:g,path:u}))}),a},[]),o=er.map(s,function(a){var l=(0,br.map)(a.alts,function(u){return u+1}),c=i.buildAlternationAmbiguityError({topLevelRule:t,alternation:e,ambiguityIndices:l,prefixPath:a.path});return{message:c,type:No.ParserDefinitionErrorType.AMBIGUOUS_ALTS,ruleName:t.name,occurrence:e.idx,alternatives:[a.alts]}});return o}function lJ(r,e,t,i){var n=[],s=(0,br.reduce)(r,function(o,a,l){var c=(0,br.map)(a,function(u){return{idx:l,path:u}});return o.concat(c)},[]);return(0,br.forEach)(s,function(o){var a=e.definition[o.idx];if(a.ignoreAmbiguities!==!0){var l=o.idx,c=o.path,u=(0,br.findAll)(s,function(f){return e.definition[f.idx].ignoreAmbiguities!==!0&&f.idx{"use strict";Object.defineProperty(Ef,"__esModule",{value:!0});Ef.validateGrammar=Ef.resolveGrammar=void 0;var qx=Gt(),Bwe=Yq(),Qwe=jx(),cJ=Vd();function bwe(r){r=(0,qx.defaults)(r,{errMsgProvider:cJ.defaultGrammarResolverErrorProvider});var e={};return(0,qx.forEach)(r.rules,function(t){e[t.name]=t}),(0,Bwe.resolveGrammar)(e,r.errMsgProvider)}Ef.resolveGrammar=bwe;function Swe(r){return r=(0,qx.defaults)(r,{errMsgProvider:cJ.defaultGrammarValidatorErrorProvider}),(0,Qwe.validateGrammar)(r.rules,r.maxLookahead,r.tokenTypes,r.errMsgProvider,r.grammarName)}Ef.validateGrammar=Swe});var If=y(En=>{"use strict";var eC=En&&En.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(En,"__esModule",{value:!0});En.EarlyExitException=En.NotAllInputParsedException=En.NoViableAltException=En.MismatchedTokenException=En.isRecognitionException=void 0;var vwe=Gt(),gJ="MismatchedTokenException",fJ="NoViableAltException",hJ="EarlyExitException",pJ="NotAllInputParsedException",dJ=[gJ,fJ,hJ,pJ];Object.freeze(dJ);function xwe(r){return(0,vwe.contains)(dJ,r.name)}En.isRecognitionException=xwe;var Yy=function(r){eC(e,r);function e(t,i){var n=this.constructor,s=r.call(this,t)||this;return s.token=i,s.resyncedTokens=[],Object.setPrototypeOf(s,n.prototype),Error.captureStackTrace&&Error.captureStackTrace(s,s.constructor),s}return e}(Error),Pwe=function(r){eC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=gJ,s}return e}(Yy);En.MismatchedTokenException=Pwe;var Dwe=function(r){eC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=fJ,s}return e}(Yy);En.NoViableAltException=Dwe;var kwe=function(r){eC(e,r);function e(t,i){var n=r.call(this,t,i)||this;return n.name=pJ,n}return e}(Yy);En.NotAllInputParsedException=kwe;var Rwe=function(r){eC(e,r);function e(t,i,n){var s=r.call(this,t,i)||this;return s.previousToken=n,s.name=hJ,s}return e}(Yy);En.EarlyExitException=Rwe});var Wx=y(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.attemptInRepetitionRecovery=Ui.Recoverable=Ui.InRuleRecoveryException=Ui.IN_RULE_RECOVERY_EXCEPTION=Ui.EOF_FOLLOW_KEY=void 0;var jy=UA(),cs=Gt(),Fwe=If(),Nwe=Nx(),Lwe=Hn();Ui.EOF_FOLLOW_KEY={};Ui.IN_RULE_RECOVERY_EXCEPTION="InRuleRecoveryException";function Jx(r){this.name=Ui.IN_RULE_RECOVERY_EXCEPTION,this.message=r}Ui.InRuleRecoveryException=Jx;Jx.prototype=Error.prototype;var Twe=function(){function r(){}return r.prototype.initRecoverable=function(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,cs.has)(e,"recoveryEnabled")?e.recoveryEnabled:Lwe.DEFAULT_PARSER_CONFIG.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=CJ)},r.prototype.getTokenToInsert=function(e){var t=(0,jy.createTokenInstance)(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t},r.prototype.canTokenTypeBeInsertedInRecovery=function(e){return!0},r.prototype.tryInRepetitionRecovery=function(e,t,i,n){for(var s=this,o=this.findReSyncTokenType(),a=this.exportLexerState(),l=[],c=!1,u=this.LA(1),g=this.LA(1),f=function(){var h=s.LA(0),p=s.errorMessageProvider.buildMismatchTokenMessage({expected:n,actual:u,previous:h,ruleName:s.getCurrRuleFullName()}),C=new Fwe.MismatchedTokenException(p,u,s.LA(0));C.resyncedTokens=(0,cs.dropRight)(l),s.SAVE_ERROR(C)};!c;)if(this.tokenMatcher(g,n)){f();return}else if(i.call(this)){f(),e.apply(this,t);return}else this.tokenMatcher(g,o)?c=!0:(g=this.SKIP_TOKEN(),this.addToResyncTokens(g,l));this.importLexerState(a)},r.prototype.shouldInRepetitionRecoveryBeTried=function(e,t,i){return!(i===!1||e===void 0||t===void 0||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t)))},r.prototype.getFollowsForInRuleRecovery=function(e,t){var i=this.getCurrentGrammarPath(e,t),n=this.getNextPossibleTokenTypes(i);return n},r.prototype.tryInRuleRecovery=function(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t)){var i=this.getTokenToInsert(e);return i}if(this.canRecoverWithSingleTokenDeletion(e)){var n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new Jx("sad sad panda")},r.prototype.canPerformInRuleRecovery=function(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)},r.prototype.canRecoverWithSingleTokenInsertion=function(e,t){var i=this;if(!this.canTokenTypeBeInsertedInRecovery(e)||(0,cs.isEmpty)(t))return!1;var n=this.LA(1),s=(0,cs.find)(t,function(o){return i.tokenMatcher(n,o)})!==void 0;return s},r.prototype.canRecoverWithSingleTokenDeletion=function(e){var t=this.tokenMatcher(this.LA(2),e);return t},r.prototype.isInCurrentRuleReSyncSet=function(e){var t=this.getCurrFollowKey(),i=this.getFollowSetFromFollowKey(t);return(0,cs.contains)(i,e)},r.prototype.findReSyncTokenType=function(){for(var e=this.flattenFollowSet(),t=this.LA(1),i=2;;){var n=t.tokenType;if((0,cs.contains)(e,n))return n;t=this.LA(i),i++}},r.prototype.getCurrFollowKey=function(){if(this.RULE_STACK.length===1)return Ui.EOF_FOLLOW_KEY;var e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),i=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(i)}},r.prototype.buildFullFollowKeyStack=function(){var e=this,t=this.RULE_STACK,i=this.RULE_OCCURRENCE_STACK;return(0,cs.map)(t,function(n,s){return s===0?Ui.EOF_FOLLOW_KEY:{ruleName:e.shortRuleNameToFullName(n),idxInCallingRule:i[s],inRule:e.shortRuleNameToFullName(t[s-1])}})},r.prototype.flattenFollowSet=function(){var e=this,t=(0,cs.map)(this.buildFullFollowKeyStack(),function(i){return e.getFollowSetFromFollowKey(i)});return(0,cs.flatten)(t)},r.prototype.getFollowSetFromFollowKey=function(e){if(e===Ui.EOF_FOLLOW_KEY)return[jy.EOF];var t=e.ruleName+e.idxInCallingRule+Nwe.IN+e.inRule;return this.resyncFollows[t]},r.prototype.addToResyncTokens=function(e,t){return this.tokenMatcher(e,jy.EOF)||t.push(e),t},r.prototype.reSyncTo=function(e){for(var t=[],i=this.LA(1);this.tokenMatcher(i,e)===!1;)i=this.SKIP_TOKEN(),this.addToResyncTokens(i,t);return(0,cs.dropRight)(t)},r.prototype.attemptInRepetitionRecovery=function(e,t,i,n,s,o,a){},r.prototype.getCurrentGrammarPath=function(e,t){var i=this.getHumanReadableRuleStack(),n=(0,cs.cloneArr)(this.RULE_OCCURRENCE_STACK),s={ruleStack:i,occurrenceStack:n,lastTok:e,lastTokOccurrence:t};return s},r.prototype.getHumanReadableRuleStack=function(){var e=this;return(0,cs.map)(this.RULE_STACK,function(t){return e.shortRuleNameToFullName(t)})},r}();Ui.Recoverable=Twe;function CJ(r,e,t,i,n,s,o){var a=this.getKeyForAutomaticLookahead(i,n),l=this.firstAfterRepMap[a];if(l===void 0){var c=this.getCurrRuleFullName(),u=this.getGAstProductions()[c],g=new s(u,n);l=g.startWalking(),this.firstAfterRepMap[a]=l}var f=l.token,h=l.occurrence,p=l.isEndOfRule;this.RULE_STACK.length===1&&p&&f===void 0&&(f=jy.EOF,h=1),this.shouldInRepetitionRecoveryBeTried(f,h,o)&&this.tryInRepetitionRecovery(r,e,t,f)}Ui.attemptInRepetitionRecovery=CJ});var qy=y(qt=>{"use strict";Object.defineProperty(qt,"__esModule",{value:!0});qt.getKeyForAutomaticLookahead=qt.AT_LEAST_ONE_SEP_IDX=qt.MANY_SEP_IDX=qt.AT_LEAST_ONE_IDX=qt.MANY_IDX=qt.OPTION_IDX=qt.OR_IDX=qt.BITS_FOR_ALT_IDX=qt.BITS_FOR_RULE_IDX=qt.BITS_FOR_OCCURRENCE_IDX=qt.BITS_FOR_METHOD_TYPE=void 0;qt.BITS_FOR_METHOD_TYPE=4;qt.BITS_FOR_OCCURRENCE_IDX=8;qt.BITS_FOR_RULE_IDX=12;qt.BITS_FOR_ALT_IDX=8;qt.OR_IDX=1<{"use strict";Object.defineProperty(Jy,"__esModule",{value:!0});Jy.LooksAhead=void 0;var Ra=Zd(),$s=Gt(),mJ=Hn(),Fa=qy(),Fc=zd(),Mwe=function(){function r(){}return r.prototype.initLooksAhead=function(e){this.dynamicTokensEnabled=(0,$s.has)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:mJ.DEFAULT_PARSER_CONFIG.dynamicTokensEnabled,this.maxLookahead=(0,$s.has)(e,"maxLookahead")?e.maxLookahead:mJ.DEFAULT_PARSER_CONFIG.maxLookahead,this.lookAheadFuncsCache=(0,$s.isES2015MapSupported)()?new Map:[],(0,$s.isES2015MapSupported)()?(this.getLaFuncFromCache=this.getLaFuncFromMap,this.setLaFuncCache=this.setLaFuncCacheUsingMap):(this.getLaFuncFromCache=this.getLaFuncFromObj,this.setLaFuncCache=this.setLaFuncUsingObj)},r.prototype.preComputeLookaheadFunctions=function(e){var t=this;(0,$s.forEach)(e,function(i){t.TRACE_INIT(i.name+" Rule Lookahead",function(){var n=(0,Fc.collectMethods)(i),s=n.alternation,o=n.repetition,a=n.option,l=n.repetitionMandatory,c=n.repetitionMandatoryWithSeparator,u=n.repetitionWithSeparator;(0,$s.forEach)(s,function(g){var f=g.idx===0?"":g.idx;t.TRACE_INIT(""+(0,Fc.getProductionDslName)(g)+f,function(){var h=(0,Ra.buildLookaheadFuncForOr)(g.idx,i,g.maxLookahead||t.maxLookahead,g.hasPredicates,t.dynamicTokensEnabled,t.lookAheadBuilderForAlternatives),p=(0,Fa.getKeyForAutomaticLookahead)(t.fullRuleNameToShort[i.name],Fa.OR_IDX,g.idx);t.setLaFuncCache(p,h)})}),(0,$s.forEach)(o,function(g){t.computeLookaheadFunc(i,g.idx,Fa.MANY_IDX,Ra.PROD_TYPE.REPETITION,g.maxLookahead,(0,Fc.getProductionDslName)(g))}),(0,$s.forEach)(a,function(g){t.computeLookaheadFunc(i,g.idx,Fa.OPTION_IDX,Ra.PROD_TYPE.OPTION,g.maxLookahead,(0,Fc.getProductionDslName)(g))}),(0,$s.forEach)(l,function(g){t.computeLookaheadFunc(i,g.idx,Fa.AT_LEAST_ONE_IDX,Ra.PROD_TYPE.REPETITION_MANDATORY,g.maxLookahead,(0,Fc.getProductionDslName)(g))}),(0,$s.forEach)(c,function(g){t.computeLookaheadFunc(i,g.idx,Fa.AT_LEAST_ONE_SEP_IDX,Ra.PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR,g.maxLookahead,(0,Fc.getProductionDslName)(g))}),(0,$s.forEach)(u,function(g){t.computeLookaheadFunc(i,g.idx,Fa.MANY_SEP_IDX,Ra.PROD_TYPE.REPETITION_WITH_SEPARATOR,g.maxLookahead,(0,Fc.getProductionDslName)(g))})})})},r.prototype.computeLookaheadFunc=function(e,t,i,n,s,o){var a=this;this.TRACE_INIT(""+o+(t===0?"":t),function(){var l=(0,Ra.buildLookaheadFuncForOptionalProd)(t,e,s||a.maxLookahead,a.dynamicTokensEnabled,n,a.lookAheadBuilderForOptional),c=(0,Fa.getKeyForAutomaticLookahead)(a.fullRuleNameToShort[e.name],i,t);a.setLaFuncCache(c,l)})},r.prototype.lookAheadBuilderForOptional=function(e,t,i){return(0,Ra.buildSingleAlternativeLookaheadFunction)(e,t,i)},r.prototype.lookAheadBuilderForAlternatives=function(e,t,i,n){return(0,Ra.buildAlternativesLookAheadFunc)(e,t,i,n)},r.prototype.getKeyForAutomaticLookahead=function(e,t){var i=this.getLastExplicitRuleShortName();return(0,Fa.getKeyForAutomaticLookahead)(i,e,t)},r.prototype.getLaFuncFromCache=function(e){},r.prototype.getLaFuncFromMap=function(e){return this.lookAheadFuncsCache.get(e)},r.prototype.getLaFuncFromObj=function(e){return this.lookAheadFuncsCache[e]},r.prototype.setLaFuncCache=function(e,t){},r.prototype.setLaFuncCacheUsingMap=function(e,t){this.lookAheadFuncsCache.set(e,t)},r.prototype.setLaFuncUsingObj=function(e,t){this.lookAheadFuncsCache[e]=t},r}();Jy.LooksAhead=Mwe});var IJ=y(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});Lo.addNoneTerminalToCst=Lo.addTerminalToCst=Lo.setNodeLocationFull=Lo.setNodeLocationOnlyOffset=void 0;function Kwe(r,e){isNaN(r.startOffset)===!0?(r.startOffset=e.startOffset,r.endOffset=e.endOffset):r.endOffset{"use strict";Object.defineProperty(YA,"__esModule",{value:!0});YA.defineNameProp=YA.functionName=YA.classNameFromInstance=void 0;var Ywe=Gt();function jwe(r){return wJ(r.constructor)}YA.classNameFromInstance=jwe;var yJ="name";function wJ(r){var e=r.name;return e||"anonymous"}YA.functionName=wJ;function qwe(r,e){var t=Object.getOwnPropertyDescriptor(r,yJ);return(0,Ywe.isUndefined)(t)||t.configurable?(Object.defineProperty(r,yJ,{enumerable:!1,configurable:!0,writable:!1,value:e}),!0):!1}YA.defineNameProp=qwe});var vJ=y(vi=>{"use strict";Object.defineProperty(vi,"__esModule",{value:!0});vi.validateRedundantMethods=vi.validateMissingCstMethods=vi.validateVisitor=vi.CstVisitorDefinitionError=vi.createBaseVisitorConstructorWithDefaults=vi.createBaseSemanticVisitorConstructor=vi.defaultVisit=void 0;var us=Gt(),tC=zx();function BJ(r,e){for(var t=(0,us.keys)(r),i=t.length,n=0;n: - `+(""+s.join(` - -`).replace(/\n/g,` - `)))}}};return t.prototype=i,t.prototype.constructor=t,t._RULE_NAMES=e,t}vi.createBaseSemanticVisitorConstructor=Jwe;function Wwe(r,e,t){var i=function(){};(0,tC.defineNameProp)(i,r+"BaseSemanticsWithDefaults");var n=Object.create(t.prototype);return(0,us.forEach)(e,function(s){n[s]=BJ}),i.prototype=n,i.prototype.constructor=i,i}vi.createBaseVisitorConstructorWithDefaults=Wwe;var Vx;(function(r){r[r.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",r[r.MISSING_METHOD=1]="MISSING_METHOD"})(Vx=vi.CstVisitorDefinitionError||(vi.CstVisitorDefinitionError={}));function QJ(r,e){var t=bJ(r,e),i=SJ(r,e);return t.concat(i)}vi.validateVisitor=QJ;function bJ(r,e){var t=(0,us.map)(e,function(i){if(!(0,us.isFunction)(r[i]))return{msg:"Missing visitor method: <"+i+"> on "+(0,tC.functionName)(r.constructor)+" CST Visitor.",type:Vx.MISSING_METHOD,methodName:i}});return(0,us.compact)(t)}vi.validateMissingCstMethods=bJ;var zwe=["constructor","visit","validateVisitor"];function SJ(r,e){var t=[];for(var i in r)(0,us.isFunction)(r[i])&&!(0,us.contains)(zwe,i)&&!(0,us.contains)(e,i)&&t.push({msg:"Redundant visitor method: <"+i+"> on "+(0,tC.functionName)(r.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:Vx.REDUNDANT_METHOD,methodName:i});return t}vi.validateRedundantMethods=SJ});var PJ=y(Wy=>{"use strict";Object.defineProperty(Wy,"__esModule",{value:!0});Wy.TreeBuilder=void 0;var yf=IJ(),ti=Gt(),xJ=vJ(),Vwe=Hn(),Xwe=function(){function r(){}return r.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,ti.has)(e,"nodeLocationTracking")?e.nodeLocationTracking:Vwe.DEFAULT_PARSER_CONFIG.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=ti.NOOP,this.cstFinallyStateUpdate=ti.NOOP,this.cstPostTerminal=ti.NOOP,this.cstPostNonTerminal=ti.NOOP,this.cstPostRule=ti.NOOP;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=yf.setNodeLocationFull,this.setNodeLocationFromNode=yf.setNodeLocationFull,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=yf.setNodeLocationOnlyOffset,this.setNodeLocationFromNode=yf.setNodeLocationOnlyOffset,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=ti.NOOP,this.setNodeLocationFromNode=ti.NOOP,this.cstPostRule=ti.NOOP,this.setInitialNodeLocation=ti.NOOP;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},r.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},r.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},r.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.setInitialNodeLocationFullRegular=function(e){var t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},r.prototype.cstInvocationStateUpdate=function(e,t){var i={name:e,children:{}};this.setInitialNodeLocation(i),this.CST_STACK.push(i)},r.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},r.prototype.cstPostRuleFull=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?(i.endOffset=t.endOffset,i.endLine=t.endLine,i.endColumn=t.endColumn):(i.startOffset=NaN,i.startLine=NaN,i.startColumn=NaN)},r.prototype.cstPostRuleOnlyOffset=function(e){var t=this.LA(0),i=e.location;i.startOffset<=t.startOffset?i.endOffset=t.endOffset:i.startOffset=NaN},r.prototype.cstPostTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,yf.addTerminalToCst)(i,t,e),this.setNodeLocationFromToken(i.location,t)},r.prototype.cstPostNonTerminal=function(e,t){var i=this.CST_STACK[this.CST_STACK.length-1];(0,yf.addNoneTerminalToCst)(i,t,e),this.setNodeLocationFromNode(i.location,e.location)},r.prototype.getBaseCstVisitorConstructor=function(){if((0,ti.isUndefined)(this.baseCstVisitorConstructor)){var e=(0,xJ.createBaseSemanticVisitorConstructor)(this.className,(0,ti.keys)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},r.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if((0,ti.isUndefined)(this.baseCstVisitorWithDefaultsConstructor)){var e=(0,xJ.createBaseVisitorConstructorWithDefaults)(this.className,(0,ti.keys)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},r.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},r.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},r.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},r}();Wy.TreeBuilder=Xwe});var kJ=y(zy=>{"use strict";Object.defineProperty(zy,"__esModule",{value:!0});zy.LexerAdapter=void 0;var DJ=Hn(),_we=function(){function r(){}return r.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(r.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),r.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):DJ.END_OF_FILE},r.prototype.LA=function(e){var t=this.currIdx+e;return t<0||this.tokVectorLength<=t?DJ.END_OF_FILE:this.tokVector[t]},r.prototype.consumeToken=function(){this.currIdx++},r.prototype.exportLexerState=function(){return this.currIdx},r.prototype.importLexerState=function(e){this.currIdx=e},r.prototype.resetLexerState=function(){this.currIdx=-1},r.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},r.prototype.getLexerPosition=function(){return this.exportLexerState()},r}();zy.LexerAdapter=_we});var FJ=y(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.RecognizerApi=void 0;var RJ=Gt(),Zwe=If(),Xx=Hn(),$we=Vd(),eBe=jx(),tBe=Cn(),rBe=function(){function r(){}return r.prototype.ACTION=function(e){return e.call(this)},r.prototype.consume=function(e,t,i){return this.consumeInternal(t,e,i)},r.prototype.subrule=function(e,t,i){return this.subruleInternal(t,e,i)},r.prototype.option=function(e,t){return this.optionInternal(t,e)},r.prototype.or=function(e,t){return this.orInternal(t,e)},r.prototype.many=function(e,t){return this.manyInternal(e,t)},r.prototype.atLeastOne=function(e,t){return this.atLeastOneInternal(e,t)},r.prototype.CONSUME=function(e,t){return this.consumeInternal(e,0,t)},r.prototype.CONSUME1=function(e,t){return this.consumeInternal(e,1,t)},r.prototype.CONSUME2=function(e,t){return this.consumeInternal(e,2,t)},r.prototype.CONSUME3=function(e,t){return this.consumeInternal(e,3,t)},r.prototype.CONSUME4=function(e,t){return this.consumeInternal(e,4,t)},r.prototype.CONSUME5=function(e,t){return this.consumeInternal(e,5,t)},r.prototype.CONSUME6=function(e,t){return this.consumeInternal(e,6,t)},r.prototype.CONSUME7=function(e,t){return this.consumeInternal(e,7,t)},r.prototype.CONSUME8=function(e,t){return this.consumeInternal(e,8,t)},r.prototype.CONSUME9=function(e,t){return this.consumeInternal(e,9,t)},r.prototype.SUBRULE=function(e,t){return this.subruleInternal(e,0,t)},r.prototype.SUBRULE1=function(e,t){return this.subruleInternal(e,1,t)},r.prototype.SUBRULE2=function(e,t){return this.subruleInternal(e,2,t)},r.prototype.SUBRULE3=function(e,t){return this.subruleInternal(e,3,t)},r.prototype.SUBRULE4=function(e,t){return this.subruleInternal(e,4,t)},r.prototype.SUBRULE5=function(e,t){return this.subruleInternal(e,5,t)},r.prototype.SUBRULE6=function(e,t){return this.subruleInternal(e,6,t)},r.prototype.SUBRULE7=function(e,t){return this.subruleInternal(e,7,t)},r.prototype.SUBRULE8=function(e,t){return this.subruleInternal(e,8,t)},r.prototype.SUBRULE9=function(e,t){return this.subruleInternal(e,9,t)},r.prototype.OPTION=function(e){return this.optionInternal(e,0)},r.prototype.OPTION1=function(e){return this.optionInternal(e,1)},r.prototype.OPTION2=function(e){return this.optionInternal(e,2)},r.prototype.OPTION3=function(e){return this.optionInternal(e,3)},r.prototype.OPTION4=function(e){return this.optionInternal(e,4)},r.prototype.OPTION5=function(e){return this.optionInternal(e,5)},r.prototype.OPTION6=function(e){return this.optionInternal(e,6)},r.prototype.OPTION7=function(e){return this.optionInternal(e,7)},r.prototype.OPTION8=function(e){return this.optionInternal(e,8)},r.prototype.OPTION9=function(e){return this.optionInternal(e,9)},r.prototype.OR=function(e){return this.orInternal(e,0)},r.prototype.OR1=function(e){return this.orInternal(e,1)},r.prototype.OR2=function(e){return this.orInternal(e,2)},r.prototype.OR3=function(e){return this.orInternal(e,3)},r.prototype.OR4=function(e){return this.orInternal(e,4)},r.prototype.OR5=function(e){return this.orInternal(e,5)},r.prototype.OR6=function(e){return this.orInternal(e,6)},r.prototype.OR7=function(e){return this.orInternal(e,7)},r.prototype.OR8=function(e){return this.orInternal(e,8)},r.prototype.OR9=function(e){return this.orInternal(e,9)},r.prototype.MANY=function(e){this.manyInternal(0,e)},r.prototype.MANY1=function(e){this.manyInternal(1,e)},r.prototype.MANY2=function(e){this.manyInternal(2,e)},r.prototype.MANY3=function(e){this.manyInternal(3,e)},r.prototype.MANY4=function(e){this.manyInternal(4,e)},r.prototype.MANY5=function(e){this.manyInternal(5,e)},r.prototype.MANY6=function(e){this.manyInternal(6,e)},r.prototype.MANY7=function(e){this.manyInternal(7,e)},r.prototype.MANY8=function(e){this.manyInternal(8,e)},r.prototype.MANY9=function(e){this.manyInternal(9,e)},r.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},r.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},r.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},r.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},r.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},r.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},r.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},r.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},r.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},r.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},r.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},r.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},r.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},r.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},r.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},r.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},r.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},r.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},r.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},r.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},r.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},r.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},r.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},r.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},r.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},r.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},r.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},r.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},r.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},r.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},r.prototype.RULE=function(e,t,i){if(i===void 0&&(i=Xx.DEFAULT_RULE_CONFIG),(0,RJ.contains)(this.definedRulesNames,e)){var n=$we.defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),s={message:n,type:Xx.ParserDefinitionErrorType.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);var o=this.defineRule(e,t,i);return this[e]=o,o},r.prototype.OVERRIDE_RULE=function(e,t,i){i===void 0&&(i=Xx.DEFAULT_RULE_CONFIG);var n=[];n=n.concat((0,eBe.validateRuleIsOverridden)(e,this.definedRulesNames,this.className)),this.definitionErrors=this.definitionErrors.concat(n);var s=this.defineRule(e,t,i);return this[e]=s,s},r.prototype.BACKTRACK=function(e,t){return function(){this.isBackTrackingStack.push(1);var i=this.saveRecogState();try{return e.apply(this,t),!0}catch(n){if((0,Zwe.isRecognitionException)(n))return!1;throw n}finally{this.reloadRecogState(i),this.isBackTrackingStack.pop()}}},r.prototype.getGAstProductions=function(){return this.gastProductionsCache},r.prototype.getSerializedGastProductions=function(){return(0,tBe.serializeGrammar)((0,RJ.values)(this.gastProductionsCache))},r}();Vy.RecognizerApi=rBe});var OJ=y(_y=>{"use strict";Object.defineProperty(_y,"__esModule",{value:!0});_y.RecognizerEngine=void 0;var Dr=Gt(),Gn=qy(),Xy=If(),NJ=Zd(),wf=_d(),LJ=Hn(),iBe=Wx(),TJ=UA(),rC=pf(),nBe=zx(),sBe=function(){function r(){}return r.prototype.initRecognizerEngine=function(e,t){if(this.className=(0,nBe.classNameFromInstance)(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=rC.tokenStructuredMatcherNoCategories,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,Dr.has)(t,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if((0,Dr.isArray)(e)){if((0,Dr.isEmpty)(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if((0,Dr.isArray)(e))this.tokensMap=(0,Dr.reduce)(e,function(o,a){return o[a.name]=a,o},{});else if((0,Dr.has)(e,"modes")&&(0,Dr.every)((0,Dr.flatten)((0,Dr.values)(e.modes)),rC.isTokenType)){var i=(0,Dr.flatten)((0,Dr.values)(e.modes)),n=(0,Dr.uniq)(i);this.tokensMap=(0,Dr.reduce)(n,function(o,a){return o[a.name]=a,o},{})}else if((0,Dr.isObject)(e))this.tokensMap=(0,Dr.cloneObj)(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=TJ.EOF;var s=(0,Dr.every)((0,Dr.values)(e),function(o){return(0,Dr.isEmpty)(o.categoryMatches)});this.tokenMatcher=s?rC.tokenStructuredMatcherNoCategories:rC.tokenStructuredMatcher,(0,rC.augmentTokenTypes)((0,Dr.values)(this.tokensMap))},r.prototype.defineRule=function(e,t,i){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var n=(0,Dr.has)(i,"resyncEnabled")?i.resyncEnabled:LJ.DEFAULT_RULE_CONFIG.resyncEnabled,s=(0,Dr.has)(i,"recoveryValueFunc")?i.recoveryValueFunc:LJ.DEFAULT_RULE_CONFIG.recoveryValueFunc,o=this.ruleShortNameIdx<t},r.prototype.orInternal=function(e,t){var i=this.getKeyForAutomaticLookahead(Gn.OR_IDX,t),n=(0,Dr.isArray)(e)?e:e.DEF,s=this.getLaFuncFromCache(i),o=s.call(this,n);if(o!==void 0){var a=n[o];return a.ALT.call(this)}this.raiseNoAltException(t,e.ERR_MSG)},r.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Xy.NotAllInputParsedException(t,e))}},r.prototype.subruleInternal=function(e,t,i){var n;try{var s=i!==void 0?i.ARGS:void 0;return n=e.call(this,t,s),this.cstPostNonTerminal(n,i!==void 0&&i.LABEL!==void 0?i.LABEL:e.ruleName),n}catch(o){this.subruleInternalError(o,i,e.ruleName)}},r.prototype.subruleInternalError=function(e,t,i){throw(0,Xy.isRecognitionException)(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,t!==void 0&&t.LABEL!==void 0?t.LABEL:i),delete e.partialCstResult),e},r.prototype.consumeInternal=function(e,t,i){var n;try{var s=this.LA(1);this.tokenMatcher(s,e)===!0?(this.consumeToken(),n=s):this.consumeInternalError(e,s,i)}catch(o){n=this.consumeInternalRecovery(e,t,o)}return this.cstPostTerminal(i!==void 0&&i.LABEL!==void 0?i.LABEL:e.name,n),n},r.prototype.consumeInternalError=function(e,t,i){var n,s=this.LA(0);throw i!==void 0&&i.ERR_MSG?n=i.ERR_MSG:n=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:s,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Xy.MismatchedTokenException(n,t,s))},r.prototype.consumeInternalRecovery=function(e,t,i){if(this.recoveryEnabled&&i.name==="MismatchedTokenException"&&!this.isBackTracking()){var n=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,n)}catch(s){throw s.name===iBe.IN_RULE_RECOVERY_EXCEPTION?i:s}}else throw i},r.prototype.saveRecogState=function(){var e=this.errors,t=(0,Dr.cloneArr)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}},r.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},r.prototype.ruleInvocationStateUpdate=function(e,t,i){this.RULE_OCCURRENCE_STACK.push(i),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t,e)},r.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},r.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},r.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},r.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),TJ.EOF)},r.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},r}();_y.RecognizerEngine=sBe});var KJ=y(Zy=>{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});Zy.ErrorHandler=void 0;var _x=If(),Zx=Gt(),MJ=Zd(),oBe=Hn(),aBe=function(){function r(){}return r.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=(0,Zx.has)(e,"errorMessageProvider")?e.errorMessageProvider:oBe.DEFAULT_PARSER_CONFIG.errorMessageProvider},r.prototype.SAVE_ERROR=function(e){if((0,_x.isRecognitionException)(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,Zx.cloneArr)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(r.prototype,"errors",{get:function(){return(0,Zx.cloneArr)(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),r.prototype.raiseEarlyExitException=function(e,t,i){for(var n=this.getCurrRuleFullName(),s=this.getGAstProductions()[n],o=(0,MJ.getLookaheadPathsForOptionalProd)(e,s,t,this.maxLookahead),a=o[0],l=[],c=1;c<=this.maxLookahead;c++)l.push(this.LA(c));var u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:a,actual:l,previous:this.LA(0),customUserDescription:i,ruleName:n});throw this.SAVE_ERROR(new _x.EarlyExitException(u,this.LA(1),this.LA(0)))},r.prototype.raiseNoAltException=function(e,t){for(var i=this.getCurrRuleFullName(),n=this.getGAstProductions()[i],s=(0,MJ.getLookaheadPathsForOr)(e,n,this.maxLookahead),o=[],a=1;a<=this.maxLookahead;a++)o.push(this.LA(a));var l=this.LA(0),c=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:s,actual:o,previous:l,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new _x.NoViableAltException(c,this.LA(1),l))},r}();Zy.ErrorHandler=aBe});var GJ=y($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.ContentAssist=void 0;var UJ=_d(),HJ=Gt(),ABe=function(){function r(){}return r.prototype.initContentAssist=function(){},r.prototype.computeContentAssist=function(e,t){var i=this.gastProductionsCache[e];if((0,HJ.isUndefined)(i))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return(0,UJ.nextPossibleTokensAfter)([i],t,this.tokenMatcher,this.maxLookahead)},r.prototype.getNextPossibleTokenTypes=function(e){var t=(0,HJ.first)(e.ruleStack),i=this.getGAstProductions(),n=i[t],s=new UJ.NextAfterTokenWalker(n,e).startWalking();return s},r}();$y.ContentAssist=ABe});var XJ=y(rw=>{"use strict";Object.defineProperty(rw,"__esModule",{value:!0});rw.GastRecorder=void 0;var In=Gt(),To=Cn(),lBe=jd(),JJ=pf(),WJ=UA(),cBe=Hn(),uBe=qy(),tw={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(tw);var YJ=!0,jJ=Math.pow(2,uBe.BITS_FOR_OCCURRENCE_IDX)-1,zJ=(0,WJ.createToken)({name:"RECORDING_PHASE_TOKEN",pattern:lBe.Lexer.NA});(0,JJ.augmentTokenTypes)([zJ]);var VJ=(0,WJ.createTokenInstance)(zJ,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(VJ);var gBe={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},fBe=function(){function r(){}return r.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},r.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var t=function(n){var s=n>0?n:"";e["CONSUME"+s]=function(o,a){return this.consumeInternalRecord(o,n,a)},e["SUBRULE"+s]=function(o,a){return this.subruleInternalRecord(o,n,a)},e["OPTION"+s]=function(o){return this.optionInternalRecord(o,n)},e["OR"+s]=function(o){return this.orInternalRecord(o,n)},e["MANY"+s]=function(o){this.manyInternalRecord(n,o)},e["MANY_SEP"+s]=function(o){this.manySepFirstInternalRecord(n,o)},e["AT_LEAST_ONE"+s]=function(o){this.atLeastOneInternalRecord(n,o)},e["AT_LEAST_ONE_SEP"+s]=function(o){this.atLeastOneSepFirstInternalRecord(n,o)}},i=0;i<10;i++)t(i);e.consume=function(n,s,o){return this.consumeInternalRecord(s,n,o)},e.subrule=function(n,s,o){return this.subruleInternalRecord(s,n,o)},e.option=function(n,s){return this.optionInternalRecord(s,n)},e.or=function(n,s){return this.orInternalRecord(s,n)},e.many=function(n,s){this.manyInternalRecord(n,s)},e.atLeastOne=function(n,s){this.atLeastOneInternalRecord(n,s)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},r.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var t=0;t<10;t++){var i=t>0?t:"";delete e["CONSUME"+i],delete e["SUBRULE"+i],delete e["OPTION"+i],delete e["OR"+i],delete e["MANY"+i],delete e["MANY_SEP"+i],delete e["AT_LEAST_ONE"+i],delete e["AT_LEAST_ONE_SEP"+i]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},r.prototype.ACTION_RECORD=function(e){},r.prototype.BACKTRACK_RECORD=function(e,t){return function(){return!0}},r.prototype.LA_RECORD=function(e){return cBe.END_OF_FILE},r.prototype.topLevelRuleRecord=function(e,t){try{var i=new To.Rule({definition:[],name:e});return i.name=e,this.recordingProdStack.push(i),t.call(this),this.recordingProdStack.pop(),i}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}},r.prototype.optionInternalRecord=function(e,t){return iC.call(this,To.Option,e,t)},r.prototype.atLeastOneInternalRecord=function(e,t){iC.call(this,To.RepetitionMandatory,t,e)},r.prototype.atLeastOneSepFirstInternalRecord=function(e,t){iC.call(this,To.RepetitionMandatoryWithSeparator,t,e,YJ)},r.prototype.manyInternalRecord=function(e,t){iC.call(this,To.Repetition,t,e)},r.prototype.manySepFirstInternalRecord=function(e,t){iC.call(this,To.RepetitionWithSeparator,t,e,YJ)},r.prototype.orInternalRecord=function(e,t){return hBe.call(this,e,t)},r.prototype.subruleInternalRecord=function(e,t,i){if(ew(t),!e||(0,In.has)(e,"ruleName")===!1){var n=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=e.ruleName,a=new To.NonTerminal({idx:t,nonTerminalName:o,label:i==null?void 0:i.LABEL,referencedRule:void 0});return s.definition.push(a),this.outputCst?gBe:tw},r.prototype.consumeInternalRecord=function(e,t,i){if(ew(t),!(0,JJ.hasShortKeyProperty)(e)){var n=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw n.KNOWN_RECORDER_ERROR=!0,n}var s=(0,In.peek)(this.recordingProdStack),o=new To.Terminal({idx:t,terminalType:e,label:i==null?void 0:i.LABEL});return s.definition.push(o),VJ},r}();rw.GastRecorder=fBe;function iC(r,e,t,i){i===void 0&&(i=!1),ew(t);var n=(0,In.peek)(this.recordingProdStack),s=(0,In.isFunction)(e)?e:e.DEF,o=new r({definition:[],idx:t});return i&&(o.separator=e.SEP),(0,In.has)(e,"MAX_LOOKAHEAD")&&(o.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(o),s.call(this),n.definition.push(o),this.recordingProdStack.pop(),tw}function hBe(r,e){var t=this;ew(e);var i=(0,In.peek)(this.recordingProdStack),n=(0,In.isArray)(r)===!1,s=n===!1?r:r.DEF,o=new To.Alternation({definition:[],idx:e,ignoreAmbiguities:n&&r.IGNORE_AMBIGUITIES===!0});(0,In.has)(r,"MAX_LOOKAHEAD")&&(o.maxLookahead=r.MAX_LOOKAHEAD);var a=(0,In.some)(s,function(l){return(0,In.isFunction)(l.GATE)});return o.hasPredicates=a,i.definition.push(o),(0,In.forEach)(s,function(l){var c=new To.Alternative({definition:[]});o.definition.push(c),(0,In.has)(l,"IGNORE_AMBIGUITIES")?c.ignoreAmbiguities=l.IGNORE_AMBIGUITIES:(0,In.has)(l,"GATE")&&(c.ignoreAmbiguities=!0),t.recordingProdStack.push(c),l.ALT.call(t),t.recordingProdStack.pop()}),tw}function qJ(r){return r===0?"":""+r}function ew(r){if(r<0||r>jJ){var e=new Error("Invalid DSL Method idx value: <"+r+`> - `+("Idx value must be a none negative value smaller than "+(jJ+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}});var ZJ=y(iw=>{"use strict";Object.defineProperty(iw,"__esModule",{value:!0});iw.PerformanceTracer=void 0;var _J=Gt(),pBe=Hn(),dBe=function(){function r(){}return r.prototype.initPerformanceTracer=function(e){if((0,_J.has)(e,"traceInitPerf")){var t=e.traceInitPerf,i=typeof t=="number";this.traceInitMaxIdent=i?t:1/0,this.traceInitPerf=i?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=pBe.DEFAULT_PARSER_CONFIG.traceInitPerf;this.traceInitIndent=-1},r.prototype.TRACE_INIT=function(e,t){if(this.traceInitPerf===!0){this.traceInitIndent++;var i=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var n=(0,_J.timer)(t),s=n.time,o=n.value,a=s>10?console.warn:console.log;return this.traceInitIndent time: "+s+"ms"),this.traceInitIndent--,o}else return t()},r}();iw.PerformanceTracer=dBe});var $J=y(nw=>{"use strict";Object.defineProperty(nw,"__esModule",{value:!0});nw.applyMixins=void 0;function CBe(r,e){e.forEach(function(t){var i=t.prototype;Object.getOwnPropertyNames(i).forEach(function(n){if(n!=="constructor"){var s=Object.getOwnPropertyDescriptor(i,n);s&&(s.get||s.set)?Object.defineProperty(r.prototype,n,s):r.prototype[n]=t.prototype[n]}})})}nw.applyMixins=CBe});var Hn=y(Cr=>{"use strict";var rW=Cr&&Cr.__extends||function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(i,n){i.__proto__=n}||function(i,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(i[s]=n[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function i(){this.constructor=e}e.prototype=t===null?Object.create(t):(i.prototype=t.prototype,new i)}}();Object.defineProperty(Cr,"__esModule",{value:!0});Cr.EmbeddedActionsParser=Cr.CstParser=Cr.Parser=Cr.EMPTY_ALT=Cr.ParserDefinitionErrorType=Cr.DEFAULT_RULE_CONFIG=Cr.DEFAULT_PARSER_CONFIG=Cr.END_OF_FILE=void 0;var _i=Gt(),mBe=Kq(),eW=UA(),iW=Vd(),tW=uJ(),EBe=Wx(),IBe=EJ(),yBe=PJ(),wBe=kJ(),BBe=FJ(),QBe=OJ(),bBe=KJ(),SBe=GJ(),vBe=XJ(),xBe=ZJ(),PBe=$J();Cr.END_OF_FILE=(0,eW.createTokenInstance)(eW.EOF,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Cr.END_OF_FILE);Cr.DEFAULT_PARSER_CONFIG=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:iW.defaultParserErrorProvider,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1});Cr.DEFAULT_RULE_CONFIG=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0});var DBe;(function(r){r[r.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",r[r.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",r[r.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",r[r.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",r[r.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",r[r.LEFT_RECURSION=5]="LEFT_RECURSION",r[r.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",r[r.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",r[r.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",r[r.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",r[r.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",r[r.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",r[r.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(DBe=Cr.ParserDefinitionErrorType||(Cr.ParserDefinitionErrorType={}));function kBe(r){return r===void 0&&(r=void 0),function(){return r}}Cr.EMPTY_ALT=kBe;var sw=function(){function r(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;var i=this;if(i.initErrorHandler(t),i.initLexerAdapter(),i.initLooksAhead(t),i.initRecognizerEngine(e,t),i.initRecoverable(t),i.initTreeBuilder(t),i.initContentAssist(),i.initGastRecorder(t),i.initPerformanceTracer(t),(0,_i.has)(t,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=(0,_i.has)(t,"skipValidations")?t.skipValidations:Cr.DEFAULT_PARSER_CONFIG.skipValidations}return r.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},r.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var t;e.selfAnalysisDone=!0;var i=e.className;e.TRACE_INIT("toFastProps",function(){(0,_i.toFastProperties)(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),(0,_i.forEach)(e.definedRulesNames,function(s){var o=e[s],a=o.originalGrammarAction,l=void 0;e.TRACE_INIT(s+" Rule",function(){l=e.topLevelRuleRecord(s,a)}),e.gastProductionsCache[s]=l})}finally{e.disableRecording()}});var n=[];if(e.TRACE_INIT("Grammar Resolving",function(){n=(0,tW.resolveGrammar)({rules:(0,_i.values)(e.gastProductionsCache)}),e.definitionErrors=e.definitionErrors.concat(n)}),e.TRACE_INIT("Grammar Validations",function(){if((0,_i.isEmpty)(n)&&e.skipValidations===!1){var s=(0,tW.validateGrammar)({rules:(0,_i.values)(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:(0,_i.values)(e.tokensMap),errMsgProvider:iW.defaultGrammarValidatorErrorProvider,grammarName:i});e.definitionErrors=e.definitionErrors.concat(s)}}),(0,_i.isEmpty)(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var s=(0,mBe.computeAllProdsFollows)((0,_i.values)(e.gastProductionsCache));e.resyncFollows=s}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions((0,_i.values)(e.gastProductionsCache))})),!r.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,_i.isEmpty)(e.definitionErrors))throw t=(0,_i.map)(e.definitionErrors,function(s){return s.message}),new Error(`Parser Definition Errors detected: - `+t.join(` -------------------------------- -`))})},r.DEFER_DEFINITION_ERRORS_HANDLING=!1,r}();Cr.Parser=sw;(0,PBe.applyMixins)(sw,[EBe.Recoverable,IBe.LooksAhead,yBe.TreeBuilder,wBe.LexerAdapter,QBe.RecognizerEngine,BBe.RecognizerApi,bBe.ErrorHandler,SBe.ContentAssist,vBe.GastRecorder,xBe.PerformanceTracer]);var RBe=function(r){rW(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!0,n=r.call(this,t,s)||this,n}return e}(sw);Cr.CstParser=RBe;var FBe=function(r){rW(e,r);function e(t,i){i===void 0&&(i=Cr.DEFAULT_PARSER_CONFIG);var n=this,s=(0,_i.cloneObj)(i);return s.outputCst=!1,n=r.call(this,t,s)||this,n}return e}(sw);Cr.EmbeddedActionsParser=FBe});var sW=y(ow=>{"use strict";Object.defineProperty(ow,"__esModule",{value:!0});ow.createSyntaxDiagramsCode=void 0;var nW=mx();function NBe(r,e){var t=e===void 0?{}:e,i=t.resourceBase,n=i===void 0?"https://unpkg.com/chevrotain@"+nW.VERSION+"/diagrams/":i,s=t.css,o=s===void 0?"https://unpkg.com/chevrotain@"+nW.VERSION+"/diagrams/diagrams.css":s,a=` - - - - - -`,l=` - -`,c=` -