diff --git a/.circleci/config.yml b/.circleci/config.yml index 2addad58881ba..a254f136dbff5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -229,7 +229,7 @@ jobs: cp -r .devnet/ .devnet-mt-cannon/ - run: name: Generate Celo allocs - command: DEVNET_L2OO="true" DEVNET_CELO="true" make devnet-allocs + command: DEVNET_L2OO="false" DEVNET_ALTDA="true" GENERIC_ALTDA="true" DEVNET_CELO="true" make devnet-allocs - run: name: Copy Celo allocs to .devnet-celo command: cp -r .devnet/ .devnet-celo/ @@ -259,12 +259,7 @@ jobs: - ".devnet-altda" - ".devnet-altda-generic" - ".devnet-mt-cannon" - - ".devnet-celo/addresses.json" - - ".devnet-celo/allocs-l1.json" - - ".devnet-celo/allocs-l2-delta.json" - - ".devnet-celo/allocs-l2-ecotone.json" - - ".devnet-celo/allocs-l2-fjord.json" - - ".devnet-celo/addresses.json" + - ".devnet-celo" - notify-failures-on-develop docker-build: @@ -1039,12 +1034,15 @@ jobs: condition: equal: ['celo', <>] steps: + - run: + name: Set DEVNET_ALTDA = true + command: echo 'export DEVNET_ALTDA=true' >> $BASH_ENV + - run: + name: Set GENERIC_ALTDA = true + command: echo 'export GENERIC_ALTDA=true' >> $BASH_ENV - run: name: Set DEVNET_CELO = true command: echo 'export DEVNET_CELO=true' >> $BASH_ENV - - run: - name: Set DEVNET_L2OO = true - command: echo 'export DEVNET_L2OO=true' >> $BASH_ENV - when: condition: equal: ['altda-generic', <>] @@ -1138,25 +1136,37 @@ jobs: command: make devnet-test - when: condition: - equal: ['celo', <>] + equal: ['celo', <>] steps: + # TODO: include this in the base image directly + - run: + name: install Deno v2. + command: | + curl -fsSL https://deno.land/install.sh | DENO_INSTALL=$HOME/.local sh -s v2.1.9 && + echo 'export PATH=$HOME/.local/bin/:${PATH}' >> $BASH_ENV + - run: + name: set Deno cache path in env + command: | + echo 'export DENO_DIR=$HOME/.cache/deno' >> $BASH_ENV - restore_cache: - key: v1-celo-deps-{{ checksum "op-e2e/celo/package-lock.json" }} - # install dependencies + key: deno-cache-v2-{{ checksum "op-e2e/celo/deno.lock" }} + paths: + - ~/.cache/deno - run: - working_directory: op-e2e/celo - name: install dependencies - command: npm install - # save any changes to the cache + name: Cache Deno Dependencies + working_directory: op-e2e/celo + command: deno run cache-deps - save_cache: - key: v1-celo-deps-{{ checksum "op-e2e/celo/package-lock.json" }} + key: deno-cache-v2-{{ checksum "op-e2e/celo/deno.lock" }} paths: - - op-e2e/celo/node_modules + - ~/.cache/deno - run: - working_directory: op-e2e/celo + environment: + CELOTEST_SPAWN_DEVNET: false + working_directory: op-e2e/celo name: Run Celo e2e tests command: | - SPAWN_DEVNET=false ./run_all_tests.sh + deno run test - run: name: Dump op-node logs command: | diff --git a/bedrock-devnet/devnet/__init__.py b/bedrock-devnet/devnet/__init__.py index eec090bbc62cf..37ddbb97c6751 100644 --- a/bedrock-devnet/devnet/__init__.py +++ b/bedrock-devnet/devnet/__init__.py @@ -122,23 +122,27 @@ def main(): def init_devnet_l1_deploy_config(paths, update_timestamp=False): deploy_config = read_json(paths.devnet_config_template_path) - if update_timestamp: - deploy_config['l1GenesisBlockTimestamp'] = '{:#x}'.format(int(time.time())) - if DEVNET_L2OO: - deploy_config['useFaultProofs'] = False - if DEVNET_ALTDA: - deploy_config['useAltDA'] = True - if GENERIC_ALTDA: - deploy_config['daCommitmentType'] = "GenericCommitment" if DEVNET_CELO: deploy_config['useFaultProofs'] = True - deploy_config['useCustomGasToken'] = True + deploy_config['gasPriceOracleScalar'] = 0 + # 'gasPriceOracleScalar' has to be zero in order for those + # to work deploy_config['gasPriceOracleBlobBaseFeeScalar'] = 0 deploy_config['gasPriceOracleBaseFeeScalar'] = 0 + + deploy_config['useCustomGasToken'] = True deploy_config['deployCeloContracts'] = True # Usage of the zero address in combination of the useCustomGasToken == True # will deploy a new contract deploy_config['customGasTokenAddress'] = "0x0000000000000000000000000000000000000000" + if update_timestamp: + deploy_config['l1GenesisBlockTimestamp'] = '{:#x}'.format(int(time.time())) + if DEVNET_L2OO: + deploy_config['useFaultProofs'] = False + if DEVNET_ALTDA: + deploy_config['useAltDA'] = True + if GENERIC_ALTDA: + deploy_config['daCommitmentType'] = "GenericCommitment" write_json(paths.devnet_config_path, deploy_config) def devnet_l1_allocs(paths): diff --git a/op-e2e/celo/.baklava.env b/op-e2e/celo/.baklava.env new file mode 100644 index 0000000000000..7970df9f80834 --- /dev/null +++ b/op-e2e/celo/.baklava.env @@ -0,0 +1,17 @@ +export CELOTEST_L1_RPCURL='https://ethereum-holesky-rpc.publicnode.com' +export CELOTEST_L2_RPCURL='https://baklava-forno.celo-testnet.org' +export CELOTEST_L1_CHAINID=17000 +export CELOTEST_L2_CHAINID=62320 +export CELOTEST_MONOREPOPATH='../../' +export CELOTEST_TESTDIRPATH='./tests/' +export CELOTEST_ARTIFACTSDIRPATH='./artifacts/baklave' +export CELOTEST_ADDRESSES_L1_FILEPATH='./networks/62320/contracts-l1.json' +export CELOTEST_ADDRESSES_L2_FILEPATH='./networks/62320/celo-contracts.json' +# overwrite this to a key with funds +# this is the key for the address: 0x030632d4dF4337f1E68185d362F4f8625cF93e05 +export CELOTEST_FUNDER_PRIVATEKEY="0xc30ed659e31b7ae41af336ea65bcecc26d3a4bd8b162d6ed663486d3d65da767" +# overwrite this, the default key is publicly known: +export CELOTEST_ACCOUNTS_SEEDPHRASE="this purse lady disagree hand journey sight group stay quote tenant clown" +export CELOTEST_SPAWN_DEVNET=false +export CELOTEST_USE_FAULTPROOFS=true +export CELOTEST_USE_ALTDA=true diff --git a/op-e2e/celo/.default.env b/op-e2e/celo/.default.env new file mode 100644 index 0000000000000..3648d3f36ff8a --- /dev/null +++ b/op-e2e/celo/.default.env @@ -0,0 +1,48 @@ +# RPC URL of an L2 node to test against +export CELOTEST_L2_RPCURL='http://localhost:9545' + +# RPC URL of an L2 node to test against +# - has to be the L1 used for the above specified L2's derivation +export CELOTEST_L1_RPCURL='http://localhost:8545' + +# expected Chain-Id of the above specified L1 +export CELOTEST_L1_CHAINID=900 + +# expected Chain-Id of the above specified L2 +export CELOTEST_L2_CHAINID=901 + +# root path of the `optimism` monorepo. used for e.g. contract source code location +# and local devnet instantiation +export CELOTEST_MONOREPOPATH='../../' + +# path of the "@celo-test/runner" compatible directory where tests are located +# see package README for more information +export CELOTEST_TESTDIRPATH='./tests/' +export CELOTEST_ARTIFACTSDIRPATH='./artifacts/default' + +# `make devnet-allocs` optimism compatible output for the optimism L1 contracts +export CELOTEST_ADDRESSES_L1_FILEPATH='../../.devnet/addresses.json' + +# `celocli network:contracts --json` (compatible) output for the relevant celo contracts. +# What contracts need to be specified is dependent on what is required in the individual tests +# The contracts addresses will be injected into the test context's viem L2 client chain data. +export CELOTEST_ADDRESSES_L2_FILEPATH='./networks/901/celo-contracts.json' + +# a funded account's private key. +# has to have native balance on L1 and L2, funds will get distributed to test-accounts. +# (here private-key of: m/44'/60'/0'/0/11 of "test test test test test test test test test test test junk") +export CELOTEST_FUNDER_PRIVATEKEY="0x701b615bbdfb9de65240bc28bd21bbc0d996645a3dd57e7b12bc2bdf6f192c82" + +# seedphrase used to generate accounts for concurrently running tests, will get funded on demand by the funder (see above) +export CELOTEST_ACCOUNTS_SEEDPHRASE="output volume pigeon concert double live dial tonight force history plug cluster" + +# spawn/cleanup the local devnet before/after running the tests +export CELOTEST_SPAWN_DEVNET=true + +# use faultproofs in the local devnet +# OR expect fault-proofs when running against another network +export CELOTEST_USE_FAULTPROOFS=true + +# use the alt-da in the local devnet +# OR expect using alt-da when running against another network +export CELOTEST_USE_ALTDA=true diff --git a/op-e2e/celo/.mainnet-dryrun.env b/op-e2e/celo/.mainnet-dryrun.env new file mode 100644 index 0000000000000..991fd74617c75 --- /dev/null +++ b/op-e2e/celo/.mainnet-dryrun.env @@ -0,0 +1,11 @@ +export CELOTEST_L1_RPCURL='https://eth.drpc.org' +export CELOTEST_L2_RPCURL='https://forno.celo.org/cel2' +export CELOTEST_L1_CHAINID=1 +export CELOTEST_L2_CHAINID=42220 +export CELOTEST_MONOREPOPATH='../../' +export CELOTEST_TESTDIRPATH='./tests/' +export CELOTEST_ADDRESSES_L1_FILEPATH='./networks/42220-dryrun/contracts-l1.json' +export CELOTEST_ADDRESSES_L2_FILEPATH='./networks/42220-dryrun/celo-contracts.json' +export CELOTEST_SPAWN_DEVNET=false +export CELOTEST_USE_FAULTPROOFS=true +export CELOTEST_USE_ALTDA=true diff --git a/op-e2e/celo/.prettierrc.toml b/op-e2e/celo/.prettierrc.toml deleted file mode 100644 index d5b43d58c0b8c..0000000000000 --- a/op-e2e/celo/.prettierrc.toml +++ /dev/null @@ -1,4 +0,0 @@ -trailingComma = "es5" -tabWidth = 2 -semi = false -singleQuote = true diff --git a/op-e2e/celo/babel.config.cjs b/op-e2e/celo/babel.config.cjs deleted file mode 100644 index a76dfe63099c9..0000000000000 --- a/op-e2e/celo/babel.config.cjs +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [['@babel/preset-env', { targets: { node: 'current' } }]], -} diff --git a/op-e2e/celo/contracts/L2StandardBridge.json b/op-e2e/celo/contracts/L2StandardBridge.json new file mode 100644 index 0000000000000..b235c3e1f3d3d --- /dev/null +++ b/op-e2e/celo/contracts/L2StandardBridge.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeBridgeETH","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_otherBridge","type":"address","internalType":"contract StandardBridge"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1TokenBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"function","name":"withdraw","inputs":[{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawTo","inputs":[{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"DepositFinalized","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"WithdrawalInitiated","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001e600062000024565b62000217565b600054610100900460ff1615808015620000455750600054600160ff909116105b8062000075575062000062306200016d60201b620004491760201c565b15801562000075575060005460ff166001145b620000de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000102576000805461ff0019166101001790555b62000122734200000000000000000000000000000000000007836200017c565b801562000169576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d5565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b612dba80620002276000396000f3fe6080604052600436106101125760003560e01c80635c975abb116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de8146103e9578063c89701a214610409578063e11013dd1461043657600080fd5b8063927ede2d146103ab578063a3a79548146103d657600080fd5b80635c975abb146103295780637f46ddb21461023f57806387087623146103455780638f601f661461036557600080fd5b806336c717c1116100e157806336c717c11461023f5780633cb747bf14610290578063540abf73146102bd57806354fd4d50146102dd57600080fd5b80630166a07a146101e657806309fc8843146102065780631635f5fd1461021957806332b7006d1461022c57600080fd5b366101e157333b156101ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101df73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d4060405180602001604052806000815250610465565b005b600080fd5b3480156101f257600080fd5b506101df610201366004612778565b610540565b6101df610214366004612829565b6108e2565b6101df61022736600461287c565b6109b9565b6101df61023a3660046128ef565b610ea0565b34801561024b57600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561029c57600080fd5b506003546102669073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c957600080fd5b506101df6102d8366004612943565b61100f565b3480156102e957600080fd5b50604080518082018252600d81527f312e31312e312d626574612e3300000000000000000000000000000000000000602082015290516102879190612a30565b34801561033557600080fd5b5060405160008152602001610287565b34801561035157600080fd5b506101df610360366004612a43565b611054565b34801561037157600080fd5b5061039d610380366004612ac6565b600260209081526000928352604080842090915290825290205481565b604051908152602001610287565b3480156103b757600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610266565b6101df6103e4366004612a43565b611128565b3480156103f557600080fd5b506101df610404366004612aff565b611201565b34801561041557600080fd5b506004546102669073ffffffffffffffffffffffffffffffffffffffff1681565b6101df610444366004612b1c565b6113aa565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104b4576104af85858585856113f3565b610538565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190612b7f565b905061053687828888888888611652565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610613575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb9190612b7f565b73ffffffffffffffffffffffffffffffffffffffff16145b6106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101a2565b6106ce87611a0b565b1561081c576106dd8787611a6d565b61078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101a2565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b5050505061089e565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461085a908490612bcb565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561089e908585611b8d565b610536878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c6192505050565b333b15610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b6109b43333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113f392505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610a8c575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190612b7f565b73ffffffffffffffffffffffffffffffffffffffff16145b610b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101a2565b610b46611cef565b15610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2063616e6e6f742062726964676520455460448201527f48207769746820637573746f6d2067617320746f6b656e00000000000000000060648201526084016101a2565b823414610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101a2565b3073ffffffffffffffffffffffffffffffffffffffff851603610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610db2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101a2565b610df485858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2e92505050565b6000610e11855a8660405180602001604052806000815250611dcf565b905080610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b333b15610f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b610f37611cef565b15610fc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c325374616e646172644272696467653a206e6f7420737570706f727465642060448201527f7769746820637573746f6d2067617320746f6b656e000000000000000000000060648201526084016101a2565b611008853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046592505050565b5050505050565b61053687873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061165292505050565b333b156110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b61053886863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061165292505050565b611130611cef565b156111bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c325374616e646172644272696467653a206e6f7420737570706f727465642060448201527f7769746820637573746f6d2067617320746f6b656e000000000000000000000060648201526084016101a2565b610538863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046592505050565b600054610100900460ff16158080156112215750600054600160ff909116105b8061123b5750303b15801561123b575060005460ff166001145b6112c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101a2565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561132557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61134373420000000000000000000000000000000000000783611de7565b80156113a657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6113ed3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113f392505050565b50505050565b6113fb611cef565b15611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2063616e6e6f742062726964676520455460448201527f48207769746820637573746f6d2067617320746f6b656e00000000000000000060648201526084016101a2565b823414611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101a2565b61152385858584611ed1565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd0000000000000000000000000000000000000000000000000000000090611586908b908b9086908a90602401612be2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261161992918890600401612c2b565b6000604051808303818588803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b50505050505050505050565b34156116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5374616e646172644272696467653a2063616e6e6f742073656e642076616c7560448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b6116e987611a0b565b15611837576116f88787611a6d565b6117aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101a2565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506118cb565b61185973ffffffffffffffffffffffffffffffffffffffff8816863086611f72565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a1683529290522054611897908490612c70565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6118d9878787878786611fd0565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a000000000000000000000000000000000000000000000000000000009061193d908b908d908c908c908c908b90602401612c88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526119d092918790600401612c2b565b600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b5050505050505050505050565b6000611a37827f1d1d8b630000000000000000000000000000000000000000000000000000000061205e565b80611a675750611a67827fec4fc8e30000000000000000000000000000000000000000000000000000000061205e565b92915050565b6000611a99837f1d1d8b630000000000000000000000000000000000000000000000000000000061205e565b15611b42578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d9190612b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611a67565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109b49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612081565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611cd993929190612ce3565b60405180910390a461053886868686868661218d565b600080611cfa612215565b5073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141592915050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611dbb93929190612ce3565b60405180910390a46113ed848484846122a3565b6000806000835160208501868989f195945050505050565b600054610100900460ff16611e7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a2565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611f5e93929190612ce3565b60405180910390a46113ed84848484612310565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113ed9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bdf565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e86868660405161204893929190612ce3565b60405180910390a461053886868686868661236f565b6000612069836123e7565b801561207a575061207a838361244b565b9392505050565b60006120e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661251a9092919063ffffffff16565b8051909150156109b457808060200190518101906121019190612d21565b6109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101a2565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161220593929190612ce3565b60405180910390a4505050505050565b60008073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16634397dfef6040518163ffffffff1660e01b81526004016040805180830381865afa158015612276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a9190612d43565b90939092509050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612302929190612d78565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612302929190612d78565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161220593929190612ce3565b6000612413827f01ffc9a70000000000000000000000000000000000000000000000000000000061244b565b8015611a675750612444827fffffffff0000000000000000000000000000000000000000000000000000000061244b565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612503575060208210155b801561250f5750600081115b979650505050505050565b60606125298484600085612531565b949350505050565b6060824710156125c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101a2565b73ffffffffffffffffffffffffffffffffffffffff85163b612641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161266a9190612d91565b60006040518083038185875af1925050503d80600081146126a7576040519150601f19603f3d011682016040523d82523d6000602084013e6126ac565b606091505b509150915061250f828286606083156126c657508161207a565b8251156126d65782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a29190612a30565b73ffffffffffffffffffffffffffffffffffffffff8116811461272c57600080fd5b50565b60008083601f84011261274157600080fd5b50813567ffffffffffffffff81111561275957600080fd5b60208301915083602082850101111561277157600080fd5b9250929050565b600080600080600080600060c0888a03121561279357600080fd5b873561279e8161270a565b965060208801356127ae8161270a565b955060408801356127be8161270a565b945060608801356127ce8161270a565b93506080880135925060a088013567ffffffffffffffff8111156127f157600080fd5b6127fd8a828b0161272f565b989b979a50959850939692959293505050565b803563ffffffff8116811461282457600080fd5b919050565b60008060006040848603121561283e57600080fd5b61284784612810565b9250602084013567ffffffffffffffff81111561286357600080fd5b61286f8682870161272f565b9497909650939450505050565b60008060008060006080868803121561289457600080fd5b853561289f8161270a565b945060208601356128af8161270a565b935060408601359250606086013567ffffffffffffffff8111156128d257600080fd5b6128de8882890161272f565b969995985093965092949392505050565b60008060008060006080868803121561290757600080fd5b85356129128161270a565b94506020860135935061292760408701612810565b9250606086013567ffffffffffffffff8111156128d257600080fd5b600080600080600080600060c0888a03121561295e57600080fd5b87356129698161270a565b965060208801356129798161270a565b955060408801356129898161270a565b94506060880135935061299e60808901612810565b925060a088013567ffffffffffffffff8111156127f157600080fd5b60005b838110156129d55781810151838201526020016129bd565b838111156113ed5750506000910152565b600081518084526129fe8160208601602086016129ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061207a60208301846129e6565b60008060008060008060a08789031215612a5c57600080fd5b8635612a678161270a565b95506020870135612a778161270a565b945060408701359350612a8c60608801612810565b9250608087013567ffffffffffffffff811115612aa857600080fd5b612ab489828a0161272f565b979a9699509497509295939492505050565b60008060408385031215612ad957600080fd5b8235612ae48161270a565b91506020830135612af48161270a565b809150509250929050565b600060208284031215612b1157600080fd5b813561207a8161270a565b60008060008060608587031215612b3257600080fd5b8435612b3d8161270a565b9350612b4b60208601612810565b9250604085013567ffffffffffffffff811115612b6757600080fd5b612b738782880161272f565b95989497509550505050565b600060208284031215612b9157600080fd5b815161207a8161270a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612bdd57612bdd612b9c565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612c2160808301846129e6565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000612c5a60608301856129e6565b905063ffffffff83166040830152949350505050565b60008219821115612c8357612c83612b9c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152612cd760c08301846129e6565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612d1860608301846129e6565b95945050505050565b600060208284031215612d3357600080fd5b8151801515811461207a57600080fd5b60008060408385031215612d5657600080fd5b8251612d618161270a565b602084015190925060ff81168114612af457600080fd5b82815260406020820152600061252960408301846129e6565b60008251612da38184602087016129ba565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1214:8873:207:-:0;;;2791:113;;;;;;;;;-1:-1:-1;2832:65:207::1;2890:1;2832:10;:65::i;:::-;1214:8873:::0;;3025:243;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:58;;216:2:564;3146:190:58;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:564;;;338:44;399:19;;3146:190:58;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:58;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:58;;;;;3372:65;3103:158:207::1;1491:42:348;3238:12:207::0;3103:21:::1;:158::i;:::-;3461:14:58::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:58;;;3531:14;;-1:-1:-1;581:36:564;;3531:14:58;;569:2:564;554:18;3531:14:58;;;;;;;3457:99;3090:472;3025:243:207;:::o;1175:320:74:-;-1:-1:-1;;;;;1465:19:74;;:23;;;1175:320::o;5523:237:392:-;4888:13:58;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:58;;830:2:564;4880:69:58;;;812:21:564;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:564;;;952:41;1010:19;;4880:69:58;628:407:564;4880:69:58;5695:9:392::1;:22:::0;;-1:-1:-1;;;;;5695:22:392;;::::1;-1:-1:-1::0;;;;;;5695:22:392;;::::1;;::::0;;;5727:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5523:237::o;628:407:564:-;1214:8873:207;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101125760003560e01c80635c975abb116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de8146103e9578063c89701a214610409578063e11013dd1461043657600080fd5b8063927ede2d146103ab578063a3a79548146103d657600080fd5b80635c975abb146103295780637f46ddb21461023f57806387087623146103455780638f601f661461036557600080fd5b806336c717c1116100e157806336c717c11461023f5780633cb747bf14610290578063540abf73146102bd57806354fd4d50146102dd57600080fd5b80630166a07a146101e657806309fc8843146102065780631635f5fd1461021957806332b7006d1461022c57600080fd5b366101e157333b156101ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101df73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d4060405180602001604052806000815250610465565b005b600080fd5b3480156101f257600080fd5b506101df610201366004612778565b610540565b6101df610214366004612829565b6108e2565b6101df61022736600461287c565b6109b9565b6101df61023a3660046128ef565b610ea0565b34801561024b57600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561029c57600080fd5b506003546102669073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c957600080fd5b506101df6102d8366004612943565b61100f565b3480156102e957600080fd5b50604080518082018252600d81527f312e31312e312d626574612e3300000000000000000000000000000000000000602082015290516102879190612a30565b34801561033557600080fd5b5060405160008152602001610287565b34801561035157600080fd5b506101df610360366004612a43565b611054565b34801561037157600080fd5b5061039d610380366004612ac6565b600260209081526000928352604080842090915290825290205481565b604051908152602001610287565b3480156103b757600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610266565b6101df6103e4366004612a43565b611128565b3480156103f557600080fd5b506101df610404366004612aff565b611201565b34801561041557600080fd5b506004546102669073ffffffffffffffffffffffffffffffffffffffff1681565b6101df610444366004612b1c565b6113aa565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104b4576104af85858585856113f3565b610538565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105259190612b7f565b905061053687828888888888611652565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610613575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb9190612b7f565b73ffffffffffffffffffffffffffffffffffffffff16145b6106c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101a2565b6106ce87611a0b565b1561081c576106dd8787611a6d565b61078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101a2565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b5050505061089e565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461085a908490612bcb565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c168352939052919091209190915561089e908585611b8d565b610536878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611c6192505050565b333b15610971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b6109b43333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113f392505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610a8c575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a749190612b7f565b73ffffffffffffffffffffffffffffffffffffffff16145b610b3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101a2565b610b46611cef565b15610bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2063616e6e6f742062726964676520455460448201527f48207769746820637573746f6d2067617320746f6b656e00000000000000000060648201526084016101a2565b823414610c62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101a2565b3073ffffffffffffffffffffffffffffffffffffffff851603610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610db2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101a2565b610df485858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d2e92505050565b6000610e11855a8660405180602001604052806000815250611dcf565b905080610538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b333b15610f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b610f37611cef565b15610fc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c325374616e646172644272696467653a206e6f7420737570706f727465642060448201527f7769746820637573746f6d2067617320746f6b656e000000000000000000000060648201526084016101a2565b611008853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046592505050565b5050505050565b61053687873388888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061165292505050565b333b156110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101a2565b61053886863333888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061165292505050565b611130611cef565b156111bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c325374616e646172644272696467653a206e6f7420737570706f727465642060448201527f7769746820637573746f6d2067617320746f6b656e000000000000000000000060648201526084016101a2565b610538863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046592505050565b600054610100900460ff16158080156112215750600054600160ff909116105b8061123b5750303b15801561123b575060005460ff166001145b6112c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101a2565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561132557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61134373420000000000000000000000000000000000000783611de7565b80156113a657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6113ed3385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113f392505050565b50505050565b6113fb611cef565b15611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2063616e6e6f742062726964676520455460448201527f48207769746820637573746f6d2067617320746f6b656e00000000000000000060648201526084016101a2565b823414611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101a2565b61152385858584611ed1565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd0000000000000000000000000000000000000000000000000000000090611586908b908b9086908a90602401612be2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261161992918890600401612c2b565b6000604051808303818588803b15801561163257600080fd5b505af1158015611646573d6000803e3d6000fd5b50505050505050505050565b34156116e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5374616e646172644272696467653a2063616e6e6f742073656e642076616c7560448201527f650000000000000000000000000000000000000000000000000000000000000060648201526084016101a2565b6116e987611a0b565b15611837576116f88787611a6d565b6117aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101a2565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050506118cb565b61185973ffffffffffffffffffffffffffffffffffffffff8816863086611f72565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a1683529290522054611897908490612c70565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6118d9878787878786611fd0565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a000000000000000000000000000000000000000000000000000000009061193d908b908d908c908c908c908b90602401612c88565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b90921682526119d092918790600401612c2b565b600060405180830381600087803b1580156119ea57600080fd5b505af11580156119fe573d6000803e3d6000fd5b5050505050505050505050565b6000611a37827f1d1d8b630000000000000000000000000000000000000000000000000000000061205e565b80611a675750611a67827fec4fc8e30000000000000000000000000000000000000000000000000000000061205e565b92915050565b6000611a99837f1d1d8b630000000000000000000000000000000000000000000000000000000061205e565b15611b42578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0d9190612b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611a67565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ae9573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109b49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612081565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611cd993929190612ce3565b60405180910390a461053886868686868661218d565b600080611cfa612215565b5073ffffffffffffffffffffffffffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141592915050565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611dbb93929190612ce3565b60405180910390a46113ed848484846122a3565b6000806000835160208501868989f195945050505050565b600054610100900460ff16611e7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101a2565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611f5e93929190612ce3565b60405180910390a46113ed84848484612310565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113ed9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bdf565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e86868660405161204893929190612ce3565b60405180910390a461053886868686868661236f565b6000612069836123e7565b801561207a575061207a838361244b565b9392505050565b60006120e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661251a9092919063ffffffff16565b8051909150156109b457808060200190518101906121019190612d21565b6109b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101a2565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd86868660405161220593929190612ce3565b60405180910390a4505050505050565b60008073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff16634397dfef6040518163ffffffff1660e01b81526004016040805180830381865afa158015612276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229a9190612d43565b90939092509050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612302929190612d78565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612302929190612d78565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf86868660405161220593929190612ce3565b6000612413827f01ffc9a70000000000000000000000000000000000000000000000000000000061244b565b8015611a675750612444827fffffffff0000000000000000000000000000000000000000000000000000000061244b565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612503575060208210155b801561250f5750600081115b979650505050505050565b60606125298484600085612531565b949350505050565b6060824710156125c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101a2565b73ffffffffffffffffffffffffffffffffffffffff85163b612641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101a2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161266a9190612d91565b60006040518083038185875af1925050503d80600081146126a7576040519150601f19603f3d011682016040523d82523d6000602084013e6126ac565b606091505b509150915061250f828286606083156126c657508161207a565b8251156126d65782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101a29190612a30565b73ffffffffffffffffffffffffffffffffffffffff8116811461272c57600080fd5b50565b60008083601f84011261274157600080fd5b50813567ffffffffffffffff81111561275957600080fd5b60208301915083602082850101111561277157600080fd5b9250929050565b600080600080600080600060c0888a03121561279357600080fd5b873561279e8161270a565b965060208801356127ae8161270a565b955060408801356127be8161270a565b945060608801356127ce8161270a565b93506080880135925060a088013567ffffffffffffffff8111156127f157600080fd5b6127fd8a828b0161272f565b989b979a50959850939692959293505050565b803563ffffffff8116811461282457600080fd5b919050565b60008060006040848603121561283e57600080fd5b61284784612810565b9250602084013567ffffffffffffffff81111561286357600080fd5b61286f8682870161272f565b9497909650939450505050565b60008060008060006080868803121561289457600080fd5b853561289f8161270a565b945060208601356128af8161270a565b935060408601359250606086013567ffffffffffffffff8111156128d257600080fd5b6128de8882890161272f565b969995985093965092949392505050565b60008060008060006080868803121561290757600080fd5b85356129128161270a565b94506020860135935061292760408701612810565b9250606086013567ffffffffffffffff8111156128d257600080fd5b600080600080600080600060c0888a03121561295e57600080fd5b87356129698161270a565b965060208801356129798161270a565b955060408801356129898161270a565b94506060880135935061299e60808901612810565b925060a088013567ffffffffffffffff8111156127f157600080fd5b60005b838110156129d55781810151838201526020016129bd565b838111156113ed5750506000910152565b600081518084526129fe8160208601602086016129ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061207a60208301846129e6565b60008060008060008060a08789031215612a5c57600080fd5b8635612a678161270a565b95506020870135612a778161270a565b945060408701359350612a8c60608801612810565b9250608087013567ffffffffffffffff811115612aa857600080fd5b612ab489828a0161272f565b979a9699509497509295939492505050565b60008060408385031215612ad957600080fd5b8235612ae48161270a565b91506020830135612af48161270a565b809150509250929050565b600060208284031215612b1157600080fd5b813561207a8161270a565b60008060008060608587031215612b3257600080fd5b8435612b3d8161270a565b9350612b4b60208601612810565b9250604085013567ffffffffffffffff811115612b6757600080fd5b612b738782880161272f565b95989497509550505050565b600060208284031215612b9157600080fd5b815161207a8161270a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612bdd57612bdd612b9c565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152612c2160808301846129e6565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000612c5a60608301856129e6565b905063ffffffff83166040830152949350505050565b60008219821115612c8357612c83612b9c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a0830152612cd760c08301846129e6565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612d1860608301846129e6565b95945050505050565b600060208284031215612d3357600080fd5b8151801515811461207a57600080fd5b60008060408385031215612d5657600080fd5b8251612d618161270a565b602084015190925060ff81168114612af457600080fd5b82815260406020820152600061252960408301846129e6565b60008251612da38184602087016129ba565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1214:8873:207:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4891:10:392;1465:19:74;:23;4863:99:392;;;;;;;216:2:564;4863:99:392;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4863:99:392;;;;;;;;;3405:143:207::1;4390:42:348;3467:10:207;3479;3491:9;1492:7:392;3529:9:207;;;;;;;;;;;::::0;3405:19:::1;:143::i;:::-;1214:8873:::0;;;;;13519:1084:392;;;;;;;;;;-1:-1:-1;13519:1084:392;;;;;:::i;:::-;;:::i;7800:186::-;;;;;;:::i;:::-;;:::i;11780:1007::-;;;;;;:::i;:::-;;:::i;4356:416:207:-;;;;;;:::i;:::-;;:::i;6403:101::-;;;;;;;;;;-1:-1:-1;6485:11:207;;;;6403:101;;;4271:42:564;4259:55;;;4241:74;;4229:2;4214:18;6403:101:207;;;;;;;;2042:38:392;;;;;;;;;;-1:-1:-1;2042:38:392;;;;;;;;10867:349;;;;;;;;;;-1:-1:-1;10867:349:392;;;;;:::i;:::-;;:::i;2625:102:207:-;;;;;;;;;;-1:-1:-1;2698:22:207;;;;;;;;;;;;;;;;2625:102;;;;2698:22;2625:102;:::i;7297:82:392:-;;;;;;;;;;-1:-1:-1;7297:82:392;;7344:4;6513:41:564;;6501:2;6486:18;7297:82:392;6373:187:564;9824:349:392;;;;;;;;;;-1:-1:-1;9824:349:392;;;;;:::i;:::-;;:::i;1888:63::-;;;;;;;;;;-1:-1:-1;1888:63:392;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8200:25:564;;;8188:2;8173:18;1888:63:392;8054:177:564;6570:100:392;;;;;;;;;;-1:-1:-1;6654:9:392;;;;6570:100;;5815:416:207;;;;;;:::i;:::-;;:::i;3025:243::-;;;;;;;;;;-1:-1:-1;3025:243:207;;;;;:::i;:::-;;:::i;2178:33:392:-;;;;;;;;;;-1:-1:-1;2178:33:392;;;;;;;;8997:186;;;;;;:::i;:::-;;:::i;1175:320:74:-;1465:19;;;:23;;;1175:320::o;7011:554:207:-;7238:39;;;;;7234:325;;7293:65;7312:5;7319:3;7324:7;7333:12;7347:10;7293:18;:65::i;:::-;7234:325;;;7389:15;7429:8;7407:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7389:59;;7462:86;7483:8;7493:7;7502:5;7509:3;7514:7;7523:12;7537:10;7462:20;:86::i;:::-;7375:184;7234:325;7011:554;;;;;;:::o;13519:1084:392:-;5154:9;;;;5132:10;:32;:92;;;;-1:-1:-1;5212:11:392;;;5168:9;;:32;;;;;;;;5212:11;;;;;5168:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;5132:92;5111:204;;;;;;;9592:2:564;5111:204:392;;;9574:21:564;9631:2;9611:18;;;9604:30;9670:34;9650:18;;;9643:62;9741:34;9721:18;;;9714:62;9813:3;9792:19;;;9785:32;9834:19;;5111:204:392;9390:469:564;5111:204:392;13836:37:::1;13861:11;13836:24;:37::i;:::-;13832:489;;;13914:46;13934:11;13947:12;13914:19;:46::i;:::-;13889:179;;;::::0;::::1;::::0;;10417:2:564;13889:179:392::1;::::0;::::1;10399:21:564::0;10456:2;10436:18;;;10429:30;10495:34;10475:18;;;10468:62;10566:34;10546:18;;;10539:62;10638:12;10617:19;;;10610:41;10668:19;;13889:179:392::1;10215:478:564::0;13889:179:392::1;14083:53;::::0;;;;:39:::1;10890:55:564::0;;;14083:53:392::1;::::0;::::1;10872:74:564::0;10962:18;;;10955:34;;;14083:39:392;::::1;::::0;::::1;::::0;10845:18:564;;14083:53:392::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13832:489;;;14205:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;:45:::1;::::0;14243:7;;14205:45:::1;:::i;:::-;14167:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;;;:83;;;;14264:46:::1;::::0;14297:3;14302:7;14264:32:::1;:46::i;:::-;14511:85;14537:11;14550:12;14564:5;14571:3;14576:7;14585:10;;14511:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14511:25:392::1;::::0;-1:-1:-1;;;14511:85:392:i:1;7800:186::-:0;4891:10;1465:19:74;:23;4863:99:392;;;;;;;216:2:564;4863:99:392;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4863:99:392;14:419:564;4863:99:392;7900:79:::1;7919:10;7931;7943:9;7954:12;7968:10;;7900:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7900:18:392::1;::::0;-1:-1:-1;;;7900:79:392:i:1;:::-;7800:186:::0;;;:::o;11780:1007::-;5154:9;;;;5132:10;:32;:92;;;;-1:-1:-1;5212:11:392;;;5168:9;;:32;;;;;;;;5212:11;;;;;5168:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;5132:92;5111:204;;;;;;;9592:2:564;5111:204:392;;;9574:21:564;9631:2;9611:18;;;9604:30;9670:34;9650:18;;;9643:62;9741:34;9721:18;;;9714:62;9813:3;9792:19;;;9785:32;9834:19;;5111:204:392;9390:469:564;5111:204:392;12056:18:::1;:16;:18::i;:::-;:27;12048:95;;;::::0;::::1;::::0;;11521:2:564;12048:95:392::1;::::0;::::1;11503:21:564::0;11560:2;11540:18;;;11533:30;11599:34;11579:18;;;11572:62;11670:25;11650:18;;;11643:53;11713:19;;12048:95:392::1;11319:419:564::0;12048:95:392::1;12174:7;12161:9;:20;12153:91;;;::::0;::::1;::::0;;11945:2:564;12153:91:392::1;::::0;::::1;11927:21:564::0;11984:2;11964:18;;;11957:30;12023:34;12003:18;;;11996:62;12094:28;12074:18;;;12067:56;12140:19;;12153:91:392::1;11743:422:564::0;12153:91:392::1;12277:4;12262:20;::::0;::::1;::::0;12254:68:::1;;;::::0;::::1;::::0;;12372:2:564;12254:68:392::1;::::0;::::1;12354:21:564::0;12411:2;12391:18;;;12384:30;12450:34;12430:18;;;12423:62;12521:5;12501:18;;;12494:33;12544:19;;12254:68:392::1;12170:399:564::0;12254:68:392::1;12355:9;::::0;::::1;::::0;;::::1;12340:25:::0;;::::1;::::0;12332:78:::1;;;::::0;::::1;::::0;;12776:2:564;12332:78:392::1;::::0;::::1;12758:21:564::0;12815:2;12795:18;;;12788:30;12854:34;12834:18;;;12827:62;12925:10;12905:18;;;12898:38;12953:19;;12332:78:392::1;12574:404:564::0;12332:78:392::1;12588:56;12612:5;12619:3;12624:7;12633:10;;12588:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;12588:23:392::1;::::0;-1:-1:-1;;;12588:56:392:i:1;:::-;12655:12;12670:45;12684:3;12689:9;12700:7;12670:45;;;;;;;;;;;::::0;:13:::1;:45::i;:::-;12655:60;;12733:7;12725:55;;;::::0;::::1;::::0;;13185:2:564;12725:55:392::1;::::0;::::1;13167:21:564::0;13224:2;13204:18;;;13197:30;13263:34;13243:18;;;13236:62;13334:5;13314:18;;;13307:33;13357:19;;12725:55:392::1;12983:399:564::0;4356:416:207;4891:10:392;1465:19:74;:23;4863:99:392;;;;;;;216:2:564;4863:99:392;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4863:99:392;14:419:564;4863:99:392;4582:18:207::1;:16;:18::i;:::-;:27;4574:93;;;::::0;::::1;::::0;;13589:2:564;4574:93:207::1;::::0;::::1;13571:21:564::0;13628:2;13608:18;;;13601:30;13667:34;13647:18;;;13640:62;13738:23;13718:18;;;13711:51;13779:19;;4574:93:207::1;13387:417:564::0;4574:93:207::1;4677:88;4697:8;4707:10;4719;4731:7;4740:12;4754:10;;4677:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4677:19:207::1;::::0;-1:-1:-1;;;4677:88:207:i:1;:::-;4356:416:::0;;;;;:::o;10867:349:392:-;11110:99;11131:11;11144:12;11158:10;11170:3;11175:7;11184:12;11198:10;;11110:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11110:20:392;;-1:-1:-1;;;11110:99:392:i;9824:349::-;4891:10;1465:19:74;:23;4863:99:392;;;;;;;216:2:564;4863:99:392;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4863:99:392;14:419:564;4863:99:392;10060:106:::1;10081:11;10094:12;10108:10;10120;10132:7;10141:12;10155:10;;10060:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10060:20:392::1;::::0;-1:-1:-1;;;10060:106:392:i:1;5815:416:207:-:0;6048:18;:16;:18::i;:::-;:27;6040:93;;;;;;;13589:2:564;6040:93:207;;;13571:21:564;13628:2;13608:18;;;13601:30;13667:34;13647:18;;;13640:62;13738:23;13718:18;;;13711:51;13779:19;;6040:93:207;13387:417:564;6040:93:207;6143:81;6163:8;6173:10;6185:3;6190:7;6199:12;6213:10;;6143:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6143:19:207;;-1:-1:-1;;;6143:81:207:i;3025:243::-;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:58;1465:19:74;:23;;;3208:55:58;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;;;;14011:2:564;3146:190:58;;;13993:21:564;14050:2;14030:18;;;14023:30;14089:34;14069:18;;;14062:62;14160:16;14140:18;;;14133:44;14194:19;;3146:190:58;13809:410:564;3146:190:58;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;3103:158:207::1;1491:42:348;3238:12:207;3103:21;:158::i;:::-;3461:14:58::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;14376:36:564;;3531:14:58;;14364:2:564;14349:18;3531:14:58;;;;;;;3457:99;3090:472;3025:243:207;:::o;8997:186:392:-;9104:72;9123:10;9135:3;9140:9;9151:12;9165:10;;9104:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9104:18:392;;-1:-1:-1;;;9104:72:392:i;:::-;8997:186;;;;:::o;15191:894::-;15395:18;:16;:18::i;:::-;:27;15387:95;;;;;;;11521:2:564;15387:95:392;;;11503:21:564;11560:2;11540:18;;;11533:30;11599:34;11579:18;;;11572:62;11670:25;11650:18;;;11643:53;11713:19;;15387:95:392;11319:419:564;15387:95:392;15513:7;15500:9;:20;15492:95;;;;;;;14625:2:564;15492:95:392;;;14607:21:564;14664:2;14644:18;;;14637:30;14703:34;14683:18;;;14676:62;14774:32;14754:18;;;14747:60;14824:19;;15492:95:392;14423:426:564;15492:95:392;15765:56;15789:5;15796:3;15801:7;15810:10;15765:23;:56::i;:::-;15832:9;;15903:11;;15939:88;;15832:9;;;;;:21;;15862:7;;15903:11;;;15962:31;;15939:88;;15995:5;;16002:3;;15862:7;;16016:10;;15939:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15832:246;;;;;;;;;;;;;16055:12;;15832:246;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15191:894;;;;;:::o;16779:1751::-;17044:9;:14;17036:60;;;;;;;16002:2:564;17036:60:392;;;15984:21:564;16041:2;16021:18;;;16014:30;16080:34;16060:18;;;16053:62;16151:3;16131:18;;;16124:31;16172:19;;17036:60:392;15800:397:564;17036:60:392;17111:37;17136:11;17111:24;:37::i;:::-;17107:512;;;17189:46;17209:11;17222:12;17189:19;:46::i;:::-;17164:179;;;;;;;10417:2:564;17164:179:392;;;10399:21:564;10456:2;10436:18;;;10429:30;10495:34;10475:18;;;10468:62;10566:34;10546:18;;;10539:62;10638:12;10617:19;;;10610:41;10668:19;;17164:179:392;10215:478:564;17164:179:392;17358:55;;;;;:39;10890:55:564;;;17358::392;;;10872:74:564;10962:18;;;10955:34;;;17358:39:392;;;;;10845:18:564;;17358:55:392;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17107:512;;;17444:67;:36;;;17481:5;17496:4;17503:7;17444:36;:67::i;:::-;17563:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;;:45;;17601:7;;17563:45;:::i;:::-;17525:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;:83;17107:512;17809:85;17835:11;17848:12;17862:5;17869:3;17874:7;17883:10;17809:25;:85::i;:::-;17905:9;;17958:11;;17994:478;;17905:9;;;;;:21;;17958:11;;18034:33;;17994:478;;18320:12;;18350:11;;18379:5;;18402:3;;18423:7;;18448:10;;17994:478;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17905:618;;;;;;;;;;;;;18500:12;;17905:618;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16779:1751;;;;;;;:::o;18794:279::-;18867:4;18890:79;18922:6;18930:38;18890:31;:79::i;:::-;:176;;;;18985:81;19017:6;19025:40;18985:31;:81::i;:::-;18883:183;18794:279;-1:-1:-1;;18794:279:392:o;19520:410::-;19617:4;19637:87;19669:14;19685:38;19637:31;:87::i;:::-;19633:291;;;19783:14;19762:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19747:61;;:11;:61;;;19740:68;;;;19633:291;19884:14;19861:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;763:205:67;902:58;;10902:42:564;10890:55;;902:58:67;;;10872:74:564;10962:18;;;10955:34;;;875:86:67;;895:5;;925:23;;10845:18:564;;902:58:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;875:19;:86::i;9646:439:207:-;9945:5;9901:76;;9932:11;9901:76;;9918:12;9901:76;;;9952:3;9957:7;9966:10;9901:76;;;;;;;;:::i;:::-;;;;;;;;9987:91;10019:11;10032:12;10046:5;10053:3;10058:7;10067:10;9987:31;:91::i;6186:150:392:-;6237:4;6254:13;6272:16;:14;:16::i;:::-;-1:-1:-1;6305:24:392;;2086:42:341;6305:24:392;;;6186:150;-1:-1:-1;;6186:150:392:o;8384:363:207:-;8636:5;8578:90;;4390:42:348;8578:90:207;;8603:1;8578:90;;;8643:3;8648:7;8657:10;8578:90;;;;;;;;:::i;:::-;;;;;;;;8678:62;8708:5;8715:3;8720:7;8729:10;8678:29;:62::i;1496:555:350:-;1653:13;2006:1;1973;1932:9;1926:16;1892:2;1881:9;1877:18;1834:6;1792:7;1759:4;1733:302;1705:330;1496:555;-1:-1:-1;;;;;1496:555:350:o;5523:237:392:-;4888:13:58;;;;;;;4880:69;;;;;;;17630:2:564;4880:69:58;;;17612:21:564;17669:2;17649:18;;;17642:30;17708:34;17688:18;;;17681:62;17779:13;17759:18;;;17752:41;17810:19;;4880:69:58;17428:407:564;4880:69:58;5695:9:392::1;:22:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;5727:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5523:237::o;7793:366:207:-;8048:5;7987:93;;4390:42:348;7987:93:207;;8015:1;7987:93;;;8055:3;8060:7;8069:10;7987:93;;;;;;;;:::i;:::-;;;;;;;;8090:62;8120:5;8127:3;8132:7;8141:10;8090:29;:62::i;974:241:67:-;1139:68;;18052:42:564;18121:15;;;1139:68:67;;;18103:34:564;18173:15;;18153:18;;;18146:43;18205:18;;;18198:34;;;1112:96:67;;1132:5;;1162:27;;18015:18:564;;1139:68:67;17840:398:564;8977:442:207;9279:5;9232:79;;9266:11;9232:79;;9252:12;9232:79;;;9286:3;9291:7;9300:10;9232:79;;;;;;;;:::i;:::-;;;;;;;;9321:91;9353:11;9366:12;9380:5;9387:3;9392:7;9401:10;9321:31;:91::i;1333:274:82:-;1420:4;1527:23;1542:7;1527:14;:23::i;:::-;:73;;;;;1554:46;1579:7;1588:11;1554:24;:46::i;:::-;1520:80;1333:274;-1:-1:-1;;;1333:274:82:o;3747:706:67:-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;4192:27;;;;:69;;;;;:::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:67;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;;;;18727:2:564;4351:85:67;;;18709:21:564;18766:2;18746:18;;;18739:30;18805:34;18785:18;;;18778:62;18876:12;18856:18;;;18849:40;18906:19;;4351:85:67;18525:406:564;22585:341:392;22887:5;22839:80;;22873:12;22839:80;;22860:11;22839:80;;;22894:3;22899:7;22908:10;22839:80;;;;;;;;:::i;:::-;;;;;;;;22585:341;;;;;;:::o;3596:185:207:-;3654:13;3669:15;2827:42:348;3717:55:207;;;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3696:78;;;;-1:-1:-1;3596:185:207;-1:-1:-1;3596:185:207:o;20927:251:392:-;21146:3;21120:51;;21139:5;21120:51;;;21151:7;21160:10;21120:51;;;;;;;:::i;:::-;;;;;;;;20927:251;;;;:::o;20306:::-;20525:3;20499:51;;20518:5;20499:51;;;20530:7;20539:10;20499:51;;;;;;;:::i;21711:341::-;22013:5;21965:80;;21999:12;21965:80;;21986:11;21965:80;;;22020:3;22025:7;22034:10;21965:80;;;;;;;;:::i;704:411:82:-;768:4;975:60;1000:7;1009:25;975:24;:60::i;:::-;:133;;;;-1:-1:-1;1052:56:82;1077:7;1086:21;1052:24;:56::i;:::-;1051:57;956:152;704:411;-1:-1:-1;;704:411:82:o;4223:638::-;4385:71;;;19818:66:564;19806:79;;4385:71:82;;;;19788:98:564;;;;4385:71:82;;;;;;;;;;19761:18:564;;;;4385:71:82;;;;;;;;;;;4408:34;4385:71;;;4664:20;;4316:4;;4385:71;4316:4;;;;;;4385:71;4316:4;;4664:20;4629:7;4622:5;4611:86;4600:97;;4724:16;4710:30;;4774:4;4768:11;4753:26;;4806:7;:29;;;;;4831:4;4817:10;:18;;4806:29;:48;;;;;4853:1;4839:11;:15;4806:48;4799:55;4223:638;-1:-1:-1;;;;;;;4223:638:82:o;3861:223:74:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;3861:223;-1:-1:-1;;;;3861:223:74:o;4948:499::-;5113:12;5170:5;5145:21;:30;;5137:81;;;;;;;20099:2:564;5137:81:74;;;20081:21:564;20138:2;20118:18;;;20111:30;20177:34;20157:18;;;20150:62;20248:8;20228:18;;;20221:36;20274:19;;5137:81:74;19897:402:564;5137:81:74;1465:19;;;;5228:60;;;;;;;20506:2:564;5228:60:74;;;20488:21:564;20545:2;20525:18;;;20518:30;20584:31;20564:18;;;20557:59;20633:18;;5228:60:74;20304:353:564;5228:60:74;5300:12;5314:23;5341:6;:11;;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;7707;7735:7;7731:566;;;-1:-1:-1;7765:10:74;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;;;;;;;;;;:::i;438:154:564:-;524:42;517:5;513:54;506:5;503:65;493:93;;582:1;579;572:12;493:93;438:154;:::o;597:347::-;648:8;658:6;712:3;705:4;697:6;693:17;689:27;679:55;;730:1;727;720:12;679:55;-1:-1:-1;753:20:564;;796:18;785:30;;782:50;;;828:1;825;818:12;782:50;865:4;857:6;853:17;841:29;;917:3;910:4;901:6;893;889:19;885:30;882:39;879:59;;;934:1;931;924:12;879:59;597:347;;;;;:::o;949:1038::-;1064:6;1072;1080;1088;1096;1104;1112;1165:3;1153:9;1144:7;1140:23;1136:33;1133:53;;;1182:1;1179;1172:12;1133:53;1221:9;1208:23;1240:31;1265:5;1240:31;:::i;:::-;1290:5;-1:-1:-1;1347:2:564;1332:18;;1319:32;1360:33;1319:32;1360:33;:::i;:::-;1412:7;-1:-1:-1;1471:2:564;1456:18;;1443:32;1484:33;1443:32;1484:33;:::i;:::-;1536:7;-1:-1:-1;1595:2:564;1580:18;;1567:32;1608:33;1567:32;1608:33;:::i;:::-;1660:7;-1:-1:-1;1714:3:564;1699:19;;1686:33;;-1:-1:-1;1770:3:564;1755:19;;1742:33;1798:18;1787:30;;1784:50;;;1830:1;1827;1820:12;1784:50;1869:58;1919:7;1910:6;1899:9;1895:22;1869:58;:::i;:::-;949:1038;;;;-1:-1:-1;949:1038:564;;-1:-1:-1;949:1038:564;;;;1843:84;;-1:-1:-1;;;949:1038:564:o;1992:163::-;2059:20;;2119:10;2108:22;;2098:33;;2088:61;;2145:1;2142;2135:12;2088:61;1992:163;;;:::o;2160:481::-;2238:6;2246;2254;2307:2;2295:9;2286:7;2282:23;2278:32;2275:52;;;2323:1;2320;2313:12;2275:52;2346:28;2364:9;2346:28;:::i;:::-;2336:38;;2425:2;2414:9;2410:18;2397:32;2452:18;2444:6;2441:30;2438:50;;;2484:1;2481;2474:12;2438:50;2523:58;2573:7;2564:6;2553:9;2549:22;2523:58;:::i;:::-;2160:481;;2600:8;;-1:-1:-1;2497:84:564;;-1:-1:-1;;;;2160:481:564:o;2646:754::-;2743:6;2751;2759;2767;2775;2828:3;2816:9;2807:7;2803:23;2799:33;2796:53;;;2845:1;2842;2835:12;2796:53;2884:9;2871:23;2903:31;2928:5;2903:31;:::i;:::-;2953:5;-1:-1:-1;3010:2:564;2995:18;;2982:32;3023:33;2982:32;3023:33;:::i;:::-;3075:7;-1:-1:-1;3129:2:564;3114:18;;3101:32;;-1:-1:-1;3184:2:564;3169:18;;3156:32;3211:18;3200:30;;3197:50;;;3243:1;3240;3233:12;3197:50;3282:58;3332:7;3323:6;3312:9;3308:22;3282:58;:::i;:::-;2646:754;;;;-1:-1:-1;2646:754:564;;-1:-1:-1;3359:8:564;;3256:84;2646:754;-1:-1:-1;;;2646:754:564:o;3405:685::-;3501:6;3509;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3642:9;3629:23;3661:31;3686:5;3661:31;:::i;:::-;3711:5;-1:-1:-1;3763:2:564;3748:18;;3735:32;;-1:-1:-1;3786:37:564;3819:2;3804:18;;3786:37;:::i;:::-;3776:47;;3874:2;3863:9;3859:18;3846:32;3901:18;3893:6;3890:30;3887:50;;;3933:1;3930;3923:12;4589:969;4703:6;4711;4719;4727;4735;4743;4751;4804:3;4792:9;4783:7;4779:23;4775:33;4772:53;;;4821:1;4818;4811:12;4772:53;4860:9;4847:23;4879:31;4904:5;4879:31;:::i;:::-;4929:5;-1:-1:-1;4986:2:564;4971:18;;4958:32;4999:33;4958:32;4999:33;:::i;:::-;5051:7;-1:-1:-1;5110:2:564;5095:18;;5082:32;5123:33;5082:32;5123:33;:::i;:::-;5175:7;-1:-1:-1;5229:2:564;5214:18;;5201:32;;-1:-1:-1;5252:38:564;5285:3;5270:19;;5252:38;:::i;:::-;5242:48;;5341:3;5330:9;5326:19;5313:33;5369:18;5361:6;5358:30;5355:50;;;5401:1;5398;5391:12;5563:258;5635:1;5645:113;5659:6;5656:1;5653:13;5645:113;;;5735:11;;;5729:18;5716:11;;;5709:39;5681:2;5674:10;5645:113;;;5776:6;5773:1;5770:13;5767:48;;;-1:-1:-1;;5811:1:564;5793:16;;5786:27;5563:258::o;5826:317::-;5868:3;5906:5;5900:12;5933:6;5928:3;5921:19;5949:63;6005:6;5998:4;5993:3;5989:14;5982:4;5975:5;5971:16;5949:63;:::i;:::-;6057:2;6045:15;6062:66;6041:88;6032:98;;;;6132:4;6028:109;;5826:317;-1:-1:-1;;5826:317:564:o;6148:220::-;6297:2;6286:9;6279:21;6260:4;6317:45;6358:2;6347:9;6343:18;6335:6;6317:45;:::i;6829:827::-;6934:6;6942;6950;6958;6966;6974;7027:3;7015:9;7006:7;7002:23;6998:33;6995:53;;;7044:1;7041;7034:12;6995:53;7083:9;7070:23;7102:31;7127:5;7102:31;:::i;:::-;7152:5;-1:-1:-1;7209:2:564;7194:18;;7181:32;7222:33;7181:32;7222:33;:::i;:::-;7274:7;-1:-1:-1;7328:2:564;7313:18;;7300:32;;-1:-1:-1;7351:37:564;7384:2;7369:18;;7351:37;:::i;:::-;7341:47;;7439:3;7428:9;7424:19;7411:33;7467:18;7459:6;7456:30;7453:50;;;7499:1;7496;7489:12;7453:50;7538:58;7588:7;7579:6;7568:9;7564:22;7538:58;:::i;:::-;6829:827;;;;-1:-1:-1;6829:827:564;;-1:-1:-1;6829:827:564;;7615:8;;6829:827;-1:-1:-1;;;6829:827:564:o;7661:388::-;7729:6;7737;7790:2;7778:9;7769:7;7765:23;7761:32;7758:52;;;7806:1;7803;7796:12;7758:52;7845:9;7832:23;7864:31;7889:5;7864:31;:::i;:::-;7914:5;-1:-1:-1;7971:2:564;7956:18;;7943:32;7984:33;7943:32;7984:33;:::i;:::-;8036:7;8026:17;;;7661:388;;;;;:::o;8236:272::-;8320:6;8373:2;8361:9;8352:7;8348:23;8344:32;8341:52;;;8389:1;8386;8379:12;8341:52;8428:9;8415:23;8447:31;8472:5;8447:31;:::i;8513:616::-;8600:6;8608;8616;8624;8677:2;8665:9;8656:7;8652:23;8648:32;8645:52;;;8693:1;8690;8683:12;8645:52;8732:9;8719:23;8751:31;8776:5;8751:31;:::i;:::-;8801:5;-1:-1:-1;8825:37:564;8858:2;8843:18;;8825:37;:::i;:::-;8815:47;;8913:2;8902:9;8898:18;8885:32;8940:18;8932:6;8929:30;8926:50;;;8972:1;8969;8962:12;8926:50;9011:58;9061:7;9052:6;9041:9;9037:22;9011:58;:::i;:::-;8513:616;;;;-1:-1:-1;9088:8:564;-1:-1:-1;;;;8513:616:564:o;9134:251::-;9204:6;9257:2;9245:9;9236:7;9232:23;9228:32;9225:52;;;9273:1;9270;9263:12;9225:52;9305:9;9299:16;9324:31;9349:5;9324:31;:::i;11000:184::-;11052:77;11049:1;11042:88;11149:4;11146:1;11139:15;11173:4;11170:1;11163:15;11189:125;11229:4;11257:1;11254;11251:8;11248:34;;;11262:18;;:::i;:::-;-1:-1:-1;11299:9:564;;11189:125::o;14854:512::-;15048:4;15077:42;15158:2;15150:6;15146:15;15135:9;15128:34;15210:2;15202:6;15198:15;15193:2;15182:9;15178:18;15171:43;;15250:6;15245:2;15234:9;15230:18;15223:34;15293:3;15288:2;15277:9;15273:18;15266:31;15314:46;15355:3;15344:9;15340:19;15332:6;15314:46;:::i;:::-;15306:54;14854:512;-1:-1:-1;;;;;;14854:512:564:o;15371:424::-;15584:42;15576:6;15572:55;15561:9;15554:74;15664:2;15659;15648:9;15644:18;15637:30;15535:4;15684:45;15725:2;15714:9;15710:18;15702:6;15684:45;:::i;:::-;15676:53;;15777:10;15769:6;15765:23;15760:2;15749:9;15745:18;15738:51;15371:424;;;;;;:::o;16202:128::-;16242:3;16273:1;16269:6;16266:1;16263:13;16260:39;;;16279:18;;:::i;:::-;-1:-1:-1;16315:9:564;;16202:128::o;16335:674::-;16585:4;16614:42;16695:2;16687:6;16683:15;16672:9;16665:34;16747:2;16739:6;16735:15;16730:2;16719:9;16715:18;16708:43;16799:2;16791:6;16787:15;16782:2;16771:9;16767:18;16760:43;16851:2;16843:6;16839:15;16834:2;16823:9;16819:18;16812:43;;16892:6;16886:3;16875:9;16871:19;16864:35;16936:3;16930;16919:9;16915:19;16908:32;16957:46;16998:3;16987:9;16983:19;16975:6;16957:46;:::i;:::-;16949:54;16335:674;-1:-1:-1;;;;;;;;16335:674:564:o;17014:409::-;17229:42;17221:6;17217:55;17206:9;17199:74;17309:6;17304:2;17293:9;17289:18;17282:34;17352:2;17347;17336:9;17332:18;17325:30;17180:4;17372:45;17413:2;17402:9;17398:18;17390:6;17372:45;:::i;:::-;17364:53;17014:409;-1:-1:-1;;;;;17014:409:564:o;18243:277::-;18310:6;18363:2;18351:9;18342:7;18338:23;18334:32;18331:52;;;18379:1;18376;18369:12;18331:52;18411:9;18405:16;18464:5;18457:13;18450:21;18443:5;18440:32;18430:60;;18486:1;18483;18476:12;18936:409;19013:6;19021;19074:2;19062:9;19053:7;19049:23;19045:32;19042:52;;;19090:1;19087;19080:12;19042:52;19122:9;19116:16;19141:31;19166:5;19141:31;:::i;:::-;19241:2;19226:18;;19220:25;19191:5;;-1:-1:-1;19289:4:564;19276:18;;19264:31;;19254:59;;19309:1;19306;19299:12;19350:289;19525:6;19514:9;19507:25;19568:2;19563;19552:9;19548:18;19541:30;19488:4;19588:45;19629:2;19618:9;19614:18;19606:6;19588:45;:::i;20662:274::-;20791:3;20829:6;20823:13;20845:53;20891:6;20886:3;20879:4;20871:6;20867:17;20845:53;:::i;:::-;20914:16;;;;;20662:274;-1:-1:-1;;20662:274:564:o","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","initialize(address)":"c4d66de8","l1TokenBridge()":"36c717c1","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb","version()":"54fd4d50","withdraw(address,uint256,uint32,bytes)":"32b7006d","withdrawTo(address,address,uint256,uint32,bytes)":"a3a79548"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"DepositFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeInitiated\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"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\":\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"WithdrawalInitiated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"_otherBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1TokenBridge\",\"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\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:predeploy\":\"0x4200000000000000000000000000000000000010\",\"custom:proxied\":\"true\",\"events\":{\"DepositFinalized(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 deposit is finalized.\",\"params\":{\"amount\":\"Amount of the ERC20 deposited.\",\"extraData\":\"Extra data attached to the deposit.\",\"from\":\"Address of the depositor.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L2.\"}},\"WithdrawalInitiated(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever a withdrawal from L2 to L1 is initiated.\",\"params\":{\"amount\":\"Amount of the ERC20 withdrawn.\",\"extraData\":\"Extra data attached to the withdrawal.\",\"from\":\"Address of the withdrawer.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L1.\"}}},\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"initialize(address)\":{\"params\":{\"_otherBridge\":\"Contract for the corresponding bridge on the other chain.\"}},\"l1TokenBridge()\":{\"custom:legacy\":\"@notice Retrieves the access of the corresponding L1 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L1 bridge contract.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"version()\":{\"custom:semver\":\"1.11.1-beta.3\"},\"withdraw(address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20` function to bridge native L2 tokens to L1. Subject to be deprecated in the future.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\"}},\"withdrawTo(address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1 to a target account on L1. Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will be locked in the L1StandardBridge. ETH may be recoverable if the call can be successfully replayed by increasing the amount of gas supplied to the call. If the call will fail for any amount of gas, then the ETH will be locked permanently. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20To` function to bridge native L2 tokens to L1. Subject to be deprecated in the future.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\",\"_to\":\"Recipient account on L1.\"}}},\"title\":\"L2StandardBridge\",\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case.\"},\"constructor\":{\"notice\":\"Constructs the L2StandardBridge contract.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"initialize(address)\":{\"notice\":\"Initializer.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op.\"},\"version()\":{\"notice\":\"Semantic version.\"}},\"notice\":\"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and L2. In the case that an ERC20 token is native to L2, it will be escrowed within this contract. If the ERC20 token is native to L1, it will be burnt. NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples of some token types that may not be properly supported by this contract include, but are not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/L2StandardBridge.sol\":\"L2StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L1/interfaces/IResourceMetering.sol\":{\"keccak256\":\"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990\",\"dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz\"]},\"src/L2/L2StandardBridge.sol\":{\"keccak256\":\"0x8b85b97bb92b4d8280bbcc8d42d99f5135e6953023025d95cd01b2715b2c1900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d9d784c6b18e6c3e12e16d8db0db102fae640b841ad495c6817e0b7b072b1fc\",\"dweb:/ipfs/QmNWk71zuG95VeZ7VF9YGNPcHj6tBtnD8agW3QBcw99xu6\"]},\"src/L2/interfaces/IL1Block.sol\":{\"keccak256\":\"0x5a99c80d45015bf40f2c8e84dca5019776550e1d01af43c23423179ffedf71f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dac59129bffcc99571692c79965fcf37b29237bb77a6d2309b8aa8dbbc0dfb9b\",\"dweb:/ipfs/QmQKwe8YefgGzsFyCtAA8Hos9uYM4KTGoDKhZbCqcg5xxE\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356\",\"dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0xf9256d38db06c7a486f3d9d18eb3d1654e3c130e7f935df063dabe5975db0f1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0283ac61da239064e4b5b0d3f73539178341ae96ab98b9cde4f9e5af9f6e27f\",\"dweb:/ipfs/QmaQmfnmWhzmhwbcXMeoXeyND2FAfuaFfoc3Ry3b34uveM\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753\",\"dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe\",\"dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf\"]},\"src/universal/interfaces/ICrossDomainMessenger.sol\":{\"keccak256\":\"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818\",\"dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"DepositFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"WithdrawalInitiated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeBridgeERC20"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeBridgeETH"},{"inputs":[{"internalType":"contract StandardBridge","name":"_otherBridge","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1TokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"withdrawTo"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"custom:legacy":"@notice Retrieves the access of the corresponding L1 bridge contract.","returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"version()":{"custom:semver":"1.11.1-beta.3"},"withdraw(address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20` function to bridge native L2 tokens to L1. Subject to be deprecated in the future.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1 to a target account on L1. Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will be locked in the L1StandardBridge. ETH may be recoverable if the call can be successfully replayed by increasing the amount of gas supplied to the call. If the call will fail for any amount of gas, then the ETH will be locked permanently. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20To` function to bridge native L2 tokens to L1. Subject to be deprecated in the future.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."},"version()":{"notice":"Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L2/L2StandardBridge.sol":"L2StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L1/interfaces/IResourceMetering.sol":{"keccak256":"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c","urls":["bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990","dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz"],"license":"MIT"},"src/L2/L2StandardBridge.sol":{"keccak256":"0x8b85b97bb92b4d8280bbcc8d42d99f5135e6953023025d95cd01b2715b2c1900","urls":["bzz-raw://0d9d784c6b18e6c3e12e16d8db0db102fae640b841ad495c6817e0b7b072b1fc","dweb:/ipfs/QmNWk71zuG95VeZ7VF9YGNPcHj6tBtnD8agW3QBcw99xu6"],"license":"MIT"},"src/L2/interfaces/IL1Block.sol":{"keccak256":"0x5a99c80d45015bf40f2c8e84dca5019776550e1d01af43c23423179ffedf71f7","urls":["bzz-raw://dac59129bffcc99571692c79965fcf37b29237bb77a6d2309b8aa8dbbc0dfb9b","dweb:/ipfs/QmQKwe8YefgGzsFyCtAA8Hos9uYM4KTGoDKhZbCqcg5xxE"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b","urls":["bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356","dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0xf9256d38db06c7a486f3d9d18eb3d1654e3c130e7f935df063dabe5975db0f1b","urls":["bzz-raw://b0283ac61da239064e4b5b0d3f73539178341ae96ab98b9cde4f9e5af9f6e27f","dweb:/ipfs/QmaQmfnmWhzmhwbcXMeoXeyND2FAfuaFfoc3Ry3b34uveM"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3","urls":["bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753","dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537","urls":["bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe","dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf"],"license":"MIT"},"src/universal/interfaces/ICrossDomainMessenger.sol":{"keccak256":"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4","urls":["bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818","dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":44324,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":44327,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":163139,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":163142,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":163149,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":163153,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(ICrossDomainMessenger)164564"},{"astId":163157,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)163919"},{"astId":163162,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(ICrossDomainMessenger)164564":{"encoding":"inplace","label":"contract ICrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)163919":{"encoding":"inplace","label":"contract StandardBridge","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."},"version()":{"notice":"Semantic version."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and L2. In the case that an ERC20 token is native to L2, it will be escrowed within this contract. If the ERC20 token is native to L1, it will be burnt. NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples of some token types that may not be properly supported by this contract include, but are not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"version()":{},"withdraw(address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"events":{"DepositFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 deposited.","extraData":"Extra data attached to the deposit.","from":"Address of the depositor.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L2."}},"WithdrawalInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 withdrawn.","extraData":"Extra data attached to the withdrawal.","from":"Address of the withdrawer.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L1."}}},"title":"L2StandardBridge"},"ast":{"absolutePath":"src/L2/L2StandardBridge.sol","id":113879,"exportedSymbols":{"ICrossDomainMessenger":[164564],"IL1Block":[115040],"ISemver":[165319],"L2StandardBridge":[113878],"OptimismMintableERC20":[161800],"Predeploys":[154011],"StandardBridge":[163919]},"nodeType":"SourceUnit","src":"32:10056:207","nodes":[{"id":113462,"nodeType":"PragmaDirective","src":"32:23:207","nodes":[],"literals":["solidity","0.8",".15"]},{"id":113464,"nodeType":"ImportDirective","src":"70:66:207","nodes":[],"absolutePath":"src/universal/StandardBridge.sol","file":"src/universal/StandardBridge.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":163920,"symbolAliases":[{"foreign":{"id":113463,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163919,"src":"79:14:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113466,"nodeType":"ImportDirective","src":"137:80:207","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":161801,"symbolAliases":[{"foreign":{"id":113465,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161800,"src":"146:21:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113468,"nodeType":"ImportDirective","src":"232:58:207","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":154012,"symbolAliases":[{"foreign":{"id":113467,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"241:10:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113470,"nodeType":"ImportDirective","src":"306:63:207","nodes":[],"absolutePath":"src/universal/interfaces/ISemver.sol","file":"src/universal/interfaces/ISemver.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":165320,"symbolAliases":[{"foreign":{"id":113469,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165319,"src":"315:7:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113472,"nodeType":"ImportDirective","src":"370:91:207","nodes":[],"absolutePath":"src/universal/interfaces/ICrossDomainMessenger.sol","file":"src/universal/interfaces/ICrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":164565,"symbolAliases":[{"foreign":{"id":113471,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164564,"src":"379:21:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113474,"nodeType":"ImportDirective","src":"462:58:207","nodes":[],"absolutePath":"src/L2/interfaces/IL1Block.sol","file":"src/L2/interfaces/IL1Block.sol","nameLocation":"-1:-1:-1","scope":113879,"sourceUnit":115041,"symbolAliases":[{"foreign":{"id":113473,"name":"IL1Block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115040,"src":"471:8:207","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":113878,"nodeType":"ContractDefinition","src":"1214:8873:207","nodes":[{"id":113494,"nodeType":"EventDefinition","src":"1719:197:207","nodes":[],"anonymous":false,"documentation":{"id":113480,"nodeType":"StructuredDocumentation","src":"1273:441:207","text":"@custom:legacy\n @notice Emitted whenever a withdrawal from L2 to L1 is initiated.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the withdrawer.\n @param to Address of the recipient on L1.\n @param amount Amount of the ERC20 withdrawn.\n @param extraData Extra data attached to the withdrawal."},"eventSelector":"73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e","name":"WithdrawalInitiated","nameLocation":"1725:19:207","parameters":{"id":113493,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113482,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"1770:7:207","nodeType":"VariableDeclaration","scope":113494,"src":"1754:23:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113481,"name":"address","nodeType":"ElementaryTypeName","src":"1754:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113484,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"1803:7:207","nodeType":"VariableDeclaration","scope":113494,"src":"1787:23:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113483,"name":"address","nodeType":"ElementaryTypeName","src":"1787:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113486,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1836:4:207","nodeType":"VariableDeclaration","scope":113494,"src":"1820:20:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113485,"name":"address","nodeType":"ElementaryTypeName","src":"1820:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113488,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"1858:2:207","nodeType":"VariableDeclaration","scope":113494,"src":"1850:10:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113487,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113490,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1878:6:207","nodeType":"VariableDeclaration","scope":113494,"src":"1870:14:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113489,"name":"uint256","nodeType":"ElementaryTypeName","src":"1870:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113492,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1900:9:207","nodeType":"VariableDeclaration","scope":113494,"src":"1894:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113491,"name":"bytes","nodeType":"ElementaryTypeName","src":"1894:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1744:171:207"}},{"id":113509,"nodeType":"EventDefinition","src":"2354:194:207","nodes":[],"anonymous":false,"documentation":{"id":113495,"nodeType":"StructuredDocumentation","src":"1922:427:207","text":"@custom:legacy\n @notice Emitted whenever an ERC20 deposit is finalized.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the depositor.\n @param to Address of the recipient on L2.\n @param amount Amount of the ERC20 deposited.\n @param extraData Extra data attached to the deposit."},"eventSelector":"b0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89","name":"DepositFinalized","nameLocation":"2360:16:207","parameters":{"id":113508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113497,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2402:7:207","nodeType":"VariableDeclaration","scope":113509,"src":"2386:23:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113496,"name":"address","nodeType":"ElementaryTypeName","src":"2386:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113499,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2435:7:207","nodeType":"VariableDeclaration","scope":113509,"src":"2419:23:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113498,"name":"address","nodeType":"ElementaryTypeName","src":"2419:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113501,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2468:4:207","nodeType":"VariableDeclaration","scope":113509,"src":"2452:20:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113500,"name":"address","nodeType":"ElementaryTypeName","src":"2452:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113503,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2490:2:207","nodeType":"VariableDeclaration","scope":113509,"src":"2482:10:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113502,"name":"address","nodeType":"ElementaryTypeName","src":"2482:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113505,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2510:6:207","nodeType":"VariableDeclaration","scope":113509,"src":"2502:14:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113504,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113507,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2532:9:207","nodeType":"VariableDeclaration","scope":113509,"src":"2526:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113506,"name":"bytes","nodeType":"ElementaryTypeName","src":"2526:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2376:171:207"}},{"id":113518,"nodeType":"FunctionDefinition","src":"2625:102:207","nodes":[],"body":{"id":113517,"nodeType":"Block","src":"2688:39:207","nodes":[],"statements":[{"expression":{"hexValue":"312e31312e312d626574612e33","id":113515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2705:15:207","typeDescriptions":{"typeIdentifier":"t_stringliteral_f08a41f76c22a985628c1047fdbf16828d5eaa0efd8d6031d5d58b34b88d1d17","typeString":"literal_string \"1.11.1-beta.3\""},"value":"1.11.1-beta.3"},"functionReturnParameters":113514,"id":113516,"nodeType":"Return","src":"2698:22:207"}]},"baseFunctions":[165318],"documentation":{"id":113510,"nodeType":"StructuredDocumentation","src":"2554:66:207","text":"@notice Semantic version.\n @custom:semver 1.11.1-beta.3"},"functionSelector":"54fd4d50","implemented":true,"kind":"function","modifiers":[],"name":"version","nameLocation":"2634:7:207","parameters":{"id":113511,"nodeType":"ParameterList","parameters":[],"src":"2641:2:207"},"returnParameters":{"id":113514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113513,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":113518,"src":"2673:13:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":113512,"name":"string","nodeType":"ElementaryTypeName","src":"2673:6:207","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2672:15:207"},"scope":113878,"stateMutability":"pure","virtual":true,"visibility":"public"},{"id":113537,"nodeType":"FunctionDefinition","src":"2791:113:207","nodes":[],"body":{"id":113536,"nodeType":"Block","src":"2822:82:207","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":113530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2890:1:207","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":113529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2882:7:207","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113528,"name":"address","nodeType":"ElementaryTypeName","src":"2882:7:207","typeDescriptions":{}}},"id":113531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2882:10:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":113527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2874:8:207","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":113526,"name":"address","nodeType":"ElementaryTypeName","src":"2874:8:207","stateMutability":"payable","typeDescriptions":{}}},"id":113532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2874:19:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":113525,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163919,"src":"2859:14:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StandardBridge_$163919_$","typeString":"type(contract StandardBridge)"}},"id":113533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:35:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}],"id":113524,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113555,"src":"2832:10:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_StandardBridge_$163919_$returns$__$","typeString":"function (contract StandardBridge)"}},"id":113534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_otherBridge"],"nodeType":"FunctionCall","src":"2832:65:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113535,"nodeType":"ExpressionStatement","src":"2832:65:207"}]},"documentation":{"id":113519,"nodeType":"StructuredDocumentation","src":"2733:53:207","text":"@notice Constructs the L2StandardBridge contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":113522,"kind":"baseConstructorSpecifier","modifierName":{"id":113521,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":163919,"src":"2805:14:207"},"nodeType":"ModifierInvocation","src":"2805:16:207"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":113520,"nodeType":"ParameterList","parameters":[],"src":"2802:2:207"},"returnParameters":{"id":113523,"nodeType":"ParameterList","parameters":[],"src":"2822:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":113555,"nodeType":"FunctionDefinition","src":"3025:243:207","nodes":[],"body":{"id":113554,"nodeType":"Block","src":"3093:175:207","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":113548,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"3173:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":153512,"src":"3173:36:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":113547,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":164564,"src":"3151:21:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICrossDomainMessenger_$164564_$","typeString":"type(contract ICrossDomainMessenger)"}},"id":113550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3151:59:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$164564","typeString":"contract ICrossDomainMessenger"}},{"id":113551,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113541,"src":"3238:12:207","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$164564","typeString":"contract ICrossDomainMessenger"},{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}],"id":113546,"name":"__StandardBridge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163275,"src":"3103:21:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_ICrossDomainMessenger_$164564_$_t_contract$_StandardBridge_$163919_$returns$__$","typeString":"function (contract ICrossDomainMessenger,contract StandardBridge)"}},"id":113552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_messenger","_otherBridge"],"nodeType":"FunctionCall","src":"3103:158:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113553,"nodeType":"ExpressionStatement","src":"3103:158:207"}]},"documentation":{"id":113538,"nodeType":"StructuredDocumentation","src":"2910:110:207","text":"@notice Initializer.\n @param _otherBridge Contract for the corresponding bridge on the other chain."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":113544,"kind":"modifierInvocation","modifierName":{"id":113543,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":44388,"src":"3081:11:207"},"nodeType":"ModifierInvocation","src":"3081:11:207"}],"name":"initialize","nameLocation":"3034:10:207","parameters":{"id":113542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113541,"mutability":"mutable","name":"_otherBridge","nameLocation":"3060:12:207","nodeType":"VariableDeclaration","scope":113555,"src":"3045:27:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"},"typeName":{"id":113540,"nodeType":"UserDefinedTypeName","pathNode":{"id":113539,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":163919,"src":"3045:14:207"},"referencedDeclaration":163919,"src":"3045:14:207","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"3044:29:207"},"returnParameters":{"id":113545,"nodeType":"ParameterList","parameters":[],"src":"3093:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":113579,"nodeType":"FunctionDefinition","src":"3351:204:207","nodes":[],"body":{"id":113578,"nodeType":"Block","src":"3395:160:207","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":113563,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"3438:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":153575,"src":"3438:27:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113565,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3467:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3467:10:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113567,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3479:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3479:10:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113569,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3491:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3491:9:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113571,"name":"RECEIVE_DEFAULT_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163136,"src":"3502:25:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"","id":113574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3535:2:207","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":113573,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3529:5:207","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":113572,"name":"bytes","nodeType":"ElementaryTypeName","src":"3529:5:207","typeDescriptions":{}}},"id":113575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3529:9:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113562,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113729,"src":"3405:19:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":113576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3405:143:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113577,"nodeType":"ExpressionStatement","src":"3405:143:207"}]},"baseFunctions":[163279],"documentation":{"id":113556,"nodeType":"StructuredDocumentation","src":"3274:72:207","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge."},"implemented":true,"kind":"receive","modifiers":[{"id":113560,"kind":"modifierInvocation","modifierName":{"id":113559,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":163229,"src":"3387:7:207"},"nodeType":"ModifierInvocation","src":"3387:7:207"}],"name":"","nameLocation":"-1:-1:-1","overrides":{"id":113558,"nodeType":"OverrideSpecifier","overrides":[],"src":"3378:8:207"},"parameters":{"id":113557,"nodeType":"ParameterList","parameters":[],"src":"3358:2:207"},"returnParameters":{"id":113561,"nodeType":"ParameterList","parameters":[],"src":"3395:0:207"},"scope":113878,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":113600,"nodeType":"FunctionDefinition","src":"3596:185:207","nodes":[],"body":{"id":113599,"nodeType":"Block","src":"3686:95:207","nodes":[],"statements":[{"expression":{"id":113597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":113588,"name":"addr_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113584,"src":"3697:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113589,"name":"decimals_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113586,"src":"3704:9:207","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":113590,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3696:18:207","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint8_$","typeString":"tuple(address,uint8)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"expression":{"id":113592,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"3726:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L1_BLOCK_ATTRIBUTES","nodeType":"MemberAccess","referencedDeclaration":153539,"src":"3726:30:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":113591,"name":"IL1Block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115040,"src":"3717:8:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IL1Block_$115040_$","typeString":"type(contract IL1Block)"}},"id":113594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3717:40:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IL1Block_$115040","typeString":"contract IL1Block"}},"id":113595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gasPayingToken","nodeType":"MemberAccess","referencedDeclaration":114953,"src":"3717:55:207","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$_t_uint8_$","typeString":"function () view external returns (address,uint8)"}},"id":113596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3717:57:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint8_$","typeString":"tuple(address,uint8)"}},"src":"3696:78:207","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113598,"nodeType":"ExpressionStatement","src":"3696:78:207"}]},"baseFunctions":[163287],"documentation":{"id":113580,"nodeType":"StructuredDocumentation","src":"3561:30:207","text":"@inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"gasPayingToken","nameLocation":"3605:14:207","overrides":{"id":113582,"nodeType":"OverrideSpecifier","overrides":[],"src":"3636:8:207"},"parameters":{"id":113581,"nodeType":"ParameterList","parameters":[],"src":"3619:2:207"},"returnParameters":{"id":113587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113584,"mutability":"mutable","name":"addr_","nameLocation":"3662:5:207","nodeType":"VariableDeclaration","scope":113600,"src":"3654:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113583,"name":"address","nodeType":"ElementaryTypeName","src":"3654:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113586,"mutability":"mutable","name":"decimals_","nameLocation":"3675:9:207","nodeType":"VariableDeclaration","scope":113600,"src":"3669:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":113585,"name":"uint8","nodeType":"ElementaryTypeName","src":"3669:5:207","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"3653:32:207"},"scope":113878,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":113634,"nodeType":"FunctionDefinition","src":"4356:416:207","nodes":[],"body":{"id":113633,"nodeType":"Block","src":"4564:208:207","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":113618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":113615,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163304,"src":"4582:16:207","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":113616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4582:18:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":113617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4604:5:207","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4582:27:207","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c325374616e646172644272696467653a206e6f7420737570706f72746564207769746820637573746f6d2067617320746f6b656e","id":113619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4611:55:207","typeDescriptions":{"typeIdentifier":"t_stringliteral_1178bf9b0238c651a668db81530649d74c40b32f74b0390165bdde2cfa9a7d90","typeString":"literal_string \"L2StandardBridge: not supported with custom gas token\""},"value":"L2StandardBridge: not supported with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1178bf9b0238c651a668db81530649d74c40b32f74b0390165bdde2cfa9a7d90","typeString":"literal_string \"L2StandardBridge: not supported with custom gas token\""}],"id":113614,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4574:7:207","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":113620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4574:93:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113621,"nodeType":"ExpressionStatement","src":"4574:93:207"},{"expression":{"arguments":[{"id":113623,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113603,"src":"4697:8:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4707:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4707:10:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113626,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4719:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4719:10:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113628,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113605,"src":"4731:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113629,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113607,"src":"4740:12:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":113630,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113609,"src":"4754:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":113622,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113729,"src":"4677:19:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":113631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4677:88:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113632,"nodeType":"ExpressionStatement","src":"4677:88:207"}]},"documentation":{"id":113601,"nodeType":"StructuredDocumentation","src":"3787:564:207","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1.\n This function only works with OptimismMintableERC20 tokens or ether. Use the\n `bridgeERC20` function to bridge native L2 tokens to L1.\n Subject to be deprecated in the future.\n @param _l2Token Address of the L2 token to withdraw.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"functionSelector":"32b7006d","implemented":true,"kind":"function","modifiers":[{"id":113612,"kind":"modifierInvocation","modifierName":{"id":113611,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":163229,"src":"4552:7:207"},"nodeType":"ModifierInvocation","src":"4552:7:207"}],"name":"withdraw","nameLocation":"4365:8:207","parameters":{"id":113610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113603,"mutability":"mutable","name":"_l2Token","nameLocation":"4391:8:207","nodeType":"VariableDeclaration","scope":113634,"src":"4383:16:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113602,"name":"address","nodeType":"ElementaryTypeName","src":"4383:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113605,"mutability":"mutable","name":"_amount","nameLocation":"4417:7:207","nodeType":"VariableDeclaration","scope":113634,"src":"4409:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113604,"name":"uint256","nodeType":"ElementaryTypeName","src":"4409:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113607,"mutability":"mutable","name":"_minGasLimit","nameLocation":"4441:12:207","nodeType":"VariableDeclaration","scope":113634,"src":"4434:19:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":113606,"name":"uint32","nodeType":"ElementaryTypeName","src":"4434:6:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":113609,"mutability":"mutable","name":"_extraData","nameLocation":"4478:10:207","nodeType":"VariableDeclaration","scope":113634,"src":"4463:25:207","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":113608,"name":"bytes","nodeType":"ElementaryTypeName","src":"4463:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4373:121:207"},"returnParameters":{"id":113613,"nodeType":"ParameterList","parameters":[],"src":"4564:0:207"},"scope":113878,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":113667,"nodeType":"FunctionDefinition","src":"5815:416:207","nodes":[],"body":{"id":113666,"nodeType":"Block","src":"6030:201:207","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":113652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":113649,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163304,"src":"6048:16:207","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":113650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6048:18:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":113651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6070:5:207","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"6048:27:207","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c325374616e646172644272696467653a206e6f7420737570706f72746564207769746820637573746f6d2067617320746f6b656e","id":113653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6077:55:207","typeDescriptions":{"typeIdentifier":"t_stringliteral_1178bf9b0238c651a668db81530649d74c40b32f74b0390165bdde2cfa9a7d90","typeString":"literal_string \"L2StandardBridge: not supported with custom gas token\""},"value":"L2StandardBridge: not supported with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1178bf9b0238c651a668db81530649d74c40b32f74b0390165bdde2cfa9a7d90","typeString":"literal_string \"L2StandardBridge: not supported with custom gas token\""}],"id":113648,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6040:7:207","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":113654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6040:93:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113655,"nodeType":"ExpressionStatement","src":"6040:93:207"},{"expression":{"arguments":[{"id":113657,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113637,"src":"6163:8:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6173:3:207","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":113659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6173:10:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113660,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113639,"src":"6185:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113661,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113641,"src":"6190:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113662,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113643,"src":"6199:12:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":113663,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113645,"src":"6213:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":113656,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113729,"src":"6143:19:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":113664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6143:81:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113665,"nodeType":"ExpressionStatement","src":"6143:81:207"}]},"documentation":{"id":113635,"nodeType":"StructuredDocumentation","src":"4778:1032:207","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1 to a target account on L1.\n Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will\n be locked in the L1StandardBridge. ETH may be recoverable if the call can be\n successfully replayed by increasing the amount of gas supplied to the call. If the\n call will fail for any amount of gas, then the ETH will be locked permanently.\n This function only works with OptimismMintableERC20 tokens or ether. Use the\n `bridgeERC20To` function to bridge native L2 tokens to L1.\n Subject to be deprecated in the future.\n @param _l2Token Address of the L2 token to withdraw.\n @param _to Recipient account on L1.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"functionSelector":"a3a79548","implemented":true,"kind":"function","modifiers":[],"name":"withdrawTo","nameLocation":"5824:10:207","parameters":{"id":113646,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113637,"mutability":"mutable","name":"_l2Token","nameLocation":"5852:8:207","nodeType":"VariableDeclaration","scope":113667,"src":"5844:16:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113636,"name":"address","nodeType":"ElementaryTypeName","src":"5844:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113639,"mutability":"mutable","name":"_to","nameLocation":"5878:3:207","nodeType":"VariableDeclaration","scope":113667,"src":"5870:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113638,"name":"address","nodeType":"ElementaryTypeName","src":"5870:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113641,"mutability":"mutable","name":"_amount","nameLocation":"5899:7:207","nodeType":"VariableDeclaration","scope":113667,"src":"5891:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113640,"name":"uint256","nodeType":"ElementaryTypeName","src":"5891:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113643,"mutability":"mutable","name":"_minGasLimit","nameLocation":"5923:12:207","nodeType":"VariableDeclaration","scope":113667,"src":"5916:19:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":113642,"name":"uint32","nodeType":"ElementaryTypeName","src":"5916:6:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":113645,"mutability":"mutable","name":"_extraData","nameLocation":"5960:10:207","nodeType":"VariableDeclaration","scope":113667,"src":"5945:25:207","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":113644,"name":"bytes","nodeType":"ElementaryTypeName","src":"5945:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5834:142:207"},"returnParameters":{"id":113647,"nodeType":"ParameterList","parameters":[],"src":"6030:0:207"},"scope":113878,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":113679,"nodeType":"FunctionDefinition","src":"6403:101:207","nodes":[],"body":{"id":113678,"nodeType":"Block","src":"6460:44:207","nodes":[],"statements":[{"expression":{"arguments":[{"id":113675,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163157,"src":"6485:11:207","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$163919","typeString":"contract StandardBridge"}],"id":113674,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6477:7:207","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113673,"name":"address","nodeType":"ElementaryTypeName","src":"6477:7:207","typeDescriptions":{}}},"id":113676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6477:20:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":113672,"id":113677,"nodeType":"Return","src":"6470:27:207"}]},"documentation":{"id":113668,"nodeType":"StructuredDocumentation","src":"6237:161:207","text":"@custom:legacy\n @notice Retrieves the access of the corresponding L1 bridge contract.\n @return Address of the corresponding L1 bridge contract."},"functionSelector":"36c717c1","implemented":true,"kind":"function","modifiers":[],"name":"l1TokenBridge","nameLocation":"6412:13:207","parameters":{"id":113669,"nodeType":"ParameterList","parameters":[],"src":"6425:2:207"},"returnParameters":{"id":113672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":113679,"src":"6451:7:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113670,"name":"address","nodeType":"ElementaryTypeName","src":"6451:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6450:9:207"},"scope":113878,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":113729,"nodeType":"FunctionDefinition","src":"7011:554:207","nodes":[],"body":{"id":113728,"nodeType":"Block","src":"7224:341:207","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":113698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":113695,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113682,"src":"7238:8:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":113696,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"7250:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":153575,"src":"7250:27:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7238:39:207","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":113726,"nodeType":"Block","src":"7375:184:207","statements":[{"assignments":[113709],"declarations":[{"constant":false,"id":113709,"mutability":"mutable","name":"l1Token","nameLocation":"7397:7:207","nodeType":"VariableDeclaration","scope":113726,"src":"7389:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113708,"name":"address","nodeType":"ElementaryTypeName","src":"7389:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":113715,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":113711,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113682,"src":"7429:8:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":113710,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161800,"src":"7407:21:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$161800_$","typeString":"type(contract OptimismMintableERC20)"}},"id":113712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7407:31:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}},"id":113713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":161772,"src":"7407:39:207","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":113714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7407:41:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7389:59:207"},{"expression":{"arguments":[{"id":113717,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113682,"src":"7483:8:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113718,"name":"l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113709,"src":"7493:7:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113719,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113684,"src":"7502:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113720,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113686,"src":"7509:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113721,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113688,"src":"7514:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113722,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113690,"src":"7523:12:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":113723,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113692,"src":"7537:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113716,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163761,"src":"7462:20:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":113724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7462:86:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113725,"nodeType":"ExpressionStatement","src":"7462:86:207"}]},"id":113727,"nodeType":"IfStatement","src":"7234:325:207","trueBody":{"id":113707,"nodeType":"Block","src":"7279:90:207","statements":[{"expression":{"arguments":[{"id":113700,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113684,"src":"7312:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113701,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113686,"src":"7319:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113702,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113688,"src":"7324:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113703,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113690,"src":"7333:12:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":113704,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113692,"src":"7347:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113699,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":163655,"src":"7293:18:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":113705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7293:65:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113706,"nodeType":"ExpressionStatement","src":"7293:65:207"}]}}]},"documentation":{"id":113680,"nodeType":"StructuredDocumentation","src":"6510:496:207","text":"@custom:legacy\n @notice Internal function to initiate a withdrawal from L2 to L1 to a target account on L1.\n @param _l2Token Address of the L2 token to withdraw.\n @param _from Address of the withdrawer.\n @param _to Recipient account on L1.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateWithdrawal","nameLocation":"7020:19:207","parameters":{"id":113693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113682,"mutability":"mutable","name":"_l2Token","nameLocation":"7057:8:207","nodeType":"VariableDeclaration","scope":113729,"src":"7049:16:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113681,"name":"address","nodeType":"ElementaryTypeName","src":"7049:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113684,"mutability":"mutable","name":"_from","nameLocation":"7083:5:207","nodeType":"VariableDeclaration","scope":113729,"src":"7075:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113683,"name":"address","nodeType":"ElementaryTypeName","src":"7075:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113686,"mutability":"mutable","name":"_to","nameLocation":"7106:3:207","nodeType":"VariableDeclaration","scope":113729,"src":"7098:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113685,"name":"address","nodeType":"ElementaryTypeName","src":"7098:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113688,"mutability":"mutable","name":"_amount","nameLocation":"7127:7:207","nodeType":"VariableDeclaration","scope":113729,"src":"7119:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113687,"name":"uint256","nodeType":"ElementaryTypeName","src":"7119:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113690,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7151:12:207","nodeType":"VariableDeclaration","scope":113729,"src":"7144:19:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":113689,"name":"uint32","nodeType":"ElementaryTypeName","src":"7144:6:207","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":113692,"mutability":"mutable","name":"_extraData","nameLocation":"7186:10:207","nodeType":"VariableDeclaration","scope":113729,"src":"7173:23:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113691,"name":"bytes","nodeType":"ElementaryTypeName","src":"7173:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7039:163:207"},"returnParameters":{"id":113694,"nodeType":"ParameterList","parameters":[],"src":"7224:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":113765,"nodeType":"FunctionDefinition","src":"7793:366:207","nodes":[],"body":{"id":113764,"nodeType":"Block","src":"7972:187:207","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":113745,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8015:1:207","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":113744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8007:7:207","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113743,"name":"address","nodeType":"ElementaryTypeName","src":"8007:7:207","typeDescriptions":{}}},"id":113746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8007:10:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113747,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"8019:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":153575,"src":"8019:27:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113749,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113732,"src":"8048:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113750,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113734,"src":"8055:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113751,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113736,"src":"8060:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113752,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113738,"src":"8069:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113742,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113494,"src":"7987:19:207","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7987:93:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113754,"nodeType":"EmitStatement","src":"7982:98:207"},{"expression":{"arguments":[{"id":113758,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113732,"src":"8120:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113759,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113734,"src":"8127:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113760,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113736,"src":"8132:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113761,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113738,"src":"8141:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":113755,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8090:5:207","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$113878_$","typeString":"type(contract super L2StandardBridge)"}},"id":113757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":163846,"src":"8090:29:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":113762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8090:62:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113763,"nodeType":"ExpressionStatement","src":"8090:62:207"}]},"baseFunctions":[163846],"documentation":{"id":113730,"nodeType":"StructuredDocumentation","src":"7571:217:207","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ETHBridgeInitiated event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"7802:23:207","overrides":{"id":113740,"nodeType":"OverrideSpecifier","overrides":[],"src":"7959:8:207"},"parameters":{"id":113739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113732,"mutability":"mutable","name":"_from","nameLocation":"7843:5:207","nodeType":"VariableDeclaration","scope":113765,"src":"7835:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113731,"name":"address","nodeType":"ElementaryTypeName","src":"7835:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113734,"mutability":"mutable","name":"_to","nameLocation":"7866:3:207","nodeType":"VariableDeclaration","scope":113765,"src":"7858:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113733,"name":"address","nodeType":"ElementaryTypeName","src":"7858:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113736,"mutability":"mutable","name":"_amount","nameLocation":"7887:7:207","nodeType":"VariableDeclaration","scope":113765,"src":"7879:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113735,"name":"uint256","nodeType":"ElementaryTypeName","src":"7879:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113738,"mutability":"mutable","name":"_extraData","nameLocation":"7917:10:207","nodeType":"VariableDeclaration","scope":113765,"src":"7904:23:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113737,"name":"bytes","nodeType":"ElementaryTypeName","src":"7904:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7825:108:207"},"returnParameters":{"id":113741,"nodeType":"ParameterList","parameters":[],"src":"7972:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":113801,"nodeType":"FunctionDefinition","src":"8384:363:207","nodes":[],"body":{"id":113800,"nodeType":"Block","src":"8563:184:207","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":113781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8603:1:207","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":113780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8595:7:207","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":113779,"name":"address","nodeType":"ElementaryTypeName","src":"8595:7:207","typeDescriptions":{}}},"id":113782,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8595:10:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":113783,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":154011,"src":"8607:10:207","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$154011_$","typeString":"type(library Predeploys)"}},"id":113784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":153575,"src":"8607:27:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113785,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113768,"src":"8636:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113786,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113770,"src":"8643:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113787,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113772,"src":"8648:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113788,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113774,"src":"8657:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113778,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113509,"src":"8578:16:207","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8578:90:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113790,"nodeType":"EmitStatement","src":"8573:95:207"},{"expression":{"arguments":[{"id":113794,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113768,"src":"8708:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113795,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113770,"src":"8715:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113796,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113772,"src":"8720:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113797,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113774,"src":"8729:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":113791,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8678:5:207","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$113878_$","typeString":"type(contract super L2StandardBridge)"}},"id":113793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":163866,"src":"8678:29:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":113798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8678:62:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113799,"nodeType":"ExpressionStatement","src":"8678:62:207"}]},"baseFunctions":[163866],"documentation":{"id":113766,"nodeType":"StructuredDocumentation","src":"8165:214:207","text":"@notice Emits the legacy DepositFinalized event followed by the ETHBridgeFinalized event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"8393:23:207","overrides":{"id":113776,"nodeType":"OverrideSpecifier","overrides":[],"src":"8550:8:207"},"parameters":{"id":113775,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113768,"mutability":"mutable","name":"_from","nameLocation":"8434:5:207","nodeType":"VariableDeclaration","scope":113801,"src":"8426:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113767,"name":"address","nodeType":"ElementaryTypeName","src":"8426:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113770,"mutability":"mutable","name":"_to","nameLocation":"8457:3:207","nodeType":"VariableDeclaration","scope":113801,"src":"8449:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113769,"name":"address","nodeType":"ElementaryTypeName","src":"8449:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113772,"mutability":"mutable","name":"_amount","nameLocation":"8478:7:207","nodeType":"VariableDeclaration","scope":113801,"src":"8470:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113771,"name":"uint256","nodeType":"ElementaryTypeName","src":"8470:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113774,"mutability":"mutable","name":"_extraData","nameLocation":"8508:10:207","nodeType":"VariableDeclaration","scope":113801,"src":"8495:23:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113773,"name":"bytes","nodeType":"ElementaryTypeName","src":"8495:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8416:108:207"},"returnParameters":{"id":113777,"nodeType":"ParameterList","parameters":[],"src":"8563:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":113839,"nodeType":"FunctionDefinition","src":"8977:442:207","nodes":[],"body":{"id":113838,"nodeType":"Block","src":"9217:202:207","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":113819,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113806,"src":"9252:12:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113820,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113804,"src":"9266:11:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113821,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113808,"src":"9279:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113822,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113810,"src":"9286:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113823,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113812,"src":"9291:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113824,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113814,"src":"9300:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113818,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113494,"src":"9232:19:207","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9232:79:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113826,"nodeType":"EmitStatement","src":"9227:84:207"},{"expression":{"arguments":[{"id":113830,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113804,"src":"9353:11:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113831,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113806,"src":"9366:12:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113832,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113808,"src":"9380:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113833,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113810,"src":"9387:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113834,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113812,"src":"9392:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113835,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113814,"src":"9401:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":113827,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9321:5:207","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$113878_$","typeString":"type(contract super L2StandardBridge)"}},"id":113829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":163892,"src":"9321:31:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9321:91:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113837,"nodeType":"ExpressionStatement","src":"9321:91:207"}]},"baseFunctions":[163892],"documentation":{"id":113802,"nodeType":"StructuredDocumentation","src":"8753:219:207","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ERC20BridgeInitiated\n event. This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"8986:25:207","overrides":{"id":113816,"nodeType":"OverrideSpecifier","overrides":[],"src":"9204:8:207"},"parameters":{"id":113815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113804,"mutability":"mutable","name":"_localToken","nameLocation":"9029:11:207","nodeType":"VariableDeclaration","scope":113839,"src":"9021:19:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113803,"name":"address","nodeType":"ElementaryTypeName","src":"9021:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113806,"mutability":"mutable","name":"_remoteToken","nameLocation":"9058:12:207","nodeType":"VariableDeclaration","scope":113839,"src":"9050:20:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113805,"name":"address","nodeType":"ElementaryTypeName","src":"9050:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113808,"mutability":"mutable","name":"_from","nameLocation":"9088:5:207","nodeType":"VariableDeclaration","scope":113839,"src":"9080:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113807,"name":"address","nodeType":"ElementaryTypeName","src":"9080:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113810,"mutability":"mutable","name":"_to","nameLocation":"9111:3:207","nodeType":"VariableDeclaration","scope":113839,"src":"9103:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113809,"name":"address","nodeType":"ElementaryTypeName","src":"9103:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113812,"mutability":"mutable","name":"_amount","nameLocation":"9132:7:207","nodeType":"VariableDeclaration","scope":113839,"src":"9124:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113811,"name":"uint256","nodeType":"ElementaryTypeName","src":"9124:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113814,"mutability":"mutable","name":"_extraData","nameLocation":"9162:10:207","nodeType":"VariableDeclaration","scope":113839,"src":"9149:23:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113813,"name":"bytes","nodeType":"ElementaryTypeName","src":"9149:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9011:167:207"},"returnParameters":{"id":113817,"nodeType":"ParameterList","parameters":[],"src":"9217:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":113877,"nodeType":"FunctionDefinition","src":"9646:439:207","nodes":[],"body":{"id":113876,"nodeType":"Block","src":"9886:199:207","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":113857,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113844,"src":"9918:12:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113858,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113842,"src":"9932:11:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113859,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113846,"src":"9945:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113860,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113848,"src":"9952:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113861,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113850,"src":"9957:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113862,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113852,"src":"9966:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":113856,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113509,"src":"9901:16:207","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9901:76:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113864,"nodeType":"EmitStatement","src":"9896:81:207"},{"expression":{"arguments":[{"id":113868,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113842,"src":"10019:11:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113869,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113844,"src":"10032:12:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113870,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113846,"src":"10046:5:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113871,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113848,"src":"10053:3:207","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":113872,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113850,"src":"10058:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":113873,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":113852,"src":"10067:10:207","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":113865,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9987:5:207","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$113878_$","typeString":"type(contract super L2StandardBridge)"}},"id":113867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":163918,"src":"9987:31:207","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":113874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9987:91:207","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":113875,"nodeType":"ExpressionStatement","src":"9987:91:207"}]},"baseFunctions":[163918],"documentation":{"id":113840,"nodeType":"StructuredDocumentation","src":"9425:216:207","text":"@notice Emits the legacy DepositFinalized event followed by the ERC20BridgeFinalized event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"9655:25:207","overrides":{"id":113854,"nodeType":"OverrideSpecifier","overrides":[],"src":"9873:8:207"},"parameters":{"id":113853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":113842,"mutability":"mutable","name":"_localToken","nameLocation":"9698:11:207","nodeType":"VariableDeclaration","scope":113877,"src":"9690:19:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113841,"name":"address","nodeType":"ElementaryTypeName","src":"9690:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113844,"mutability":"mutable","name":"_remoteToken","nameLocation":"9727:12:207","nodeType":"VariableDeclaration","scope":113877,"src":"9719:20:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113843,"name":"address","nodeType":"ElementaryTypeName","src":"9719:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113846,"mutability":"mutable","name":"_from","nameLocation":"9757:5:207","nodeType":"VariableDeclaration","scope":113877,"src":"9749:13:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113845,"name":"address","nodeType":"ElementaryTypeName","src":"9749:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113848,"mutability":"mutable","name":"_to","nameLocation":"9780:3:207","nodeType":"VariableDeclaration","scope":113877,"src":"9772:11:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":113847,"name":"address","nodeType":"ElementaryTypeName","src":"9772:7:207","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":113850,"mutability":"mutable","name":"_amount","nameLocation":"9801:7:207","nodeType":"VariableDeclaration","scope":113877,"src":"9793:15:207","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":113849,"name":"uint256","nodeType":"ElementaryTypeName","src":"9793:7:207","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":113852,"mutability":"mutable","name":"_extraData","nameLocation":"9831:10:207","nodeType":"VariableDeclaration","scope":113877,"src":"9818:23:207","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":113851,"name":"bytes","nodeType":"ElementaryTypeName","src":"9818:5:207","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9680:167:207"},"returnParameters":{"id":113855,"nodeType":"ParameterList","parameters":[],"src":"9886:0:207"},"scope":113878,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":113476,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":163919,"src":"1243:14:207"},"id":113477,"nodeType":"InheritanceSpecifier","src":"1243:14:207"},{"baseName":{"id":113478,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":165319,"src":"1259:7:207"},"id":113479,"nodeType":"InheritanceSpecifier","src":"1259:7:207"}],"canonicalName":"L2StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":113475,"nodeType":"StructuredDocumentation","src":"522:692:207","text":"@custom:proxied true\n @custom:predeploy 0x4200000000000000000000000000000000000010\n @title L2StandardBridge\n @notice The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and\n L2. In the case that an ERC20 token is native to L2, it will be escrowed within this\n contract. If the ERC20 token is native to L1, it will be burnt.\n NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples\n of some token types that may not be properly supported by this contract include, but are\n not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"fullyImplemented":true,"linearizedBaseContracts":[113878,165319,163919,44468],"name":"L2StandardBridge","nameLocation":"1223:16:207","scope":113879,"usedErrors":[]}],"license":"MIT"},"id":207} \ No newline at end of file diff --git a/op-e2e/celo/contracts/OptimismMintableERC20Factory.json b/op-e2e/celo/contracts/OptimismMintableERC20Factory.json new file mode 100644 index 0000000000000..4b706e16ea194 --- /dev/null +++ b/op-e2e/celo/contracts/OptimismMintableERC20Factory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createOptimismMintableERC20","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createOptimismMintableERC20WithDecimals","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createStandardL2Token","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployments","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OptimismMintableERC20Created","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"deployer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StandardL2TokenCreated","inputs":[{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"localToken","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001b6000610020565b610169565b600054610100900460ff16158080156100405750600054600160ff909116105b8061006b57506100593061015a60201b6105fe1760201c565b15801561006b575060005460ff166001145b6100d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156100f5576000805461ff0019166101001790555b600180546001600160a01b0319166001600160a01b0384161790558015610156576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b612ef6806101786000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063c4d66de81162000062578063c4d66de81462000175578063ce5ac90f146200018e578063e78cea9214620001a5578063ee9a31a214620001c657600080fd5b8063316b3739146200009857806354fd4d5014620000fb578063896f93d114620001475780638cf0629c146200015e575b600080fd5b620000d1620000a936600462000652565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001386040518060400160405280600d81526020017f312e31302e312d626574612e340000000000000000000000000000000000000081525081565b604051620000f29190620006e5565b620000d162000158366004620007dc565b620001e5565b620000d16200016f36600462000859565b620001fc565b6200018c6200018636600462000652565b6200041b565b005b620000d16200019f366004620007dc565b620005ed565b600154620000d19073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16620000d1565b6000620001f4848484620005ed565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8516620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e20616464726573730060648201526084015b60405180910390fd5b600085858585604051602001620002c29493929190620008f0565b604051602081830303815290604052805190602001209050600081600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168888888860405162000312906200061a565b620003229594939291906200094a565b8190604051809103906000f590508015801562000343573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526002602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948d1694851790555193945090927fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf9190a360405133815273ffffffffffffffffffffffffffffffffffffffff80891691908316907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a39695505050505050565b600054610100900460ff16158080156200043c5750600054600160ff909116105b80620004585750303b15801562000458575060005460ff166001145b620004e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200029e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200054557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015620005e957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000620001f48484846012620001fc565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61253a80620009b083390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200064d57600080fd5b919050565b6000602082840312156200066557600080fd5b620006708262000628565b9392505050565b6000815180845260005b818110156200069f5760208185018101518683018201520162000681565b81811115620006b2576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000670602083018462000677565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200073b57600080fd5b813567ffffffffffffffff80821115620007595762000759620006fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715620007a257620007a2620006fa565b81604052838152866020858801011115620007bc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620007f257600080fd5b620007fd8462000628565b9250602084013567ffffffffffffffff808211156200081b57600080fd5b620008298783880162000729565b935060408601359150808211156200084057600080fd5b506200084f8682870162000729565b9150509250925092565b600080600080608085870312156200087057600080fd5b6200087b8562000628565b9350602085013567ffffffffffffffff808211156200089957600080fd5b620008a78883890162000729565b94506040870135915080821115620008be57600080fd5b50620008cd8782880162000729565b925050606085013560ff81168114620008e557600080fd5b939692955090935050565b73ffffffffffffffffffffffffffffffffffffffff8516815260806020820152600062000921608083018662000677565b828103604084015262000935818662000677565b91505060ff8316606083015295945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526200098560a083018662000677565b828103606084015262000999818662000677565b91505060ff83166080830152969550505050505056fe6101a06040523480156200001257600080fd5b506040516200253a3803806200253a833981016040819052620000359162000215565b6040805180820190915260018152603160f81b6020820152839081908185600362000061838262000350565b50600462000070828262000350565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c05261012052505050506001600160a01b0394851661014052509390921661016052505060ff16610180526200041c565b80516001600160a01b03811681146200014357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017057600080fd5b81516001600160401b03808211156200018d576200018d62000148565b604051601f8301601f19908116603f01168101908282118183101715620001b857620001b862000148565b81604052838152602092508683858801011115620001d557600080fd5b600091505b83821015620001f95785820183015181830184015290820190620001da565b838211156200020b5760008385830101525b9695505050505050565b600080600080600060a086880312156200022e57600080fd5b62000239866200012b565b945062000249602087016200012b565b60408701519094506001600160401b03808211156200026757600080fd5b6200027589838a016200015e565b945060608801519150808211156200028c57600080fd5b506200029b888289016200015e565b925050608086015160ff81168114620002b357600080fd5b809150509295509295909350565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c62000148565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051610140516101605161018051612091620004a960003960006102a6015260008181610401015281816104760152818161080a0152610a6d0152600081816101f6015261042701526000611557015260006115a601526000611581015260006114da015260006115040152600061152e01526120916000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636afdd850116100f9578063ae1f6aaf11610097578063d6c0b2c411610071578063d6c0b2c414610425578063dd62ed3e1461045e578063e78cea92146103ff578063ee9a31a21461047157600080fd5b8063ae1f6aaf146103ff578063c01e1bd614610425578063d505accf1461044b57600080fd5b806395d89b41116100d357806395d89b41146103be5780639dc29fac146103c6578063a457c2d7146103d9578063a9059cbb146103ec57600080fd5b80636afdd8501461036057806370a08231146103755780637ecebe00146103ab57600080fd5b8063313ce5671161016657806340c10f191161014057806340c10f19146102eb57806354fd4d50146102fe57806358cf96721461033a5780636a30b2531461034d57600080fd5b8063313ce5671461029f5780633644e515146102d057806339509351146102d857600080fd5b8063095ea7b3116101a2578063095ea7b31461025257806318160ddd1461026557806323b872dd146102775780632e0f98ad1461028a57600080fd5b806301ffc9a7146101c9578063033964be146101f157806306fdde031461023d575b600080fd5b6101dc6101d7366004611c0e565b610498565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b610245610589565b6040516101e89190611c50565b6101dc610260366004611cec565b61061b565b6002545b6040519081526020016101e8565b6101dc610285366004611d16565b610635565b61029d610298366004611d9e565b610659565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e8565b6102696107c1565b6101dc6102e6366004611cec565b6107d0565b61029d6102f9366004611cec565b6107f2565b6102456040518060400160405280600c81526020017f312e342e302d626574612e32000000000000000000000000000000000000000081525081565b61029d610348366004611cec565b610915565b61029d61035b366004611e0a565b61098b565b6e22d473030f116ddee9f6b43ac78ba3610218565b610269610383366004611e82565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696103b9366004611e82565b610a1b565b610245610a46565b61029d6103d4366004611cec565b610a55565b6101dc6103e7366004611cec565b610b6c565b6101dc6103fa366004611cec565b610c19565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b61029d610459366004611e9d565b610c27565b61026961046c366004611f10565b610de6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000851683148061055157507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061058057507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461059890611f43565b80601f01602080910402602001604051908101604052809291908181526020018280546105c490611f43565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b600033610629818585610e87565b60019150505b92915050565b60003361064385828561103b565b61064e8585856110ed565b506001949350505050565b33156106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064015b60405180910390fd5b828114610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f526563697069656e747320616e6420616d6f756e7473206d757374206265207460448201527f68652073616d65206c656e6774682e000000000000000000000000000000000060648201526084016106bd565b60005b838110156107ba576107a885858381811061077557610775611f90565b905060200201602081019061078a9190611e82565b84848481811061079c5761079c611f90565b905060200201356113a0565b806107b281611fee565b915050610758565b5050505050565b60006107cb6114c0565b905090565b6000336106298185856107e38383610de6565b6107ed9190612026565b610e87565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b6108c182826113a0565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161090991815260200190565b60405180910390a25050565b331561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b61098782826115f4565b5050565b33156109f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b6109fd88856113a0565b610a0787846113a0565b610a1185826113a0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205461062f565b60606004805461059890611f43565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b610b2482826115f4565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161090991815260200190565b60003381610b7a8286610de6565b905083811015610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106bd565b61064e8286868403610e87565b6000336106298185856110ed565b83421115610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106bd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610cc08c6117d9565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d288261180e565b90506000610d3882878787611877565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106bd565b610dda8a8a8a610e87565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610e4c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61062f565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006110478484610de6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e757818110156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106bd565b6110e78484848403610e87565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061132d908490612026565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139391815260200190565b60405180910390a36110e7565b73ffffffffffffffffffffffffffffffffffffffff821661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106bd565b806002600082825461142f9190612026565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611469908490612026565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561152657507f000000000000000000000000000000000000000000000000000000000000000046145b1561155057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b73ffffffffffffffffffffffffffffffffffffffff8216611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061178990849061203e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161102e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b600061062f61181b6114c0565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118888787878761189f565b91509150611895816119b7565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118d657506000905060036119ae565b8460ff16601b141580156118ee57508460ff16601c14155b156118ff57506000905060046119ae565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611953573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166119a7576000600192509250506119ae565b9150600090505b94509492505050565b60008160048111156119cb576119cb612055565b036119d35750565b60018160048111156119e7576119e7612055565b03611a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106bd565b6002816004811115611a6257611a62612055565b03611ac9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106bd565b6003816004811115611add57611add612055565b03611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b6004816004811115611b7e57611b7e612055565b03611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b50565b600060208284031215611c2057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e8057600080fd5b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b81811115611c8f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce757600080fd5b919050565b60008060408385031215611cff57600080fd5b611d0883611cc3565b946020939093013593505050565b600080600060608486031215611d2b57600080fd5b611d3484611cc3565b9250611d4260208501611cc3565b9150604084013590509250925092565b60008083601f840112611d6457600080fd5b50813567ffffffffffffffff811115611d7c57600080fd5b6020830191508360208260051b8501011115611d9757600080fd5b9250929050565b60008060008060408587031215611db457600080fd5b843567ffffffffffffffff80821115611dcc57600080fd5b611dd888838901611d52565b90965094506020870135915080821115611df157600080fd5b50611dfe87828801611d52565b95989497509550505050565b600080600080600080600080610100898b031215611e2757600080fd5b611e3089611cc3565b9750611e3e60208a01611cc3565b9650611e4c60408a01611cc3565b9550611e5a60608a01611cc3565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600060208284031215611e9457600080fd5b610e8082611cc3565b600080600080600080600060e0888a031215611eb857600080fd5b611ec188611cc3565b9650611ecf60208901611cc3565b95506040880135945060608801359350608088013560ff81168114611ef357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611f2357600080fd5b611f2c83611cc3565b9150611f3a60208401611cc3565b90509250929050565b600181811c90821680611f5757607f821691505b602082108103611808577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361201f5761201f611fbf565b5060010190565b6000821982111561203957612039611fbf565b500190565b60008282101561205057612050611fbf565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"871:5369:386:-:0;;;3021:66;;;;;;;;;-1:-1:-1;3045:35:386;3075:1;3045:10;:35::i;:::-;871:5369;;3203:89;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:58;;216:2:564;3146:190:58;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:564;;;338:44;399:19;;3146:190:58;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:58;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:58;;;;;3372:65;3269:6:386::1;:16:::0;;-1:-1:-1;;;;;;3269:16:386::1;-1:-1:-1::0;;;;;3269:16:386;::::1;;::::0;;3457:99:58;;;;3507:5;3491:21;;-1:-1:-1;;3491:21:58;;;3531:14;;-1:-1:-1;581:36:564;;3531:14:58;;569:2:564;554:18;3531:14:58;;;;;;;3457:99;3090:472;3203:89:386;:::o;1175:320:74:-;-1:-1:-1;;;;;1465:19:74;;:23;;;1175:320::o;429:194:564:-;871:5369:386;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063c4d66de81162000062578063c4d66de81462000175578063ce5ac90f146200018e578063e78cea9214620001a5578063ee9a31a214620001c657600080fd5b8063316b3739146200009857806354fd4d5014620000fb578063896f93d114620001475780638cf0629c146200015e575b600080fd5b620000d1620000a936600462000652565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001386040518060400160405280600d81526020017f312e31302e312d626574612e340000000000000000000000000000000000000081525081565b604051620000f29190620006e5565b620000d162000158366004620007dc565b620001e5565b620000d16200016f36600462000859565b620001fc565b6200018c6200018636600462000652565b6200041b565b005b620000d16200019f366004620007dc565b620005ed565b600154620000d19073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16620000d1565b6000620001f4848484620005ed565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8516620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e20616464726573730060648201526084015b60405180910390fd5b600085858585604051602001620002c29493929190620008f0565b604051602081830303815290604052805190602001209050600081600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168888888860405162000312906200061a565b620003229594939291906200094a565b8190604051809103906000f590508015801562000343573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526002602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948d1694851790555193945090927fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf9190a360405133815273ffffffffffffffffffffffffffffffffffffffff80891691908316907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a39695505050505050565b600054610100900460ff16158080156200043c5750600054600160ff909116105b80620004585750303b15801562000458575060005460ff166001145b620004e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200029e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200054557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015620005e957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000620001f48484846012620001fc565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61253a80620009b083390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200064d57600080fd5b919050565b6000602082840312156200066557600080fd5b620006708262000628565b9392505050565b6000815180845260005b818110156200069f5760208185018101518683018201520162000681565b81811115620006b2576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000670602083018462000677565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200073b57600080fd5b813567ffffffffffffffff80821115620007595762000759620006fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715620007a257620007a2620006fa565b81604052838152866020858801011115620007bc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620007f257600080fd5b620007fd8462000628565b9250602084013567ffffffffffffffff808211156200081b57600080fd5b620008298783880162000729565b935060408601359150808211156200084057600080fd5b506200084f8682870162000729565b9150509250925092565b600080600080608085870312156200087057600080fd5b6200087b8562000628565b9350602085013567ffffffffffffffff808211156200089957600080fd5b620008a78883890162000729565b94506040870135915080821115620008be57600080fd5b50620008cd8782880162000729565b925050606085013560ff81168114620008e557600080fd5b939692955090935050565b73ffffffffffffffffffffffffffffffffffffffff8516815260806020820152600062000921608083018662000677565b828103604084015262000935818662000677565b91505060ff8316606083015295945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526200098560a083018662000677565b828103606084015262000999818662000677565b91505060ff83166080830152969550505050505056fe6101a06040523480156200001257600080fd5b506040516200253a3803806200253a833981016040819052620000359162000215565b6040805180820190915260018152603160f81b6020820152839081908185600362000061838262000350565b50600462000070828262000350565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c05261012052505050506001600160a01b0394851661014052509390921661016052505060ff16610180526200041c565b80516001600160a01b03811681146200014357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017057600080fd5b81516001600160401b03808211156200018d576200018d62000148565b604051601f8301601f19908116603f01168101908282118183101715620001b857620001b862000148565b81604052838152602092508683858801011115620001d557600080fd5b600091505b83821015620001f95785820183015181830184015290820190620001da565b838211156200020b5760008385830101525b9695505050505050565b600080600080600060a086880312156200022e57600080fd5b62000239866200012b565b945062000249602087016200012b565b60408701519094506001600160401b03808211156200026757600080fd5b6200027589838a016200015e565b945060608801519150808211156200028c57600080fd5b506200029b888289016200015e565b925050608086015160ff81168114620002b357600080fd5b809150509295509295909350565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c62000148565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051610140516101605161018051612091620004a960003960006102a6015260008181610401015281816104760152818161080a0152610a6d0152600081816101f6015261042701526000611557015260006115a601526000611581015260006114da015260006115040152600061152e01526120916000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636afdd850116100f9578063ae1f6aaf11610097578063d6c0b2c411610071578063d6c0b2c414610425578063dd62ed3e1461045e578063e78cea92146103ff578063ee9a31a21461047157600080fd5b8063ae1f6aaf146103ff578063c01e1bd614610425578063d505accf1461044b57600080fd5b806395d89b41116100d357806395d89b41146103be5780639dc29fac146103c6578063a457c2d7146103d9578063a9059cbb146103ec57600080fd5b80636afdd8501461036057806370a08231146103755780637ecebe00146103ab57600080fd5b8063313ce5671161016657806340c10f191161014057806340c10f19146102eb57806354fd4d50146102fe57806358cf96721461033a5780636a30b2531461034d57600080fd5b8063313ce5671461029f5780633644e515146102d057806339509351146102d857600080fd5b8063095ea7b3116101a2578063095ea7b31461025257806318160ddd1461026557806323b872dd146102775780632e0f98ad1461028a57600080fd5b806301ffc9a7146101c9578063033964be146101f157806306fdde031461023d575b600080fd5b6101dc6101d7366004611c0e565b610498565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b610245610589565b6040516101e89190611c50565b6101dc610260366004611cec565b61061b565b6002545b6040519081526020016101e8565b6101dc610285366004611d16565b610635565b61029d610298366004611d9e565b610659565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e8565b6102696107c1565b6101dc6102e6366004611cec565b6107d0565b61029d6102f9366004611cec565b6107f2565b6102456040518060400160405280600c81526020017f312e342e302d626574612e32000000000000000000000000000000000000000081525081565b61029d610348366004611cec565b610915565b61029d61035b366004611e0a565b61098b565b6e22d473030f116ddee9f6b43ac78ba3610218565b610269610383366004611e82565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696103b9366004611e82565b610a1b565b610245610a46565b61029d6103d4366004611cec565b610a55565b6101dc6103e7366004611cec565b610b6c565b6101dc6103fa366004611cec565b610c19565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b61029d610459366004611e9d565b610c27565b61026961046c366004611f10565b610de6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000851683148061055157507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061058057507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461059890611f43565b80601f01602080910402602001604051908101604052809291908181526020018280546105c490611f43565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b600033610629818585610e87565b60019150505b92915050565b60003361064385828561103b565b61064e8585856110ed565b506001949350505050565b33156106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064015b60405180910390fd5b828114610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f526563697069656e747320616e6420616d6f756e7473206d757374206265207460448201527f68652073616d65206c656e6774682e000000000000000000000000000000000060648201526084016106bd565b60005b838110156107ba576107a885858381811061077557610775611f90565b905060200201602081019061078a9190611e82565b84848481811061079c5761079c611f90565b905060200201356113a0565b806107b281611fee565b915050610758565b5050505050565b60006107cb6114c0565b905090565b6000336106298185856107e38383610de6565b6107ed9190612026565b610e87565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b6108c182826113a0565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161090991815260200190565b60405180910390a25050565b331561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b61098782826115f4565b5050565b33156109f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b6109fd88856113a0565b610a0787846113a0565b610a1185826113a0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205461062f565b60606004805461059890611f43565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b610b2482826115f4565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161090991815260200190565b60003381610b7a8286610de6565b905083811015610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106bd565b61064e8286868403610e87565b6000336106298185856110ed565b83421115610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106bd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610cc08c6117d9565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d288261180e565b90506000610d3882878787611877565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106bd565b610dda8a8a8a610e87565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610e4c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61062f565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006110478484610de6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e757818110156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106bd565b6110e78484848403610e87565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061132d908490612026565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139391815260200190565b60405180910390a36110e7565b73ffffffffffffffffffffffffffffffffffffffff821661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106bd565b806002600082825461142f9190612026565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611469908490612026565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561152657507f000000000000000000000000000000000000000000000000000000000000000046145b1561155057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b73ffffffffffffffffffffffffffffffffffffffff8216611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061178990849061203e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161102e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b600061062f61181b6114c0565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118888787878761189f565b91509150611895816119b7565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118d657506000905060036119ae565b8460ff16601b141580156118ee57508460ff16601c14155b156118ff57506000905060046119ae565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611953573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166119a7576000600192509250506119ae565b9150600090505b94509492505050565b60008160048111156119cb576119cb612055565b036119d35750565b60018160048111156119e7576119e7612055565b03611a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106bd565b6002816004811115611a6257611a62612055565b03611ac9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106bd565b6003816004811115611add57611add612055565b03611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b6004816004811115611b7e57611b7e612055565b03611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b50565b600060208284031215611c2057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e8057600080fd5b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b81811115611c8f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce757600080fd5b919050565b60008060408385031215611cff57600080fd5b611d0883611cc3565b946020939093013593505050565b600080600060608486031215611d2b57600080fd5b611d3484611cc3565b9250611d4260208501611cc3565b9150604084013590509250925092565b60008083601f840112611d6457600080fd5b50813567ffffffffffffffff811115611d7c57600080fd5b6020830191508360208260051b8501011115611d9757600080fd5b9250929050565b60008060008060408587031215611db457600080fd5b843567ffffffffffffffff80821115611dcc57600080fd5b611dd888838901611d52565b90965094506020870135915080821115611df157600080fd5b50611dfe87828801611d52565b95989497509550505050565b600080600080600080600080610100898b031215611e2757600080fd5b611e3089611cc3565b9750611e3e60208a01611cc3565b9650611e4c60408a01611cc3565b9550611e5a60608a01611cc3565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600060208284031215611e9457600080fd5b610e8082611cc3565b600080600080600080600060e0888a031215611eb857600080fd5b611ec188611cc3565b9650611ecf60208901611cc3565b95506040880135945060608801359350608088013560ff81168114611ef357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611f2357600080fd5b611f2c83611cc3565b9150611f3a60208401611cc3565b90509250929050565b600181811c90821680611f5757607f821691505b602082108103611808577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361201f5761201f611fbf565b5060010190565b6000821982111561203957612039611fbf565b500190565b60008282101561205057612050611fbf565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"871:5369:386:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1408:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;582:42:564;570:55;;;552:74;;540:2;525:18;1408:46:386;;;;;;;;2896:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4067:255::-;;;;;;:::i;:::-;;:::i;5235:1003::-;;;;;;:::i;:::-;;:::i;3203:89::-;;;;;;:::i;:::-;;:::i;:::-;;4607:275;;;;;;:::i;:::-;;:::i;1239:21::-;;;;;;;;;3564:80;3631:6;;;;3564:80;;4067:255;4228:7;4258:57;4286:12;4300:5;4307:7;4258:27;:57::i;:::-;4251:64;4067:255;-1:-1:-1;;;;4067:255:386:o;5235:1003::-;5437:7;5468:26;;;5460:102;;;;;;;3974:2:564;5460:102:386;;;3956:21:564;4013:2;3993:18;;;3986:30;4052:34;4032:18;;;4025:62;4123:33;4103:18;;;4096:61;4174:19;;5460:102:386;;;;;;;;;5573:12;5609;5623:5;5630:7;5639:9;5598:51;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5588:62;;;;;;5573:77;;5661:18;5735:4;5742:6;;;;;;;;;;;5750:12;5764:5;5771:7;5780:9;5702:88;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5802:23:386;;;;;;;;:11;:23;;;;;;:38;;;;;;;;;;;;5910:48;5802:23;;-1:-1:-1;5802:23:386;;5910:48;;5802:23;5910:48;6137:66;;6192:10;552:74:564;;6137:66:386;;;;;;;;;;;540:2:564;525:18;6137:66:386;;;;;;;6221:10;5235:1003;-1:-1:-1;;;;;;5235:1003:386:o;3203:89::-;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:58;1465:19:74;:23;;;3208:55:58;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;;;;5684:2:564;3146:190:58;;;5666:21:564;5723:2;5703:18;;;5696:30;5762:34;5742:18;;;5735:62;5833:16;5813:18;;;5806:44;5867:19;;3146:190:58;5482:410:564;3146:190:58;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;3269:6:386::1;:16:::0;;;::::1;;::::0;::::1;;::::0;;3457:99:58;;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;6049:36:564;;3531:14:58;;6037:2:564;6022:18;3531:14:58;;;;;;;3457:99;3090:472;3203:89:386;:::o;4607:275::-;4772:7;4802:73;4842:12;4856:5;4863:7;4872:2;4802:39;:73::i;1175:320:74:-;1465:19;;;:23;;;1175:320::o;-1:-1:-1:-;;;;;;;;:::o;14:196:564:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:564:o;637:531::-;679:3;717:5;711:12;744:6;739:3;732:19;769:1;779:162;793:6;790:1;787:13;779:162;;;855:4;911:13;;;907:22;;901:29;883:11;;;879:20;;872:59;808:12;779:162;;;959:6;956:1;953:13;950:87;;;1025:1;1018:4;1009:6;1004:3;1000:16;996:27;989:38;950:87;-1:-1:-1;1082:2:564;1070:15;1087:66;1066:88;1057:98;;;;1157:4;1053:109;;637:531;-1:-1:-1;;637:531:564:o;1173:220::-;1322:2;1311:9;1304:21;1285:4;1342:45;1383:2;1372:9;1368:18;1360:6;1342:45;:::i;1398:184::-;1450:77;1447:1;1440:88;1547:4;1544:1;1537:15;1571:4;1568:1;1561:15;1587:778;1630:5;1683:3;1676:4;1668:6;1664:17;1660:27;1650:55;;1701:1;1698;1691:12;1650:55;1737:6;1724:20;1763:18;1800:2;1796;1793:10;1790:36;;;1806:18;;:::i;:::-;1940:2;1934:9;2002:4;1994:13;;1845:66;1990:22;;;2014:2;1986:31;1982:40;1970:53;;;2038:18;;;2058:22;;;2035:46;2032:72;;;2084:18;;:::i;:::-;2124:10;2120:2;2113:22;2159:2;2151:6;2144:18;2205:3;2198:4;2193:2;2185:6;2181:15;2177:26;2174:35;2171:55;;;2222:1;2219;2212:12;2171:55;2286:2;2279:4;2271:6;2267:17;2260:4;2252:6;2248:17;2235:54;2333:1;2326:4;2321:2;2313:6;2309:15;2305:26;2298:37;2353:6;2344:15;;;;;;1587:778;;;;:::o;2370:617::-;2467:6;2475;2483;2536:2;2524:9;2515:7;2511:23;2507:32;2504:52;;;2552:1;2549;2542:12;2504:52;2575:29;2594:9;2575:29;:::i;:::-;2565:39;;2655:2;2644:9;2640:18;2627:32;2678:18;2719:2;2711:6;2708:14;2705:34;;;2735:1;2732;2725:12;2705:34;2758:50;2800:7;2791:6;2780:9;2776:22;2758:50;:::i;:::-;2748:60;;2861:2;2850:9;2846:18;2833:32;2817:48;;2890:2;2880:8;2877:16;2874:36;;;2906:1;2903;2896:12;2874:36;;2929:52;2973:7;2962:8;2951:9;2947:24;2929:52;:::i;:::-;2919:62;;;2370:617;;;;;:::o;2992:775::-;3096:6;3104;3112;3120;3173:3;3161:9;3152:7;3148:23;3144:33;3141:53;;;3190:1;3187;3180:12;3141:53;3213:29;3232:9;3213:29;:::i;:::-;3203:39;;3293:2;3282:9;3278:18;3265:32;3316:18;3357:2;3349:6;3346:14;3343:34;;;3373:1;3370;3363:12;3343:34;3396:50;3438:7;3429:6;3418:9;3414:22;3396:50;:::i;:::-;3386:60;;3499:2;3488:9;3484:18;3471:32;3455:48;;3528:2;3518:8;3515:16;3512:36;;;3544:1;3541;3534:12;3512:36;;3567:52;3611:7;3600:8;3589:9;3585:24;3567:52;:::i;:::-;3557:62;;;3669:2;3658:9;3654:18;3641:32;3713:4;3706:5;3702:16;3695:5;3692:27;3682:55;;3733:1;3730;3723:12;3682:55;2992:775;;;;-1:-1:-1;2992:775:564;;-1:-1:-1;;2992:775:564:o;4204:583::-;4465:42;4457:6;4453:55;4442:9;4435:74;4545:3;4540:2;4529:9;4525:18;4518:31;4416:4;4572:46;4613:3;4602:9;4598:19;4590:6;4572:46;:::i;:::-;4666:9;4658:6;4654:22;4649:2;4638:9;4634:18;4627:50;4694:33;4720:6;4712;4694:33;:::i;:::-;4686:41;;;4775:4;4767:6;4763:17;4758:2;4747:9;4743:18;4736:45;4204:583;;;;;;;:::o;4792:685::-;5032:4;5061:42;5142:2;5134:6;5130:15;5119:9;5112:34;5194:2;5186:6;5182:15;5177:2;5166:9;5162:18;5155:43;;5234:3;5229:2;5218:9;5214:18;5207:31;5261:46;5302:3;5291:9;5287:19;5279:6;5261:46;:::i;:::-;5355:9;5347:6;5343:22;5338:2;5327:9;5323:18;5316:50;5383:33;5409:6;5401;5383:33;:::i;:::-;5375:41;;;5465:4;5457:6;5453:17;5447:3;5436:9;5432:19;5425:46;4792:685;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"BRIDGE()":"ee9a31a2","bridge()":"e78cea92","createOptimismMintableERC20(address,string,string)":"ce5ac90f","createOptimismMintableERC20WithDecimals(address,string,string,uint8)":"8cf0629c","createStandardL2Token(address,string,string)":"896f93d1","deployments(address)":"316b3739","initialize(address)":"c4d66de8","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"OptimismMintableERC20Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"name\":\"StandardL2TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createOptimismMintableERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"createOptimismMintableERC20WithDecimals\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createStandardL2Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployments\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:predeployed\":\"0x4200000000000000000000000000000000000012\",\"custom:proxied\":\"true\",\"events\":{\"OptimismMintableERC20Created(address,address,address)\":{\"params\":{\"deployer\":\"Address of the account that deployed the token.\",\"localToken\":\"Address of the created token on the local chain.\",\"remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"StandardL2TokenCreated(address,address)\":{\"custom:legacy\":\"@notice Emitted whenever a new OptimismMintableERC20 is created. Legacy version of the newer OptimismMintableERC20Created event. We recommend relying on that event instead.\",\"params\":{\"localToken\":\"Address of the created token on the local chain.\",\"remoteToken\":\"Address of the token on the remote chain.\"}}},\"kind\":\"dev\",\"methods\":{\"BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the StandardBridge on this chain.\"}},\"createOptimismMintableERC20(address,string,string)\":{\"params\":{\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"createOptimismMintableERC20WithDecimals(address,string,string,uint8)\":{\"params\":{\"_decimals\":\"ERC20 decimals\",\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"createStandardL2Token(address,string,string)\":{\"custom:legacy\":\"@notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the newer createOptimismMintableERC20 function, which has a more intuitive name.\",\"params\":{\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"initialize(address)\":{\"params\":{\"_bridge\":\"Address of the StandardBridge on this chain.\"}}},\"stateVariables\":{\"bridge\":{\"custom:network-specific\":\"\"},\"spacer_0_2_30\":{\"custom:spacer\":\"OptimismMintableERC20Factory's initializer slot spacing\"},\"version\":{\"custom:semver\":\"1.10.1-beta.4\"}},\"title\":\"OptimismMintableERC20Factory\",\"version\":1},\"userdoc\":{\"events\":{\"OptimismMintableERC20Created(address,address,address)\":{\"notice\":\"Emitted whenever a new OptimismMintableERC20 is created.\"}},\"kind\":\"user\",\"methods\":{\"BRIDGE()\":{\"notice\":\"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead.\"},\"bridge()\":{\"notice\":\"Address of the StandardBridge on this chain.\"},\"constructor\":{\"notice\":\"Constructs the OptimismMintableERC20Factory contract.\"},\"createOptimismMintableERC20(address,string,string)\":{\"notice\":\"Creates an instance of the OptimismMintableERC20 contract.\"},\"createOptimismMintableERC20WithDecimals(address,string,string,uint8)\":{\"notice\":\"Creates an instance of the OptimismMintableERC20 contract, with specified decimals.\"},\"deployments(address)\":{\"notice\":\"Mapping of local token address to remote token address. This is used to keep track of the token deployments.\"},\"initialize(address)\":{\"notice\":\"Initializes the contract.\"},\"version()\":{\"notice\":\"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version.\"}},\"notice\":\"OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 contracts on the network it's deployed to. Simplifies the deployment process for users who may be less familiar with deploying smart contracts. Designed to be backwards compatible with the older StandardL2ERC20Factory contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/OptimismMintableERC20Factory.sol\":\"OptimismMintableERC20Factory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L2/interfaces/IOptimismERC20Factory.sol\":{\"keccak256\":\"0x28d85b4a67e8d606dbcbec54ac3ae2e12d7e61f8e746e9c4d6aaeb2a0ed98892\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a836ef43aaebb0a0c3f9448434aac5cb110d419c15725db93464edbff1409c1a\",\"dweb:/ipfs/QmWKerw9ZjK2N5ZFTmPEfHUzCb457JEAVSUhv5BF5AMBrh\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/OptimismMintableERC20Factory.sol\":{\"keccak256\":\"0x5ddc60301165422f44df4a5f341d02b8286234a84cc250c5c492eb55f04ee1f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8d418102364739911d1e0cb199e4a2a1befc8221bf686077ddef071e76399c\",\"dweb:/ipfs/QmWWanWUh4ruZqh7GdSWvR1WQPnjKngGKnLRKTzfaGGovS\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"deployer","type":"address","indexed":false}],"type":"event","name":"OptimismMintableERC20Created","anonymous":false},{"inputs":[{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"localToken","type":"address","indexed":true}],"type":"event","name":"StandardL2TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createOptimismMintableERC20","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"createOptimismMintableERC20WithDecimals","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createStandardL2Token","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deployments","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"BRIDGE()":{"custom:legacy":"","returns":{"_0":"Address of the StandardBridge on this chain."}},"createOptimismMintableERC20(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"params":{"_decimals":"ERC20 decimals","_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createStandardL2Token(address,string,string)":{"custom:legacy":"@notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the newer createOptimismMintableERC20 function, which has a more intuitive name.","params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"initialize(address)":{"params":{"_bridge":"Address of the StandardBridge on this chain."}}},"version":1},"userdoc":{"kind":"user","methods":{"BRIDGE()":{"notice":"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead."},"bridge()":{"notice":"Address of the StandardBridge on this chain."},"constructor":{"notice":"Constructs the OptimismMintableERC20Factory contract."},"createOptimismMintableERC20(address,string,string)":{"notice":"Creates an instance of the OptimismMintableERC20 contract."},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"notice":"Creates an instance of the OptimismMintableERC20 contract, with specified decimals."},"deployments(address)":{"notice":"Mapping of local token address to remote token address. This is used to keep track of the token deployments."},"initialize(address)":{"notice":"Initializes the contract."},"version()":{"notice":"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/OptimismMintableERC20Factory.sol":"OptimismMintableERC20Factory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L2/interfaces/IOptimismERC20Factory.sol":{"keccak256":"0x28d85b4a67e8d606dbcbec54ac3ae2e12d7e61f8e746e9c4d6aaeb2a0ed98892","urls":["bzz-raw://a836ef43aaebb0a0c3f9448434aac5cb110d419c15725db93464edbff1409c1a","dweb:/ipfs/QmWKerw9ZjK2N5ZFTmPEfHUzCb457JEAVSUhv5BF5AMBrh"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/OptimismMintableERC20Factory.sol":{"keccak256":"0x5ddc60301165422f44df4a5f341d02b8286234a84cc250c5c492eb55f04ee1f7","urls":["bzz-raw://cc8d418102364739911d1e0cb199e4a2a1befc8221bf686077ddef071e76399c","dweb:/ipfs/QmWWanWUh4ruZqh7GdSWvR1WQPnjKngGKnLRKTzfaGGovS"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":44324,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":44327,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":161820,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":161823,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"bridge","offset":0,"slot":"1","type":"t_address"},{"astId":161828,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"deployments","offset":0,"slot":"2","type":"t_mapping(t_address,t_address)"},{"astId":161833,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"__gap","offset":0,"slot":"3","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)48_storage":{"encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"BRIDGE()":{"notice":"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead."},"bridge()":{"notice":"Address of the StandardBridge on this chain."},"constructor":{"notice":"Constructs the OptimismMintableERC20Factory contract."},"createOptimismMintableERC20(address,string,string)":{"notice":"Creates an instance of the OptimismMintableERC20 contract."},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"notice":"Creates an instance of the OptimismMintableERC20 contract, with specified decimals."},"deployments(address)":{"notice":"Mapping of local token address to remote token address. This is used to keep track of the token deployments."},"initialize(address)":{"notice":"Initializes the contract."},"version()":{"notice":"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version."}},"events":{"OptimismMintableERC20Created(address,address,address)":{"notice":"Emitted whenever a new OptimismMintableERC20 is created."}},"notice":"OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 contracts on the network it's deployed to. Simplifies the deployment process for users who may be less familiar with deploying smart contracts. Designed to be backwards compatible with the older StandardL2ERC20Factory contract."},"devdoc":{"version":1,"kind":"dev","methods":{"BRIDGE()":{"returns":{"_0":"Address of the StandardBridge on this chain."}},"createOptimismMintableERC20(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"params":{"_decimals":"ERC20 decimals","_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createStandardL2Token(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"initialize(address)":{"params":{"_bridge":"Address of the StandardBridge on this chain."}}},"events":{"OptimismMintableERC20Created(address,address,address)":{"params":{"deployer":"Address of the account that deployed the token.","localToken":"Address of the created token on the local chain.","remoteToken":"Address of the corresponding token on the remote chain."}},"StandardL2TokenCreated(address,address)":{"params":{"localToken":"Address of the created token on the local chain.","remoteToken":"Address of the token on the remote chain."}}},"title":"OptimismMintableERC20Factory"},"ast":{"absolutePath":"src/universal/OptimismMintableERC20Factory.sol","id":162002,"exportedSymbols":{"IOptimismERC20Factory":[115913],"ISemver":[165319],"Initializable":[44468],"OptimismMintableERC20":[161800],"OptimismMintableERC20Factory":[162001]},"nodeType":"SourceUnit","src":"32:6209:386","nodes":[{"id":161802,"nodeType":"PragmaDirective","src":"32:23:386","nodes":[],"literals":["solidity","0.8",".15"]},{"id":161804,"nodeType":"ImportDirective","src":"57:80:386","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":161801,"symbolAliases":[{"foreign":{"id":161803,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161800,"src":"66:21:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161806,"nodeType":"ImportDirective","src":"138:63:386","nodes":[],"absolutePath":"src/universal/interfaces/ISemver.sol","file":"src/universal/interfaces/ISemver.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":165320,"symbolAliases":[{"foreign":{"id":161805,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165319,"src":"147:7:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161808,"nodeType":"ImportDirective","src":"202:86:386","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":44469,"symbolAliases":[{"foreign":{"id":161807,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44468,"src":"211:13:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161810,"nodeType":"ImportDirective","src":"289:84:386","nodes":[],"absolutePath":"src/L2/interfaces/IOptimismERC20Factory.sol","file":"src/L2/interfaces/IOptimismERC20Factory.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":115914,"symbolAliases":[{"foreign":{"id":161809,"name":"IOptimismERC20Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115913,"src":"298:21:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":162001,"nodeType":"ContractDefinition","src":"871:5369:386","nodes":[{"id":161820,"nodeType":"VariableDeclaration","src":"1109:29:386","nodes":[],"constant":false,"documentation":{"id":161818,"nodeType":"StructuredDocumentation","src":"964:140:386","text":"@custom:spacer OptimismMintableERC20Factory's initializer slot spacing\n @notice Spacer to avoid packing into the initializer slot"},"mutability":"mutable","name":"spacer_0_2_30","nameLocation":"1125:13:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"},"typeName":{"id":161819,"name":"bytes30","nodeType":"ElementaryTypeName","src":"1109:7:386","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"}},"visibility":"private"},{"id":161823,"nodeType":"VariableDeclaration","src":"1239:21:386","nodes":[],"constant":false,"documentation":{"id":161821,"nodeType":"StructuredDocumentation","src":"1145:89:386","text":"@notice Address of the StandardBridge on this chain.\n @custom:network-specific"},"functionSelector":"e78cea92","mutability":"mutable","name":"bridge","nameLocation":"1254:6:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161822,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":161828,"nodeType":"VariableDeclaration","src":"1408:46:386","nodes":[],"baseFunctions":[115912],"constant":false,"documentation":{"id":161824,"nodeType":"StructuredDocumentation","src":"1267:136:386","text":"@notice Mapping of local token address to remote token address.\n This is used to keep track of the token deployments."},"functionSelector":"316b3739","mutability":"mutable","name":"deployments","nameLocation":"1443:11:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":161827,"keyType":{"id":161825,"name":"address","nodeType":"ElementaryTypeName","src":"1416:7:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1408:27:386","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":161826,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":161833,"nodeType":"VariableDeclaration","src":"1681:25:386","nodes":[],"constant":false,"documentation":{"id":161829,"nodeType":"StructuredDocumentation","src":"1461:215:386","text":"@notice Reserve extra slots in the storage layout for future upgrades.\n A gap size of 48 was chosen here, so that the first slot used in a child contract\n would be a multiple of 50."},"mutability":"mutable","name":"__gap","nameLocation":"1701:5:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage","typeString":"uint256[48]"},"typeName":{"baseType":{"id":161830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:386","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":161832,"length":{"hexValue":"3438","id":161831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:2:386","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"ArrayTypeName","src":"1681:11:386","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage_ptr","typeString":"uint256[48]"}},"visibility":"private"},{"id":161840,"nodeType":"EventDefinition","src":"2078:86:386","nodes":[],"anonymous":false,"documentation":{"id":161834,"nodeType":"StructuredDocumentation","src":"1713:360:386","text":"@custom:legacy\n @notice Emitted whenever a new OptimismMintableERC20 is created. Legacy version of the newer\n OptimismMintableERC20Created event. We recommend relying on that event instead.\n @param remoteToken Address of the token on the remote chain.\n @param localToken Address of the created token on the local chain."},"eventSelector":"ceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf","name":"StandardL2TokenCreated","nameLocation":"2084:22:386","parameters":{"id":161839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161836,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"2123:11:386","nodeType":"VariableDeclaration","scope":161840,"src":"2107:27:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161835,"name":"address","nodeType":"ElementaryTypeName","src":"2107:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161838,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"2152:10:386","nodeType":"VariableDeclaration","scope":161840,"src":"2136:26:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161837,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2106:57:386"}},{"id":161849,"nodeType":"EventDefinition","src":"2477:110:386","nodes":[],"anonymous":false,"documentation":{"id":161841,"nodeType":"StructuredDocumentation","src":"2170:302:386","text":"@notice Emitted whenever a new OptimismMintableERC20 is created.\n @param localToken Address of the created token on the local chain.\n @param remoteToken Address of the corresponding token on the remote chain.\n @param deployer Address of the account that deployed the token."},"eventSelector":"52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb","name":"OptimismMintableERC20Created","nameLocation":"2483:28:386","parameters":{"id":161848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161843,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"2528:10:386","nodeType":"VariableDeclaration","scope":161849,"src":"2512:26:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161842,"name":"address","nodeType":"ElementaryTypeName","src":"2512:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161845,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"2556:11:386","nodeType":"VariableDeclaration","scope":161849,"src":"2540:27:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161844,"name":"address","nodeType":"ElementaryTypeName","src":"2540:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161847,"indexed":false,"mutability":"mutable","name":"deployer","nameLocation":"2577:8:386","nodeType":"VariableDeclaration","scope":161849,"src":"2569:16:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161846,"name":"address","nodeType":"ElementaryTypeName","src":"2569:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2511:75:386"}},{"id":161853,"nodeType":"VariableDeclaration","src":"2896:48:386","nodes":[],"baseFunctions":[165318],"constant":true,"documentation":{"id":161850,"nodeType":"StructuredDocumentation","src":"2593:298:386","text":"@notice The semver MUST be bumped any time that there is a change in\n the OptimismMintableERC20 token contract since this contract\n is responsible for deploying OptimismMintableERC20 contracts.\n @notice Semantic version.\n @custom:semver 1.10.1-beta.4"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2919:7:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161851,"name":"string","nodeType":"ElementaryTypeName","src":"2896:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e31302e312d626574612e34","id":161852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2929:15:386","typeDescriptions":{"typeIdentifier":"t_stringliteral_75ca9981864c20ace3def742ed3b1b47d766c3b833ff767f6a6a23bd4d51eba5","typeString":"literal_string \"1.10.1-beta.4\""},"value":"1.10.1-beta.4"},"visibility":"public"},{"id":161865,"nodeType":"FunctionDefinition","src":"3021:66:386","nodes":[],"body":{"id":161864,"nodeType":"Block","src":"3035:52:386","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":161860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3075:1:386","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":161859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3067:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161858,"name":"address","nodeType":"ElementaryTypeName","src":"3067:7:386","typeDescriptions":{}}},"id":161861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3067:10:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161857,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161878,"src":"3045:10:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":161862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_bridge"],"nodeType":"FunctionCall","src":"3045:35:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161863,"nodeType":"ExpressionStatement","src":"3045:35:386"}]},"documentation":{"id":161854,"nodeType":"StructuredDocumentation","src":"2951:65:386","text":"@notice Constructs the OptimismMintableERC20Factory contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":161855,"nodeType":"ParameterList","parameters":[],"src":"3032:2:386"},"returnParameters":{"id":161856,"nodeType":"ParameterList","parameters":[],"src":"3035:0:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":161878,"nodeType":"FunctionDefinition","src":"3203:89:386","nodes":[],"body":{"id":161877,"nodeType":"Block","src":"3259:33:386","nodes":[],"statements":[{"expression":{"id":161875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":161873,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"3269:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":161874,"name":"_bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161868,"src":"3278:7:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3269:16:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":161876,"nodeType":"ExpressionStatement","src":"3269:16:386"}]},"documentation":{"id":161866,"nodeType":"StructuredDocumentation","src":"3093:105:386","text":"@notice Initializes the contract.\n @param _bridge Address of the StandardBridge on this chain."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":161871,"kind":"modifierInvocation","modifierName":{"id":161870,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":44388,"src":"3247:11:386"},"nodeType":"ModifierInvocation","src":"3247:11:386"}],"name":"initialize","nameLocation":"3212:10:386","parameters":{"id":161869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161868,"mutability":"mutable","name":"_bridge","nameLocation":"3231:7:386","nodeType":"VariableDeclaration","scope":161878,"src":"3223:15:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161867,"name":"address","nodeType":"ElementaryTypeName","src":"3223:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3222:17:386"},"returnParameters":{"id":161872,"nodeType":"ParameterList","parameters":[],"src":"3259:0:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":161887,"nodeType":"FunctionDefinition","src":"3564:80:386","nodes":[],"body":{"id":161886,"nodeType":"Block","src":"3614:30:386","nodes":[],"statements":[{"expression":{"id":161884,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"3631:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161883,"id":161885,"nodeType":"Return","src":"3624:13:386"}]},"documentation":{"id":161879,"nodeType":"StructuredDocumentation","src":"3298:261:386","text":"@notice Getter function for the address of the StandardBridge on this chain.\n Public getter is legacy and will be removed in the future. Use `bridge` instead.\n @return Address of the StandardBridge on this chain.\n @custom:legacy"},"functionSelector":"ee9a31a2","implemented":true,"kind":"function","modifiers":[],"name":"BRIDGE","nameLocation":"3573:6:386","parameters":{"id":161880,"nodeType":"ParameterList","parameters":[],"src":"3579:2:386"},"returnParameters":{"id":161883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161887,"src":"3605:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161881,"name":"address","nodeType":"ElementaryTypeName","src":"3605:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3604:9:386"},"scope":162001,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":161906,"nodeType":"FunctionDefinition","src":"4067:255:386","nodes":[],"body":{"id":161905,"nodeType":"Block","src":"4241:81:386","nodes":[],"statements":[{"expression":{"arguments":[{"id":161900,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161890,"src":"4286:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161901,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161892,"src":"4300:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161902,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161894,"src":"4307:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":161899,"name":"createOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161926,"src":"4258:27:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$","typeString":"function (address,string memory,string memory) returns (address)"}},"id":161903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:57:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161898,"id":161904,"nodeType":"Return","src":"4251:64:386"}]},"documentation":{"id":161888,"nodeType":"StructuredDocumentation","src":"3650:412:386","text":"@custom:legacy\n @notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the\n newer createOptimismMintableERC20 function, which has a more intuitive name.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @return Address of the newly created token."},"functionSelector":"896f93d1","implemented":true,"kind":"function","modifiers":[],"name":"createStandardL2Token","nameLocation":"4076:21:386","parameters":{"id":161895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161890,"mutability":"mutable","name":"_remoteToken","nameLocation":"4115:12:386","nodeType":"VariableDeclaration","scope":161906,"src":"4107:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161889,"name":"address","nodeType":"ElementaryTypeName","src":"4107:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161892,"mutability":"mutable","name":"_name","nameLocation":"4151:5:386","nodeType":"VariableDeclaration","scope":161906,"src":"4137:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161891,"name":"string","nodeType":"ElementaryTypeName","src":"4137:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161894,"mutability":"mutable","name":"_symbol","nameLocation":"4180:7:386","nodeType":"VariableDeclaration","scope":161906,"src":"4166:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161893,"name":"string","nodeType":"ElementaryTypeName","src":"4166:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4097:96:386"},"returnParameters":{"id":161898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161906,"src":"4228:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161896,"name":"address","nodeType":"ElementaryTypeName","src":"4228:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4227:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":161926,"nodeType":"FunctionDefinition","src":"4607:275:386","nodes":[],"body":{"id":161925,"nodeType":"Block","src":"4785:97:386","nodes":[],"statements":[{"expression":{"arguments":[{"id":161919,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161909,"src":"4842:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161920,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161911,"src":"4856:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161921,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161913,"src":"4863:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3138","id":161922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4872:2:386","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"id":161918,"name":"createOptimismMintableERC20WithDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":162000,"src":"4802:39:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_address_$","typeString":"function (address,string memory,string memory,uint8) returns (address)"}},"id":161923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4802:73:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161917,"id":161924,"nodeType":"Return","src":"4795:80:386"}]},"documentation":{"id":161907,"nodeType":"StructuredDocumentation","src":"4328:274:386","text":"@notice Creates an instance of the OptimismMintableERC20 contract.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @return Address of the newly created token."},"functionSelector":"ce5ac90f","implemented":true,"kind":"function","modifiers":[],"name":"createOptimismMintableERC20","nameLocation":"4616:27:386","parameters":{"id":161914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161909,"mutability":"mutable","name":"_remoteToken","nameLocation":"4661:12:386","nodeType":"VariableDeclaration","scope":161926,"src":"4653:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161908,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161911,"mutability":"mutable","name":"_name","nameLocation":"4697:5:386","nodeType":"VariableDeclaration","scope":161926,"src":"4683:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161910,"name":"string","nodeType":"ElementaryTypeName","src":"4683:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161913,"mutability":"mutable","name":"_symbol","nameLocation":"4726:7:386","nodeType":"VariableDeclaration","scope":161926,"src":"4712:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161912,"name":"string","nodeType":"ElementaryTypeName","src":"4712:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4643:96:386"},"returnParameters":{"id":161917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161926,"src":"4772:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161915,"name":"address","nodeType":"ElementaryTypeName","src":"4772:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4771:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":162000,"nodeType":"FunctionDefinition","src":"5235:1003:386","nodes":[],"body":{"id":161999,"nodeType":"Block","src":"5450:788:386","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":161946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":161941,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5468:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":161944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:386","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":161943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5484:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161942,"name":"address","nodeType":"ElementaryTypeName","src":"5484:7:386","typeDescriptions":{}}},"id":161945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5484:10:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5468:26:386","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7573742070726f766964652072656d6f746520746f6b656e2061646472657373","id":161947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5496:65:386","typeDescriptions":{"typeIdentifier":"t_stringliteral_1fc9c38ce58e5889170de515a92b1e54913f12f8fd8aa9ab11446ca47e097779","typeString":"literal_string \"OptimismMintableERC20Factory: must provide remote token address\""},"value":"OptimismMintableERC20Factory: must provide remote token address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1fc9c38ce58e5889170de515a92b1e54913f12f8fd8aa9ab11446ca47e097779","typeString":"literal_string \"OptimismMintableERC20Factory: must provide remote token address\""}],"id":161940,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5460:7:386","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":161948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5460:102:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161949,"nodeType":"ExpressionStatement","src":"5460:102:386"},{"assignments":[161951],"declarations":[{"constant":false,"id":161951,"mutability":"mutable","name":"salt","nameLocation":"5581:4:386","nodeType":"VariableDeclaration","scope":161999,"src":"5573:12:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5573:7:386","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":161961,"initialValue":{"arguments":[{"arguments":[{"id":161955,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5609:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161956,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161931,"src":"5623:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161957,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161933,"src":"5630:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161958,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161935,"src":"5639:9:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":161953,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5598:3:386","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":161954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5598:10:386","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":161959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5598:51:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":161952,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5588:9:386","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":161960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5588:62:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5573:77:386"},{"assignments":[161963],"declarations":[{"constant":false,"id":161963,"mutability":"mutable","name":"localToken","nameLocation":"5669:10:386","nodeType":"VariableDeclaration","scope":161999,"src":"5661:18:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161962,"name":"address","nodeType":"ElementaryTypeName","src":"5661:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":161978,"initialValue":{"arguments":[{"arguments":[{"id":161971,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"5742:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161972,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5750:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161973,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161931,"src":"5764:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161974,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161933,"src":"5771:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161975,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161935,"src":"5780:9:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":161968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5702:25:386","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_OptimismMintableERC20_$161800_$","typeString":"function (address,address,string memory,string memory,uint8) returns (contract OptimismMintableERC20)"},"typeName":{"id":161967,"nodeType":"UserDefinedTypeName","pathNode":{"id":161966,"name":"OptimismMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":161800,"src":"5706:21:386"},"referencedDeclaration":161800,"src":"5706:21:386","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}}},"id":161970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["salt"],"nodeType":"FunctionCallOptions","options":[{"id":161969,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161951,"src":"5735:4:386","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"src":"5702:39:386","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_OptimismMintableERC20_$161800_$salt","typeString":"function (address,address,string memory,string memory,uint8) returns (contract OptimismMintableERC20)"}},"id":161976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5702:88:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}],"id":161965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5694:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161964,"name":"address","nodeType":"ElementaryTypeName","src":"5694:7:386","typeDescriptions":{}}},"id":161977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:97:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5661:130:386"},{"expression":{"id":161983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":161979,"name":"deployments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161828,"src":"5802:11:386","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":161981,"indexExpression":{"id":161980,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"5814:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5802:23:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":161982,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5828:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5802:38:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":161984,"nodeType":"ExpressionStatement","src":"5802:38:386"},{"eventCall":{"arguments":[{"id":161986,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5933:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161987,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"5947:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":161985,"name":"StandardL2TokenCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161840,"src":"5910:22:386","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":161988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5910:48:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161989,"nodeType":"EmitStatement","src":"5905:53:386"},{"eventCall":{"arguments":[{"id":161991,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"6166:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161992,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"6178:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":161993,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6192:3:386","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":161994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6192:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":161990,"name":"OptimismMintableERC20Created","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161849,"src":"6137:28:386","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":161995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:66:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161996,"nodeType":"EmitStatement","src":"6132:71:386"},{"expression":{"id":161997,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"6221:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161939,"id":161998,"nodeType":"Return","src":"6214:17:386"}]},"documentation":{"id":161927,"nodeType":"StructuredDocumentation","src":"4888:342:386","text":"@notice Creates an instance of the OptimismMintableERC20 contract, with specified decimals.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @param _decimals ERC20 decimals\n @return Address of the newly created token."},"functionSelector":"8cf0629c","implemented":true,"kind":"function","modifiers":[],"name":"createOptimismMintableERC20WithDecimals","nameLocation":"5244:39:386","parameters":{"id":161936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161929,"mutability":"mutable","name":"_remoteToken","nameLocation":"5301:12:386","nodeType":"VariableDeclaration","scope":162000,"src":"5293:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161928,"name":"address","nodeType":"ElementaryTypeName","src":"5293:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161931,"mutability":"mutable","name":"_name","nameLocation":"5337:5:386","nodeType":"VariableDeclaration","scope":162000,"src":"5323:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161930,"name":"string","nodeType":"ElementaryTypeName","src":"5323:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161933,"mutability":"mutable","name":"_symbol","nameLocation":"5366:7:386","nodeType":"VariableDeclaration","scope":162000,"src":"5352:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161932,"name":"string","nodeType":"ElementaryTypeName","src":"5352:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161935,"mutability":"mutable","name":"_decimals","nameLocation":"5389:9:386","nodeType":"VariableDeclaration","scope":162000,"src":"5383:15:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":161934,"name":"uint8","nodeType":"ElementaryTypeName","src":"5383:5:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5283:121:386"},"returnParameters":{"id":161939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":162000,"src":"5437:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161937,"name":"address","nodeType":"ElementaryTypeName","src":"5437:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5436:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":161812,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":165319,"src":"912:7:386"},"id":161813,"nodeType":"InheritanceSpecifier","src":"912:7:386"},{"baseName":{"id":161814,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":44468,"src":"921:13:386"},"id":161815,"nodeType":"InheritanceSpecifier","src":"921:13:386"},{"baseName":{"id":161816,"name":"IOptimismERC20Factory","nodeType":"IdentifierPath","referencedDeclaration":115913,"src":"936:21:386"},"id":161817,"nodeType":"InheritanceSpecifier","src":"936:21:386"}],"canonicalName":"OptimismMintableERC20Factory","contractDependencies":[161800],"contractKind":"contract","documentation":{"id":161811,"nodeType":"StructuredDocumentation","src":"375:496:386","text":"@custom:proxied true\n @custom:predeployed 0x4200000000000000000000000000000000000012\n @title OptimismMintableERC20Factory\n @notice OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20\n contracts on the network it's deployed to. Simplifies the deployment process for users\n who may be less familiar with deploying smart contracts. Designed to be backwards\n compatible with the older StandardL2ERC20Factory contract."},"fullyImplemented":true,"linearizedBaseContracts":[162001,115913,44468,165319],"name":"OptimismMintableERC20Factory","nameLocation":"880:28:386","scope":162002,"usedErrors":[]}],"license":"MIT"},"id":386} \ No newline at end of file diff --git a/op-e2e/celo/contracts/StandardBridge.json b/op-e2e/celo/contracts/StandardBridge.json new file mode 100644 index 0000000000000..18d7484b9ea5b --- /dev/null +++ b/op-e2e/celo/contracts/StandardBridge.json @@ -0,0 +1 @@ +{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeBridgeETH","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeInitiated\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:upgradeable\":\"@title StandardBridge\",\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}}},\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}}},\"stateVariables\":{\"messenger\":{\"custom:network-specific\":\"\"},\"otherBridge\":{\"custom:network-specific\":\"\"},\"spacer_0_2_30\":{\"custom:legacy\":\"@custom:spacer messenger\"},\"spacer_1_0_20\":{\"custom:legacy\":\"@custom:spacer l2TokenBridge\"}},\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op.\"}},\"notice\":\"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/StandardBridge.sol\":\"StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3\",\"dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L1/interfaces/IResourceMetering.sol\":{\"keccak256\":\"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990\",\"dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356\",\"dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753\",\"dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe\",\"dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf\"]},\"src/universal/interfaces/ICrossDomainMessenger.sol\":{\"keccak256\":\"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818\",\"dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeBridgeERC20"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeBridgeETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/StandardBridge.sol":"StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d","urls":["bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3","dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L1/interfaces/IResourceMetering.sol":{"keccak256":"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c","urls":["bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990","dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b","urls":["bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356","dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3","urls":["bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753","dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537","urls":["bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe","dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf"],"license":"MIT"},"src/universal/interfaces/ICrossDomainMessenger.sol":{"keccak256":"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4","urls":["bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818","dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":42550,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":42553,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":120296,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":120299,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":120306,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":120310,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(ICrossDomainMessenger)121721"},{"astId":120314,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)121076"},{"astId":120319,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(ICrossDomainMessenger)121721":{"encoding":"inplace","label":"contract ICrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)121076":{"encoding":"inplace","label":"contract StandardBridge","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ETHBridgeFinalized(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}},"ETHBridgeInitiated(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}}}},"ast":{"absolutePath":"src/universal/StandardBridge.sol","id":121077,"exportedSymbols":{"Address":[46285],"Constants":[112908],"ERC165Checker":[47367],"ICrossDomainMessenger":[121721],"IERC20":[43398],"ILegacyMintableERC20":[121854],"IOptimismMintableERC20":[121886],"Initializable":[42694],"OptimismMintableERC20":[118972],"SafeCall":[114979],"SafeERC20":[44593],"StandardBridge":[121076]},"nodeType":"SourceUnit","src":"32:22897:298","nodes":[{"id":120260,"nodeType":"PragmaDirective","src":"32:23:298","nodes":[],"literals":["solidity","0.8",".15"]},{"id":120262,"nodeType":"ImportDirective","src":"57:72:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":43399,"symbolAliases":[{"foreign":{"id":120261,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"66:6:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120264,"nodeType":"ImportDirective","src":"130:94:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":47368,"symbolAliases":[{"foreign":{"id":120263,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"139:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120266,"nodeType":"ImportDirective","src":"225:68:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":46286,"symbolAliases":[{"foreign":{"id":120265,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"234:7:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120268,"nodeType":"ImportDirective","src":"294:84:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":44594,"symbolAliases":[{"foreign":{"id":120267,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44593,"src":"303:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120270,"nodeType":"ImportDirective","src":"379:54:298","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":114980,"symbolAliases":[{"foreign":{"id":120269,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"388:8:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120272,"nodeType":"ImportDirective","src":"434:93:298","nodes":[],"absolutePath":"src/universal/interfaces/IOptimismMintableERC20.sol","file":"src/universal/interfaces/IOptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121887,"symbolAliases":[{"foreign":{"id":120271,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"443:22:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120274,"nodeType":"ImportDirective","src":"528:89:298","nodes":[],"absolutePath":"src/universal/interfaces/ILegacyMintableERC20.sol","file":"src/universal/interfaces/ILegacyMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121855,"symbolAliases":[{"foreign":{"id":120273,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"537:20:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120276,"nodeType":"ImportDirective","src":"618:91:298","nodes":[],"absolutePath":"src/universal/interfaces/ICrossDomainMessenger.sol","file":"src/universal/interfaces/ICrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121722,"symbolAliases":[{"foreign":{"id":120275,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121721,"src":"627:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120278,"nodeType":"ImportDirective","src":"710:80:298","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":118973,"symbolAliases":[{"foreign":{"id":120277,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"719:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120280,"nodeType":"ImportDirective","src":"791:86:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":42695,"symbolAliases":[{"foreign":{"id":120279,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42694,"src":"800:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120282,"nodeType":"ImportDirective","src":"878:56:298","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":112909,"symbolAliases":[{"foreign":{"id":120281,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"887:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":121076,"nodeType":"ContractDefinition","src":"1260:21668:298","nodes":[{"id":120289,"nodeType":"UsingForDirective","src":"1316:27:298","nodes":[],"global":false,"libraryName":{"id":120286,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":44593,"src":"1322:9:298"},"typeName":{"id":120288,"nodeType":"UserDefinedTypeName","pathNode":{"id":120287,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":43398,"src":"1336:6:298"},"referencedDeclaration":43398,"src":"1336:6:298","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}}},{"id":120293,"nodeType":"VariableDeclaration","src":"1439:60:298","nodes":[],"constant":true,"documentation":{"id":120290,"nodeType":"StructuredDocumentation","src":"1349:85:298","text":"@notice The L2 gas limit set when eth is depoisited using the receive() function."},"mutability":"constant","name":"RECEIVE_DEFAULT_GAS_LIMIT","nameLocation":"1464:25:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120291,"name":"uint32","nodeType":"ElementaryTypeName","src":"1439:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"3230305f303030","id":120292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:7:298","typeDescriptions":{"typeIdentifier":"t_rational_200000_by_1","typeString":"int_const 200000"},"value":"200_000"},"visibility":"internal"},{"id":120296,"nodeType":"VariableDeclaration","src":"1614:29:298","nodes":[],"constant":false,"documentation":{"id":120294,"nodeType":"StructuredDocumentation","src":"1506:103:298","text":"@custom:legacy\n @custom:spacer messenger\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_0_2_30","nameLocation":"1630:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"},"typeName":{"id":120295,"name":"bytes30","nodeType":"ElementaryTypeName","src":"1614:7:298","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"}},"visibility":"private"},{"id":120299,"nodeType":"VariableDeclaration","src":"1762:29:298","nodes":[],"constant":false,"documentation":{"id":120297,"nodeType":"StructuredDocumentation","src":"1650:107:298","text":"@custom:legacy\n @custom:spacer l2TokenBridge\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_1_0_20","nameLocation":"1778:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120298,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":120306,"nodeType":"VariableDeclaration","src":"1888:63:298","nodes":[],"constant":false,"documentation":{"id":120300,"nodeType":"StructuredDocumentation","src":"1798:85:298","text":"@notice Mapping that stores deposits for a given pair of local and remote tokens."},"functionSelector":"8f601f66","mutability":"mutable","name":"deposits","nameLocation":"1943:8:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":120305,"keyType":{"id":120301,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1888:47:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":120304,"keyType":{"id":120302,"name":"address","nodeType":"ElementaryTypeName","src":"1915:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1907:27:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":120303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":120310,"nodeType":"VariableDeclaration","src":"2042:38:298","nodes":[],"constant":false,"documentation":{"id":120307,"nodeType":"StructuredDocumentation","src":"1958:79:298","text":"@notice Messenger contract on this domain.\n @custom:network-specific"},"functionSelector":"3cb747bf","mutability":"mutable","name":"messenger","nameLocation":"2071:9:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120309,"nodeType":"UserDefinedTypeName","pathNode":{"id":120308,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"2042:21:298"},"referencedDeclaration":121721,"src":"2042:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"public"},{"id":120314,"nodeType":"VariableDeclaration","src":"2178:33:298","nodes":[],"constant":false,"documentation":{"id":120311,"nodeType":"StructuredDocumentation","src":"2087:86:298","text":"@notice Corresponding bridge on the other domain.\n @custom:network-specific"},"functionSelector":"c89701a2","mutability":"mutable","name":"otherBridge","nameLocation":"2200:11:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120313,"nodeType":"UserDefinedTypeName","pathNode":{"id":120312,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"2178:14:298"},"referencedDeclaration":121076,"src":"2178:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"public"},{"id":120319,"nodeType":"VariableDeclaration","src":"2457:25:298","nodes":[],"constant":false,"documentation":{"id":120315,"nodeType":"StructuredDocumentation","src":"2218:234:298","text":"@notice Reserve extra slots (to a total of 50) in the storage layout for future upgrades.\n A gap size of 45 was chosen here, so that the first slot used in a child contract\n would be a multiple of 50."},"mutability":"mutable","name":"__gap","nameLocation":"2477:5:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage","typeString":"uint256[45]"},"typeName":{"baseType":{"id":120316,"name":"uint256","nodeType":"ElementaryTypeName","src":"2457:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120318,"length":{"hexValue":"3435","id":120317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2465:2:298","typeDescriptions":{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"},"value":"45"},"nodeType":"ArrayTypeName","src":"2457:11:298","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage_ptr","typeString":"uint256[45]"}},"visibility":"private"},{"id":120330,"nodeType":"EventDefinition","src":"2771:100:298","nodes":[],"anonymous":false,"documentation":{"id":120320,"nodeType":"StructuredDocumentation","src":"2489:277:298","text":"@notice Emitted when an ETH bridge is initiated to the other chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af5","name":"ETHBridgeInitiated","nameLocation":"2777:18:298","parameters":{"id":120329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120322,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2812:4:298","nodeType":"VariableDeclaration","scope":120330,"src":"2796:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120321,"name":"address","nodeType":"ElementaryTypeName","src":"2796:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120324,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2834:2:298","nodeType":"VariableDeclaration","scope":120330,"src":"2818:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120323,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120326,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2846:6:298","nodeType":"VariableDeclaration","scope":120330,"src":"2838:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2838:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120328,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2860:9:298","nodeType":"VariableDeclaration","scope":120330,"src":"2854:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120327,"name":"bytes","nodeType":"ElementaryTypeName","src":"2854:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2795:75:298"}},{"id":120341,"nodeType":"EventDefinition","src":"3154:100:298","nodes":[],"anonymous":false,"documentation":{"id":120331,"nodeType":"StructuredDocumentation","src":"2877:272:298","text":"@notice Emitted when an ETH bridge is finalized on this chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d","name":"ETHBridgeFinalized","nameLocation":"3160:18:298","parameters":{"id":120340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120333,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3195:4:298","nodeType":"VariableDeclaration","scope":120341,"src":"3179:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120332,"name":"address","nodeType":"ElementaryTypeName","src":"3179:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120335,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3217:2:298","nodeType":"VariableDeclaration","scope":120341,"src":"3201:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120334,"name":"address","nodeType":"ElementaryTypeName","src":"3201:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120337,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3229:6:298","nodeType":"VariableDeclaration","scope":120341,"src":"3221:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120336,"name":"uint256","nodeType":"ElementaryTypeName","src":"3221:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120339,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3243:9:298","nodeType":"VariableDeclaration","scope":120341,"src":"3237:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120338,"name":"bytes","nodeType":"ElementaryTypeName","src":"3237:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3178:75:298"}},{"id":120356,"nodeType":"EventDefinition","src":"3690:205:298","nodes":[],"anonymous":false,"documentation":{"id":120342,"nodeType":"StructuredDocumentation","src":"3260:425:298","text":"@notice Emitted when an ERC20 bridge is initiated to the other chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf","name":"ERC20BridgeInitiated","nameLocation":"3696:20:298","parameters":{"id":120355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120344,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"3742:10:298","nodeType":"VariableDeclaration","scope":120356,"src":"3726:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120343,"name":"address","nodeType":"ElementaryTypeName","src":"3726:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120346,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"3778:11:298","nodeType":"VariableDeclaration","scope":120356,"src":"3762:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120345,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120348,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3815:4:298","nodeType":"VariableDeclaration","scope":120356,"src":"3799:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120347,"name":"address","nodeType":"ElementaryTypeName","src":"3799:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120350,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"3837:2:298","nodeType":"VariableDeclaration","scope":120356,"src":"3829:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120349,"name":"address","nodeType":"ElementaryTypeName","src":"3829:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120352,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3857:6:298","nodeType":"VariableDeclaration","scope":120356,"src":"3849:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120351,"name":"uint256","nodeType":"ElementaryTypeName","src":"3849:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120354,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3879:9:298","nodeType":"VariableDeclaration","scope":120356,"src":"3873:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120353,"name":"bytes","nodeType":"ElementaryTypeName","src":"3873:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3716:178:298"}},{"id":120371,"nodeType":"EventDefinition","src":"4326:205:298","nodes":[],"anonymous":false,"documentation":{"id":120357,"nodeType":"StructuredDocumentation","src":"3901:420:298","text":"@notice Emitted when an ERC20 bridge is finalized on this chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"d59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd","name":"ERC20BridgeFinalized","nameLocation":"4332:20:298","parameters":{"id":120370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120359,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"4378:10:298","nodeType":"VariableDeclaration","scope":120371,"src":"4362:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120358,"name":"address","nodeType":"ElementaryTypeName","src":"4362:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120361,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"4414:11:298","nodeType":"VariableDeclaration","scope":120371,"src":"4398:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120360,"name":"address","nodeType":"ElementaryTypeName","src":"4398:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120363,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"4451:4:298","nodeType":"VariableDeclaration","scope":120371,"src":"4435:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120362,"name":"address","nodeType":"ElementaryTypeName","src":"4435:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120365,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"4473:2:298","nodeType":"VariableDeclaration","scope":120371,"src":"4465:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120364,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120367,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4493:6:298","nodeType":"VariableDeclaration","scope":120371,"src":"4485:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120366,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120369,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"4515:9:298","nodeType":"VariableDeclaration","scope":120371,"src":"4509:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120368,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4352:178:298"}},{"id":120386,"nodeType":"ModifierDefinition","src":"4834:146:298","nodes":[],"body":{"id":120385,"nodeType":"Block","src":"4853:127:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4871:31:298","subExpression":{"arguments":[{"expression":{"id":120377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4891:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4891:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":120375,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"4872:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$46285_$","typeString":"type(library Address)"}},"id":120376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":46008,"src":"4872:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4872:30:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":120381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":120374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4863:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120383,"nodeType":"ExpressionStatement","src":"4863:99:298"},{"id":120384,"nodeType":"PlaceholderStatement","src":"4972:1:298"}]},"documentation":{"id":120372,"nodeType":"StructuredDocumentation","src":"4537:292:298","text":"@notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n calling code within their constructors, but also doesn't really matter since we're\n just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"4843:7:298","parameters":{"id":120373,"nodeType":"ParameterList","parameters":[],"src":"4850:2:298"},"virtual":false,"visibility":"internal"},{"id":120411,"nodeType":"ModifierDefinition","src":"5074:259:298","nodes":[],"body":{"id":120410,"nodeType":"Block","src":"5101:232:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5132:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5132:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120394,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5154:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5146:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120392,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:298","typeDescriptions":{}}},"id":120395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5132:32:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":120397,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5168:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":121717,"src":"5168:30:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5168:32:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120402,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5212:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5204:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120400,"name":"address","nodeType":"ElementaryTypeName","src":"5204:7:298","typeDescriptions":{}}},"id":120403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5204:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5168:56:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5132:92:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":120406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5238:67:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":120389,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5111:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5111:204:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120408,"nodeType":"ExpressionStatement","src":"5111:204:298"},{"id":120409,"nodeType":"PlaceholderStatement","src":"5325:1:298"}]},"documentation":{"id":120387,"nodeType":"StructuredDocumentation","src":"4986:83:298","text":"@notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"5083:15:298","parameters":{"id":120388,"nodeType":"ParameterList","parameters":[],"src":"5098:2:298"},"virtual":false,"visibility":"internal"},{"id":120432,"nodeType":"FunctionDefinition","src":"5523:237:298","nodes":[],"body":{"id":120431,"nodeType":"Block","src":"5685:75:298","nodes":[],"statements":[{"expression":{"id":120425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120423,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5695:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120424,"name":"_messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120415,"src":"5707:10:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"src":"5695:22:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120426,"nodeType":"ExpressionStatement","src":"5695:22:298"},{"expression":{"id":120429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120427,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5727:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120428,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120418,"src":"5741:12:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"src":"5727:26:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120430,"nodeType":"ExpressionStatement","src":"5727:26:298"}]},"documentation":{"id":120412,"nodeType":"StructuredDocumentation","src":"5339:179:298","text":"@notice Initializer.\n @param _messenger Contract for CrossDomainMessenger on this network.\n @param _otherBridge Contract for the other StandardBridge contract."},"implemented":true,"kind":"function","modifiers":[{"id":120421,"kind":"modifierInvocation","modifierName":{"id":120420,"name":"onlyInitializing","nodeType":"IdentifierPath","referencedDeclaration":42657,"src":"5664:16:298"},"nodeType":"ModifierInvocation","src":"5664:16:298"}],"name":"__StandardBridge_init","nameLocation":"5532:21:298","parameters":{"id":120419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120415,"mutability":"mutable","name":"_messenger","nameLocation":"5585:10:298","nodeType":"VariableDeclaration","scope":120432,"src":"5563:32:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120414,"nodeType":"UserDefinedTypeName","pathNode":{"id":120413,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"5563:21:298"},"referencedDeclaration":121721,"src":"5563:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"},{"constant":false,"id":120418,"mutability":"mutable","name":"_otherBridge","nameLocation":"5620:12:298","nodeType":"VariableDeclaration","scope":120432,"src":"5605:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120417,"nodeType":"UserDefinedTypeName","pathNode":{"id":120416,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"5605:14:298"},"referencedDeclaration":121076,"src":"5605:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"5553:85:298"},"returnParameters":{"id":120422,"nodeType":"ParameterList","parameters":[],"src":"5685:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120436,"nodeType":"FunctionDefinition","src":"5906:35:298","nodes":[],"documentation":{"id":120433,"nodeType":"StructuredDocumentation","src":"5766:135:298","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge.\n Must be implemented by contracts that inherit."},"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":120434,"nodeType":"ParameterList","parameters":[],"src":"5913:2:298"},"returnParameters":{"id":120435,"nodeType":"ParameterList","parameters":[],"src":"5940:0:298"},"scope":121076,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":120444,"nodeType":"FunctionDefinition","src":"6033:73:298","nodes":[],"documentation":{"id":120437,"nodeType":"StructuredDocumentation","src":"5947:81:298","text":"@notice Returns the address of the custom gas token and the token's decimals."},"implemented":false,"kind":"function","modifiers":[],"name":"gasPayingToken","nameLocation":"6042:14:298","parameters":{"id":120438,"nodeType":"ParameterList","parameters":[],"src":"6056:2:298"},"returnParameters":{"id":120443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6090:7:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120439,"name":"address","nodeType":"ElementaryTypeName","src":"6090:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6099:5:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":120441,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:298","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6089:16:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":120461,"nodeType":"FunctionDefinition","src":"6186:150:298","nodes":[],"body":{"id":120460,"nodeType":"Block","src":"6243:93:298","nodes":[],"statements":[{"assignments":[120451,null],"declarations":[{"constant":false,"id":120451,"mutability":"mutable","name":"token","nameLocation":"6262:5:298","nodeType":"VariableDeclaration","scope":120460,"src":"6254:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120450,"name":"address","nodeType":"ElementaryTypeName","src":"6254:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":120454,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":120452,"name":"gasPayingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120444,"src":"6272:14:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint8_$","typeString":"function () view returns (address,uint8)"}},"id":120453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6272:16:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint8_$","typeString":"tuple(address,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"6253:35:298"},{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120455,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120451,"src":"6305:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":120456,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"6314:9:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112908_$","typeString":"type(library Constants)"}},"id":120457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETHER","nodeType":"MemberAccess","referencedDeclaration":112874,"src":"6314:15:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6305:24:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120449,"id":120459,"nodeType":"Return","src":"6298:31:298"}]},"documentation":{"id":120445,"nodeType":"StructuredDocumentation","src":"6112:69:298","text":"@notice Returns whether the chain uses a custom gas token or not."},"implemented":true,"kind":"function","modifiers":[],"name":"isCustomGasToken","nameLocation":"6195:16:298","parameters":{"id":120446,"nodeType":"ParameterList","parameters":[],"src":"6211:2:298"},"returnParameters":{"id":120449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120461,"src":"6237:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120447,"name":"bool","nodeType":"ElementaryTypeName","src":"6237:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6236:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120471,"nodeType":"FunctionDefinition","src":"6570:100:298","nodes":[],"body":{"id":120470,"nodeType":"Block","src":"6637:33:298","nodes":[],"statements":[{"expression":{"id":120468,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"6654:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"functionReturnParameters":120467,"id":120469,"nodeType":"Return","src":"6647:16:298"}]},"documentation":{"id":120462,"nodeType":"StructuredDocumentation","src":"6342:223:298","text":"@notice Getter for messenger contract.\n Public getter is legacy and will be removed in the future. Use `messenger` instead.\n @return Contract of the messenger on this domain.\n @custom:legacy"},"functionSelector":"927ede2d","implemented":true,"kind":"function","modifiers":[],"name":"MESSENGER","nameLocation":"6579:9:298","parameters":{"id":120463,"nodeType":"ParameterList","parameters":[],"src":"6588:2:298"},"returnParameters":{"id":120467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120471,"src":"6614:21:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120465,"nodeType":"UserDefinedTypeName","pathNode":{"id":120464,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"6614:21:298"},"referencedDeclaration":121721,"src":"6614:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"}],"src":"6613:23:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120481,"nodeType":"FunctionDefinition","src":"6916:98:298","nodes":[],"body":{"id":120480,"nodeType":"Block","src":"6979:35:298","nodes":[],"statements":[{"expression":{"id":120478,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"6996:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"functionReturnParameters":120477,"id":120479,"nodeType":"Return","src":"6989:18:298"}]},"documentation":{"id":120472,"nodeType":"StructuredDocumentation","src":"6676:235:298","text":"@notice Getter for the other bridge contract.\n Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\n @return Contract of the bridge on the other network.\n @custom:legacy"},"functionSelector":"7f46ddb2","implemented":true,"kind":"function","modifiers":[],"name":"OTHER_BRIDGE","nameLocation":"6925:12:298","parameters":{"id":120473,"nodeType":"ParameterList","parameters":[],"src":"6937:2:298"},"returnParameters":{"id":120477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120481,"src":"6963:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120475,"nodeType":"UserDefinedTypeName","pathNode":{"id":120474,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"6963:14:298"},"referencedDeclaration":121076,"src":"6963:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"6962:16:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120490,"nodeType":"FunctionDefinition","src":"7297:82:298","nodes":[],"body":{"id":120489,"nodeType":"Block","src":"7350:29:298","nodes":[],"statements":[{"expression":{"hexValue":"66616c7365","id":120487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7367:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":120486,"id":120488,"nodeType":"Return","src":"7360:12:298"}]},"documentation":{"id":120482,"nodeType":"StructuredDocumentation","src":"7020:272:298","text":"@notice This function should return true if the contract is paused.\n On L1 this function will check the SuperchainConfig for its paused status.\n On L2 this function should be a no-op.\n @return Whether or not the contract is paused."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"7306:6:298","parameters":{"id":120483,"nodeType":"ParameterList","parameters":[],"src":"7312:2:298"},"returnParameters":{"id":120486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120490,"src":"7344:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120484,"name":"bool","nodeType":"ElementaryTypeName","src":"7344:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7343:6:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":120512,"nodeType":"FunctionDefinition","src":"7800:186:298","nodes":[],"body":{"id":120511,"nodeType":"Block","src":"7890:96:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120501,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7919:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7919:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7931:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7931:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120505,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7943:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"7943:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120507,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120493,"src":"7954:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120508,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120495,"src":"7968:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120500,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"7900:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7900:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120510,"nodeType":"ExpressionStatement","src":"7900:79:298"}]},"documentation":{"id":120491,"nodeType":"StructuredDocumentation","src":"7385:410:298","text":"@notice Sends ETH to the sender's address on the other chain.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"09fc8843","implemented":true,"kind":"function","modifiers":[{"id":120498,"kind":"modifierInvocation","modifierName":{"id":120497,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"7882:7:298"},"nodeType":"ModifierInvocation","src":"7882:7:298"}],"name":"bridgeETH","nameLocation":"7809:9:298","parameters":{"id":120496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120493,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7826:12:298","nodeType":"VariableDeclaration","scope":120512,"src":"7819:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120492,"name":"uint32","nodeType":"ElementaryTypeName","src":"7819:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120495,"mutability":"mutable","name":"_extraData","nameLocation":"7855:10:298","nodeType":"VariableDeclaration","scope":120512,"src":"7840:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120494,"name":"bytes","nodeType":"ElementaryTypeName","src":"7840:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7818:48:298"},"returnParameters":{"id":120499,"nodeType":"ParameterList","parameters":[],"src":"7890:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120533,"nodeType":"FunctionDefinition","src":"8997:186:298","nodes":[],"body":{"id":120532,"nodeType":"Block","src":"9094:89:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9123:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9123:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120525,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120515,"src":"9135:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120526,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9140:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"9140:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120528,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120517,"src":"9151:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120529,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120519,"src":"9165:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120522,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"9104:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9104:72:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120531,"nodeType":"ExpressionStatement","src":"9104:72:298"}]},"documentation":{"id":120513,"nodeType":"StructuredDocumentation","src":"7992:1000:298","text":"@notice Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a\n smart contract and the call fails, the ETH will be temporarily locked in the\n StandardBridge on the other chain until the call is replayed. If the call cannot be\n replayed with any amount of gas (call always reverts), then the ETH will be\n permanently locked in the StandardBridge on the other chain. ETH will also\n be locked if the receiver is the other bridge, because finalizeBridgeETH will revert\n in that case.\n @param _to Address of the receiver.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"e11013dd","implemented":true,"kind":"function","modifiers":[],"name":"bridgeETHTo","nameLocation":"9006:11:298","parameters":{"id":120520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120515,"mutability":"mutable","name":"_to","nameLocation":"9026:3:298","nodeType":"VariableDeclaration","scope":120533,"src":"9018:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120514,"name":"address","nodeType":"ElementaryTypeName","src":"9018:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120517,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9038:12:298","nodeType":"VariableDeclaration","scope":120533,"src":"9031:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120516,"name":"uint32","nodeType":"ElementaryTypeName","src":"9031:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120519,"mutability":"mutable","name":"_extraData","nameLocation":"9067:10:298","nodeType":"VariableDeclaration","scope":120533,"src":"9052:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120518,"name":"bytes","nodeType":"ElementaryTypeName","src":"9052:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9017:61:298"},"returnParameters":{"id":120521,"nodeType":"ParameterList","parameters":[],"src":"9094:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120562,"nodeType":"FunctionDefinition","src":"9824:349:298","nodes":[],"body":{"id":120561,"nodeType":"Block","src":"10050:123:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120550,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120536,"src":"10081:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120551,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120538,"src":"10094:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120552,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10108:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10108:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10120:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10120:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120556,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120540,"src":"10132:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120557,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120542,"src":"10141:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120558,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120544,"src":"10155:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120549,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"10060:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10060:106:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120560,"nodeType":"ExpressionStatement","src":"10060:106:298"}]},"documentation":{"id":120534,"nodeType":"StructuredDocumentation","src":"9189:630:298","text":"@notice Sends ERC20 tokens to the sender's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":120547,"kind":"modifierInvocation","modifierName":{"id":120546,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"10038:7:298"},"nodeType":"ModifierInvocation","src":"10038:7:298"}],"name":"bridgeERC20","nameLocation":"9833:11:298","parameters":{"id":120545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120536,"mutability":"mutable","name":"_localToken","nameLocation":"9862:11:298","nodeType":"VariableDeclaration","scope":120562,"src":"9854:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120535,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120538,"mutability":"mutable","name":"_remoteToken","nameLocation":"9891:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9883:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120537,"name":"address","nodeType":"ElementaryTypeName","src":"9883:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120540,"mutability":"mutable","name":"_amount","nameLocation":"9921:7:298","nodeType":"VariableDeclaration","scope":120562,"src":"9913:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120539,"name":"uint256","nodeType":"ElementaryTypeName","src":"9913:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120542,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9945:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9938:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120541,"name":"uint32","nodeType":"ElementaryTypeName","src":"9938:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120544,"mutability":"mutable","name":"_extraData","nameLocation":"9982:10:298","nodeType":"VariableDeclaration","scope":120562,"src":"9967:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120543,"name":"bytes","nodeType":"ElementaryTypeName","src":"9967:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9844:154:298"},"returnParameters":{"id":120548,"nodeType":"ParameterList","parameters":[],"src":"10050:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120590,"nodeType":"FunctionDefinition","src":"10867:349:298","nodes":[],"body":{"id":120589,"nodeType":"Block","src":"11100:116:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120579,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120565,"src":"11131:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120580,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120567,"src":"11144:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120581,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11158:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11158:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120583,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120569,"src":"11170:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120584,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120571,"src":"11175:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120585,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120573,"src":"11184:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120586,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120575,"src":"11198:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120578,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"11110:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11110:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120588,"nodeType":"ExpressionStatement","src":"11110:99:298"}]},"documentation":{"id":120563,"nodeType":"StructuredDocumentation","src":"10179:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"10876:13:298","parameters":{"id":120576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120565,"mutability":"mutable","name":"_localToken","nameLocation":"10907:11:298","nodeType":"VariableDeclaration","scope":120590,"src":"10899:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120564,"name":"address","nodeType":"ElementaryTypeName","src":"10899:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120567,"mutability":"mutable","name":"_remoteToken","nameLocation":"10936:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"10928:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120566,"name":"address","nodeType":"ElementaryTypeName","src":"10928:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120569,"mutability":"mutable","name":"_to","nameLocation":"10966:3:298","nodeType":"VariableDeclaration","scope":120590,"src":"10958:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120568,"name":"address","nodeType":"ElementaryTypeName","src":"10958:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120571,"mutability":"mutable","name":"_amount","nameLocation":"10987:7:298","nodeType":"VariableDeclaration","scope":120590,"src":"10979:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120570,"name":"uint256","nodeType":"ElementaryTypeName","src":"10979:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120573,"mutability":"mutable","name":"_minGasLimit","nameLocation":"11011:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"11004:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120572,"name":"uint32","nodeType":"ElementaryTypeName","src":"11004:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120575,"mutability":"mutable","name":"_extraData","nameLocation":"11048:10:298","nodeType":"VariableDeclaration","scope":120590,"src":"11033:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120574,"name":"bytes","nodeType":"ElementaryTypeName","src":"11033:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10889:175:298"},"returnParameters":{"id":120577,"nodeType":"ParameterList","parameters":[],"src":"11100:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120672,"nodeType":"FunctionDefinition","src":"11780:1007:298","nodes":[],"body":{"id":120671,"nodeType":"Block","src":"11976:811:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120605,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"11994:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11994:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12006:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11994:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12013:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11986:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120611,"nodeType":"ExpressionStatement","src":"11986:52:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120613,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"12056:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12056:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12078:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12056:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12085:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12048:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12048:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120619,"nodeType":"ExpressionStatement","src":"12048:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12161:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"12161:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120623,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12174:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12161:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20616d6f756e742073656e7420646f6573206e6f74206d6174636820616d6f756e74207265717569726564","id":120625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12183:60:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""},"value":"StandardBridge: amount sent does not match amount required"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""}],"id":120620,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12153:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12153:91:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120627,"nodeType":"ExpressionStatement","src":"12153:91:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120629,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12262:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120632,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12277:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12269:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120630,"name":"address","nodeType":"ElementaryTypeName","src":"12269:7:298","typeDescriptions":{}}},"id":120633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12269:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12262:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f2073656c66","id":120635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12284:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""},"value":"StandardBridge: cannot send to self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""}],"id":120628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12254:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12254:68:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120637,"nodeType":"ExpressionStatement","src":"12254:68:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120639,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12340:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120642,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"12355:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12347:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120640,"name":"address","nodeType":"ElementaryTypeName","src":"12347:7:298","typeDescriptions":{}}},"id":120643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12347:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12340:25:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d657373656e676572","id":120645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12367:42:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""},"value":"StandardBridge: cannot send to messenger"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""}],"id":120638,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12332:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12332:78:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120647,"nodeType":"ExpressionStatement","src":"12332:78:298"},{"expression":{"arguments":[{"id":120649,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"12612:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120650,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12619:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120651,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12624:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120652,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120599,"src":"12633:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120648,"name":"_emitETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121023,"src":"12588:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12588:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120654,"nodeType":"ExpressionStatement","src":"12588:56:298"},{"assignments":[120656],"declarations":[{"constant":false,"id":120656,"mutability":"mutable","name":"success","nameLocation":"12660:7:298","nodeType":"VariableDeclaration","scope":120671,"src":"12655:12:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120655,"name":"bool","nodeType":"ElementaryTypeName","src":"12655:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":120665,"initialValue":{"arguments":[{"id":120659,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12684:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":120660,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"12689:7:298","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":120661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12689:9:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120662,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12700:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":120663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"12709:5:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":120657,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"12670:8:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$114979_$","typeString":"type(library SafeCall)"}},"id":120658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":114889,"src":"12670:13:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":120664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12670:45:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12655:60:298"},{"expression":{"arguments":[{"id":120667,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120656,"src":"12733:7:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20455448207472616e73666572206661696c6564","id":120668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12742:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""},"value":"StandardBridge: ETH transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""}],"id":120666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12725:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12725:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120670,"nodeType":"ExpressionStatement","src":"12725:55:298"}]},"documentation":{"id":120591,"nodeType":"StructuredDocumentation","src":"11222:553:298","text":"@notice Finalizes an ETH bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"1635f5fd","implemented":true,"kind":"function","modifiers":[{"id":120602,"kind":"modifierInvocation","modifierName":{"id":120601,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"11956:15:298"},"nodeType":"ModifierInvocation","src":"11956:15:298"}],"name":"finalizeBridgeETH","nameLocation":"11789:17:298","parameters":{"id":120600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120593,"mutability":"mutable","name":"_from","nameLocation":"11824:5:298","nodeType":"VariableDeclaration","scope":120672,"src":"11816:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120592,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120595,"mutability":"mutable","name":"_to","nameLocation":"11847:3:298","nodeType":"VariableDeclaration","scope":120672,"src":"11839:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120594,"name":"address","nodeType":"ElementaryTypeName","src":"11839:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120597,"mutability":"mutable","name":"_amount","nameLocation":"11868:7:298","nodeType":"VariableDeclaration","scope":120672,"src":"11860:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120596,"name":"uint256","nodeType":"ElementaryTypeName","src":"11860:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120599,"mutability":"mutable","name":"_extraData","nameLocation":"11900:10:298","nodeType":"VariableDeclaration","scope":120672,"src":"11885:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120598,"name":"bytes","nodeType":"ElementaryTypeName","src":"11885:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11806:110:298"},"returnParameters":{"id":120603,"nodeType":"ParameterList","parameters":[],"src":"11976:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120752,"nodeType":"FunctionDefinition","src":"13519:1084:298","nodes":[],"body":{"id":120751,"nodeType":"Block","src":"13760:843:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120691,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"13778:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13778:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13790:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13778:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13797:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13770:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13770:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120697,"nodeType":"ExpressionStatement","src":"13770:52:298"},{"condition":{"arguments":[{"id":120699,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13861:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120698,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"13836:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13836:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120740,"nodeType":"Block","src":"14153:168:298","statements":[{"expression":{"id":120730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120718,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14167:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120721,"indexExpression":{"id":120719,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14176:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14167:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120722,"indexExpression":{"id":120720,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14189:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14167:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120723,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14205:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120725,"indexExpression":{"id":120724,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14214:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120727,"indexExpression":{"id":120726,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14227:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":120728,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14243:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14205:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14167:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120731,"nodeType":"ExpressionStatement","src":"14167:83:298"},{"expression":{"arguments":[{"id":120736,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14297:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120737,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14302:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120733,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14271:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"14264:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":44344,"src":"14264:32:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,uint256)"}},"id":120738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120739,"nodeType":"ExpressionStatement","src":"14264:46:298"}]},"id":120741,"nodeType":"IfStatement","src":"13832:489:298","trueBody":{"id":120717,"nodeType":"Block","src":"13875:272:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120703,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13934:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120704,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"13947:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120702,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"13914:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13914:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13978:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13889:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13889:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120708,"nodeType":"ExpressionStatement","src":"13889:179:298"},{"expression":{"arguments":[{"id":120713,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14123:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120714,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14128:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120710,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14105:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120709,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"14083:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":118872,"src":"14083:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:53:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120716,"nodeType":"ExpressionStatement","src":"14083:53:298"}]}},{"expression":{"arguments":[{"id":120743,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14537:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120744,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14550:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120745,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120679,"src":"14564:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120746,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14571:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120747,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14576:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120748,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120685,"src":"14585:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120742,"name":"_emitERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121075,"src":"14511:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14511:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120750,"nodeType":"ExpressionStatement","src":"14511:85:298"}]},"documentation":{"id":120673,"nodeType":"StructuredDocumentation","src":"12793:721:298","text":"@notice Finalizes an ERC20 bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"0166a07a","implemented":true,"kind":"function","modifiers":[{"id":120688,"kind":"modifierInvocation","modifierName":{"id":120687,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"13740:15:298"},"nodeType":"ModifierInvocation","src":"13740:15:298"}],"name":"finalizeBridgeERC20","nameLocation":"13528:19:298","parameters":{"id":120686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120675,"mutability":"mutable","name":"_localToken","nameLocation":"13565:11:298","nodeType":"VariableDeclaration","scope":120752,"src":"13557:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120674,"name":"address","nodeType":"ElementaryTypeName","src":"13557:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120677,"mutability":"mutable","name":"_remoteToken","nameLocation":"13594:12:298","nodeType":"VariableDeclaration","scope":120752,"src":"13586:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120676,"name":"address","nodeType":"ElementaryTypeName","src":"13586:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120679,"mutability":"mutable","name":"_from","nameLocation":"13624:5:298","nodeType":"VariableDeclaration","scope":120752,"src":"13616:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120678,"name":"address","nodeType":"ElementaryTypeName","src":"13616:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120681,"mutability":"mutable","name":"_to","nameLocation":"13647:3:298","nodeType":"VariableDeclaration","scope":120752,"src":"13639:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120680,"name":"address","nodeType":"ElementaryTypeName","src":"13639:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120683,"mutability":"mutable","name":"_amount","nameLocation":"13668:7:298","nodeType":"VariableDeclaration","scope":120752,"src":"13660:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120682,"name":"uint256","nodeType":"ElementaryTypeName","src":"13660:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120685,"mutability":"mutable","name":"_extraData","nameLocation":"13700:10:298","nodeType":"VariableDeclaration","scope":120752,"src":"13685:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120684,"name":"bytes","nodeType":"ElementaryTypeName","src":"13685:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13547:169:298"},"returnParameters":{"id":120689,"nodeType":"ParameterList","parameters":[],"src":"13760:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":120812,"nodeType":"FunctionDefinition","src":"15191:894:298","nodes":[],"body":{"id":120811,"nodeType":"Block","src":"15377:708:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120767,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"15395:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15395:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15417:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15395:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15424:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15387:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15387:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120773,"nodeType":"ExpressionStatement","src":"15387:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120775,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15500:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"15500:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120777,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15513:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15500:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a206272696467696e6720455448206d75737420696e636c7564652073756666696369656e74204554482076616c7565","id":120779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15522:64:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""},"value":"StandardBridge: bridging ETH must include sufficient ETH value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""}],"id":120774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15492:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15492:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120781,"nodeType":"ExpressionStatement","src":"15492:95:298"},{"expression":{"arguments":[{"id":120783,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15789:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120784,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"15796:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120785,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15801:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120786,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"15810:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120782,"name":"_emitETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121003,"src":"15765:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15765:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120788,"nodeType":"ExpressionStatement","src":"15765:56:298"},{"expression":{"arguments":[{"arguments":[{"id":120796,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"15903:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15895:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120794,"name":"address","nodeType":"ElementaryTypeName","src":"15895:7:298","typeDescriptions":{}}},"id":120797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15895:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120800,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15962:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeETH","nodeType":"MemberAccess","referencedDeclaration":120672,"src":"15962:22:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory) payable external"}},"id":120802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15962:31:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120803,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15995:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120804,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"16002:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120805,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"16007:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120806,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"16016:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120798,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15939:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15939:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15939:88:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120808,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120761,"src":"16055:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120789,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"15832:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"15832:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":120792,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15862:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"15832:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$value","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"15832:246:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120810,"nodeType":"ExpressionStatement","src":"15832:246:298"}]},"documentation":{"id":120753,"nodeType":"StructuredDocumentation","src":"14609:577:298","text":"@notice Initiates a bridge of ETH through the CrossDomainMessenger.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeETH","nameLocation":"15200:18:298","parameters":{"id":120764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120755,"mutability":"mutable","name":"_from","nameLocation":"15236:5:298","nodeType":"VariableDeclaration","scope":120812,"src":"15228:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120754,"name":"address","nodeType":"ElementaryTypeName","src":"15228:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120757,"mutability":"mutable","name":"_to","nameLocation":"15259:3:298","nodeType":"VariableDeclaration","scope":120812,"src":"15251:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120756,"name":"address","nodeType":"ElementaryTypeName","src":"15251:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120759,"mutability":"mutable","name":"_amount","nameLocation":"15280:7:298","nodeType":"VariableDeclaration","scope":120812,"src":"15272:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120758,"name":"uint256","nodeType":"ElementaryTypeName","src":"15272:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120761,"mutability":"mutable","name":"_minGasLimit","nameLocation":"15304:12:298","nodeType":"VariableDeclaration","scope":120812,"src":"15297:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120760,"name":"uint32","nodeType":"ElementaryTypeName","src":"15297:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120763,"mutability":"mutable","name":"_extraData","nameLocation":"15339:10:298","nodeType":"VariableDeclaration","scope":120812,"src":"15326:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120762,"name":"bytes","nodeType":"ElementaryTypeName","src":"15326:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15218:137:298"},"returnParameters":{"id":120765,"nodeType":"ParameterList","parameters":[],"src":"15377:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120918,"nodeType":"FunctionDefinition","src":"16779:1751:298","nodes":[],"body":{"id":120917,"nodeType":"Block","src":"17026:1504:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17044:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"17044:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":120833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17057:1:298","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17044:14:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e642076616c7565","id":120835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17060:35:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""},"value":"StandardBridge: cannot send value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""}],"id":120830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17036:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17036:60:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120837,"nodeType":"ExpressionStatement","src":"17036:60:298"},{"condition":{"arguments":[{"id":120839,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17136:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120838,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"17111:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17111:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120884,"nodeType":"Block","src":"17430:189:298","statements":[{"expression":{"arguments":[{"id":120862,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17481:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":120865,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17496:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17488:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120863,"name":"address","nodeType":"ElementaryTypeName","src":"17488:7:298","typeDescriptions":{}}},"id":120866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17488:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120867,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17503:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120859,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17451:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120858,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"17444:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":44370,"src":"17444:36:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":120868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:67:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120869,"nodeType":"ExpressionStatement","src":"17444:67:298"},{"expression":{"id":120882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120870,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17525:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120873,"indexExpression":{"id":120871,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17534:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17525:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120874,"indexExpression":{"id":120872,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17547:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17525:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120875,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17563:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120877,"indexExpression":{"id":120876,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17572:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120879,"indexExpression":{"id":120878,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17585:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":120880,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17601:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17563:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17525:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120883,"nodeType":"ExpressionStatement","src":"17525:83:298"}]},"id":120885,"nodeType":"IfStatement","src":"17107:512:298","trueBody":{"id":120857,"nodeType":"Block","src":"17150:274:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120843,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17209:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120844,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17222:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120842,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"17189:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17189:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17253:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120841,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17164:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17164:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120848,"nodeType":"ExpressionStatement","src":"17164:179:298"},{"expression":{"arguments":[{"id":120853,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17398:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120854,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17405:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120850,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17380:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120849,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"17358:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":118893,"src":"17358:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120856,"nodeType":"ExpressionStatement","src":"17358:55:298"}]}},{"expression":{"arguments":[{"id":120887,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17835:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120888,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17848:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120889,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17862:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120890,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"17869:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120891,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17874:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120892,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"17883:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120886,"name":"_emitERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121049,"src":"17809:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17809:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120894,"nodeType":"ExpressionStatement","src":"17809:85:298"},{"expression":{"arguments":[{"arguments":[{"id":120900,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"17958:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17950:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120898,"name":"address","nodeType":"ElementaryTypeName","src":"17950:7:298","typeDescriptions":{}}},"id":120901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17950:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120904,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18034:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeERC20","nodeType":"MemberAccess","referencedDeclaration":120752,"src":"18034:24:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory) external"}},"id":120906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"18034:33:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120907,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"18320:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120908,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"18350:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120909,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"18379:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120910,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"18402:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120911,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"18423:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120912,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"18448:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17994:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17994:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17994:478:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120914,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120825,"src":"18500:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120895,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"17905:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"17905:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"17905:618:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120916,"nodeType":"ExpressionStatement","src":"17905:618:298"}]},"documentation":{"id":120813,"nodeType":"StructuredDocumentation","src":"16091:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeERC20","nameLocation":"16788:20:298","parameters":{"id":120828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120815,"mutability":"mutable","name":"_localToken","nameLocation":"16826:11:298","nodeType":"VariableDeclaration","scope":120918,"src":"16818:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120814,"name":"address","nodeType":"ElementaryTypeName","src":"16818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120817,"mutability":"mutable","name":"_remoteToken","nameLocation":"16855:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16847:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120816,"name":"address","nodeType":"ElementaryTypeName","src":"16847:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120819,"mutability":"mutable","name":"_from","nameLocation":"16885:5:298","nodeType":"VariableDeclaration","scope":120918,"src":"16877:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120818,"name":"address","nodeType":"ElementaryTypeName","src":"16877:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120821,"mutability":"mutable","name":"_to","nameLocation":"16908:3:298","nodeType":"VariableDeclaration","scope":120918,"src":"16900:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120820,"name":"address","nodeType":"ElementaryTypeName","src":"16900:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120823,"mutability":"mutable","name":"_amount","nameLocation":"16929:7:298","nodeType":"VariableDeclaration","scope":120918,"src":"16921:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120822,"name":"uint256","nodeType":"ElementaryTypeName","src":"16921:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120825,"mutability":"mutable","name":"_minGasLimit","nameLocation":"16953:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16946:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120824,"name":"uint32","nodeType":"ElementaryTypeName","src":"16946:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120827,"mutability":"mutable","name":"_extraData","nameLocation":"16988:10:298","nodeType":"VariableDeclaration","scope":120918,"src":"16975:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120826,"name":"bytes","nodeType":"ElementaryTypeName","src":"16975:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16808:196:298"},"returnParameters":{"id":120829,"nodeType":"ParameterList","parameters":[],"src":"17026:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120945,"nodeType":"FunctionDefinition","src":"18794:279:298","nodes":[],"body":{"id":120944,"nodeType":"Block","src":"18873:200:298","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":120928,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"18922:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120930,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"18935:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120929,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18930:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18930:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"18930:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120926,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18890:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18890:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18890:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":120936,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"19017:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120938,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19030:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}],"id":120937,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19025:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19025:28:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOptimismMintableERC20_$121886","typeString":"type(contract IOptimismMintableERC20)"}},"id":120940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19025:40:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120934,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18985:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18985:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18985:81:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18890:176:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120925,"id":120943,"nodeType":"Return","src":"18883:183:298"}]},"documentation":{"id":120919,"nodeType":"StructuredDocumentation","src":"18536:253:298","text":"@notice Checks if a given address is an OptimismMintableERC20. Not perfect, but good enough.\n Just the way we like it.\n @param _token Address of the token to check.\n @return True if the token is an OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isOptimismMintableERC20","nameLocation":"18803:24:298","parameters":{"id":120922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120921,"mutability":"mutable","name":"_token","nameLocation":"18836:6:298","nodeType":"VariableDeclaration","scope":120945,"src":"18828:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120920,"name":"address","nodeType":"ElementaryTypeName","src":"18828:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18827:16:298"},"returnParameters":{"id":120925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120945,"src":"18867:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120923,"name":"bool","nodeType":"ElementaryTypeName","src":"18867:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18866:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120983,"nodeType":"FunctionDefinition","src":"19520:410:298","nodes":[],"body":{"id":120982,"nodeType":"Block","src":"19623:307:298","nodes":[],"statements":[{"condition":{"arguments":[{"id":120957,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19669:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120959,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19690:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19685:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19685:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19685:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120955,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"19637:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"19637:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19637:87:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120980,"nodeType":"Block","src":"19825:99:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120972,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19846:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120974,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19884:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120973,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19861:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}},"id":120975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:38:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismMintableERC20_$121886","typeString":"contract IOptimismMintableERC20"}},"id":120976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"remoteToken","nodeType":"MemberAccess","referencedDeclaration":121866,"src":"19861:50:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19846:67:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120979,"nodeType":"Return","src":"19839:74:298"}]},"id":120981,"nodeType":"IfStatement","src":"19633:291:298","trueBody":{"id":120971,"nodeType":"Block","src":"19726:93:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120963,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19747:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120965,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19783:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120964,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19762:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}},"id":120966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:36:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILegacyMintableERC20_$121854","typeString":"contract ILegacyMintableERC20"}},"id":120967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":121839,"src":"19762:44:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19747:61:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120970,"nodeType":"Return","src":"19740:68:298"}]}}]},"documentation":{"id":120946,"nodeType":"StructuredDocumentation","src":"19079:436:298","text":"@notice Checks if the \"other token\" is the correct pair token for the OptimismMintableERC20.\n Calls can be saved in the future by combining this logic with\n `_isOptimismMintableERC20`.\n @param _mintableToken OptimismMintableERC20 to check against.\n @param _otherToken Pair token to check.\n @return True if the other token is the correct pair token for the OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isCorrectTokenPair","nameLocation":"19529:19:298","parameters":{"id":120951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120948,"mutability":"mutable","name":"_mintableToken","nameLocation":"19557:14:298","nodeType":"VariableDeclaration","scope":120983,"src":"19549:22:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120947,"name":"address","nodeType":"ElementaryTypeName","src":"19549:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120950,"mutability":"mutable","name":"_otherToken","nameLocation":"19581:11:298","nodeType":"VariableDeclaration","scope":120983,"src":"19573:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120949,"name":"address","nodeType":"ElementaryTypeName","src":"19573:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19548:45:298"},"returnParameters":{"id":120954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120983,"src":"19617:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120952,"name":"bool","nodeType":"ElementaryTypeName","src":"19617:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19616:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":121003,"nodeType":"FunctionDefinition","src":"20306:251:298","nodes":[],"body":{"id":121002,"nodeType":"Block","src":"20484:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":120996,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120986,"src":"20518:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120997,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120988,"src":"20525:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120998,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120990,"src":"20530:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120999,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120992,"src":"20539:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120995,"name":"ETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120330,"src":"20499:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20499:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121001,"nodeType":"EmitStatement","src":"20494:56:298"}]},"documentation":{"id":120984,"nodeType":"StructuredDocumentation","src":"19936:365:298","text":"@notice Emits the ETHBridgeInitiated event and if necessary the appropriate legacy event\n when an ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"20315:23:298","parameters":{"id":120993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120986,"mutability":"mutable","name":"_from","nameLocation":"20356:5:298","nodeType":"VariableDeclaration","scope":121003,"src":"20348:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120985,"name":"address","nodeType":"ElementaryTypeName","src":"20348:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120988,"mutability":"mutable","name":"_to","nameLocation":"20379:3:298","nodeType":"VariableDeclaration","scope":121003,"src":"20371:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120987,"name":"address","nodeType":"ElementaryTypeName","src":"20371:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120990,"mutability":"mutable","name":"_amount","nameLocation":"20400:7:298","nodeType":"VariableDeclaration","scope":121003,"src":"20392:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20392:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120992,"mutability":"mutable","name":"_extraData","nameLocation":"20430:10:298","nodeType":"VariableDeclaration","scope":121003,"src":"20417:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120991,"name":"bytes","nodeType":"ElementaryTypeName","src":"20417:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20338:108:298"},"returnParameters":{"id":120994,"nodeType":"ParameterList","parameters":[],"src":"20484:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121023,"nodeType":"FunctionDefinition","src":"20927:251:298","nodes":[],"body":{"id":121022,"nodeType":"Block","src":"21105:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121016,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121006,"src":"21139:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121017,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121008,"src":"21146:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121018,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121010,"src":"21151:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121019,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121012,"src":"21160:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121015,"name":"ETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120341,"src":"21120:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21120:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121021,"nodeType":"EmitStatement","src":"21115:56:298"}]},"documentation":{"id":121004,"nodeType":"StructuredDocumentation","src":"20563:359:298","text":"@notice Emits the ETHBridgeFinalized and if necessary the appropriate legacy event when an\n ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"20936:23:298","parameters":{"id":121013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121006,"mutability":"mutable","name":"_from","nameLocation":"20977:5:298","nodeType":"VariableDeclaration","scope":121023,"src":"20969:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121005,"name":"address","nodeType":"ElementaryTypeName","src":"20969:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121008,"mutability":"mutable","name":"_to","nameLocation":"21000:3:298","nodeType":"VariableDeclaration","scope":121023,"src":"20992:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121007,"name":"address","nodeType":"ElementaryTypeName","src":"20992:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121010,"mutability":"mutable","name":"_amount","nameLocation":"21021:7:298","nodeType":"VariableDeclaration","scope":121023,"src":"21013:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121009,"name":"uint256","nodeType":"ElementaryTypeName","src":"21013:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121012,"mutability":"mutable","name":"_extraData","nameLocation":"21051:10:298","nodeType":"VariableDeclaration","scope":121023,"src":"21038:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121011,"name":"bytes","nodeType":"ElementaryTypeName","src":"21038:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20959:108:298"},"returnParameters":{"id":121014,"nodeType":"ParameterList","parameters":[],"src":"21105:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121049,"nodeType":"FunctionDefinition","src":"21711:341:298","nodes":[],"body":{"id":121048,"nodeType":"Block","src":"21950:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121040,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121026,"src":"21986:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121041,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121028,"src":"21999:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121042,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121030,"src":"22013:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121043,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121032,"src":"22020:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121044,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121034,"src":"22025:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121045,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121036,"src":"22034:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121039,"name":"ERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120356,"src":"21965:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21965:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121047,"nodeType":"EmitStatement","src":"21960:85:298"}]},"documentation":{"id":121024,"nodeType":"StructuredDocumentation","src":"21184:522:298","text":"@notice Emits the ERC20BridgeInitiated event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"21720:25:298","parameters":{"id":121037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121026,"mutability":"mutable","name":"_localToken","nameLocation":"21763:11:298","nodeType":"VariableDeclaration","scope":121049,"src":"21755:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121025,"name":"address","nodeType":"ElementaryTypeName","src":"21755:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121028,"mutability":"mutable","name":"_remoteToken","nameLocation":"21792:12:298","nodeType":"VariableDeclaration","scope":121049,"src":"21784:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121027,"name":"address","nodeType":"ElementaryTypeName","src":"21784:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121030,"mutability":"mutable","name":"_from","nameLocation":"21822:5:298","nodeType":"VariableDeclaration","scope":121049,"src":"21814:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121029,"name":"address","nodeType":"ElementaryTypeName","src":"21814:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121032,"mutability":"mutable","name":"_to","nameLocation":"21845:3:298","nodeType":"VariableDeclaration","scope":121049,"src":"21837:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121031,"name":"address","nodeType":"ElementaryTypeName","src":"21837:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121034,"mutability":"mutable","name":"_amount","nameLocation":"21866:7:298","nodeType":"VariableDeclaration","scope":121049,"src":"21858:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121033,"name":"uint256","nodeType":"ElementaryTypeName","src":"21858:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121036,"mutability":"mutable","name":"_extraData","nameLocation":"21896:10:298","nodeType":"VariableDeclaration","scope":121049,"src":"21883:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121035,"name":"bytes","nodeType":"ElementaryTypeName","src":"21883:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21745:167:298"},"returnParameters":{"id":121038,"nodeType":"ParameterList","parameters":[],"src":"21950:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121075,"nodeType":"FunctionDefinition","src":"22585:341:298","nodes":[],"body":{"id":121074,"nodeType":"Block","src":"22824:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121066,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121052,"src":"22860:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121067,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121054,"src":"22873:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121068,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121056,"src":"22887:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121069,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121058,"src":"22894:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121070,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121060,"src":"22899:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121071,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121062,"src":"22908:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121065,"name":"ERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120371,"src":"22839:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22839:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121073,"nodeType":"EmitStatement","src":"22834:85:298"}]},"documentation":{"id":121050,"nodeType":"StructuredDocumentation","src":"22058:522:298","text":"@notice Emits the ERC20BridgeFinalized event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"22594:25:298","parameters":{"id":121063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121052,"mutability":"mutable","name":"_localToken","nameLocation":"22637:11:298","nodeType":"VariableDeclaration","scope":121075,"src":"22629:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121051,"name":"address","nodeType":"ElementaryTypeName","src":"22629:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121054,"mutability":"mutable","name":"_remoteToken","nameLocation":"22666:12:298","nodeType":"VariableDeclaration","scope":121075,"src":"22658:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121053,"name":"address","nodeType":"ElementaryTypeName","src":"22658:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121056,"mutability":"mutable","name":"_from","nameLocation":"22696:5:298","nodeType":"VariableDeclaration","scope":121075,"src":"22688:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121055,"name":"address","nodeType":"ElementaryTypeName","src":"22688:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121058,"mutability":"mutable","name":"_to","nameLocation":"22719:3:298","nodeType":"VariableDeclaration","scope":121075,"src":"22711:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121057,"name":"address","nodeType":"ElementaryTypeName","src":"22711:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121060,"mutability":"mutable","name":"_amount","nameLocation":"22740:7:298","nodeType":"VariableDeclaration","scope":121075,"src":"22732:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121059,"name":"uint256","nodeType":"ElementaryTypeName","src":"22732:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121062,"mutability":"mutable","name":"_extraData","nameLocation":"22770:10:298","nodeType":"VariableDeclaration","scope":121075,"src":"22757:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121061,"name":"bytes","nodeType":"ElementaryTypeName","src":"22757:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22619:167:298"},"returnParameters":{"id":121064,"nodeType":"ParameterList","parameters":[],"src":"22824:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":120284,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":42694,"src":"1296:13:298"},"id":120285,"nodeType":"InheritanceSpecifier","src":"1296:13:298"}],"canonicalName":"StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":120283,"nodeType":"StructuredDocumentation","src":"936:324:298","text":"@custom:upgradeable\n @title StandardBridge\n @notice StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles\n the core bridging logic, including escrowing tokens that are native to the local chain\n and minting/burning tokens that are native to the remote chain."},"fullyImplemented":false,"linearizedBaseContracts":[121076,42694],"name":"StandardBridge","nameLocation":"1278:14:298","scope":121077,"usedErrors":[]}],"license":"MIT"},"id":298} \ No newline at end of file diff --git a/op-e2e/celo/contracts/TestBridgeToken.json b/op-e2e/celo/contracts/TestBridgeToken.json new file mode 100644 index 0000000000000..c59a8a68bd686 --- /dev/null +++ b/op-e2e/celo/contracts/TestBridgeToken.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"decreaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"subtractedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"increaseAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"addedValue","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"mint100","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561000f575f80fd5b506040518060400160405280600f81526020016e2a32b9ba213934b233b2aa37b5b2b760891b8152506040518060400160405280600381526020016215109560ea1b81525081600390816100639190610110565b5060046100708282610110565b5050506101cf565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806100a057607f821691505b6020821081036100be57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561010b57805f5260205f20601f840160051c810160208510156100e95750805b601f840160051c820191505b81811015610108575f81556001016100f5565b50505b505050565b81516001600160401b0381111561012957610129610078565b61013d81610137845461008c565b846100c4565b602080601f831160018114610170575f84156101595750858301515b5f19600386901b1c1916600185901b1785556101c7565b5f85815260208120601f198616915b8281101561019e5788860151825594840194600190910190840161017f565b50858210156101bb57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b610c43806101dc5f395ff3fe608060405234801561000f575f80fd5b50600436106100cf575f3560e01c806370a082311161007d578063a457c2d711610058578063a457c2d7146101a2578063a9059cbb146101b5578063dd62ed3e146101c8575f80fd5b806370a082311461015b57806375f4539c1461019057806395d89b411461019a575f80fd5b806323b872dd116100ad57806323b872dd14610126578063313ce567146101395780633950935114610148575f80fd5b806306fdde03146100d3578063095ea7b3146100f157806318160ddd14610114575b5f80fd5b6100db61020d565b6040516100e89190610a80565b60405180910390f35b6101046100ff366004610afb565b61029d565b60405190151581526020016100e8565b6002545b6040519081526020016100e8565b610104610134366004610b23565b6102b6565b604051601281526020016100e8565b610104610156366004610afb565b6102d9565b610118610169366004610b5c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b610198610324565b005b6100db610339565b6101046101b0366004610afb565b610348565b6101046101c3366004610afb565b61041d565b6101186101d6366004610b7c565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c90610bad565b80601f016020809104026020016040519081016040528092919081815260200182805461024890610bad565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa81858561042a565b60019150505b92915050565b5f336102c38582856105dc565b6102ce8585856106b2565b506001949350505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102aa908290869061031f908790610bfe565b61042a565b6103373368056bc75e2d63100000610963565b565b60606004805461021c90610bad565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ce828686840361042a565b5f336102aa8185856106b2565b73ffffffffffffffffffffffffffffffffffffffff83166104cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff821661056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106ac578181101561069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610407565b6106ac848484840361042a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff82166107f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260208190526040902054818110156108ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152602081905260408082208585039055918516815290812080548492906108f0908490610bfe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095691815260200190565b60405180910390a36106ac565b73ffffffffffffffffffffffffffffffffffffffff82166109e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610407565b8060025f8282546109f19190610bfe565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604081208054839290610a2a908490610bfe565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610af6575f80fd5b919050565b5f8060408385031215610b0c575f80fd5b610b1583610ad3565b946020939093013593505050565b5f805f60608486031215610b35575f80fd5b610b3e84610ad3565b9250610b4c60208501610ad3565b9150604084013590509250925092565b5f60208284031215610b6c575f80fd5b610b7582610ad3565b9392505050565b5f8060408385031215610b8d575f80fd5b610b9683610ad3565b9150610ba460208401610ad3565b90509250929050565b600181811c90821680610bc157607f821691505b602082108103610bf8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b808201808211156102b0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea164736f6c6343000819000a","sourceMap":"127:164:4:-:0;;;167:48;;;;;;;;;;1978:113:0;;;;;;;;;;;;;-1:-1:-1;;;1978:113:0;;;;;;;;;;;;;;;;-1:-1:-1;;;1978:113:0;;;2052:5;2044;:13;;;;;;:::i;:::-;-1:-1:-1;2067:7:0;:17;2077:7;2067;:17;:::i;:::-;;1978:113;;127:164:4;;14:127:5;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:518::-;759:2;754:3;751:11;748:421;;;795:5;792:1;785:16;839:4;836:1;826:18;909:2;897:10;893:19;890:1;886:27;880:4;876:38;945:4;933:10;930:20;927:47;;;-1:-1:-1;968:4:5;927:47;1023:2;1018:3;1014:12;1011:1;1007:20;1001:4;997:31;987:41;;1078:81;1096:2;1089:5;1086:13;1078:81;;;1155:1;1141:16;;1122:1;1111:13;1078:81;;;1082:3;;748:421;657:518;;;:::o;1351:1345::-;1471:10;;-1:-1:-1;;;;;1493:30:5;;1490:56;;;1526:18;;:::i;:::-;1555:97;1645:6;1605:38;1637:4;1631:11;1605:38;:::i;:::-;1599:4;1555:97;:::i;:::-;1707:4;;1764:2;1753:14;;1781:1;1776:663;;;;2483:1;2500:6;2497:89;;;-1:-1:-1;2552:19:5;;;2546:26;2497:89;-1:-1:-1;;1308:1:5;1304:11;;;1300:24;1296:29;1286:40;1332:1;1328:11;;;1283:57;2599:81;;1746:944;;1776:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1812:20:5;;;1930:236;1944:7;1941:1;1938:14;1930:236;;;2033:19;;;2027:26;2012:42;;2125:27;;;;2093:1;2081:14;;;;1960:19;;1930:236;;;1934:3;2194:6;2185:7;2182:19;2179:201;;;2255:19;;;2249:26;-1:-1:-1;;2338:1:5;2334:14;;;2350:3;2330:24;2326:37;2322:42;2307:58;2292:74;;2179:201;;;2426:1;2417:6;2414:1;2410:14;2406:22;2400:4;2393:36;1746:944;;;;;1351:1345;;:::o;:::-;127:164:4;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100cf575f3560e01c806370a082311161007d578063a457c2d711610058578063a457c2d7146101a2578063a9059cbb146101b5578063dd62ed3e146101c8575f80fd5b806370a082311461015b57806375f4539c1461019057806395d89b411461019a575f80fd5b806323b872dd116100ad57806323b872dd14610126578063313ce567146101395780633950935114610148575f80fd5b806306fdde03146100d3578063095ea7b3146100f157806318160ddd14610114575b5f80fd5b6100db61020d565b6040516100e89190610a80565b60405180910390f35b6101046100ff366004610afb565b61029d565b60405190151581526020016100e8565b6002545b6040519081526020016100e8565b610104610134366004610b23565b6102b6565b604051601281526020016100e8565b610104610156366004610afb565b6102d9565b610118610169366004610b5c565b73ffffffffffffffffffffffffffffffffffffffff165f9081526020819052604090205490565b610198610324565b005b6100db610339565b6101046101b0366004610afb565b610348565b6101046101c3366004610afb565b61041d565b6101186101d6366004610b7c565b73ffffffffffffffffffffffffffffffffffffffff9182165f90815260016020908152604080832093909416825291909152205490565b60606003805461021c90610bad565b80601f016020809104026020016040519081016040528092919081815260200182805461024890610bad565b80156102935780601f1061026a57610100808354040283529160200191610293565b820191905f5260205f20905b81548152906001019060200180831161027657829003601f168201915b5050505050905090565b5f336102aa81858561042a565b60019150505b92915050565b5f336102c38582856105dc565b6102ce8585856106b2565b506001949350505050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102aa908290869061031f908790610bfe565b61042a565b6103373368056bc75e2d63100000610963565b565b60606004805461021c90610bad565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610410576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ce828686840361042a565b5f336102aa8185856106b2565b73ffffffffffffffffffffffffffffffffffffffff83166104cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff821661056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff8381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381165f908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106ac578181101561069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610407565b6106ac848484840361042a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff82166107f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff83165f90815260208190526040902054818110156108ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610407565b73ffffffffffffffffffffffffffffffffffffffff8085165f908152602081905260408082208585039055918516815290812080548492906108f0908490610bfe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161095691815260200190565b60405180910390a36106ac565b73ffffffffffffffffffffffffffffffffffffffff82166109e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610407565b8060025f8282546109f19190610bfe565b909155505073ffffffffffffffffffffffffffffffffffffffff82165f9081526020819052604081208054839290610a2a908490610bfe565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610af6575f80fd5b919050565b5f8060408385031215610b0c575f80fd5b610b1583610ad3565b946020939093013593505050565b5f805f60608486031215610b35575f80fd5b610b3e84610ad3565b9250610b4c60208501610ad3565b9150604084013590509250925092565b5f60208284031215610b6c575f80fd5b610b7582610ad3565b9392505050565b5f8060408385031215610b8d575f80fd5b610b9683610ad3565b9150610ba460208401610ad3565b90509250929050565b600181811c90821680610bc157607f821691505b602082108103610bf8577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b808201808211156102b0577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea164736f6c6343000819000a","sourceMap":"127:164:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4433:197;;;;;;:::i;:::-;;:::i;:::-;;;1121:14:5;;1114:22;1096:41;;1084:2;1069:18;4433:197:0;956:187:5;3244:106:0;3331:12;;3244:106;;;1294:25:5;;;1282:2;1267:18;3244:106:0;1148:177:5;5192:256:0;;;;;;:::i;:::-;;:::i;3093:91::-;;;3175:2;1805:36:5;;1793:2;1778:18;3093:91:0;1663:184:5;5843:234:0;;;;;;:::i;:::-;;:::i;3408:125::-;;;;;;:::i;:::-;3508:18;;3482:7;3508:18;;;;;;;;;;;;3408:125;221:68:4;;;:::i;:::-;;2367:102:0;;;:::i;6564:427::-;;;;;;:::i;:::-;;:::i;3729:189::-;;;;;;:::i;:::-;;:::i;3976:149::-;;;;;;:::i;:::-;4091:18;;;;4065:7;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3976:149;2156:98;2210:13;2242:5;2235:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2156:98;:::o;4433:197::-;4516:4;719:10:3;4570:32:0;719:10:3;4586:7:0;4595:6;4570:8;:32::i;:::-;4619:4;4612:11;;;4433:197;;;;;:::o;5192:256::-;5289:4;719:10:3;5345:38:0;5361:4;719:10:3;5376:6:0;5345:15;:38::i;:::-;5393:27;5403:4;5409:2;5413:6;5393:9;:27::i;:::-;-1:-1:-1;5437:4:0;;5192:256;-1:-1:-1;;;;5192:256:0:o;5843:234::-;719:10:3;5931:4:0;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;5931:4;;719:10:3;5985:64:0;;719:10:3;;4091:27:0;;6010:38;;6038:10;;6010:38;:::i;:::-;5985:8;:64::i;221:68:4:-;257:25;263:10;275:6;257:5;:25::i;:::-;221:68::o;2367:102:0:-;2423:13;2455:7;2448:14;;;;;:::i;6564:427::-;719:10:3;6657:4:0;4091:18;;;:11;:18;;;;;;;;;:27;;;;;;;;;;6657:4;;719:10:3;6801:15:0;6781:16;:35;;6773:85;;;;;;;3236:2:5;6773:85:0;;;3218:21:5;3275:2;3255:18;;;3248:30;3314:34;3294:18;;;3287:62;3385:7;3365:18;;;3358:35;3410:19;;6773:85:0;;;;;;;;;6892:60;6901:5;6908:7;6936:15;6917:16;:34;6892:8;:60::i;3729:189::-;3808:4;719:10:3;3862:28:0;719:10:3;3879:2:0;3883:6;3862:9;:28::i;10050:340::-;10151:19;;;10143:68;;;;;;;3642:2:5;10143:68:0;;;3624:21:5;3681:2;3661:18;;;3654:30;3720:34;3700:18;;;3693:62;3791:6;3771:18;;;3764:34;3815:19;;10143:68:0;3440:400:5;10143:68:0;10229:21;;;10221:68;;;;;;;4047:2:5;10221:68:0;;;4029:21:5;4086:2;4066:18;;;4059:30;4125:34;4105:18;;;4098:62;4196:4;4176:18;;;4169:32;4218:19;;10221:68:0;3845:398:5;10221:68:0;10300:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10351:32;;1294:25:5;;;10351:32:0;;1267:18:5;10351:32:0;;;;;;;10050:340;;;:::o;10671:411::-;4091:18;;;;10771:24;4091:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;10857:17;10837:37;;10833:243;;10918:6;10898:16;:26;;10890:68;;;;;;;4450:2:5;10890:68:0;;;4432:21:5;4489:2;4469:18;;;4462:30;4528:31;4508:18;;;4501:59;4577:18;;10890:68:0;4248:353:5;10890:68:0;11000:51;11009:5;11016:7;11044:6;11025:16;:25;11000:8;:51::i;:::-;10761:321;10671:411;;;:::o;7445:621::-;7541:18;;;7533:68;;;;;;;4808:2:5;7533:68:0;;;4790:21:5;4847:2;4827:18;;;4820:30;4886:34;4866:18;;;4859:62;4957:7;4937:18;;;4930:35;4982:19;;7533:68:0;4606:401:5;7533:68:0;7619:16;;;7611:64;;;;;;;5214:2:5;7611:64:0;;;5196:21:5;5253:2;5233:18;;;5226:30;5292:34;5272:18;;;5265:62;5363:5;5343:18;;;5336:33;5386:19;;7611:64:0;5012:399:5;7611:64:0;7757:15;;;7735:19;7757:15;;;;;;;;;;;7790:21;;;;7782:72;;;;;;;5618:2:5;7782:72:0;;;5600:21:5;5657:2;5637:18;;;5630:30;5696:34;5676:18;;;5669:62;5767:8;5747:18;;;5740:36;5793:19;;7782:72:0;5416:402:5;7782:72:0;7888:15;;;;:9;:15;;;;;;;;;;;7906:20;;;7888:38;;7946:13;;;;;;;;:23;;7920:6;;7888:9;7946:23;;7920:6;;7946:23;:::i;:::-;;;;;;;;8000:2;7985:26;;7994:4;7985:26;;;8004:6;7985:26;;;;1294:25:5;;1282:2;1267:18;;1148:177;7985:26:0;;;;;;;;8022:37;11666:91;8342:389;8425:21;;;8417:65;;;;;;;6025:2:5;8417:65:0;;;6007:21:5;6064:2;6044:18;;;6037:30;6103:33;6083:18;;;6076:61;6154:18;;8417:65:0;5823:355:5;8417:65:0;8569:6;8553:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8585:18:0;;;:9;:18;;;;;;;;;;:28;;8607:6;;8585:9;:28;;8607:6;;8585:28;:::i;:::-;;;;-1:-1:-1;;8628:37:0;;1294:25:5;;;8628:37:0;;;;8645:1;;8628:37;;1282:2:5;1267:18;8628:37:0;;;;;;;8342:389;;:::o;14:477:5:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;496:196::-;564:20;;624:42;613:54;;603:65;;593:93;;682:1;679;672:12;593:93;496:196;;;:::o;697:254::-;765:6;773;826:2;814:9;805:7;801:23;797:32;794:52;;;842:1;839;832:12;794:52;865:29;884:9;865:29;:::i;:::-;855:39;941:2;926:18;;;;913:32;;-1:-1:-1;;;697:254:5:o;1330:328::-;1407:6;1415;1423;1476:2;1464:9;1455:7;1451:23;1447:32;1444:52;;;1492:1;1489;1482:12;1444:52;1515:29;1534:9;1515:29;:::i;:::-;1505:39;;1563:38;1597:2;1586:9;1582:18;1563:38;:::i;:::-;1553:48;;1648:2;1637:9;1633:18;1620:32;1610:42;;1330:328;;;;;:::o;1852:186::-;1911:6;1964:2;1952:9;1943:7;1939:23;1935:32;1932:52;;;1980:1;1977;1970:12;1932:52;2003:29;2022:9;2003:29;:::i;:::-;1993:39;1852:186;-1:-1:-1;;;1852:186:5:o;2043:260::-;2111:6;2119;2172:2;2160:9;2151:7;2147:23;2143:32;2140:52;;;2188:1;2185;2178:12;2140:52;2211:29;2230:9;2211:29;:::i;:::-;2201:39;;2259:38;2293:2;2282:9;2278:18;2259:38;:::i;:::-;2249:48;;2043:260;;;;;:::o;2308:437::-;2387:1;2383:12;;;;2430;;;2451:61;;2505:4;2497:6;2493:17;2483:27;;2451:61;2558:2;2550:6;2547:14;2527:18;2524:38;2521:218;;2595:77;2592:1;2585:88;2696:4;2693:1;2686:15;2724:4;2721:1;2714:15;2521:218;;2308:437;;;:::o;2750:279::-;2815:9;;;2836:10;;;2833:190;;;2879:77;2876:1;2869:88;2980:4;2977:1;2970:15;3008:4;3005:1;2998:15","linkReferences":{}},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","decreaseAllowance(address,uint256)":"a457c2d7","increaseAllowance(address,uint256)":"39509351","mint100()":"75f4539c","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"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\":\"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\":\"mint100\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"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\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/celo/TestBridgeToken.sol\":\"TestBridgeToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3\",\"dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"src/celo/TestBridgeToken.sol\":{\"keccak256\":\"0xd831fd9add16689cf8a4e4306aceb4bdfbf338cd3d8a8fbd56e02fc2842ef7c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://20f8280daa3a0d6c4c7a62e340d6c733fe77d76c73f72b54996dbfe018d6eb46\",\"dweb:/ipfs/QmZiLv4mgHin3MjeT4ReVSAXmGo4ADeWpew6CSKBcvYoW1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"mint100"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/celo/TestBridgeToken.sol":"TestBridgeToken"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d","urls":["bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3","dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"src/celo/TestBridgeToken.sol":{"keccak256":"0xd831fd9add16689cf8a4e4306aceb4bdfbf338cd3d8a8fbd56e02fc2842ef7c1","urls":["bzz-raw://20f8280daa3a0d6c4c7a62e340d6c733fe77d76c73f72b54996dbfe018d6eb46","dweb:/ipfs/QmZiLv4mgHin3MjeT4ReVSAXmGo4ADeWpew6CSKBcvYoW1"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":15,"contract":"src/celo/TestBridgeToken.sol:TestBridgeToken","label":"_balances","offset":0,"slot":"0","type":"t_mapping(t_address,t_uint256)"},{"astId":21,"contract":"src/celo/TestBridgeToken.sol:TestBridgeToken","label":"_allowances","offset":0,"slot":"1","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":23,"contract":"src/celo/TestBridgeToken.sol:TestBridgeToken","label":"_totalSupply","offset":0,"slot":"2","type":"t_uint256"},{"astId":25,"contract":"src/celo/TestBridgeToken.sol:TestBridgeToken","label":"_name","offset":0,"slot":"3","type":"t_string_storage"},{"astId":27,"contract":"src/celo/TestBridgeToken.sol:TestBridgeToken","label":"_symbol","offset":0,"slot":"4","type":"t_string_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_string_storage":{"encoding":"bytes","label":"string","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"userdoc":{"version":1,"kind":"user"},"devdoc":{"version":1,"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"decreaseAllowance(address,uint256)":{"details":"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."},"increaseAllowance(address,uint256)":{"details":"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."},"name()":{"details":"Returns the name of the token."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `amount`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `amount`. - the caller must have allowance for ``from``'s tokens of at least `amount`."}},"events":{"Approval(address,address,uint256)":{"details":"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."},"Transfer(address,address,uint256)":{"details":"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."}}},"ast":{"absolutePath":"src/celo/TestBridgeToken.sol","id":736,"exportedSymbols":{"ERC20":[585],"TestBridgeToken":[735]},"nodeType":"SourceUnit","src":"32:260:4","nodes":[{"id":712,"nodeType":"PragmaDirective","src":"32:23:4","nodes":[],"literals":["solidity","^","0.8",".0"]},{"id":714,"nodeType":"ImportDirective","src":"57:68:4","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":736,"sourceUnit":586,"symbolAliases":[{"foreign":{"id":713,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":585,"src":"65:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":735,"nodeType":"ContractDefinition","src":"127:164:4","nodes":[{"id":724,"nodeType":"FunctionDefinition","src":"167:48:4","nodes":[],"body":{"id":723,"nodeType":"Block","src":"213:2:4","nodes":[],"statements":[]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"54657374427269646765546f6b656e","id":719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"187:17:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_73028f0a1fc63e714cc3eaea6b98ac11f5056e7793ab7abf8b5caebf0c17258a","typeString":"literal_string \"TestBridgeToken\""},"value":"TestBridgeToken"},{"hexValue":"544254","id":720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"206:5:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_74f9fb06bee41b7173ae90e93067dc03e5c1f7be266d2bbb0e68a6e2988f49b5","typeString":"literal_string \"TBT\""},"value":"TBT"}],"id":721,"kind":"baseConstructorSpecifier","modifierName":{"id":718,"name":"ERC20","nameLocations":["181:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":585,"src":"181:5:4"},"nodeType":"ModifierInvocation","src":"181:31:4"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":717,"nodeType":"ParameterList","parameters":[],"src":"178:2:4"},"returnParameters":{"id":722,"nodeType":"ParameterList","parameters":[],"src":"213:0:4"},"scope":735,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":734,"nodeType":"FunctionDefinition","src":"221:68:4","nodes":[],"body":{"id":733,"nodeType":"Block","src":"247:42:4","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":728,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"263:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"267:6:4","memberName":"sender","nodeType":"MemberAccess","src":"263:10:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"313030653138","id":730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"275:6:4","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"},"value":"100e18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_100000000000000000000_by_1","typeString":"int_const 100000000000000000000"}],"id":727,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"257:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"257:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":732,"nodeType":"ExpressionStatement","src":"257:25:4"}]},"functionSelector":"75f4539c","implemented":true,"kind":"function","modifiers":[],"name":"mint100","nameLocation":"230:7:4","parameters":{"id":725,"nodeType":"ParameterList","parameters":[],"src":"237:2:4"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[],"src":"247:0:4"},"scope":735,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":715,"name":"ERC20","nameLocations":["155:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":585,"src":"155:5:4"},"id":716,"nodeType":"InheritanceSpecifier","src":"155:5:4"}],"canonicalName":"TestBridgeToken","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[735,585,688,663,710],"name":"TestBridgeToken","nameLocation":"136:15:4","scope":736,"usedErrors":[],"usedEvents":[597,606]}],"license":"MIT"},"id":4} \ No newline at end of file diff --git a/op-e2e/celo/deno.json b/op-e2e/celo/deno.json new file mode 100644 index 0000000000000..117cc45fd57a1 --- /dev/null +++ b/op-e2e/celo/deno.json @@ -0,0 +1,24 @@ +{ + "tasks": { + "test": "deno test --allow-write='./' --allow-read --allow-run --allow-net='127.0.0.1,localhost' --allow-env --env-file=.default.env --env-file=.env main.test.ts" + "test-baklava": "deno test --allow-write='./' --allow-read --allow-run --allow-net --allow-env --env-file=.baklava.env main.test.ts" + "test-dryrun": "deno test --allow-write='./' --allow-read --allow-run --allow-net --allow-env --env-file=.mainnet-dryrun.env main.test.ts" + "cache-deps": "deno cache main.test.ts" + }, + "workspace": [ + "./packages/celo-test-runner", + "./packages/celo-test-util", + "./packages/celo-test-viem" + ], + "imports": { + "@celo/celocli": "npm:@celo/celocli@^6.0.0", + "@dx/reflect": "jsr:@dx/reflect@^0.2.14", + "@std/assert": "jsr:@std/assert@^1.0.11", + "@std/dotenv": "jsr:@std/dotenv@^0.225.3", + "@std/expect": "jsr:@std/expect@^1.0.13", + "@std/io": "jsr:@std/io@^0.225.2", + "@std/testing": "jsr:@std/testing@^1.0.9", + "reverse-mirage": "npm:reverse-mirage@^1.1.0", + "viem": "npm:viem@^2.22.21" + }, +} diff --git a/op-e2e/celo/deno.lock b/op-e2e/celo/deno.lock new file mode 100644 index 0000000000000..132c6cb27beee --- /dev/null +++ b/op-e2e/celo/deno.lock @@ -0,0 +1,6401 @@ +{ + "version": "4", + "specifiers": { + "jsr:@dx/reflect@~0.2.14": "0.2.14", + "jsr:@std/assert@*": "1.0.10", + "jsr:@std/assert@^1.0.10": "1.0.11", + "jsr:@std/assert@^1.0.11": "1.0.11", + "jsr:@std/async@^1.0.9": "1.0.10", + "jsr:@std/bytes@^1.0.5": "1.0.5", + "jsr:@std/data-structures@^1.0.6": "1.0.6", + "jsr:@std/dotenv@*": "0.225.3", + "jsr:@std/dotenv@~0.225.3": "0.225.3", + "jsr:@std/expect@*": "1.0.13", + "jsr:@std/expect@^1.0.13": "1.0.13", + "jsr:@std/fs@*": "1.0.9", + "jsr:@std/fs@^1.0.9": "1.0.9", + "jsr:@std/internal@^1.0.5": "1.0.5", + "jsr:@std/io@~0.225.2": "0.225.2", + "jsr:@std/path@*": "1.0.8", + "jsr:@std/path@^1.0.8": "1.0.8", + "jsr:@std/testing@^1.0.9": "1.0.9", + "npm:@celo/celocli@6": "6.0.0_web3@1.10.4_ethers@5.7.2", + "npm:@celo/celocli@6.0.0": "6.0.0_web3@1.10.4_ethers@5.7.2", + "npm:@scure/bip32@*": "1.6.2", + "npm:@scure/bip39@*": "1.5.4", + "npm:reflect-metadata@*": "0.2.2", + "npm:reverse-mirage@^1.1.0": "1.1.0_viem@2.22.16__ws@8.18.0", + "npm:viem@*": "2.22.16_ws@8.18.0", + "npm:viem@^2.22.16": "2.22.16_ws@8.18.0", + "npm:viem@^2.22.21": "2.22.21_ws@8.18.0" + }, + "jsr": { + "@dx/reflect@0.2.14": { + "integrity": "53e1cb54e25170f43d90966679fcd7d6e0d27e23f4f1c869330d339576f446be" + }, + "@std/assert@1.0.10": { + "integrity": "59b5cbac5bd55459a19045d95cc7c2ff787b4f8527c0dd195078ff6f9481fbb3", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/assert@1.0.11": { + "integrity": "2461ef3c368fe88bc60e186e7744a93112f16fd110022e113a0849e94d1c83c1", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/async@1.0.10": { + "integrity": "2ff1b1c7d33d1416159989b0f69e59ec7ee8cb58510df01e454def2108b3dbec" + }, + "@std/bytes@1.0.5": { + "integrity": "4465dd739d7963d964c809202ebea6d5c6b8e3829ef25c6a224290fbb8a1021e" + }, + "@std/data-structures@1.0.6": { + "integrity": "76a7fd8080c66604c0496220a791860492ab21a04a63a969c0b9a0609bbbb760" + }, + "@std/dotenv@0.225.3": { + "integrity": "a95e5b812c27b0854c52acbae215856d9cce9d4bbf774d938c51d212711e8d4a" + }, + "@std/expect@1.0.13": { + "integrity": "d8e236c7089cd9fcf5e6032f27dadc3db6349d0aee48c15bc71d717bca5baa42", + "dependencies": [ + "jsr:@std/assert@^1.0.11", + "jsr:@std/internal" + ] + }, + "@std/fs@1.0.9": { + "integrity": "3eef7e3ed3d317b29432c7dcb3b20122820dbc574263f721cb0248ad91bad890", + "dependencies": [ + "jsr:@std/path@^1.0.8" + ] + }, + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" + }, + "@std/io@0.225.2": { + "integrity": "3c740cd4ee4c082e6cfc86458f47e2ab7cb353dc6234d5e9b1f91a2de5f4d6c7", + "dependencies": [ + "jsr:@std/bytes" + ] + }, + "@std/path@1.0.8": { + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" + }, + "@std/testing@1.0.9": { + "integrity": "9bdd4ac07cb13e7594ac30e90f6ceef7254ac83a9aeaa089be0008f33aab5cd4", + "dependencies": [ + "jsr:@std/assert@^1.0.10", + "jsr:@std/async", + "jsr:@std/data-structures", + "jsr:@std/fs@^1.0.9", + "jsr:@std/internal", + "jsr:@std/path@^1.0.8" + ] + } + }, + "npm": { + "@adraffy/ens-normalize@1.11.0": { + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==" + }, + "@azure/abort-controller@2.1.2": { + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@azure/core-auth@1.9.0": { + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-util", + "tslib@2.8.1" + ] + }, + "@azure/core-client@1.9.2": { + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-rest-pipeline", + "@azure/core-tracing", + "@azure/core-util", + "@azure/logger", + "tslib@2.8.1" + ] + }, + "@azure/core-http-compat@2.2.0": { + "integrity": "sha512-1kW8ZhN0CfbNOG6C688z5uh2yrzALE7dDXHiR9dY4vt+EbhGZQSbjDa5bQd2rf3X2pdWMsXbqbArxUyeNdvtmg==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-client", + "@azure/core-rest-pipeline" + ] + }, + "@azure/core-lro@2.7.2": { + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-util", + "@azure/logger", + "tslib@2.8.1" + ] + }, + "@azure/core-paging@1.6.2": { + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@azure/core-rest-pipeline@1.19.0": { + "integrity": "sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-tracing", + "@azure/core-util", + "@azure/logger", + "http-proxy-agent", + "https-proxy-agent", + "tslib@2.8.1" + ] + }, + "@azure/core-tracing@1.2.0": { + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@azure/core-util@1.11.0": { + "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", + "dependencies": [ + "@azure/abort-controller", + "tslib@2.8.1" + ] + }, + "@azure/identity@4.6.0": { + "integrity": "sha512-ANpO1iAvcZmpD4QY7/kaE/P2n66pRXsDp3nMUC6Ow3c9KfXOZF7qMU9VgqPw8m7adP7TVIbVyrCEmD9cth3KQQ==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-client", + "@azure/core-rest-pipeline", + "@azure/core-tracing", + "@azure/core-util", + "@azure/logger", + "@azure/msal-browser", + "@azure/msal-node", + "events", + "jws@4.0.0", + "open", + "stoppable", + "tslib@2.8.1" + ] + }, + "@azure/keyvault-common@2.0.0": { + "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-client", + "@azure/core-rest-pipeline", + "@azure/core-tracing", + "@azure/core-util", + "@azure/logger", + "tslib@2.8.1" + ] + }, + "@azure/keyvault-keys@4.9.0": { + "integrity": "sha512-ZBP07+K4Pj3kS4TF4XdkqFcspWwBHry3vJSOFM5k5ZABvf7JfiMonvaFk2nBF6xjlEbMpz5PE1g45iTMme0raQ==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-client", + "@azure/core-http-compat", + "@azure/core-lro", + "@azure/core-paging", + "@azure/core-rest-pipeline", + "@azure/core-tracing", + "@azure/core-util", + "@azure/keyvault-common", + "@azure/logger", + "tslib@2.8.1" + ] + }, + "@azure/keyvault-secrets@4.9.0": { + "integrity": "sha512-XkLsuzxFdhVIOVcELhso8OhQgY2lSWZcZn6fqjE848FwP9lJemJhu7nxYy8Q1nns6XqPB0WsTPmEkR8eu852vA==", + "dependencies": [ + "@azure/abort-controller", + "@azure/core-auth", + "@azure/core-client", + "@azure/core-http-compat", + "@azure/core-lro", + "@azure/core-paging", + "@azure/core-rest-pipeline", + "@azure/core-tracing", + "@azure/core-util", + "@azure/keyvault-common", + "@azure/logger", + "tslib@2.8.1" + ] + }, + "@azure/logger@1.1.4": { + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "@azure/msal-browser@4.2.1": { + "integrity": "sha512-pJX+HNVxEEvxqj3xvnFKMi/Yb6jadwOWN2QkDagj2GV2XXxJg3qq5zkE+czVw6Cmf4QiXxct+J0WF23sE8vZyA==", + "dependencies": [ + "@azure/msal-common@15.1.1" + ] + }, + "@azure/msal-common@14.16.0": { + "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==" + }, + "@azure/msal-common@15.1.1": { + "integrity": "sha512-bvLWYq9fleAcTJ6H+hfkG91On6vI/UhGyOB7Z6r0Bsa+KTL3zPtigmGCOJgdxrEklOYD88X9SehexLDH/5NRKQ==" + }, + "@azure/msal-node@2.16.2": { + "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", + "dependencies": [ + "@azure/msal-common@14.16.0", + "jsonwebtoken", + "uuid@8.3.2" + ] + }, + "@celo/abis@11.0.0": { + "integrity": "sha512-rPjHQxHbWaKQU3MX6hE3A3xRkBFBphjFvfCs4t+19dqPPys6Q+cneHmRWGBX4NLiBh5BLZcNZjQoMf2jxRLMpg==" + }, + "@celo/abis@12.0.0-canary.76": { + "integrity": "sha512-ngyr2HlE1y1cgyKAMgDiEZDP+6Ckb3pfFKtgY92YexBaaB43m9qeW6RokMC44uTrRubiqFYf3D8TrJ/6lV2yxg==" + }, + "@celo/base@6.1.0": { + "integrity": "sha512-R6ko2QCfEU32akBsaSNsDYduktgwIKHcJ61SbR7EsXA1VE31/44Qh8kMzfgeahyk375DUCe3pJIKwx5zg1tFHg==" + }, + "@celo/base@7.0.0": { + "integrity": "sha512-/FQdvxGP32YX95wm66LFUcY/cNTRm9AT61gyQlvbLWDqxyOihygbBM1TBRL3SgDnCWRRnDKT6XPDcUXLm5dqWg==" + }, + "@celo/blind-threshold-bls@1.0.0-beta": { + "integrity": "sha512-sk9XLvbv0M0TJKJPHPc8FkIRTfP/PiPHeyKXPBTMZBW8URL4pRix9IfcT98zT5sA7hvMDJwgw3p3tM/L6Z1iGw==" + }, + "@celo/bls12377js@0.1.1": { + "integrity": "sha512-hQjTIegg1+ZX5lPyeBYUEHYW7ktG0xkWxf4tcj//bK+tzyeQd6mMrne7C4+tBZgn+I35HtxYIo+YOLYJxXBg7A==", + "dependencies": [ + "@stablelib/blake2xs", + "big-integer" + ] + }, + "@celo/celocli@6.0.0_web3@1.10.4_ethers@5.7.2": { + "integrity": "sha512-5GICVTBPKbb3MZRwLC8/uDUrgrO0ZB1Do6KgS4KHiV7nt0JjcDV/EBqoGuC9mWVsQR4ENgJkbej7GFDkIdLrGQ==", + "dependencies": [ + "@celo/abis@11.0.0", + "@celo/base@7.0.0", + "@celo/compliance", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/contractkit@9.0.0_web3@1.10.4", + "@celo/cryptographic-utils", + "@celo/explorer", + "@celo/governance", + "@celo/identity", + "@celo/metadata-claims", + "@celo/phone-utils", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-hsm-azure", + "@celo/wallet-ledger", + "@celo/wallet-local@6.0.4_web3@1.10.4", + "@ethereumjs/util@8.0.5", + "@ledgerhq/hw-transport-node-hid", + "@mento-protocol/mento-sdk", + "@oclif/core@3.27.0", + "@oclif/plugin-autocomplete", + "@oclif/plugin-commands", + "@oclif/plugin-help", + "@oclif/plugin-not-found", + "@oclif/plugin-plugins", + "@oclif/plugin-warn-if-update-available", + "@safe-global/protocol-kit", + "@safe-global/types-kit", + "@types/command-exists", + "bignumber.js@9.0.0", + "chalk@2.4.2", + "command-exists", + "cross-fetch@3.1.5", + "debug@4.4.0", + "ethers", + "fs-extra@8.1.0", + "humanize-duration", + "path", + "prompts", + "randombytes", + "web3@1.10.4", + "web3-utils@1.10.4" + ] + }, + "@celo/compliance@1.0.25": { + "integrity": "sha512-qEc/lVK0yyg/xwUj2WwDySrsI2IDKDwyj6YXKKqSYOE1+87qEGsOBo/x4awPUp4xj6TGEIYXA4gQAc04ja/Ohw==" + }, + "@celo/connect@5.3.0_web3@1.10.4": { + "integrity": "sha512-MNxse8wSF55tFL3iLKztv2adxPAdmGrFqyZRz+Lmm6g1SyDBqkLPPKsvvJNHDX+sfgtkYNOlL+EY/xDOU2N+Ag==", + "dependencies": [ + "@celo/base@6.1.0", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@ethereumjs/util@8.0.5", + "@types/debug", + "@types/utf8", + "bignumber.js@9.1.2", + "debug@4.4.0", + "utf8", + "web3@1.10.4", + "web3-core@1.10.4", + "web3-eth@1.10.4", + "web3-eth-contract@1.10.4" + ] + }, + "@celo/connect@6.1.0_web3@1.10.4": { + "integrity": "sha512-wIesewmnU9EjDLF4L1BNzNJCIJ2tvDrMHsXzYQEy088U3hsdOxTB0gqvhXMrSyiR2ukyBtBuzRFbItvIg9Zmdg==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@ethereumjs/util@8.0.5", + "@types/debug", + "@types/utf8", + "bignumber.js@9.1.2", + "debug@4.4.0", + "utf8", + "web3@1.10.4", + "web3-core@1.10.4", + "web3-eth@1.10.4", + "web3-eth-contract@1.10.4" + ] + }, + "@celo/contractkit@7.2.0_web3@1.10.4_fp-ts@2.1.1": { + "integrity": "sha512-gUQQb3cJ0EO3XvLrX8UxWMH2dBQagBdmMrQFkfhBcgezMU2dhuFcnfpJ2dIwmuSiqFOuNezKb0v6cyHIUtw2sg==", + "dependencies": [ + "@celo/abis@11.0.0", + "@celo/base@6.1.0", + "@celo/connect@5.3.0_web3@1.10.4", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@celo/wallet-local@5.2.0_web3@1.10.4", + "@types/bn.js", + "@types/debug", + "bignumber.js@9.1.2", + "cross-fetch@3.0.6", + "debug@4.4.0", + "fp-ts", + "io-ts", + "semver", + "web3@1.10.0", + "web3-core-helpers@1.10.0" + ] + }, + "@celo/contractkit@9.0.0_web3@1.10.4": { + "integrity": "sha512-J/7OrO50Ka/YySGlRRHiOATvK+dXvx1bht9jcEIFz+905CUb98l/gZNusA3EtS0HKGFuCloJpL6BYKmKcgT35A==", + "dependencies": [ + "@celo/abis@11.0.0", + "@celo/abis-12@npm:@celo/abis@12.0.0-canary.76", + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-local@6.0.4_web3@1.10.4", + "@types/bn.js", + "@types/debug", + "bignumber.js@9.1.2", + "debug@4.4.0", + "fp-ts", + "semver", + "web3@1.10.4", + "web3-core-helpers@1.10.4" + ] + }, + "@celo/cryptographic-utils@5.1.1": { + "integrity": "sha512-4ZcMx4XOK1yegiwJKK10X85eWuM7MXtXmmeQzoSQWP8FZDvCkDsrS5pJA5lV/mL32ObVocipVx7IM1RR/MUSLQ==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/bls12377js", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@noble/ciphers", + "@noble/curves@1.3.0", + "@noble/hashes@1.3.3", + "@scure/bip32@1.6.2", + "@scure/bip39@1.5.4", + "@types/bn.js", + "@types/node@18.19.76" + ] + }, + "@celo/explorer@5.0.13_web3@1.10.4": { + "integrity": "sha512-NEJIbKMdxsi2sqk+1jWHRtwKvrKNScHFlNk2iFpn3tfPC88WGzij/pb6Oja4FIapja4qjRt73Kj0QMQnmM2I8Q==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/contractkit@9.0.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@types/debug", + "bignumber.js@9.0.0", + "cross-fetch@3.1.5", + "debug@4.4.0" + ] + }, + "@celo/governance@5.1.4_web3@1.10.4": { + "integrity": "sha512-You5+XfDYBP3UHhBWATXqa78nIlnEtmQvKoGam0zrSc4R1Lix0BmqUJDe+zBM/PrIosLHJ+MYCSw38hCX/dq6A==", + "dependencies": [ + "@celo/abis@11.0.0", + "@celo/abis-12@npm:@celo/abis@12.0.0-canary.76", + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/contractkit@9.0.0_web3@1.10.4", + "@celo/explorer", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@ethereumjs/util@8.0.5", + "@types/debug", + "@types/inquirer", + "bignumber.js@9.1.2", + "debug@4.4.0", + "inquirer" + ] + }, + "@celo/hw-app-eth@1.0.1": { + "integrity": "sha512-2vJ5aa4AVHKr7mnMpcDXs7N4YUwHpxNLxYEyLNhfD9SJSSnHYMzBq0NPMfcGFzg9ubtgh+JCd4IqwyRn8STKYw==", + "dependencies": [ + "@ethersproject/abi", + "@ethersproject/rlp", + "@ledgerhq/cryptoassets-evm-signatures", + "@ledgerhq/domain-service", + "@ledgerhq/errors", + "@ledgerhq/evm-tools", + "@ledgerhq/hw-transport", + "@ledgerhq/hw-transport-mocker", + "@ledgerhq/logs", + "@ledgerhq/types-live", + "axios", + "bignumber.js@9.1.2", + "semver" + ] + }, + "@celo/identity@5.1.2_fp-ts@2.1.1_web3@1.10.4": { + "integrity": "sha512-zCwDKAyrUWf3j5qNmTdP5MD9kOnxgR2m5BThD5SbBEfmsQsWl5pQxRgJUJb59AfRm1Ma2uGlQeuwyeluOkj67A==", + "dependencies": [ + "@celo/base@6.1.0", + "@celo/contractkit@7.2.0_web3@1.10.4_fp-ts@2.1.1", + "@celo/odis-identifiers", + "@celo/phone-number-privacy-common", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@types/debug", + "bignumber.js@9.1.2", + "blind-threshold-bls@npm:@celo/blind-threshold-bls@1.0.0-beta", + "cross-fetch@3.1.5", + "debug@4.4.0", + "elliptic@6.6.1", + "ethereum-cryptography@1.2.0", + "fp-ts", + "io-ts" + ] + }, + "@celo/ledger-token-signer@0.4.0": { + "integrity": "sha512-8uedsklE2ygKnJiy/nbnNde3KHlhp0PaEyKTc2Eq/FFiIE6NfBosdvJbLQHemq15jJccPcJQohfSqbrfOpRyzg==" + }, + "@celo/metadata-claims@1.0.0_fp-ts@2.1.1": { + "integrity": "sha512-i4pFzo7LaA/4eBoPxC1W6+wQSaAS1osJYyQvn/x44GAt92xWImBVpuCNKfVjEknae3vNPXYsCw41nQW4IS8ubA==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "cross-fetch@3.1.5", + "fp-ts", + "io-ts" + ] + }, + "@celo/odis-identifiers@1.0.1": { + "integrity": "sha512-h66DDxfP7p48SCp/hwptuGbJyUm4JvJii1/qEyhgT92WzK3GvDD7hN30mK73c3sUcdUEpaARtHs0lBKeemypcA==" + }, + "@celo/phone-number-privacy-common@3.1.2_bunyan@1.8.15_fp-ts@2.1.1_web3@1.10.4": { + "integrity": "sha512-hI7tNVukhUzc2QkIFk+KOC/siwOq7roaa8n/4axot2+KEFYPDjGsMPQQMBCji2gaCP6p8yaOeaWjCq5TPn7t1g==", + "dependencies": [ + "@celo/base@6.1.0", + "@celo/contractkit@7.2.0_web3@1.10.4_fp-ts@2.1.1", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@types/bunyan", + "bignumber.js@9.1.2", + "bunyan", + "bunyan-debug-stream", + "bunyan-gke-stackdriver", + "dotenv", + "elliptic@6.6.1", + "express", + "fp-ts", + "io-ts", + "is-base64", + "node-fetch@2.7.0" + ] + }, + "@celo/phone-utils@6.0.4_fp-ts@2.1.1": { + "integrity": "sha512-O7mhO2plCTD5uFRcPe6a8gerbD5PmD9Ej4xwGce4X7VbwEt2WsEDccYLv51L/mJivIN5DLEGO6hIOzubH+mHEw==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@types/country-data", + "@types/google-libphonenumber", + "@types/node@18.19.76", + "country-data", + "fp-ts", + "google-libphonenumber", + "io-ts", + "web3-utils@1.10.4" + ] + }, + "@celo/utils@6.0.1_fp-ts@2.1.1": { + "integrity": "sha512-X9iK4R4USSgHG87PxpLGHqgKL33bKtBiKZGgPwx4gMM7X+nwpB6Ify/YO1/I+mt9+NN9epPb8/kmYYoWOPYShw==", + "dependencies": [ + "@celo/base@6.1.0", + "@ethereumjs/util@8.0.5", + "@types/elliptic", + "@types/node@18.19.76", + "bignumber.js@9.1.2", + "elliptic@6.6.1", + "ethereum-cryptography@1.2.0", + "fp-ts", + "io-ts", + "rlp", + "web3-eth-abi@1.10.4", + "web3-utils@1.10.4" + ] + }, + "@celo/utils@8.0.0_fp-ts@2.1.1": { + "integrity": "sha512-zxU24ZiFVeiqjSLn8AHW/cexHPpKWPSl7yXjcsloAG24KWNUHOVchxsm5Q3je9z8PHnlDHrMhODQFkdiAFWtPA==", + "dependencies": [ + "@celo/base@7.0.0", + "@ethereumjs/rlp@5.0.2", + "@ethereumjs/util@8.0.5", + "@noble/ciphers", + "@noble/curves@1.3.0", + "@noble/hashes@1.3.3", + "@types/bn.js", + "@types/node@18.19.76", + "bignumber.js@9.1.2", + "fp-ts", + "io-ts", + "web3-eth-abi@1.10.4", + "web3-utils@1.10.4" + ] + }, + "@celo/wallet-base@5.2.0_web3@1.10.4": { + "integrity": "sha512-QzqJ9MjFvoWl2mCEuoyE7cb2y36hDOQmSdJpKKh5IFTFIgw6J0XtRjls9H2YRU78lJZqcglWMsaMjJiY0EAU/Q==", + "dependencies": [ + "@celo/base@6.1.0", + "@celo/connect@5.3.0_web3@1.10.4", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@ethereumjs/rlp@5.0.2", + "@ethereumjs/util@8.0.5", + "@types/debug", + "bignumber.js@9.1.2", + "debug@4.4.0", + "eth-lib@0.2.8", + "ethereum-cryptography@2.2.1", + "web3@1.10.4", + "web3-eth-accounts@1.10.4" + ] + }, + "@celo/wallet-base@6.0.4_web3@1.10.4": { + "integrity": "sha512-tUOuGWRviVA6/3TGzhBPAlXM/FW1njbPdWwZuCR1peEe86NmDT41dez6gyhfoEOCe9NOtczis4lmarV4LwDcaw==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@ethereumjs/rlp@5.0.2", + "@ethereumjs/util@8.0.5", + "@noble/curves@1.8.1", + "@noble/hashes@1.7.1", + "@types/debug", + "bignumber.js@9.1.2", + "debug@4.4.0", + "web3@1.10.4", + "web3-eth-accounts@1.10.4" + ] + }, + "@celo/wallet-hsm-azure@6.0.4_web3@1.10.4": { + "integrity": "sha512-Qo33VjK2QkVolGCyb8/Gz6IrP4kp7nNovPPHOvGorFMWN/M59wZ88r74co3JXodBLnUXbtI9s2693ssN6HeXbA==", + "dependencies": [ + "@azure/identity", + "@azure/keyvault-keys", + "@azure/keyvault-secrets", + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-base@6.0.4_web3@1.10.4", + "@celo/wallet-hsm", + "@celo/wallet-remote", + "@ethereumjs/util@8.0.5", + "@types/secp256k1", + "bignumber.js@9.1.2", + "debug@4.4.0" + ] + }, + "@celo/wallet-hsm@6.0.4": { + "integrity": "sha512-iuY2fjihA1ZX/XcTzoLAq458aMIxvx7wyiF6Qr6C1hAcUKP5vtHJI4zQAH2+u9S5CJxKnynRCevXrm+4wIb+IQ==", + "dependencies": [ + "@celo/base@7.0.0", + "@ethereumjs/util@8.0.5", + "@noble/ciphers", + "@noble/curves@1.3.0", + "@noble/hashes@1.3.3", + "@types/asn1js", + "@types/debug", + "@types/secp256k1", + "asn1js@2.4.0", + "bignumber.js@9.1.2" + ] + }, + "@celo/wallet-ledger@6.0.4_web3@1.10.4": { + "integrity": "sha512-f3hjdHtfdLyUgwZuFDoyYavSUfAFI1Vi+cuBGeaSROtRbdkBmkLHmRz4ZCGE/R4iBEIOn+f00B4o9glRi89W0g==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/hw-app-eth", + "@celo/ledger-token-signer", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-base@6.0.4_web3@1.10.4", + "@celo/wallet-remote", + "@ethereumjs/util@8.0.5", + "@ledgerhq/errors", + "@ledgerhq/hw-transport", + "debug@4.4.0", + "semver" + ] + }, + "@celo/wallet-local@5.2.0_web3@1.10.4": { + "integrity": "sha512-BZpXYtHgbCltIg0MzlV06U+Dhlq0DxSGSME2KZVUENmP/QHRe9hpZPCo1PAtqNsddj5UHvv9WmVwFHedoQ7b4w==", + "dependencies": [ + "@celo/connect@5.3.0_web3@1.10.4", + "@celo/utils@6.0.1_fp-ts@2.1.1", + "@celo/wallet-base@5.2.0_web3@1.10.4", + "@ethereumjs/util@8.0.5", + "eth-lib@0.2.8" + ] + }, + "@celo/wallet-local@6.0.4_web3@1.10.4": { + "integrity": "sha512-zgf3yXyVhYFuRANvCyMk2Gp3QUphLBrrpNaookClgHXGatRrYeCUSQeuS4nk3jcwxQ+AeLWbpu4MqwJEXVqt8A==", + "dependencies": [ + "@celo/base@7.0.0", + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-base@6.0.4_web3@1.10.4", + "@ethereumjs/util@8.0.5" + ] + }, + "@celo/wallet-remote@6.0.4_web3@1.10.4": { + "integrity": "sha512-bOSe4RymRkN8Al1DpLLLwdAQfumaE0gAG3rGi48rbq1sHd382V8daDl/S+ZsApVAtoVI/aIC4kYmwl8wQtNd7w==", + "dependencies": [ + "@celo/connect@6.1.0_web3@1.10.4", + "@celo/utils@8.0.0_fp-ts@2.1.1", + "@celo/wallet-base@6.0.4_web3@1.10.4", + "@ethereumjs/util@8.0.5", + "@types/debug" + ] + }, + "@chainsafe/as-sha256@0.3.1": { + "integrity": "sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==" + }, + "@chainsafe/persistent-merkle-tree@0.4.2": { + "integrity": "sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==", + "dependencies": [ + "@chainsafe/as-sha256" + ] + }, + "@chainsafe/ssz@0.9.4": { + "integrity": "sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==", + "dependencies": [ + "@chainsafe/as-sha256", + "@chainsafe/persistent-merkle-tree", + "case" + ] + }, + "@colors/colors@1.5.0": { + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, + "@ethereumjs/common@2.5.0": { + "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "dependencies": [ + "crc-32", + "ethereumjs-util" + ] + }, + "@ethereumjs/common@2.6.5": { + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dependencies": [ + "crc-32", + "ethereumjs-util" + ] + }, + "@ethereumjs/rlp@4.0.1": { + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==" + }, + "@ethereumjs/rlp@5.0.2": { + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==" + }, + "@ethereumjs/tx@3.3.2": { + "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "dependencies": [ + "@ethereumjs/common@2.6.5", + "ethereumjs-util" + ] + }, + "@ethereumjs/tx@3.5.2": { + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dependencies": [ + "@ethereumjs/common@2.6.5", + "ethereumjs-util" + ] + }, + "@ethereumjs/util@8.0.5": { + "integrity": "sha512-259rXKK3b3D8HRVdRmlOEi6QFvwxdt304hhrEAmpZhsj7ufXEOTIc9JRZPMnXatKjECokdLNBcDOFBeBSzAIaw==", + "dependencies": [ + "@chainsafe/ssz", + "@ethereumjs/rlp@4.0.1", + "ethereum-cryptography@1.2.0" + ] + }, + "@ethereumjs/util@8.1.0": { + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dependencies": [ + "@ethereumjs/rlp@4.0.1", + "ethereum-cryptography@2.2.1", + "micro-ftch" + ] + }, + "@ethersproject/abi@5.7.0": { + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dependencies": [ + "@ethersproject/address", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/hash", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/strings" + ] + }, + "@ethersproject/abstract-provider@5.7.0": { + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dependencies": [ + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/logger", + "@ethersproject/networks", + "@ethersproject/properties", + "@ethersproject/transactions", + "@ethersproject/web" + ] + }, + "@ethersproject/abstract-signer@5.7.0": { + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dependencies": [ + "@ethersproject/abstract-provider", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/logger", + "@ethersproject/properties" + ] + }, + "@ethersproject/address@5.7.0": { + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dependencies": [ + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/rlp" + ] + }, + "@ethersproject/base64@5.7.0": { + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dependencies": [ + "@ethersproject/bytes" + ] + }, + "@ethersproject/basex@5.7.0": { + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/properties" + ] + }, + "@ethersproject/bignumber@5.7.0": { + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/logger", + "bn.js@5.2.1" + ] + }, + "@ethersproject/bytes@5.7.0": { + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dependencies": [ + "@ethersproject/logger" + ] + }, + "@ethersproject/constants@5.7.0": { + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dependencies": [ + "@ethersproject/bignumber" + ] + }, + "@ethersproject/contracts@5.7.0": { + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dependencies": [ + "@ethersproject/abi", + "@ethersproject/abstract-provider", + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/transactions" + ] + }, + "@ethersproject/hash@5.7.0": { + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dependencies": [ + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/base64", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/strings" + ] + }, + "@ethersproject/hdnode@5.7.0": { + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dependencies": [ + "@ethersproject/abstract-signer", + "@ethersproject/basex", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/logger", + "@ethersproject/pbkdf2", + "@ethersproject/properties", + "@ethersproject/sha2", + "@ethersproject/signing-key", + "@ethersproject/strings", + "@ethersproject/transactions", + "@ethersproject/wordlists" + ] + }, + "@ethersproject/json-wallets@5.7.0": { + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dependencies": [ + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/bytes", + "@ethersproject/hdnode", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/pbkdf2", + "@ethersproject/properties", + "@ethersproject/random", + "@ethersproject/strings", + "@ethersproject/transactions", + "aes-js", + "scrypt-js" + ] + }, + "@ethersproject/keccak256@5.7.0": { + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dependencies": [ + "@ethersproject/bytes", + "js-sha3@0.8.0" + ] + }, + "@ethersproject/logger@5.7.0": { + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==" + }, + "@ethersproject/networks@5.7.1": { + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dependencies": [ + "@ethersproject/logger" + ] + }, + "@ethersproject/pbkdf2@5.7.0": { + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/sha2" + ] + }, + "@ethersproject/properties@5.7.0": { + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dependencies": [ + "@ethersproject/logger" + ] + }, + "@ethersproject/providers@5.7.2": { + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "dependencies": [ + "@ethersproject/abstract-provider", + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/base64", + "@ethersproject/basex", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/hash", + "@ethersproject/logger", + "@ethersproject/networks", + "@ethersproject/properties", + "@ethersproject/random", + "@ethersproject/rlp", + "@ethersproject/sha2", + "@ethersproject/strings", + "@ethersproject/transactions", + "@ethersproject/web", + "bech32", + "ws@7.4.6" + ] + }, + "@ethersproject/random@5.7.0": { + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/logger" + ] + }, + "@ethersproject/rlp@5.7.0": { + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/logger" + ] + }, + "@ethersproject/sha2@5.7.0": { + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/logger", + "hash.js" + ] + }, + "@ethersproject/signing-key@5.7.0": { + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/logger", + "@ethersproject/properties", + "bn.js@5.2.1", + "elliptic@6.5.4", + "hash.js" + ] + }, + "@ethersproject/solidity@5.7.0": { + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "dependencies": [ + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/sha2", + "@ethersproject/strings" + ] + }, + "@ethersproject/strings@5.7.0": { + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/logger" + ] + }, + "@ethersproject/transactions@5.7.0": { + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dependencies": [ + "@ethersproject/address", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/rlp", + "@ethersproject/signing-key" + ] + }, + "@ethersproject/units@5.7.0": { + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "dependencies": [ + "@ethersproject/bignumber", + "@ethersproject/constants", + "@ethersproject/logger" + ] + }, + "@ethersproject/wallet@5.7.0": { + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "dependencies": [ + "@ethersproject/abstract-provider", + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/hash", + "@ethersproject/hdnode", + "@ethersproject/json-wallets", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/random", + "@ethersproject/signing-key", + "@ethersproject/transactions", + "@ethersproject/wordlists" + ] + }, + "@ethersproject/web@5.7.1": { + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dependencies": [ + "@ethersproject/base64", + "@ethersproject/bytes", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/strings" + ] + }, + "@ethersproject/wordlists@5.7.0": { + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "dependencies": [ + "@ethersproject/bytes", + "@ethersproject/hash", + "@ethersproject/logger", + "@ethersproject/properties", + "@ethersproject/strings" + ] + }, + "@inquirer/checkbox@4.1.2": { + "integrity": "sha512-PL9ixC5YsPXzXhAZFUPmkXGxfgjkdfZdPEPPmt4kFwQ4LBMDG9n/nHXYRGGZSKZJs+d1sGKWgS2GiPzVRKUdtQ==", + "dependencies": [ + "@inquirer/core", + "@inquirer/figures", + "@inquirer/type", + "ansi-escapes", + "yoctocolors-cjs" + ] + }, + "@inquirer/confirm@5.1.6": { + "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type" + ] + }, + "@inquirer/core@10.1.7": { + "integrity": "sha512-AA9CQhlrt6ZgiSy6qoAigiA1izOa751ugX6ioSjqgJ+/Gd+tEN/TORk5sUYNjXuHWfW0r1n/a6ak4u/NqHHrtA==", + "dependencies": [ + "@inquirer/figures", + "@inquirer/type", + "ansi-escapes", + "cli-width@4.1.0", + "mute-stream@2.0.0", + "signal-exit@4.1.0", + "wrap-ansi@6.2.0", + "yoctocolors-cjs" + ] + }, + "@inquirer/editor@4.2.7": { + "integrity": "sha512-gktCSQtnSZHaBytkJKMKEuswSk2cDBuXX5rxGFv306mwHfBPjg5UAldw9zWGoEyvA9KpRDkeM4jfrx0rXn0GyA==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type", + "external-editor" + ] + }, + "@inquirer/expand@4.0.9": { + "integrity": "sha512-Xxt6nhomWTAmuSX61kVgglLjMEFGa+7+F6UUtdEUeg7fg4r9vaFttUUKrtkViYYrQBA5Ia1tkOJj2koP9BuLig==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type", + "yoctocolors-cjs" + ] + }, + "@inquirer/figures@1.0.10": { + "integrity": "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw==" + }, + "@inquirer/input@4.1.6": { + "integrity": "sha512-1f5AIsZuVjPT4ecA8AwaxDFNHny/tSershP/cTvTDxLdiIGTeILNcKozB0LaYt6mojJLUbOYhpIxicaYf7UKIQ==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type" + ] + }, + "@inquirer/number@3.0.9": { + "integrity": "sha512-iN2xZvH3tyIYXLXBvlVh0npk1q/aVuKXZo5hj+K3W3D4ngAEq/DkLpofRzx6oebTUhBvOgryZ+rMV0yImKnG3w==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type" + ] + }, + "@inquirer/password@4.0.9": { + "integrity": "sha512-xBEoOw1XKb0rIN208YU7wM7oJEHhIYkfG7LpTJAEW913GZeaoQerzf5U/LSHI45EVvjAdgNXmXgH51cUXKZcJQ==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type", + "ansi-escapes" + ] + }, + "@inquirer/prompts@7.3.2": { + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dependencies": [ + "@inquirer/checkbox", + "@inquirer/confirm", + "@inquirer/editor", + "@inquirer/expand", + "@inquirer/input", + "@inquirer/number", + "@inquirer/password", + "@inquirer/rawlist", + "@inquirer/search", + "@inquirer/select" + ] + }, + "@inquirer/rawlist@4.0.9": { + "integrity": "sha512-+5t6ebehKqgoxV8fXwE49HkSF2Rc9ijNiVGEQZwvbMI61/Q5RcD+jWD6Gs1tKdz5lkI8GRBL31iO0HjGK1bv+A==", + "dependencies": [ + "@inquirer/core", + "@inquirer/type", + "yoctocolors-cjs" + ] + }, + "@inquirer/search@3.0.9": { + "integrity": "sha512-DWmKztkYo9CvldGBaRMr0ETUHgR86zE6sPDVOHsqz4ISe9o1LuiWfgJk+2r75acFclA93J/lqzhT0dTjCzHuoA==", + "dependencies": [ + "@inquirer/core", + "@inquirer/figures", + "@inquirer/type", + "yoctocolors-cjs" + ] + }, + "@inquirer/select@4.0.9": { + "integrity": "sha512-BpJyJe7Dkhv2kz7yG7bPSbJLQuu/rqyNlF1CfiiFeFwouegfH+zh13KDyt6+d9DwucKo7hqM3wKLLyJxZMO+Xg==", + "dependencies": [ + "@inquirer/core", + "@inquirer/figures", + "@inquirer/type", + "ansi-escapes", + "yoctocolors-cjs" + ] + }, + "@inquirer/type@3.0.4": { + "integrity": "sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA==" + }, + "@isaacs/cliui@8.0.2": { + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": [ + "string-width@5.1.2", + "string-width-cjs@npm:string-width@4.2.3", + "strip-ansi@7.1.0", + "strip-ansi-cjs@npm:strip-ansi@6.0.1", + "wrap-ansi@8.1.0", + "wrap-ansi-cjs@npm:wrap-ansi@7.0.0" + ] + }, + "@isaacs/string-locale-compare@1.1.0": { + "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==" + }, + "@ledgerhq/cryptoassets-evm-signatures@13.5.3": { + "integrity": "sha512-Vw2GKlT8Pqv/wgHykuZRg4xTu/9VhCqldpaVW+EcjPgNoXm97juAOedy81GUvM7bG6e8sTU426HfLOBGN1Ftxg==", + "dependencies": [ + "@ledgerhq/live-env", + "axios" + ] + }, + "@ledgerhq/devices@8.4.4": { + "integrity": "sha512-sz/ryhe/R687RHtevIE9RlKaV8kkKykUV4k29e7GAVwzHX1gqG+O75cu1NCJUHLbp3eABV5FdvZejqRUlLis9A==", + "dependencies": [ + "@ledgerhq/errors", + "@ledgerhq/logs", + "rxjs@7.8.1", + "semver" + ] + }, + "@ledgerhq/domain-service@1.2.18_react@18.3.1": { + "integrity": "sha512-gcxs0iB+/DK/52q1YF/nRZNvJ5BgThRhnXjRbX+ptsGzczv5/wO8k7iyaIslSaPvO+u7rBEvZZneyyCmehyLRQ==", + "dependencies": [ + "@ledgerhq/errors", + "@ledgerhq/logs", + "@ledgerhq/types-live", + "axios", + "eip55", + "react", + "react-dom" + ] + }, + "@ledgerhq/errors@6.19.1": { + "integrity": "sha512-75yK7Nnit/Gp7gdrJAz0ipp31CCgncRp+evWt6QawQEtQKYEDfGo10QywgrrBBixeRxwnMy1DP6g2oCWRf1bjw==" + }, + "@ledgerhq/evm-tools@1.3.1": { + "integrity": "sha512-cg0dvrhhxvl1K9IFj8cFAeQxElkvR8LoYYSpaMpxjo5Tzqam+fOLKhG38OyRYMw9Q7k2QqaRzUF/3VplNNnDTw==", + "dependencies": [ + "@ethersproject/constants", + "@ethersproject/hash", + "@ledgerhq/cryptoassets-evm-signatures", + "@ledgerhq/live-env", + "axios", + "crypto-js" + ] + }, + "@ledgerhq/hw-transport-mocker@6.29.4": { + "integrity": "sha512-CLDIpQ/eqU8qrCYGY9MyHa+oMgqs6PuNkWtqbcaS4AzNx8L/9bv7y8CZwCjxX6oB/2ZEq42RlL6oZ6Ou3oHnoQ==", + "dependencies": [ + "@ledgerhq/hw-transport", + "@ledgerhq/logs", + "rxjs@7.8.1" + ] + }, + "@ledgerhq/hw-transport-node-hid-noevents@6.30.5": { + "integrity": "sha512-nOPbhFU87LgLERVAQ+HhxV8E8c+7d8ptllkgiJUc4QwL2z9zkIOAEtgdvCaZ066Oi9XGnln/GF1oAgByYnYDPw==", + "dependencies": [ + "@ledgerhq/devices", + "@ledgerhq/errors", + "@ledgerhq/hw-transport", + "@ledgerhq/logs", + "node-hid" + ] + }, + "@ledgerhq/hw-transport-node-hid@6.29.5": { + "integrity": "sha512-2bAp4K50V1kdCufU9JdQPcw4aLyvA+yQRJU/X39B+PC+rnis40gEbqNh0henhzv876sXdbNk6G/MkDWXpwDIow==", + "dependencies": [ + "@ledgerhq/devices", + "@ledgerhq/errors", + "@ledgerhq/hw-transport", + "@ledgerhq/hw-transport-node-hid-noevents", + "@ledgerhq/logs", + "lodash", + "node-hid", + "usb" + ] + }, + "@ledgerhq/hw-transport@6.31.4": { + "integrity": "sha512-6c1ir/cXWJm5dCWdq55NPgCJ3UuKuuxRvf//Xs36Bq9BwkV2YaRQhZITAkads83l07NAdR16hkTWqqpwFMaI6A==", + "dependencies": [ + "@ledgerhq/devices", + "@ledgerhq/errors", + "@ledgerhq/logs", + "events" + ] + }, + "@ledgerhq/live-env@2.5.0": { + "integrity": "sha512-iE/xSWL6Mc/cSGex6UKNnNd/nWuhj3/3gFZmfIXm5APDZ2+FJ3DOQEcMt+XryNuoKUd+ky03/DyQbexfMkissg==", + "dependencies": [ + "rxjs@7.8.1", + "utility-types" + ] + }, + "@ledgerhq/logs@6.12.0": { + "integrity": "sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==" + }, + "@ledgerhq/types-live@6.59.0": { + "integrity": "sha512-51080Ap+0NUhD+pJClrV/ZImgJTrI36Q3BVL9Q6uWhThx8v3wZCRqqZPwco6+JB5VftZExFtCyfqw6MFJB15IA==", + "dependencies": [ + "bignumber.js@9.1.2", + "rxjs@7.8.1" + ] + }, + "@mento-protocol/mento-core-ts@0.2.3": { + "integrity": "sha512-Fjj0t2a6xqpHTbhfafioqjkY9ZDBsq3oy/DkRizihDI2zul/PFQJfQwyy7WDSSc/cNAflevBeSJyqTPTv9HD/Q==" + }, + "@mento-protocol/mento-sdk@1.0.1_ethers@5.7.2": { + "integrity": "sha512-KEtmzbyJuL+Fb2yFwIKeuuu+Izb3VwoXqi7CYz1OhDMbMcGcxUI1Upsf4HFqPysnN7kDJQGxTReiQzdowTdoQA==", + "dependencies": [ + "@mento-protocol/mento-core-ts", + "ethers" + ] + }, + "@noble/ciphers@0.4.1": { + "integrity": "sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==" + }, + "@noble/curves@1.3.0": { + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "dependencies": [ + "@noble/hashes@1.3.3" + ] + }, + "@noble/curves@1.4.2": { + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": [ + "@noble/hashes@1.4.0" + ] + }, + "@noble/curves@1.8.1": { + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "dependencies": [ + "@noble/hashes@1.7.1" + ] + }, + "@noble/hashes@1.2.0": { + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==" + }, + "@noble/hashes@1.3.3": { + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==" + }, + "@noble/hashes@1.4.0": { + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==" + }, + "@noble/hashes@1.7.1": { + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==" + }, + "@noble/secp256k1@1.7.1": { + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==" + }, + "@nodelib/fs.scandir@2.1.5": { + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": [ + "@nodelib/fs.stat", + "run-parallel" + ] + }, + "@nodelib/fs.stat@2.0.5": { + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk@1.2.8": { + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": [ + "@nodelib/fs.scandir", + "fastq" + ] + }, + "@npmcli/agent@2.2.2": { + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dependencies": [ + "agent-base", + "http-proxy-agent", + "https-proxy-agent", + "lru-cache", + "socks-proxy-agent" + ] + }, + "@npmcli/arborist@7.5.4": { + "integrity": "sha512-nWtIc6QwwoUORCRNzKx4ypHqCk3drI+5aeYdMTQQiRCcn4lOOgfQh7WyZobGYTxXPSq1VwV53lkpN/BRlRk08g==", + "dependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/fs", + "@npmcli/installed-package-contents", + "@npmcli/map-workspaces", + "@npmcli/metavuln-calculator", + "@npmcli/name-from-folder", + "@npmcli/node-gyp", + "@npmcli/package-json", + "@npmcli/query", + "@npmcli/redact@2.0.1", + "@npmcli/run-script@8.1.0", + "bin-links", + "cacache", + "common-ancestor-path", + "hosted-git-info", + "json-parse-even-better-errors", + "json-stringify-nice", + "lru-cache", + "minimatch@9.0.5", + "nopt", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-registry-fetch@17.1.0", + "pacote@18.0.6", + "parse-conflict-json", + "proc-log@4.2.0", + "proggy", + "promise-all-reject-late", + "promise-call-limit", + "read-package-json-fast", + "semver", + "ssri", + "treeverse", + "walk-up-path" + ] + }, + "@npmcli/config@8.3.4": { + "integrity": "sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==", + "dependencies": [ + "@npmcli/map-workspaces", + "@npmcli/package-json", + "ci-info", + "ini@4.1.3", + "nopt", + "proc-log@4.2.0", + "semver", + "walk-up-path" + ] + }, + "@npmcli/fs@3.1.1": { + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dependencies": [ + "semver" + ] + }, + "@npmcli/git@5.0.8": { + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "dependencies": [ + "@npmcli/promise-spawn", + "ini@4.1.3", + "lru-cache", + "npm-pick-manifest", + "proc-log@4.2.0", + "promise-inflight", + "promise-retry", + "semver", + "which@4.0.0" + ] + }, + "@npmcli/installed-package-contents@2.1.0": { + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dependencies": [ + "npm-bundled", + "npm-normalize-package-bin" + ] + }, + "@npmcli/map-workspaces@3.0.6": { + "integrity": "sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==", + "dependencies": [ + "@npmcli/name-from-folder", + "glob@10.4.5", + "minimatch@9.0.5", + "read-package-json-fast" + ] + }, + "@npmcli/metavuln-calculator@7.1.1": { + "integrity": "sha512-Nkxf96V0lAx3HCpVda7Vw4P23RILgdi/5K1fmj2tZkWIYLpXAN8k2UVVOsW16TsS5F8Ws2I7Cm+PU1/rsVF47g==", + "dependencies": [ + "cacache", + "json-parse-even-better-errors", + "pacote@18.0.6", + "proc-log@4.2.0", + "semver" + ] + }, + "@npmcli/name-from-folder@2.0.0": { + "integrity": "sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==" + }, + "@npmcli/node-gyp@3.0.0": { + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==" + }, + "@npmcli/package-json@5.2.1": { + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", + "dependencies": [ + "@npmcli/git", + "glob@10.4.5", + "hosted-git-info", + "json-parse-even-better-errors", + "normalize-package-data", + "proc-log@4.2.0", + "semver" + ] + }, + "@npmcli/promise-spawn@7.0.2": { + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dependencies": [ + "which@4.0.0" + ] + }, + "@npmcli/query@3.1.0": { + "integrity": "sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==", + "dependencies": [ + "postcss-selector-parser" + ] + }, + "@npmcli/redact@1.1.0": { + "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==" + }, + "@npmcli/redact@2.0.1": { + "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==" + }, + "@npmcli/run-script@7.0.4": { + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "dependencies": [ + "@npmcli/node-gyp", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "node-gyp", + "which@4.0.0" + ] + }, + "@npmcli/run-script@8.1.0": { + "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "dependencies": [ + "@npmcli/node-gyp", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "node-gyp", + "proc-log@4.2.0", + "which@4.0.0" + ] + }, + "@oclif/core@3.27.0": { + "integrity": "sha512-Fg93aNFvXzBq5L7ztVHFP2nYwWU1oTCq48G0TjF/qC1UN36KWa2H5Hsm72kERd5x/sjy2M2Tn4kDEorUlpXOlw==", + "dependencies": [ + "@types/cli-progress", + "ansi-escapes", + "ansi-styles@4.3.0", + "cardinal", + "chalk@4.1.2", + "clean-stack@3.0.1", + "cli-progress", + "color", + "debug@4.4.0", + "ejs", + "get-package-type", + "globby", + "hyperlinker", + "indent-string", + "is-wsl", + "js-yaml", + "minimatch@9.0.5", + "natural-orderby", + "object-treeify", + "password-prompt", + "slice-ansi", + "string-width@4.2.3", + "strip-ansi@6.0.1", + "supports-color@8.1.1", + "supports-hyperlinks", + "widest-line", + "wordwrap", + "wrap-ansi@7.0.0" + ] + }, + "@oclif/core@4.2.6": { + "integrity": "sha512-agk1Tlm7qMemWx+qq5aNgkYwX2JCkoVP4M0ruFveJrarmdUPbKZTMW1j/eg8lNKZh1sp68ytZyKhYXYEfRPcww==", + "dependencies": [ + "ansi-escapes", + "ansis", + "clean-stack@3.0.1", + "cli-spinners", + "debug@4.4.0", + "ejs", + "get-package-type", + "globby", + "indent-string", + "is-wsl", + "lilconfig", + "minimatch@9.0.5", + "semver", + "string-width@4.2.3", + "supports-color@8.1.1", + "widest-line", + "wordwrap", + "wrap-ansi@7.0.0" + ] + }, + "@oclif/plugin-autocomplete@3.2.22": { + "integrity": "sha512-oj68qowjaPifKttINdTbCUUeVwMMumSn7HJck3R84E+HpkED7ih0BSO5Jx1Gs0jbH7ZfohKugSRmOCe5JZYb5A==", + "dependencies": [ + "@oclif/core@4.2.6", + "ansis", + "debug@4.4.0", + "ejs" + ] + }, + "@oclif/plugin-commands@3.3.4": { + "integrity": "sha512-jjn24eE4gXY59Jmq6w48tPnH7WLJSt9QoDdJBcN4VLHqQlwkXpTllVKetCR0QG3pDt7ap1nl6kIRs/nAbbownw==", + "dependencies": [ + "@oclif/core@3.27.0", + "lodash" + ] + }, + "@oclif/plugin-help@6.2.25": { + "integrity": "sha512-1WPSzSvlYaIFlGGKbefldpx49uTAtsOFuHTbjeBuzSR/MLmooQGHzluvwm2W5/vyoi4AGG+PdiDJFH/b+h+BGA==", + "dependencies": [ + "@oclif/core@4.2.6" + ] + }, + "@oclif/plugin-not-found@3.2.42": { + "integrity": "sha512-hoPkt32xtXnsIFOHDK6ISCbh3v0FskDHvzmUpIKQYsojJhU9Xz/ygCyBVoFrOaJow9y/84ZARQWau2CswaprHQ==", + "dependencies": [ + "@inquirer/prompts", + "@oclif/core@4.2.6", + "ansis", + "fast-levenshtein" + ] + }, + "@oclif/plugin-plugins@4.3.10": { + "integrity": "sha512-DYdkGDFNRVgdTW4RUPk+i5JTjQGZphDKs3j1uL/bxRYO7dIRSrohgeso6jAiPSE+igQtAXa8KqKhsanK4za0XA==", + "dependencies": [ + "@oclif/core@3.27.0", + "chalk@5.4.1", + "debug@4.4.0", + "npm", + "npm-run-path", + "semver", + "shelljs", + "validate-npm-package-name", + "yarn" + ] + }, + "@oclif/plugin-warn-if-update-available@3.1.33": { + "integrity": "sha512-JqbE7YOrf2w1AbedyhdWR2OMkgOUV46esOGZZdPIhh3CCoKwPHZfmEf0o93vVITqDLkxoGrWR6MkFVcuKNAvsA==", + "dependencies": [ + "@oclif/core@4.2.6", + "ansis", + "debug@4.4.0", + "http-call", + "lodash", + "registry-auth-token" + ] + }, + "@peculiar/asn1-schema@2.3.15": { + "integrity": "sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==", + "dependencies": [ + "asn1js@3.0.5", + "pvtsutils", + "tslib@2.8.1" + ] + }, + "@pkgjs/parseargs@0.11.0": { + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + }, + "@pnpm/config.env-replace@1.1.0": { + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==" + }, + "@pnpm/network.ca-file@1.0.2": { + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dependencies": [ + "graceful-fs@4.2.10" + ] + }, + "@pnpm/npm-conf@2.3.1": { + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dependencies": [ + "@pnpm/config.env-replace", + "@pnpm/network.ca-file", + "config-chain" + ] + }, + "@safe-global/protocol-kit@5.2.2": { + "integrity": "sha512-e0Veo7K3fzOp24XViuzcs2ErvWpR3G1sg9OjiIv4MuwQdOr0IhAU7GiIZflMe0TC0Y1Ebdeb5w+tk6EdUEiaKQ==", + "dependencies": [ + "@noble/curves@1.8.1", + "@peculiar/asn1-schema", + "@safe-global/safe-deployments", + "@safe-global/safe-modules-deployments", + "@safe-global/types-kit", + "abitype", + "semver", + "viem@2.22.21_ws@8.18.0" + ] + }, + "@safe-global/safe-deployments@1.37.30": { + "integrity": "sha512-fARm/2VkT4Om/EoaVG4G/TvxaXnVfJZQrsXi/3eDcIB0NwkjgTHoku7FfdY4Gl3EINCaUHnWT9t7CNMPJu/I5w==", + "dependencies": [ + "semver" + ] + }, + "@safe-global/safe-modules-deployments@2.2.7": { + "integrity": "sha512-xlnAW7d0394EwlRgWJ+nuQNQmGkL0qBE54pN+1IBbUEFvWW8q0SbhDsTmlGgeDM+9F8q2KM06Ip1JMmddppA/Q==" + }, + "@safe-global/types-kit@1.0.2": { + "integrity": "sha512-KiRlU1nlWuj4Qr+nLxgO/yRpJamVUOonnAkLrSMrzfGwXcfLWXJJtoD9sv/pvTIHMWSOlzgkrc1KXqY3K68SGg==", + "dependencies": [ + "abitype" + ] + }, + "@scure/base@1.1.9": { + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==" + }, + "@scure/base@1.2.4": { + "integrity": "sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ==" + }, + "@scure/bip32@1.1.5": { + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dependencies": [ + "@noble/hashes@1.2.0", + "@noble/secp256k1", + "@scure/base@1.1.9" + ] + }, + "@scure/bip32@1.4.0": { + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": [ + "@noble/curves@1.4.2", + "@noble/hashes@1.4.0", + "@scure/base@1.1.9" + ] + }, + "@scure/bip32@1.6.2": { + "integrity": "sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw==", + "dependencies": [ + "@noble/curves@1.8.1", + "@noble/hashes@1.7.1", + "@scure/base@1.2.4" + ] + }, + "@scure/bip39@1.1.1": { + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dependencies": [ + "@noble/hashes@1.2.0", + "@scure/base@1.1.9" + ] + }, + "@scure/bip39@1.3.0": { + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": [ + "@noble/hashes@1.4.0", + "@scure/base@1.1.9" + ] + }, + "@scure/bip39@1.5.4": { + "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", + "dependencies": [ + "@noble/hashes@1.7.1", + "@scure/base@1.2.4" + ] + }, + "@sigstore/bundle@2.3.2": { + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "dependencies": [ + "@sigstore/protobuf-specs" + ] + }, + "@sigstore/core@1.1.0": { + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==" + }, + "@sigstore/protobuf-specs@0.3.3": { + "integrity": "sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==" + }, + "@sigstore/sign@2.3.2": { + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "dependencies": [ + "@sigstore/bundle", + "@sigstore/core", + "@sigstore/protobuf-specs", + "make-fetch-happen", + "proc-log@4.2.0", + "promise-retry" + ] + }, + "@sigstore/tuf@2.3.4": { + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "dependencies": [ + "@sigstore/protobuf-specs", + "tuf-js" + ] + }, + "@sigstore/verify@1.2.1": { + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "dependencies": [ + "@sigstore/bundle", + "@sigstore/core", + "@sigstore/protobuf-specs" + ] + }, + "@sindresorhus/is@4.6.0": { + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" + }, + "@stablelib/binary@0.7.2": { + "integrity": "sha512-J7iGppeKR112ICTZTAoALcT3yBpTrd2Z/F0wwiOUZPVPTDFTQFWHZZdYzfal9+mY1uMUPRSEnNmDuXRZbtE8Xg==", + "dependencies": [ + "@stablelib/int" + ] + }, + "@stablelib/blake2s@0.10.4": { + "integrity": "sha512-IasdklC7YfXXLmVbnsxqmd66+Ki+Ysbp0BtcrNxAtrGx/HRGjkUZbSTbEa7HxFhBWIstJRcE5ExgY+RCqAiULQ==", + "dependencies": [ + "@stablelib/binary", + "@stablelib/hash", + "@stablelib/wipe" + ] + }, + "@stablelib/blake2xs@0.10.4": { + "integrity": "sha512-1N0S4cruso/StV9TmoujPGj3RU0Cy42wlZneBWLWby7m2ssnY57l/CsYQSm03TshOoYss4hqc5kwSy5pmWAdUA==", + "dependencies": [ + "@stablelib/blake2s", + "@stablelib/hash", + "@stablelib/wipe" + ] + }, + "@stablelib/hash@0.5.0": { + "integrity": "sha512-rlNEBTskjKVl9f4rpRgM2GV3IrZWfNJFY5Y/2tmQtA2ozEkPLoUp9J/uJnBRnOpCsuflPW2z+pwqPbEYOPCHwQ==" + }, + "@stablelib/int@0.5.0": { + "integrity": "sha512-cuaPoxm3K14LiEICiA3iz0aeGurg75v+haZMV+xloVTw3CT25oMRJgQ6VxZ2p2cHy4kjhVI68kX4oaYrhnTm+g==" + }, + "@stablelib/wipe@0.5.0": { + "integrity": "sha512-SifvRV0rTTFR1qEF6G1hondGZyrmiM1laR8PPrO6TZwQG03hJduVbUX8uQk+Q6FdkND2Z9B8uLPyUAquQIk3iA==" + }, + "@szmarczak/http-timer@4.0.6": { + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dependencies": [ + "defer-to-connect" + ] + }, + "@szmarczak/http-timer@5.0.1": { + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dependencies": [ + "defer-to-connect" + ] + }, + "@tufjs/canonical-json@2.0.0": { + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==" + }, + "@tufjs/models@2.0.1": { + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dependencies": [ + "@tufjs/canonical-json", + "minimatch@9.0.5" + ] + }, + "@types/asn1js@0.0.2": { + "integrity": "sha512-xtLPq140WhPqvDZDpY70rTx4qTezHs+8htbhWQGuevBRQko8FRjFSO5WVTwXOwd3W5tQRxJ7eni30fDUP2q4wQ==", + "dependencies": [ + "@types/pvutils" + ] + }, + "@types/bn.js@5.1.6": { + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/bunyan@1.8.10": { + "integrity": "sha512-A82U/3EAdWX89f+dfysGiRvbeoLuRLV3i6SLg3HuNK4Yf+dHOqdbxT70vQUwvD3DOr2Dvpcv9dRX4ipTf0LpEg==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/cacheable-request@6.0.3": { + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dependencies": [ + "@types/http-cache-semantics", + "@types/keyv", + "@types/node@22.5.4", + "@types/responselike" + ] + }, + "@types/cli-progress@3.11.6": { + "integrity": "sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/command-exists@1.2.3": { + "integrity": "sha512-PpbaE2XWLaWYboXD6k70TcXO/OdOyyRFq5TVpmlUELNxdkkmXU9fkImNosmXU1DtsNrqdUgWd/nJQYXgwmtdXQ==" + }, + "@types/country-data@0.0.0": { + "integrity": "sha512-lIxCk6G7AwmUagQ4gIQGxUBnvAq664prFD9nSAz6dgd1XmBXBtZABV/op+QsJsIyaP1GZsf/iXhYKHX3azSRCw==" + }, + "@types/debug@4.1.12": { + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": [ + "@types/ms" + ] + }, + "@types/elliptic@6.4.18": { + "integrity": "sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==", + "dependencies": [ + "@types/bn.js" + ] + }, + "@types/google-libphonenumber@7.4.30": { + "integrity": "sha512-Td1X1ayRxePEm6/jPHUBs2tT6TzW1lrVB6ZX7ViPGellyzO/0xMNi+wx5nH6jEitjznq276VGIqjK5qAju0XVw==" + }, + "@types/http-cache-semantics@4.0.4": { + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + }, + "@types/inquirer@6.5.0": { + "integrity": "sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw==", + "dependencies": [ + "@types/through", + "rxjs@6.6.7" + ] + }, + "@types/keyv@3.1.4": { + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/ms@2.1.0": { + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "@types/node@12.20.55": { + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==" + }, + "@types/node@18.19.76": { + "integrity": "sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==", + "dependencies": [ + "undici-types@5.26.5" + ] + }, + "@types/node@22.5.4": { + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==", + "dependencies": [ + "undici-types@6.19.8" + ] + }, + "@types/pbkdf2@3.1.2": { + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/pvutils@1.0.4": { + "integrity": "sha512-nrRU5vqMsK7Bo1T/RnsEaZ0B6HXTKaXPqQ2cDJHpLa93GUiwBHWhlLYHf0Zu8kfXckCnOhNHL/el5GQreJKNOQ==" + }, + "@types/responselike@1.0.3": { + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/secp256k1@4.0.6": { + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/through@0.0.33": { + "integrity": "sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==", + "dependencies": [ + "@types/node@22.5.4" + ] + }, + "@types/utf8@2.1.6": { + "integrity": "sha512-pRs2gYF5yoKYrgSaira0DJqVg2tFuF+Qjp838xS7K+mJyY2jJzjsrl6y17GbIa4uMRogMbxs+ghNCvKg6XyNrA==" + }, + "@types/w3c-web-usb@1.0.10": { + "integrity": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ==" + }, + "abbrev@2.0.0": { + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==" + }, + "abitype@1.0.8": { + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==" + }, + "abortcontroller-polyfill@1.7.8": { + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==" + }, + "accepts@1.3.8": { + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": [ + "mime-types", + "negotiator@0.6.3" + ] + }, + "aes-js@3.0.0": { + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "agent-base@7.1.3": { + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==" + }, + "aggregate-error@3.1.0": { + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": [ + "clean-stack@2.2.0", + "indent-string" + ] + }, + "ajv@6.12.6": { + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": [ + "fast-deep-equal", + "fast-json-stable-stringify", + "json-schema-traverse", + "uri-js" + ] + }, + "ansi-escapes@4.3.2": { + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": [ + "type-fest" + ] + }, + "ansi-regex@5.0.1": { + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-regex@6.1.0": { + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" + }, + "ansi-styles@3.2.1": { + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": [ + "color-convert@1.9.3" + ] + }, + "ansi-styles@4.3.0": { + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": [ + "color-convert@2.0.1" + ] + }, + "ansi-styles@6.2.1": { + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "ansicolors@0.3.2": { + "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" + }, + "ansis@3.15.0": { + "integrity": "sha512-zIcWDJ+Kwqxfdnogx66Gxzr0kVmCcRAdat9nlY2IHsshqTN4fBH6tMeRMPA/2w0rpBayIJvjQAaa2/4RDrNqwg==" + }, + "aproba@2.0.0": { + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "archy@1.0.0": { + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" + }, + "are-we-there-yet@4.0.2": { + "integrity": "sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==" + }, + "argparse@1.0.10": { + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": [ + "sprintf-js@1.0.3" + ] + }, + "array-flatten@1.1.1": { + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "array-union@2.1.0": { + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "asn1@0.2.6": { + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": [ + "safer-buffer" + ] + }, + "asn1js@2.4.0": { + "integrity": "sha512-PvZC0FMyMut8aOnR2jAEGSkmRtHIUYPe9amUEnGjr9TdnUmsfoOkjrvUkOEU9mzpYBR1HyO9bF+8U1cLTMMHhQ==", + "dependencies": [ + "pvutils" + ] + }, + "asn1js@3.0.5": { + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "dependencies": [ + "pvtsutils", + "pvutils", + "tslib@2.8.1" + ] + }, + "assert-plus@1.0.0": { + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + }, + "astral-regex@2.0.0": { + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + }, + "async-limiter@1.0.1": { + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "async@3.2.6": { + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "asynckit@0.4.0": { + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "available-typed-arrays@1.0.7": { + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": [ + "possible-typed-array-names" + ] + }, + "aws-sign2@0.7.0": { + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + }, + "aws4@1.13.2": { + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==" + }, + "axios@1.7.7": { + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": [ + "follow-redirects", + "form-data@4.0.2", + "proxy-from-env" + ] + }, + "balanced-match@1.0.2": { + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base-x@3.0.10": { + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "base64-js@1.5.1": { + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "bcrypt-pbkdf@1.0.2": { + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": [ + "tweetnacl" + ] + }, + "bech32@1.1.4": { + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "big-integer@1.6.52": { + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==" + }, + "bignumber.js@9.0.0": { + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==" + }, + "bignumber.js@9.1.2": { + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + }, + "bin-links@4.0.4": { + "integrity": "sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==", + "dependencies": [ + "cmd-shim", + "npm-normalize-package-bin", + "read-cmd-shim", + "write-file-atomic" + ] + }, + "binary-extensions@2.3.0": { + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "bindings@1.5.0": { + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": [ + "file-uri-to-path" + ] + }, + "bl@4.1.0": { + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": [ + "buffer", + "inherits@2.0.4", + "readable-stream" + ] + }, + "blakejs@1.2.1": { + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" + }, + "bluebird@3.7.2": { + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "bn.js@4.11.6": { + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + }, + "bn.js@4.12.1": { + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" + }, + "bn.js@5.2.1": { + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "body-parser@1.20.3": { + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": [ + "bytes", + "content-type", + "debug@2.6.9", + "depd", + "destroy", + "http-errors", + "iconv-lite@0.4.24", + "on-finished", + "qs@6.13.0", + "raw-body", + "type-is", + "unpipe" + ] + }, + "brace-expansion@1.1.11": { + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": [ + "balanced-match", + "concat-map" + ] + }, + "brace-expansion@2.0.1": { + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": [ + "balanced-match" + ] + }, + "braces@3.0.3": { + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": [ + "fill-range" + ] + }, + "brorand@1.1.0": { + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserify-aes@1.2.0": { + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": [ + "buffer-xor", + "cipher-base", + "create-hash", + "evp_bytestokey", + "inherits@2.0.4", + "safe-buffer@5.2.1" + ] + }, + "bs58@4.0.1": { + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": [ + "base-x" + ] + }, + "bs58check@2.1.2": { + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": [ + "bs58", + "create-hash", + "safe-buffer@5.2.1" + ] + }, + "buffer-equal-constant-time@1.0.1": { + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "buffer-to-arraybuffer@0.0.5": { + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==" + }, + "buffer-xor@1.0.3": { + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "buffer@5.7.1": { + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": [ + "base64-js", + "ieee754" + ] + }, + "bufferutil@4.0.9": { + "integrity": "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==", + "dependencies": [ + "node-gyp-build" + ] + }, + "bunyan-debug-stream@2.0.0_bunyan@1.8.15": { + "integrity": "sha512-Ovl43CJ7nUwalLzdXc6E1nGIy6ift9Z/QpYXUtsjpDAg35ZFKXifKNZyfpMGuN3N7ijLLqbnxPsMMHsXDdXa9A==", + "dependencies": [ + "bunyan", + "colors", + "exception-formatter" + ] + }, + "bunyan-gke-stackdriver@0.1.2_bunyan@1.8.15": { + "integrity": "sha512-eY5OLgAXvOvOq2YpxI0HlV5HjAcLm36Ln3PxxsztO+2GrFSgU3oXoic2LCif/heBKoyOZdMyXKWF5dvswSOS6w==", + "dependencies": [ + "bunyan" + ] + }, + "bunyan@1.8.15": { + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "dependencies": [ + "dtrace-provider", + "moment", + "mv", + "safe-json-stringify" + ] + }, + "bytes@3.1.2": { + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "cacache@18.0.4": { + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dependencies": [ + "@npmcli/fs", + "fs-minipass@3.0.3", + "glob@10.4.5", + "lru-cache", + "minipass@7.1.2", + "minipass-collect", + "minipass-flush", + "minipass-pipeline", + "p-map", + "ssri", + "tar@6.2.1", + "unique-filename" + ] + }, + "cacheable-lookup@5.0.4": { + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + }, + "cacheable-lookup@6.1.0": { + "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==" + }, + "cacheable-request@7.0.4": { + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dependencies": [ + "clone-response", + "get-stream@5.2.0", + "http-cache-semantics", + "keyv", + "lowercase-keys@2.0.0", + "normalize-url", + "responselike" + ] + }, + "call-bind-apply-helpers@1.0.2": { + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": [ + "es-errors", + "function-bind" + ] + }, + "call-bind@1.0.8": { + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dependencies": [ + "call-bind-apply-helpers", + "es-define-property", + "get-intrinsic", + "set-function-length" + ] + }, + "call-bound@1.0.3": { + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dependencies": [ + "call-bind-apply-helpers", + "get-intrinsic" + ] + }, + "cardinal@2.1.1": { + "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", + "dependencies": [ + "ansicolors", + "redeyed" + ] + }, + "case@1.6.3": { + "integrity": "sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==" + }, + "caseless@0.12.0": { + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chalk@2.4.2": { + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": [ + "ansi-styles@3.2.1", + "escape-string-regexp@1.0.5", + "supports-color@5.5.0" + ] + }, + "chalk@4.1.2": { + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": [ + "ansi-styles@4.3.0", + "supports-color@7.2.0" + ] + }, + "chalk@5.4.1": { + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==" + }, + "chardet@0.7.0": { + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "chownr@1.1.4": { + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + }, + "chownr@2.0.0": { + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, + "ci-info@4.1.0": { + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==" + }, + "cidr-regex@4.1.2": { + "integrity": "sha512-q5aHVCGY4KkBBPvkqFLpTQSa95VHrMs883cUbUpXXkcrjH9CVHRiTuoLbQRwQKoPQKzAxHqPjeUrFGnHrZD3RQ==", + "dependencies": [ + "ip-regex" + ] + }, + "cids@0.7.5": { + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "dependencies": [ + "buffer", + "class-is", + "multibase@0.6.1", + "multicodec@1.0.4", + "multihashes" + ] + }, + "cipher-base@1.0.6": { + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "dependencies": [ + "inherits@2.0.4", + "safe-buffer@5.2.1" + ] + }, + "class-is@1.1.0": { + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" + }, + "clean-stack@2.2.0": { + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "clean-stack@3.0.1": { + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "dependencies": [ + "escape-string-regexp@4.0.0" + ] + }, + "cli-columns@4.0.0": { + "integrity": "sha512-XW2Vg+w+L9on9wtwKpyzluIPCWXjaBahI7mTcYjx+BVIYD9c3yqcv/yKC7CmdCZat4rq2yiE1UMSJC5ivKfMtQ==", + "dependencies": [ + "string-width@4.2.3", + "strip-ansi@6.0.1" + ] + }, + "cli-cursor@3.1.0": { + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": [ + "restore-cursor" + ] + }, + "cli-progress@3.12.0": { + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "dependencies": [ + "string-width@4.2.3" + ] + }, + "cli-spinners@2.9.2": { + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" + }, + "cli-table3@0.6.5": { + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dependencies": [ + "@colors/colors", + "string-width@4.2.3" + ] + }, + "cli-width@3.0.0": { + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + }, + "cli-width@4.1.0": { + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==" + }, + "clone-response@1.0.3": { + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": [ + "mimic-response@1.0.1" + ] + }, + "clone@1.0.4": { + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==" + }, + "cmd-shim@6.0.3": { + "integrity": "sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==" + }, + "color-convert@1.9.3": { + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": [ + "color-name@1.1.3" + ] + }, + "color-convert@2.0.1": { + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": [ + "color-name@1.1.4" + ] + }, + "color-name@1.1.3": { + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "color-name@1.1.4": { + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string@1.9.1": { + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": [ + "color-name@1.1.4", + "simple-swizzle" + ] + }, + "color-support@1.1.3": { + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, + "color@4.2.3": { + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": [ + "color-convert@2.0.1", + "color-string" + ] + }, + "colors@1.4.0": { + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" + }, + "columnify@1.6.0": { + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dependencies": [ + "strip-ansi@6.0.1", + "wcwidth" + ] + }, + "combined-stream@1.0.8": { + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": [ + "delayed-stream" + ] + }, + "command-exists@1.2.9": { + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "common-ancestor-path@1.0.1": { + "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + }, + "concat-map@0.0.1": { + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "config-chain@1.1.13": { + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dependencies": [ + "ini@1.3.8", + "proto-list" + ] + }, + "console-control-strings@1.1.0": { + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, + "content-disposition@0.5.4": { + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "content-hash@2.5.2": { + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dependencies": [ + "cids", + "multicodec@0.5.7", + "multihashes" + ] + }, + "content-type@1.0.5": { + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "cookie-signature@1.0.6": { + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "cookie@0.7.1": { + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==" + }, + "core-util-is@1.0.2": { + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "cors@2.8.5": { + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": [ + "object-assign", + "vary" + ] + }, + "country-data@0.0.31": { + "integrity": "sha512-YqlY/i6ikZwoBFfdjK+hJTGaBdTgDpXLI15MCj2UsXZ2cPBb+Kx86AXmDH7PRGt0LUleck0cCgNdWeIhfbcxkQ==", + "dependencies": [ + "currency-symbol-map", + "underscore" + ] + }, + "crc-32@1.2.2": { + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "create-hash@1.2.0": { + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": [ + "cipher-base", + "inherits@2.0.4", + "md5.js", + "ripemd160", + "sha.js" + ] + }, + "create-hmac@1.1.7": { + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": [ + "cipher-base", + "create-hash", + "inherits@2.0.4", + "ripemd160", + "safe-buffer@5.2.1", + "sha.js" + ] + }, + "cross-fetch@3.0.6": { + "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", + "dependencies": [ + "node-fetch@2.6.1" + ] + }, + "cross-fetch@3.1.5": { + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": [ + "node-fetch@2.6.7" + ] + }, + "cross-fetch@4.1.0": { + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "dependencies": [ + "node-fetch@2.7.0" + ] + }, + "cross-spawn@7.0.6": { + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": [ + "path-key", + "shebang-command", + "which@2.0.2" + ] + }, + "crypto-js@4.2.0": { + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "cssesc@3.0.0": { + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" + }, + "currency-symbol-map@2.2.0": { + "integrity": "sha512-fPZJ3jqM68+AAgqQ7UaGbgHL/39rp6l7GyqS2k1HJPu/kpS8D07x/+Uup6a9tCUKIlOFcRrDCf1qxSt8jnI5BA==" + }, + "d@1.0.2": { + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": [ + "es5-ext", + "type" + ] + }, + "dashdash@1.14.1": { + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": [ + "assert-plus" + ] + }, + "debug@2.6.9": { + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": [ + "ms@2.0.0" + ] + }, + "debug@4.4.0": { + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dependencies": [ + "ms@2.1.3" + ] + }, + "decode-uri-component@0.2.2": { + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" + }, + "decompress-response@3.3.0": { + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": [ + "mimic-response@1.0.1" + ] + }, + "decompress-response@6.0.0": { + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dependencies": [ + "mimic-response@3.1.0" + ] + }, + "deep-extend@0.6.0": { + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "defaults@1.0.4": { + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": [ + "clone" + ] + }, + "defer-to-connect@2.0.1": { + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + }, + "define-data-property@1.1.4": { + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": [ + "es-define-property", + "es-errors", + "gopd" + ] + }, + "define-lazy-prop@2.0.0": { + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==" + }, + "delayed-stream@1.0.0": { + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "depd@2.0.0": { + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy@1.2.0": { + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "detect-libc@2.0.3": { + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "diff@5.2.0": { + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==" + }, + "dir-glob@3.0.1": { + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": [ + "path-type" + ] + }, + "dom-walk@0.1.2": { + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "dotenv@8.6.0": { + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + }, + "dtrace-provider@0.8.8": { + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dependencies": [ + "nan" + ] + }, + "dunder-proto@1.0.1": { + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": [ + "call-bind-apply-helpers", + "es-errors", + "gopd" + ] + }, + "eastasianwidth@0.2.0": { + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "ecc-jsbn@0.1.2": { + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": [ + "jsbn@0.1.1", + "safer-buffer" + ] + }, + "ecdsa-sig-formatter@1.0.11": { + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "ee-first@1.1.1": { + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "eip55@2.1.1": { + "integrity": "sha512-WcagVAmNu2Ww2cDUfzuWVntYwFxbvZ5MvIyLZpMjTTkjD6sCvkGOiS86jTppzu9/gWsc8isLHAeMBWK02OnZmA==", + "dependencies": [ + "keccak" + ] + }, + "ejs@3.1.10": { + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dependencies": [ + "jake" + ] + }, + "elliptic@6.5.4": { + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": [ + "bn.js@4.12.1", + "brorand", + "hash.js", + "hmac-drbg", + "inherits@2.0.4", + "minimalistic-assert", + "minimalistic-crypto-utils" + ] + }, + "elliptic@6.6.1": { + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dependencies": [ + "bn.js@4.12.1", + "brorand", + "hash.js", + "hmac-drbg", + "inherits@2.0.4", + "minimalistic-assert", + "minimalistic-crypto-utils" + ] + }, + "emoji-regex@8.0.0": { + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emoji-regex@9.2.2": { + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "encodeurl@1.0.2": { + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + }, + "encodeurl@2.0.0": { + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" + }, + "encoding@0.1.13": { + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dependencies": [ + "iconv-lite@0.6.3" + ] + }, + "end-of-stream@1.4.4": { + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": [ + "once" + ] + }, + "env-paths@2.2.1": { + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "err-code@2.0.3": { + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==" + }, + "error-ex@1.3.2": { + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": [ + "is-arrayish@0.2.1" + ] + }, + "es-define-property@1.0.1": { + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" + }, + "es-errors@1.3.0": { + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms@1.1.1": { + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": [ + "es-errors" + ] + }, + "es-set-tostringtag@2.1.0": { + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dependencies": [ + "es-errors", + "get-intrinsic", + "has-tostringtag", + "hasown" + ] + }, + "es5-ext@0.10.64": { + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "dependencies": [ + "es6-iterator", + "es6-symbol", + "esniff", + "next-tick" + ] + }, + "es6-iterator@2.0.3": { + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dependencies": [ + "d", + "es5-ext", + "es6-symbol" + ] + }, + "es6-promise@4.2.8": { + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-symbol@3.1.4": { + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "dependencies": [ + "d", + "ext" + ] + }, + "escape-html@1.0.3": { + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp@1.0.5": { + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "escape-string-regexp@4.0.0": { + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "esniff@2.0.1": { + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": [ + "d", + "es5-ext", + "event-emitter", + "type" + ] + }, + "esprima@4.0.1": { + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "etag@1.8.1": { + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + }, + "eth-ens-namehash@2.0.8": { + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dependencies": [ + "idna-uts46-hx", + "js-sha3@0.5.7" + ] + }, + "eth-lib@0.1.29": { + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dependencies": [ + "bn.js@4.12.1", + "elliptic@6.6.1", + "nano-json-stream-parser", + "servify", + "ws@3.3.3", + "xhr-request-promise" + ] + }, + "eth-lib@0.2.8": { + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dependencies": [ + "bn.js@4.12.1", + "elliptic@6.6.1", + "xhr-request-promise" + ] + }, + "ethereum-bloom-filters@1.2.0": { + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "dependencies": [ + "@noble/hashes@1.7.1" + ] + }, + "ethereum-cryptography@0.1.3": { + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dependencies": [ + "@types/pbkdf2", + "@types/secp256k1", + "blakejs", + "browserify-aes", + "bs58check", + "create-hash", + "create-hmac", + "hash.js", + "keccak", + "pbkdf2", + "randombytes", + "safe-buffer@5.2.1", + "scrypt-js", + "secp256k1", + "setimmediate" + ] + }, + "ethereum-cryptography@1.2.0": { + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dependencies": [ + "@noble/hashes@1.2.0", + "@noble/secp256k1", + "@scure/bip32@1.1.5", + "@scure/bip39@1.1.1" + ] + }, + "ethereum-cryptography@2.2.1": { + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": [ + "@noble/curves@1.4.2", + "@noble/hashes@1.4.0", + "@scure/bip32@1.4.0", + "@scure/bip39@1.3.0" + ] + }, + "ethereumjs-util@7.1.5": { + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dependencies": [ + "@types/bn.js", + "bn.js@5.2.1", + "create-hash", + "ethereum-cryptography@0.1.3", + "rlp" + ] + }, + "ethers@5.7.2": { + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "dependencies": [ + "@ethersproject/abi", + "@ethersproject/abstract-provider", + "@ethersproject/abstract-signer", + "@ethersproject/address", + "@ethersproject/base64", + "@ethersproject/basex", + "@ethersproject/bignumber", + "@ethersproject/bytes", + "@ethersproject/constants", + "@ethersproject/contracts", + "@ethersproject/hash", + "@ethersproject/hdnode", + "@ethersproject/json-wallets", + "@ethersproject/keccak256", + "@ethersproject/logger", + "@ethersproject/networks", + "@ethersproject/pbkdf2", + "@ethersproject/properties", + "@ethersproject/providers", + "@ethersproject/random", + "@ethersproject/rlp", + "@ethersproject/sha2", + "@ethersproject/signing-key", + "@ethersproject/solidity", + "@ethersproject/strings", + "@ethersproject/transactions", + "@ethersproject/units", + "@ethersproject/wallet", + "@ethersproject/web", + "@ethersproject/wordlists" + ] + }, + "ethjs-unit@0.1.6": { + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dependencies": [ + "bn.js@4.11.6", + "number-to-bn" + ] + }, + "event-emitter@0.3.5": { + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": [ + "d", + "es5-ext" + ] + }, + "eventemitter3@4.0.4": { + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + }, + "eventemitter3@5.0.1": { + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "events@3.3.0": { + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey@1.0.3": { + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": [ + "md5.js", + "safe-buffer@5.2.1" + ] + }, + "exception-formatter@1.0.7": { + "integrity": "sha512-zV45vEsjytJrwfGq6X9qd1Ll56cW4NC2mhCO6lqwMk4ZpA1fZ6C3UiaQM/X7if+7wZFmCgss3ahp9B/uVFuLRw==", + "dependencies": [ + "colors" + ] + }, + "expand-template@2.0.3": { + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, + "exponential-backoff@3.1.2": { + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==" + }, + "express@4.21.2": { + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dependencies": [ + "accepts", + "array-flatten", + "body-parser", + "content-disposition", + "content-type", + "cookie", + "cookie-signature", + "debug@2.6.9", + "depd", + "encodeurl@2.0.0", + "escape-html", + "etag", + "finalhandler", + "fresh", + "http-errors", + "merge-descriptors", + "methods", + "on-finished", + "parseurl", + "path-to-regexp", + "proxy-addr", + "qs@6.13.0", + "range-parser", + "safe-buffer@5.2.1", + "send", + "serve-static", + "setprototypeof", + "statuses", + "type-is", + "utils-merge", + "vary" + ] + }, + "ext@1.7.0": { + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "dependencies": [ + "type" + ] + }, + "extend@3.0.2": { + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "external-editor@3.1.0": { + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": [ + "chardet", + "iconv-lite@0.4.24", + "tmp" + ] + }, + "extsprintf@1.3.0": { + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + }, + "fast-deep-equal@3.1.3": { + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob@3.3.3": { + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dependencies": [ + "@nodelib/fs.stat", + "@nodelib/fs.walk", + "glob-parent", + "merge2", + "micromatch" + ] + }, + "fast-json-stable-stringify@2.1.0": { + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein@3.0.0": { + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "dependencies": [ + "fastest-levenshtein" + ] + }, + "fastest-levenshtein@1.0.16": { + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" + }, + "fastq@1.19.0": { + "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==", + "dependencies": [ + "reusify" + ] + }, + "figures@3.2.0": { + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": [ + "escape-string-regexp@1.0.5" + ] + }, + "file-uri-to-path@1.0.0": { + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "filelist@1.0.4": { + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": [ + "minimatch@5.1.6" + ] + }, + "fill-range@7.1.1": { + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": [ + "to-regex-range" + ] + }, + "finalhandler@1.3.1": { + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": [ + "debug@2.6.9", + "encodeurl@2.0.0", + "escape-html", + "on-finished", + "parseurl", + "statuses", + "unpipe" + ] + }, + "follow-redirects@1.15.9": { + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==" + }, + "for-each@0.3.5": { + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dependencies": [ + "is-callable" + ] + }, + "foreground-child@3.3.0": { + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dependencies": [ + "cross-spawn", + "signal-exit@4.1.0" + ] + }, + "forever-agent@0.6.1": { + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + }, + "form-data-encoder@1.7.1": { + "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + }, + "form-data@2.3.3": { + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": [ + "asynckit", + "combined-stream", + "mime-types" + ] + }, + "form-data@4.0.2": { + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dependencies": [ + "asynckit", + "combined-stream", + "es-set-tostringtag", + "mime-types" + ] + }, + "forwarded@0.2.0": { + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fp-ts@2.1.1": { + "integrity": "sha512-YcWhMdDCFCja0MmaDroTgNu+NWWrrnUEn92nvDgrtVy9Z71YFnhNVIghoHPt8gs82ijoMzFGeWKvArbyICiJgw==" + }, + "fresh@0.5.2": { + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + }, + "fs-constants@1.0.0": { + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra@4.0.3": { + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dependencies": [ + "graceful-fs@4.2.11", + "jsonfile", + "universalify" + ] + }, + "fs-extra@8.1.0": { + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": [ + "graceful-fs@4.2.11", + "jsonfile", + "universalify" + ] + }, + "fs-minipass@1.2.7": { + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dependencies": [ + "minipass@2.9.0" + ] + }, + "fs-minipass@2.1.0": { + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": [ + "minipass@3.3.6" + ] + }, + "fs-minipass@3.0.3": { + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dependencies": [ + "minipass@7.1.2" + ] + }, + "fs.realpath@1.0.0": { + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind@1.1.2": { + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "gauge@5.0.2": { + "integrity": "sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==", + "dependencies": [ + "aproba", + "color-support", + "console-control-strings", + "has-unicode", + "signal-exit@4.1.0", + "string-width@4.2.3", + "strip-ansi@6.0.1", + "wide-align" + ] + }, + "get-intrinsic@1.2.7": { + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "dependencies": [ + "call-bind-apply-helpers", + "es-define-property", + "es-errors", + "es-object-atoms", + "function-bind", + "get-proto", + "gopd", + "has-symbols", + "hasown", + "math-intrinsics" + ] + }, + "get-package-type@0.1.0": { + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + }, + "get-proto@1.0.1": { + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": [ + "dunder-proto", + "es-object-atoms" + ] + }, + "get-stream@5.2.0": { + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": [ + "pump" + ] + }, + "get-stream@6.0.1": { + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "getpass@0.1.7": { + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": [ + "assert-plus" + ] + }, + "github-from-package@0.0.0": { + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + }, + "glob-parent@5.1.2": { + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": [ + "is-glob" + ] + }, + "glob@10.4.5": { + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dependencies": [ + "foreground-child", + "jackspeak", + "minimatch@9.0.5", + "minipass@7.1.2", + "package-json-from-dist", + "path-scurry" + ] + }, + "glob@6.0.4": { + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dependencies": [ + "inflight", + "inherits@2.0.4", + "minimatch@3.1.2", + "once", + "path-is-absolute" + ] + }, + "glob@7.2.3": { + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": [ + "fs.realpath", + "inflight", + "inherits@2.0.4", + "minimatch@3.1.2", + "once", + "path-is-absolute" + ] + }, + "global@4.4.0": { + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dependencies": [ + "min-document", + "process" + ] + }, + "globby@11.1.0": { + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": [ + "array-union", + "dir-glob", + "fast-glob", + "ignore", + "merge2", + "slash" + ] + }, + "google-libphonenumber@3.2.40": { + "integrity": "sha512-bzGxX/vfggcV80LVcibki+JvR91x6zHpBpovDXSfmZUGn6uLzhbYXsWll2a80EG6qTmvf8lt7KZZ/pkMml8ckw==" + }, + "gopd@1.2.0": { + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" + }, + "got@11.8.6": { + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dependencies": [ + "@sindresorhus/is", + "@szmarczak/http-timer@4.0.6", + "@types/cacheable-request", + "@types/responselike", + "cacheable-lookup@5.0.4", + "cacheable-request", + "decompress-response@6.0.0", + "http2-wrapper@1.0.3", + "lowercase-keys@2.0.0", + "p-cancelable@2.1.1", + "responselike" + ] + }, + "got@12.1.0": { + "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "dependencies": [ + "@sindresorhus/is", + "@szmarczak/http-timer@5.0.1", + "@types/cacheable-request", + "@types/responselike", + "cacheable-lookup@6.1.0", + "cacheable-request", + "decompress-response@6.0.0", + "form-data-encoder", + "get-stream@6.0.1", + "http2-wrapper@2.2.1", + "lowercase-keys@3.0.0", + "p-cancelable@3.0.0", + "responselike" + ] + }, + "graceful-fs@4.2.10": { + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "graceful-fs@4.2.11": { + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "har-schema@2.0.0": { + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + }, + "har-validator@5.1.5": { + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dependencies": [ + "ajv", + "har-schema" + ] + }, + "has-flag@3.0.0": { + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-flag@4.0.0": { + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors@1.0.2": { + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": [ + "es-define-property" + ] + }, + "has-symbols@1.1.0": { + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" + }, + "has-tostringtag@1.0.2": { + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": [ + "has-symbols" + ] + }, + "has-unicode@2.0.1": { + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, + "hash-base@3.1.0": { + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": [ + "inherits@2.0.4", + "readable-stream", + "safe-buffer@5.2.1" + ] + }, + "hash.js@1.1.7": { + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": [ + "inherits@2.0.4", + "minimalistic-assert" + ] + }, + "hasown@2.0.2": { + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": [ + "function-bind" + ] + }, + "hmac-drbg@1.0.1": { + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": [ + "hash.js", + "minimalistic-assert", + "minimalistic-crypto-utils" + ] + }, + "hosted-git-info@7.0.2": { + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dependencies": [ + "lru-cache" + ] + }, + "http-cache-semantics@4.1.1": { + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "http-call@5.3.0": { + "integrity": "sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==", + "dependencies": [ + "content-type", + "debug@4.4.0", + "is-retry-allowed", + "is-stream", + "parse-json", + "tunnel-agent" + ] + }, + "http-errors@2.0.0": { + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": [ + "depd", + "inherits@2.0.4", + "setprototypeof", + "statuses", + "toidentifier" + ] + }, + "http-https@1.0.0": { + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" + }, + "http-proxy-agent@7.0.2": { + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": [ + "agent-base", + "debug@4.4.0" + ] + }, + "http-signature@1.2.0": { + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": [ + "assert-plus", + "jsprim", + "sshpk" + ] + }, + "http2-wrapper@1.0.3": { + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dependencies": [ + "quick-lru", + "resolve-alpn" + ] + }, + "http2-wrapper@2.2.1": { + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dependencies": [ + "quick-lru", + "resolve-alpn" + ] + }, + "https-proxy-agent@7.0.6": { + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": [ + "agent-base", + "debug@4.4.0" + ] + }, + "humanize-duration@3.32.1": { + "integrity": "sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g==" + }, + "hyperlinker@1.0.0": { + "integrity": "sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==" + }, + "iconv-lite@0.4.24": { + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": [ + "safer-buffer" + ] + }, + "iconv-lite@0.6.3": { + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": [ + "safer-buffer" + ] + }, + "idna-uts46-hx@2.3.1": { + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dependencies": [ + "punycode@2.1.0" + ] + }, + "ieee754@1.2.1": { + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore-walk@6.0.5": { + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dependencies": [ + "minimatch@9.0.5" + ] + }, + "ignore@5.3.2": { + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" + }, + "imurmurhash@0.1.4": { + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "indent-string@4.0.0": { + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "inflight@1.0.6": { + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": [ + "once", + "wrappy" + ] + }, + "inherits@2.0.3": { + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "inherits@2.0.4": { + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini@1.3.8": { + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "ini@4.1.3": { + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==" + }, + "init-package-json@6.0.3": { + "integrity": "sha512-Zfeb5ol+H+eqJWHTaGca9BovufyGeIfr4zaaBorPmJBMrJ+KBnN+kQx2ZtXdsotUTgldHmHQV44xvUWOUA7E2w==", + "dependencies": [ + "@npmcli/package-json", + "npm-package-arg", + "promzard", + "read@3.0.1", + "semver", + "validate-npm-package-license", + "validate-npm-package-name" + ] + }, + "inquirer@7.3.3": { + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dependencies": [ + "ansi-escapes", + "chalk@4.1.2", + "cli-cursor", + "cli-width@3.0.0", + "external-editor", + "figures", + "lodash", + "mute-stream@0.0.8", + "run-async", + "rxjs@6.6.7", + "string-width@4.2.3", + "strip-ansi@6.0.1", + "through" + ] + }, + "interpret@1.4.0": { + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "io-ts@2.0.1_fp-ts@2.1.1": { + "integrity": "sha512-RezD+WcCfW4VkMkEcQWL/Nmy/nqsWTvTYg7oUmTGzglvSSV2P9h2z1PVeREPFf0GWNzruYleAt1XCMQZSg1xxQ==", + "dependencies": [ + "fp-ts" + ] + }, + "ip-address@9.0.5": { + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": [ + "jsbn@1.1.0", + "sprintf-js@1.1.3" + ] + }, + "ip-regex@5.0.0": { + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==" + }, + "ipaddr.js@1.9.1": { + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-arguments@1.2.0": { + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dependencies": [ + "call-bound", + "has-tostringtag" + ] + }, + "is-arrayish@0.2.1": { + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "is-arrayish@0.3.2": { + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-base64@1.1.0": { + "integrity": "sha512-Nlhg7Z2dVC4/PTvIFkgVVNvPHSO2eR/Yd0XzhGiXCXEvWnptXlXa/clQ8aePPiMuxEGcWfzWbGw2Fe3d+Y3v1g==" + }, + "is-callable@1.2.7": { + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-cidr@5.1.1": { + "integrity": "sha512-AwzRMjtJNTPOgm7xuYZ71715z99t+4yRnSnSzgK5err5+heYi4zMuvmpUadaJ28+KCXCQo8CjUrKQZRWSPmqTQ==", + "dependencies": [ + "cidr-regex" + ] + }, + "is-core-module@2.16.1": { + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dependencies": [ + "hasown" + ] + }, + "is-docker@2.2.1": { + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + }, + "is-extglob@2.1.1": { + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point@3.0.0": { + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-function@1.0.2": { + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" + }, + "is-generator-function@1.1.0": { + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dependencies": [ + "call-bound", + "get-proto", + "has-tostringtag", + "safe-regex-test" + ] + }, + "is-glob@4.0.3": { + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": [ + "is-extglob" + ] + }, + "is-hex-prefixed@1.0.0": { + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==" + }, + "is-lambda@1.0.1": { + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" + }, + "is-number@7.0.0": { + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-regex@1.2.1": { + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dependencies": [ + "call-bound", + "gopd", + "has-tostringtag", + "hasown" + ] + }, + "is-retry-allowed@1.2.0": { + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-stream@2.0.1": { + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-typed-array@1.1.15": { + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dependencies": [ + "which-typed-array" + ] + }, + "is-typedarray@1.0.0": { + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "is-wsl@2.2.0": { + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": [ + "is-docker" + ] + }, + "isexe@2.0.0": { + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isexe@3.1.1": { + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "isows@1.0.6_ws@8.18.0": { + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "dependencies": [ + "ws@8.18.0" + ] + }, + "isstream@0.1.2": { + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "jackspeak@3.4.3": { + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dependencies": [ + "@isaacs/cliui", + "@pkgjs/parseargs" + ] + }, + "jake@10.9.2": { + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dependencies": [ + "async", + "chalk@4.1.2", + "filelist", + "minimatch@3.1.2" + ] + }, + "js-sha3@0.5.7": { + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" + }, + "js-sha3@0.8.0": { + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "js-tokens@4.0.0": { + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml@3.14.1": { + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": [ + "argparse", + "esprima" + ] + }, + "jsbn@0.1.1": { + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "jsbn@1.1.0": { + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "json-buffer@3.0.1": { + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-parse-better-errors@1.0.2": { + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "json-parse-even-better-errors@3.0.2": { + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==" + }, + "json-schema-traverse@0.4.1": { + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-schema@0.4.0": { + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "json-stringify-nice@1.1.4": { + "integrity": "sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==" + }, + "json-stringify-safe@5.0.1": { + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "jsonfile@4.0.0": { + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dependencies": [ + "graceful-fs@4.2.11" + ] + }, + "jsonparse@1.3.1": { + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" + }, + "jsonwebtoken@9.0.2": { + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": [ + "jws@3.2.2", + "lodash.includes", + "lodash.isboolean", + "lodash.isinteger", + "lodash.isnumber", + "lodash.isplainobject", + "lodash.isstring", + "lodash.once", + "ms@2.1.3", + "semver" + ] + }, + "jsprim@1.4.2": { + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": [ + "assert-plus", + "extsprintf", + "json-schema", + "verror" + ] + }, + "just-diff-apply@5.5.0": { + "integrity": "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==" + }, + "just-diff@6.0.2": { + "integrity": "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==" + }, + "jwa@1.4.1": { + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dependencies": [ + "buffer-equal-constant-time", + "ecdsa-sig-formatter", + "safe-buffer@5.2.1" + ] + }, + "jwa@2.0.0": { + "integrity": "sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA==", + "dependencies": [ + "buffer-equal-constant-time", + "ecdsa-sig-formatter", + "safe-buffer@5.2.1" + ] + }, + "jws@3.2.2": { + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": [ + "jwa@1.4.1", + "safe-buffer@5.2.1" + ] + }, + "jws@4.0.0": { + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "dependencies": [ + "jwa@2.0.0", + "safe-buffer@5.2.1" + ] + }, + "keccak@3.0.4": { + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "dependencies": [ + "node-addon-api@2.0.2", + "node-gyp-build", + "readable-stream" + ] + }, + "keyv@4.5.4": { + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": [ + "json-buffer" + ] + }, + "kleur@3.0.3": { + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" + }, + "libnpmaccess@8.0.6": { + "integrity": "sha512-uM8DHDEfYG6G5gVivVl+yQd4pH3uRclHC59lzIbSvy7b5FEwR+mU49Zq1jEyRtRFv7+M99mUW9S0wL/4laT4lw==", + "dependencies": [ + "npm-package-arg", + "npm-registry-fetch@17.1.0" + ] + }, + "libnpmdiff@6.1.4": { + "integrity": "sha512-KCNoCY8kjQ16/EE4VoW7AYqecsb9frNIh/cPwWQSk1s2grzZMQH+Scp7Yo7Fk6SWTkyVDLZEYfUT/vKONYrfmg==", + "dependencies": [ + "@npmcli/arborist", + "@npmcli/installed-package-contents", + "binary-extensions", + "diff", + "minimatch@9.0.5", + "npm-package-arg", + "pacote@18.0.6", + "tar@6.2.1" + ] + }, + "libnpmexec@7.0.10": { + "integrity": "sha512-MwjY0SzG9pHBMW+Otl/6ZA2s4kRUYxelo9vIKeWHG3CV0b/4mzi88rYNk3fv46hQ4ypIIEZYOzV/pHky/DS8og==", + "dependencies": [ + "@npmcli/arborist", + "@npmcli/run-script@7.0.4", + "ci-info", + "npm-package-arg", + "npmlog", + "pacote@17.0.7", + "proc-log@3.0.0", + "read@3.0.1", + "read-package-json-fast", + "semver", + "walk-up-path" + ] + }, + "libnpmfund@5.0.12": { + "integrity": "sha512-lox1UHcv8/r/TE+T9B+aOylU3c13tK2IuwwUwUm+YMw+C/iq14dqskHqhGPTqa75ZJbiVOW7PMWO92Wn5HG49Q==", + "dependencies": [ + "@npmcli/arborist" + ] + }, + "libnpmhook@10.0.5": { + "integrity": "sha512-XulT+N/s3o9oFlIq6pGRv3OG2qR1NVRbVQOKLchycDwyf16RZA3oXbeEgs2H3oE7hRZPUMBZqsalQXMMPal3cQ==", + "dependencies": [ + "aproba", + "npm-registry-fetch@17.1.0" + ] + }, + "libnpmorg@6.0.6": { + "integrity": "sha512-4MVxsAS4H2z7su/sU0GsrirfBm4ssfqPRSDvoZ8qmRw58kEWJ0qE0cQ2VilRlFgCWKzKPhfoPeyNPyxBTnOusA==", + "dependencies": [ + "aproba", + "npm-registry-fetch@17.1.0" + ] + }, + "libnpmpack@6.0.9": { + "integrity": "sha512-rkGVbP0amt7qNPL/u4NbH0MqhECRrvdRPcszXalYc6TP2ubEBPT54c5LFLxTLROSKjfre6PVvzc1ZNKc8jBWhQ==", + "dependencies": [ + "@npmcli/arborist", + "@npmcli/run-script@7.0.4", + "npm-package-arg", + "pacote@17.0.7" + ] + }, + "libnpmpublish@9.0.9": { + "integrity": "sha512-26zzwoBNAvX9AWOPiqqF6FG4HrSCPsHFkQm7nT+xU1ggAujL/eae81RnCv4CJ2In9q9fh10B88sYSzKCUh/Ghg==", + "dependencies": [ + "ci-info", + "normalize-package-data", + "npm-package-arg", + "npm-registry-fetch@17.1.0", + "proc-log@4.2.0", + "semver", + "sigstore", + "ssri" + ] + }, + "libnpmsearch@7.0.6": { + "integrity": "sha512-PmiER4bgiIqN9OjBtgPn2/PxwU+OdJWtLBFM+vewOrn4VmaNAHSUKDt/wxOOkZSDLyMICVUBp61Ji1+XxhSrKw==", + "dependencies": [ + "npm-registry-fetch@17.1.0" + ] + }, + "libnpmteam@6.0.5": { + "integrity": "sha512-iJW4Cq42GMqMwZEV+Mx8ZLj0Np5kGXQ9P/BAekHjIpYC1v3/vJqbmfJkzkwFvGxEhUotmx+xpLChZCDJ7c3rxA==", + "dependencies": [ + "aproba", + "npm-registry-fetch@17.1.0" + ] + }, + "libnpmversion@5.0.2": { + "integrity": "sha512-6JBnLhd6SYgKRekJ4cotxpURLGbEtKxzw+a8p5o+wNwrveJPMH8yW/HKjeewyHzWmxzzwn9EQ3TkF2onkrwstA==", + "dependencies": [ + "@npmcli/git", + "@npmcli/run-script@7.0.4", + "json-parse-even-better-errors", + "proc-log@3.0.0", + "semver" + ] + }, + "lilconfig@3.1.3": { + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==" + }, + "lodash.includes@4.3.0": { + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean@3.0.3": { + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isinteger@4.0.4": { + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber@3.0.3": { + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject@4.0.6": { + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring@4.0.1": { + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.once@4.1.1": { + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "lodash@4.17.21": { + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "loose-envify@1.4.0": { + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": [ + "js-tokens" + ] + }, + "lowercase-keys@2.0.0": { + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "lowercase-keys@3.0.0": { + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + }, + "lru-cache@10.4.3": { + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "make-fetch-happen@13.0.1": { + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dependencies": [ + "@npmcli/agent", + "cacache", + "http-cache-semantics", + "is-lambda", + "minipass@7.1.2", + "minipass-fetch", + "minipass-flush", + "minipass-pipeline", + "negotiator@0.6.4", + "proc-log@4.2.0", + "promise-retry", + "ssri" + ] + }, + "math-intrinsics@1.1.0": { + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, + "md5.js@1.3.5": { + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": [ + "hash-base", + "inherits@2.0.4", + "safe-buffer@5.2.1" + ] + }, + "media-typer@0.3.0": { + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + }, + "merge-descriptors@1.0.3": { + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "merge2@1.4.1": { + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods@1.1.2": { + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + }, + "micro-ftch@0.3.1": { + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==" + }, + "micromatch@4.0.8": { + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dependencies": [ + "braces", + "picomatch" + ] + }, + "mime-db@1.52.0": { + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types@2.1.35": { + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": [ + "mime-db" + ] + }, + "mime@1.6.0": { + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mimic-fn@2.1.0": { + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "mimic-response@1.0.1": { + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mimic-response@3.1.0": { + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + }, + "min-document@2.19.0": { + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dependencies": [ + "dom-walk" + ] + }, + "minimalistic-assert@1.0.1": { + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils@1.0.1": { + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "minimatch@3.1.2": { + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": [ + "brace-expansion@1.1.11" + ] + }, + "minimatch@5.1.6": { + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": [ + "brace-expansion@2.0.1" + ] + }, + "minimatch@9.0.5": { + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": [ + "brace-expansion@2.0.1" + ] + }, + "minimist@1.2.8": { + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass-collect@2.0.1": { + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dependencies": [ + "minipass@7.1.2" + ] + }, + "minipass-fetch@3.0.5": { + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dependencies": [ + "encoding", + "minipass@7.1.2", + "minipass-sized", + "minizlib@2.1.2" + ] + }, + "minipass-flush@1.0.5": { + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": [ + "minipass@3.3.6" + ] + }, + "minipass-json-stream@1.0.2": { + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", + "dependencies": [ + "jsonparse", + "minipass@3.3.6" + ] + }, + "minipass-pipeline@1.2.4": { + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": [ + "minipass@3.3.6" + ] + }, + "minipass-sized@1.0.3": { + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dependencies": [ + "minipass@3.3.6" + ] + }, + "minipass@2.9.0": { + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dependencies": [ + "safe-buffer@5.2.1", + "yallist@3.1.1" + ] + }, + "minipass@3.3.6": { + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": [ + "yallist@4.0.0" + ] + }, + "minipass@5.0.0": { + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "minipass@7.1.2": { + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, + "minizlib@1.3.3": { + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dependencies": [ + "minipass@2.9.0" + ] + }, + "minizlib@2.1.2": { + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": [ + "minipass@3.3.6", + "yallist@4.0.0" + ] + }, + "mkdirp-classic@0.5.3": { + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + }, + "mkdirp-promise@5.0.1": { + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "dependencies": [ + "mkdirp@1.0.4" + ] + }, + "mkdirp@0.5.6": { + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": [ + "minimist" + ] + }, + "mkdirp@1.0.4": { + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + }, + "mock-fs@4.14.0": { + "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" + }, + "moment@2.30.1": { + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" + }, + "ms@2.0.0": { + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "ms@2.1.3": { + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "multibase@0.6.1": { + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "dependencies": [ + "base-x", + "buffer" + ] + }, + "multibase@0.7.0": { + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "dependencies": [ + "base-x", + "buffer" + ] + }, + "multicodec@0.5.7": { + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "dependencies": [ + "varint" + ] + }, + "multicodec@1.0.4": { + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dependencies": [ + "buffer", + "varint" + ] + }, + "multihashes@0.4.21": { + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dependencies": [ + "buffer", + "multibase@0.7.0", + "varint" + ] + }, + "mute-stream@0.0.8": { + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "mute-stream@1.0.0": { + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==" + }, + "mute-stream@2.0.0": { + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==" + }, + "mv@2.1.1": { + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dependencies": [ + "mkdirp@0.5.6", + "ncp", + "rimraf" + ] + }, + "nan@2.22.0": { + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==" + }, + "nano-json-stream-parser@0.1.2": { + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" + }, + "napi-build-utils@2.0.0": { + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==" + }, + "natural-orderby@2.0.3": { + "integrity": "sha512-p7KTHxU0CUrcOXe62Zfrb5Z13nLvPhSWR/so3kFulUQU0sgUll2Z0LwpsLN351eOOD+hRGu/F1g+6xDfPeD++Q==" + }, + "ncp@2.0.0": { + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==" + }, + "negotiator@0.6.3": { + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" + }, + "negotiator@0.6.4": { + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==" + }, + "next-tick@1.1.0": { + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node-abi@3.74.0": { + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "dependencies": [ + "semver" + ] + }, + "node-addon-api@2.0.2": { + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node-addon-api@3.2.1": { + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + }, + "node-addon-api@5.1.0": { + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, + "node-addon-api@6.1.0": { + "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + }, + "node-fetch@2.6.1": { + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + }, + "node-fetch@2.6.7": { + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": [ + "whatwg-url" + ] + }, + "node-fetch@2.7.0": { + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": [ + "whatwg-url" + ] + }, + "node-gyp-build@4.8.4": { + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==" + }, + "node-gyp@10.3.1": { + "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "dependencies": [ + "env-paths", + "exponential-backoff", + "glob@10.4.5", + "graceful-fs@4.2.11", + "make-fetch-happen", + "nopt", + "proc-log@4.2.0", + "semver", + "tar@6.2.1", + "which@4.0.0" + ] + }, + "node-hid@2.1.2": { + "integrity": "sha512-qhCyQqrPpP93F/6Wc/xUR7L8mAJW0Z6R7HMQV8jCHHksAxNDe/4z4Un/H9CpLOT+5K39OPyt9tIQlavxWES3lg==", + "dependencies": [ + "bindings", + "node-addon-api@3.2.1", + "prebuild-install" + ] + }, + "nopt@7.2.1": { + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dependencies": [ + "abbrev" + ] + }, + "normalize-package-data@6.0.2": { + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dependencies": [ + "hosted-git-info", + "semver", + "validate-npm-package-license" + ] + }, + "normalize-url@6.1.0": { + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + }, + "npm-audit-report@5.0.0": { + "integrity": "sha512-EkXrzat7zERmUhHaoren1YhTxFwsOu5jypE84k6632SXTHcQE1z8V51GC6GVZt8LxkC+tbBcKMUBZAgk8SUSbw==" + }, + "npm-bundled@3.0.1": { + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dependencies": [ + "npm-normalize-package-bin" + ] + }, + "npm-install-checks@6.3.0": { + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dependencies": [ + "semver" + ] + }, + "npm-normalize-package-bin@3.0.1": { + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==" + }, + "npm-package-arg@11.0.3": { + "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "dependencies": [ + "hosted-git-info", + "proc-log@4.2.0", + "semver", + "validate-npm-package-name" + ] + }, + "npm-packlist@8.0.2": { + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dependencies": [ + "ignore-walk" + ] + }, + "npm-pick-manifest@9.1.0": { + "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", + "dependencies": [ + "npm-install-checks", + "npm-normalize-package-bin", + "npm-package-arg", + "semver" + ] + }, + "npm-profile@9.0.2": { + "integrity": "sha512-4S/fd/PNyGgjaGolsdUJFsnfEb+AxJzrrZC3I9qbTYZJ3PJy8T46tIWXA4pBoaeiGh2M2GRvK1K/xMQe1Xgbvw==", + "dependencies": [ + "npm-registry-fetch@17.1.0", + "proc-log@4.2.0" + ] + }, + "npm-registry-fetch@16.2.1": { + "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "dependencies": [ + "@npmcli/redact@1.1.0", + "make-fetch-happen", + "minipass@7.1.2", + "minipass-fetch", + "minipass-json-stream", + "minizlib@2.1.2", + "npm-package-arg", + "proc-log@4.2.0" + ] + }, + "npm-registry-fetch@17.1.0": { + "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "dependencies": [ + "@npmcli/redact@2.0.1", + "jsonparse", + "make-fetch-happen", + "minipass@7.1.2", + "minipass-fetch", + "minizlib@2.1.2", + "npm-package-arg", + "proc-log@4.2.0" + ] + }, + "npm-run-path@4.0.1": { + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": [ + "path-key" + ] + }, + "npm-user-validate@2.0.1": { + "integrity": "sha512-d17PKaF2h8LSGFl5j4b1gHOJt1fgH7YUcCm1kNSJvaLWWKXlBsuUvx0bBEkr0qhsVA9XP5LtRZ83hdlhm2QkgA==" + }, + "npm@10.5.0": { + "integrity": "sha512-Ejxwvfh9YnWVU2yA5FzoYLTW52vxHCz+MHrOFg9Cc8IFgF/6f5AGPAvb5WTay5DIUP1NIfN3VBZ0cLlGO0Ys+A==", + "dependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script@7.0.4", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk@5.4.1", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass@3.0.3", + "glob@10.4.5", + "graceful-fs@4.2.11", + "hosted-git-info", + "ini@4.1.3", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch@9.0.5", + "minipass@7.1.2", + "minipass-pipeline", + "ms@2.1.3", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch@16.2.1", + "npm-user-validate", + "npmlog", + "p-map", + "pacote@17.0.7", + "parse-conflict-json", + "proc-log@3.0.0", + "qrcode-terminal", + "read@2.1.0", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color@9.4.0", + "tar@6.2.1", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which@4.0.0", + "write-file-atomic" + ] + }, + "npmlog@7.0.1": { + "integrity": "sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==", + "dependencies": [ + "are-we-there-yet", + "console-control-strings", + "gauge", + "set-blocking" + ] + }, + "number-to-bn@1.7.0": { + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dependencies": [ + "bn.js@4.11.6", + "strip-hex-prefix" + ] + }, + "oauth-sign@0.9.0": { + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign@4.1.1": { + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect@1.13.4": { + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" + }, + "object-treeify@1.1.33": { + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==" + }, + "oboe@2.1.5": { + "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "dependencies": [ + "http-https" + ] + }, + "on-finished@2.4.1": { + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": [ + "ee-first" + ] + }, + "once@1.4.0": { + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": [ + "wrappy" + ] + }, + "onetime@5.1.2": { + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": [ + "mimic-fn" + ] + }, + "open@8.4.2": { + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": [ + "define-lazy-prop", + "is-docker", + "is-wsl" + ] + }, + "os-tmpdir@1.0.2": { + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==" + }, + "ox@0.6.7": { + "integrity": "sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA==", + "dependencies": [ + "@adraffy/ens-normalize", + "@noble/curves@1.8.1", + "@noble/hashes@1.7.1", + "@scure/bip32@1.6.2", + "@scure/bip39@1.5.4", + "abitype", + "eventemitter3@5.0.1" + ] + }, + "p-cancelable@2.1.1": { + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + }, + "p-cancelable@3.0.0": { + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + }, + "p-map@4.0.0": { + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": [ + "aggregate-error" + ] + }, + "package-json-from-dist@1.0.1": { + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + }, + "pacote@17.0.7": { + "integrity": "sha512-sgvnoUMlkv9xHwDUKjKQFXVyUi8dtJGKp3vg6sYy+TxbDic5RjZCHF3ygv0EJgNRZ2GfRONjlKPUfokJ9lDpwQ==", + "dependencies": [ + "@npmcli/git", + "@npmcli/installed-package-contents", + "@npmcli/promise-spawn", + "@npmcli/run-script@7.0.4", + "cacache", + "fs-minipass@3.0.3", + "minipass@7.1.2", + "npm-package-arg", + "npm-packlist", + "npm-pick-manifest", + "npm-registry-fetch@16.2.1", + "proc-log@4.2.0", + "promise-retry", + "read-package-json", + "read-package-json-fast", + "sigstore", + "ssri", + "tar@6.2.1" + ] + }, + "pacote@18.0.6": { + "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "dependencies": [ + "@npmcli/git", + "@npmcli/installed-package-contents", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script@8.1.0", + "cacache", + "fs-minipass@3.0.3", + "minipass@7.1.2", + "npm-package-arg", + "npm-packlist", + "npm-pick-manifest", + "npm-registry-fetch@17.1.0", + "proc-log@4.2.0", + "promise-retry", + "sigstore", + "ssri", + "tar@6.2.1" + ] + }, + "parse-conflict-json@3.0.1": { + "integrity": "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==", + "dependencies": [ + "json-parse-even-better-errors", + "just-diff", + "just-diff-apply" + ] + }, + "parse-headers@2.0.5": { + "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" + }, + "parse-json@4.0.0": { + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": [ + "error-ex", + "json-parse-better-errors" + ] + }, + "parseurl@1.3.3": { + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "password-prompt@1.1.3": { + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "dependencies": [ + "ansi-escapes", + "cross-spawn" + ] + }, + "path-is-absolute@1.0.1": { + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key@3.1.1": { + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse@1.0.7": { + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-scurry@1.11.1": { + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": [ + "lru-cache", + "minipass@7.1.2" + ] + }, + "path-to-regexp@0.1.12": { + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + }, + "path-type@4.0.0": { + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "path@0.12.7": { + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": [ + "process", + "util@0.10.4" + ] + }, + "pbkdf2@3.1.2": { + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": [ + "create-hash", + "create-hmac", + "ripemd160", + "safe-buffer@5.2.1", + "sha.js" + ] + }, + "performance-now@2.1.0": { + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "picomatch@2.3.1": { + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "possible-typed-array-names@1.1.0": { + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" + }, + "postcss-selector-parser@6.1.2": { + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dependencies": [ + "cssesc", + "util-deprecate" + ] + }, + "prebuild-install@7.1.3": { + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "dependencies": [ + "detect-libc", + "expand-template", + "github-from-package", + "minimist", + "mkdirp-classic", + "napi-build-utils", + "node-abi", + "pump", + "rc", + "simple-get@4.0.1", + "tar-fs", + "tunnel-agent" + ] + }, + "proc-log@3.0.0": { + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==" + }, + "proc-log@4.2.0": { + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==" + }, + "process@0.11.10": { + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "proggy@2.0.0": { + "integrity": "sha512-69agxLtnI8xBs9gUGqEnK26UfiexpHy+KUpBQWabiytQjnn5wFY8rklAi7GRfABIuPNnQ/ik48+LGLkYYJcy4A==" + }, + "promise-all-reject-late@1.0.1": { + "integrity": "sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==" + }, + "promise-call-limit@3.0.2": { + "integrity": "sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw==" + }, + "promise-inflight@1.0.1": { + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "promise-retry@2.0.1": { + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dependencies": [ + "err-code", + "retry" + ] + }, + "prompts@2.4.2": { + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": [ + "kleur", + "sisteransi" + ] + }, + "promzard@1.0.2": { + "integrity": "sha512-2FPputGL+mP3jJ3UZg/Dl9YOkovB7DX0oOr+ck5QbZ5MtORtds8k/BZdn+02peDLI8/YWbmzx34k5fA+fHvCVQ==", + "dependencies": [ + "read@3.0.1" + ] + }, + "proto-list@1.2.4": { + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" + }, + "proxy-addr@2.0.7": { + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": [ + "forwarded", + "ipaddr.js" + ] + }, + "proxy-from-env@1.1.0": { + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "psl@1.15.0": { + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dependencies": [ + "punycode@2.3.1" + ] + }, + "pump@3.0.2": { + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dependencies": [ + "end-of-stream", + "once" + ] + }, + "punycode@2.1.0": { + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==" + }, + "punycode@2.3.1": { + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "pvtsutils@1.3.6": { + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "pvutils@1.1.3": { + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==" + }, + "qrcode-terminal@0.12.0": { + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==" + }, + "qs@6.13.0": { + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": [ + "side-channel" + ] + }, + "qs@6.5.3": { + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==" + }, + "query-string@5.1.1": { + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": [ + "decode-uri-component", + "object-assign", + "strict-uri-encode" + ] + }, + "queue-microtask@1.2.3": { + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quick-lru@5.1.1": { + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "randombytes@2.1.0": { + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "range-parser@1.2.1": { + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body@2.5.2": { + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": [ + "bytes", + "http-errors", + "iconv-lite@0.4.24", + "unpipe" + ] + }, + "rc@1.2.8": { + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": [ + "deep-extend", + "ini@1.3.8", + "minimist", + "strip-json-comments" + ] + }, + "react-dom@18.3.1_react@18.3.1": { + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "dependencies": [ + "loose-envify", + "react", + "scheduler" + ] + }, + "react@18.3.1": { + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "dependencies": [ + "loose-envify" + ] + }, + "read-cmd-shim@4.0.0": { + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==" + }, + "read-package-json-fast@3.0.2": { + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dependencies": [ + "json-parse-even-better-errors", + "npm-normalize-package-bin" + ] + }, + "read-package-json@7.0.1": { + "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", + "dependencies": [ + "glob@10.4.5", + "json-parse-even-better-errors", + "normalize-package-data", + "npm-normalize-package-bin" + ] + }, + "read@2.1.0": { + "integrity": "sha512-bvxi1QLJHcaywCAEsAk4DG3nVoqiY2Csps3qzWalhj5hFqRn1d/OixkFXtLO1PrgHUcAP0FNaSY/5GYNfENFFQ==", + "dependencies": [ + "mute-stream@1.0.0" + ] + }, + "read@3.0.1": { + "integrity": "sha512-SLBrDU/Srs/9EoWhU5GdbAoxG1GzpQHo/6qiGItaoLJ1thmYpcNIM1qISEUvyHBzfGlWIyd6p2DNi1oV1VmAuw==", + "dependencies": [ + "mute-stream@1.0.0" + ] + }, + "readable-stream@3.6.2": { + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": [ + "inherits@2.0.4", + "string_decoder", + "util-deprecate" + ] + }, + "rechoir@0.6.2": { + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": [ + "resolve" + ] + }, + "redeyed@2.1.1": { + "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "dependencies": [ + "esprima" + ] + }, + "reflect-metadata@0.2.2": { + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "registry-auth-token@5.1.0": { + "integrity": "sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw==", + "dependencies": [ + "@pnpm/npm-conf" + ] + }, + "request@2.88.2": { + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dependencies": [ + "aws-sign2", + "aws4", + "caseless", + "combined-stream", + "extend", + "forever-agent", + "form-data@2.3.3", + "har-validator", + "http-signature", + "is-typedarray", + "isstream", + "json-stringify-safe", + "mime-types", + "oauth-sign", + "performance-now", + "qs@6.5.3", + "safe-buffer@5.2.1", + "tough-cookie", + "tunnel-agent", + "uuid@3.4.0" + ] + }, + "resolve-alpn@1.2.1": { + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + }, + "resolve@1.22.10": { + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": [ + "is-core-module", + "path-parse", + "supports-preserve-symlinks-flag" + ] + }, + "responselike@2.0.1": { + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dependencies": [ + "lowercase-keys@2.0.0" + ] + }, + "restore-cursor@3.1.0": { + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": [ + "onetime", + "signal-exit@3.0.7" + ] + }, + "retry@0.12.0": { + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + }, + "reusify@1.0.4": { + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "reverse-mirage@1.1.0_viem@2.22.16__ws@8.18.0": { + "integrity": "sha512-cA1O7GR0pn4rMFoaiEG7Skms9GenuW91DtCxeR5hphyNhH90eowV4RmUVlVPVS11CPkezm/iUjnCfmxlHri05w==", + "dependencies": [ + "viem@2.22.16_ws@8.18.0" + ] + }, + "rimraf@2.4.5": { + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dependencies": [ + "glob@6.0.4" + ] + }, + "ripemd160@2.0.2": { + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": [ + "hash-base", + "inherits@2.0.4" + ] + }, + "rlp@2.2.7": { + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dependencies": [ + "bn.js@5.2.1" + ] + }, + "run-async@2.4.1": { + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + }, + "run-parallel@1.2.0": { + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dependencies": [ + "queue-microtask" + ] + }, + "rxjs@6.6.7": { + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": [ + "tslib@1.14.1" + ] + }, + "rxjs@7.8.1": { + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": [ + "tslib@2.8.1" + ] + }, + "safe-buffer@5.1.2": { + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-buffer@5.2.1": { + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-json-stringify@1.2.0": { + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==" + }, + "safe-regex-test@1.1.0": { + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dependencies": [ + "call-bound", + "es-errors", + "is-regex" + ] + }, + "safer-buffer@2.1.2": { + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "scheduler@0.23.2": { + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "dependencies": [ + "loose-envify" + ] + }, + "scrypt-js@3.0.1": { + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "secp256k1@4.0.4": { + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", + "dependencies": [ + "elliptic@6.6.1", + "node-addon-api@5.1.0", + "node-gyp-build" + ] + }, + "semver@7.7.1": { + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" + }, + "send@0.19.0": { + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dependencies": [ + "debug@2.6.9", + "depd", + "destroy", + "encodeurl@1.0.2", + "escape-html", + "etag", + "fresh", + "http-errors", + "mime", + "ms@2.1.3", + "on-finished", + "range-parser", + "statuses" + ] + }, + "serve-static@1.16.2": { + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": [ + "encodeurl@2.0.0", + "escape-html", + "parseurl", + "send" + ] + }, + "servify@0.1.12": { + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dependencies": [ + "body-parser", + "cors", + "express", + "request", + "xhr" + ] + }, + "set-blocking@2.0.0": { + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length@1.2.2": { + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": [ + "define-data-property", + "es-errors", + "function-bind", + "get-intrinsic", + "gopd", + "has-property-descriptors" + ] + }, + "setimmediate@1.0.5": { + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "setprototypeof@1.2.0": { + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "sha.js@2.4.11": { + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": [ + "inherits@2.0.4", + "safe-buffer@5.2.1" + ] + }, + "shebang-command@2.0.0": { + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": [ + "shebang-regex" + ] + }, + "shebang-regex@3.0.0": { + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shelljs@0.8.5": { + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": [ + "glob@7.2.3", + "interpret", + "rechoir" + ] + }, + "side-channel-list@1.0.0": { + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": [ + "es-errors", + "object-inspect" + ] + }, + "side-channel-map@1.0.1": { + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": [ + "call-bound", + "es-errors", + "get-intrinsic", + "object-inspect" + ] + }, + "side-channel-weakmap@1.0.2": { + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": [ + "call-bound", + "es-errors", + "get-intrinsic", + "object-inspect", + "side-channel-map" + ] + }, + "side-channel@1.1.0": { + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": [ + "es-errors", + "object-inspect", + "side-channel-list", + "side-channel-map", + "side-channel-weakmap" + ] + }, + "signal-exit@3.0.7": { + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "signal-exit@4.1.0": { + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + }, + "sigstore@2.3.1": { + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "dependencies": [ + "@sigstore/bundle", + "@sigstore/core", + "@sigstore/protobuf-specs", + "@sigstore/sign", + "@sigstore/tuf", + "@sigstore/verify" + ] + }, + "simple-concat@1.0.1": { + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + }, + "simple-get@2.8.2": { + "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "dependencies": [ + "decompress-response@3.3.0", + "once", + "simple-concat" + ] + }, + "simple-get@4.0.1": { + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dependencies": [ + "decompress-response@6.0.0", + "once", + "simple-concat" + ] + }, + "simple-swizzle@0.2.2": { + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": [ + "is-arrayish@0.3.2" + ] + }, + "sisteransi@1.0.5": { + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "slash@3.0.0": { + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi@4.0.0": { + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": [ + "ansi-styles@4.3.0", + "astral-regex", + "is-fullwidth-code-point" + ] + }, + "smart-buffer@4.2.0": { + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" + }, + "socks-proxy-agent@8.0.5": { + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": [ + "agent-base", + "debug@4.4.0", + "socks" + ] + }, + "socks@2.8.4": { + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "dependencies": [ + "ip-address", + "smart-buffer" + ] + }, + "spdx-correct@3.2.0": { + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": [ + "spdx-expression-parse", + "spdx-license-ids" + ] + }, + "spdx-exceptions@2.5.0": { + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + }, + "spdx-expression-parse@3.0.1": { + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": [ + "spdx-exceptions", + "spdx-license-ids" + ] + }, + "spdx-license-ids@3.0.21": { + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==" + }, + "sprintf-js@1.0.3": { + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "sprintf-js@1.1.3": { + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "sshpk@1.18.0": { + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": [ + "asn1", + "assert-plus", + "bcrypt-pbkdf", + "dashdash", + "ecc-jsbn", + "getpass", + "jsbn@0.1.1", + "safer-buffer", + "tweetnacl" + ] + }, + "ssri@10.0.6": { + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dependencies": [ + "minipass@7.1.2" + ] + }, + "statuses@2.0.1": { + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + }, + "stoppable@1.1.0": { + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==" + }, + "strict-uri-encode@1.1.0": { + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==" + }, + "string-width@4.2.3": { + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": [ + "emoji-regex@8.0.0", + "is-fullwidth-code-point", + "strip-ansi@6.0.1" + ] + }, + "string-width@5.1.2": { + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": [ + "eastasianwidth", + "emoji-regex@9.2.2", + "strip-ansi@7.1.0" + ] + }, + "string_decoder@1.3.0": { + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "strip-ansi@6.0.1": { + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": [ + "ansi-regex@5.0.1" + ] + }, + "strip-ansi@7.1.0": { + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": [ + "ansi-regex@6.1.0" + ] + }, + "strip-hex-prefix@1.0.0": { + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dependencies": [ + "is-hex-prefixed" + ] + }, + "strip-json-comments@2.0.1": { + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" + }, + "supports-color@5.5.0": { + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": [ + "has-flag@3.0.0" + ] + }, + "supports-color@7.2.0": { + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": [ + "has-flag@4.0.0" + ] + }, + "supports-color@8.1.1": { + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": [ + "has-flag@4.0.0" + ] + }, + "supports-color@9.4.0": { + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==" + }, + "supports-hyperlinks@2.3.0": { + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": [ + "has-flag@4.0.0", + "supports-color@7.2.0" + ] + }, + "supports-preserve-symlinks-flag@1.0.0": { + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "swarm-js@0.1.42": { + "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "dependencies": [ + "bluebird", + "buffer", + "eth-lib@0.1.29", + "fs-extra@4.0.3", + "got@11.8.6", + "mime-types", + "mkdirp-promise", + "mock-fs", + "setimmediate", + "tar@4.4.19", + "xhr-request" + ] + }, + "tar-fs@2.1.2": { + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "dependencies": [ + "chownr@1.1.4", + "mkdirp-classic", + "pump", + "tar-stream" + ] + }, + "tar-stream@2.2.0": { + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": [ + "bl", + "end-of-stream", + "fs-constants", + "inherits@2.0.4", + "readable-stream" + ] + }, + "tar@4.4.19": { + "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.6", + "safe-buffer@5.2.1", + "yallist@3.1.1" + ] + }, + "tar@6.2.1": { + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": [ + "chownr@2.0.0", + "fs-minipass@2.1.0", + "minipass@5.0.0", + "minizlib@2.1.2", + "mkdirp@1.0.4", + "yallist@4.0.0" + ] + }, + "text-table@0.2.0": { + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "through@2.3.8": { + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "timed-out@4.0.1": { + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==" + }, + "tiny-relative-date@1.3.0": { + "integrity": "sha512-MOQHpzllWxDCHHaDno30hhLfbouoYlOI8YlMNtvKe1zXbjEVhbcEovQxvZrPvtiYW630GQDoMMarCnjfyfHA+A==" + }, + "tmp@0.0.33": { + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": [ + "os-tmpdir" + ] + }, + "to-regex-range@5.0.1": { + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": [ + "is-number" + ] + }, + "toidentifier@1.0.1": { + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "tough-cookie@2.5.0": { + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": [ + "psl", + "punycode@2.3.1" + ] + }, + "tr46@0.0.3": { + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "treeverse@3.0.0": { + "integrity": "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==" + }, + "tslib@1.14.1": { + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "tslib@2.8.1": { + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "tuf-js@2.2.1": { + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dependencies": [ + "@tufjs/models", + "debug@4.4.0", + "make-fetch-happen" + ] + }, + "tunnel-agent@0.6.0": { + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": [ + "safe-buffer@5.2.1" + ] + }, + "tweetnacl@0.14.5": { + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "type-fest@0.21.3": { + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + }, + "type-is@1.6.18": { + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": [ + "media-typer", + "mime-types" + ] + }, + "type@2.7.3": { + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" + }, + "typedarray-to-buffer@3.1.5": { + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": [ + "is-typedarray" + ] + }, + "ultron@1.1.1": { + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "underscore@1.13.7": { + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, + "undici-types@5.26.5": { + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "undici-types@6.19.8": { + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "unique-filename@3.0.0": { + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": [ + "unique-slug" + ] + }, + "unique-slug@4.0.0": { + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": [ + "imurmurhash" + ] + }, + "universalify@0.1.2": { + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "unpipe@1.0.0": { + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + }, + "uri-js@4.4.1": { + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": [ + "punycode@2.3.1" + ] + }, + "url-set-query@1.0.0": { + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==" + }, + "usb@2.9.0": { + "integrity": "sha512-G0I/fPgfHUzWH8xo2KkDxTTFruUWfppgSFJ+bQxz/kVY2x15EQ/XDB7dqD1G432G4gBG4jYQuF3U7j/orSs5nw==", + "dependencies": [ + "@types/w3c-web-usb", + "node-addon-api@6.1.0", + "node-gyp-build" + ] + }, + "utf-8-validate@5.0.10": { + "integrity": "sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==", + "dependencies": [ + "node-gyp-build" + ] + }, + "utf8@3.0.0": { + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "util-deprecate@1.0.2": { + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "util@0.10.4": { + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": [ + "inherits@2.0.3" + ] + }, + "util@0.12.5": { + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": [ + "inherits@2.0.4", + "is-arguments", + "is-generator-function", + "is-typed-array", + "which-typed-array" + ] + }, + "utility-types@3.11.0": { + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==" + }, + "utils-merge@1.0.1": { + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + }, + "uuid@3.4.0": { + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "uuid@8.3.2": { + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "uuid@9.0.1": { + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" + }, + "validate-npm-package-license@3.0.4": { + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": [ + "spdx-correct", + "spdx-expression-parse" + ] + }, + "validate-npm-package-name@5.0.1": { + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==" + }, + "varint@5.0.2": { + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" + }, + "vary@1.1.2": { + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "verror@1.10.0": { + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dependencies": [ + "assert-plus", + "core-util-is", + "extsprintf" + ] + }, + "viem@2.22.16_ws@8.18.0": { + "integrity": "sha512-Eb4Ggna2fblb0oHBmy5XZ3Q4cN6fEmKxVpIWHjmAbtYVC9IfbZ28Z1/yZP2oOgvyRrostNndmnR298pgarBVGw==", + "dependencies": [ + "@noble/curves@1.8.1", + "@noble/hashes@1.7.1", + "@scure/bip32@1.6.2", + "@scure/bip39@1.5.4", + "abitype", + "isows", + "ox", + "ws@8.18.0" + ] + }, + "viem@2.22.21_ws@8.18.0": { + "integrity": "sha512-CujapStF+F3VP+bKBQOGFk5YHyJKZOY2TGvD1e04CAm8VrtLo3sfTydYW2Rri6LMktqp6ilGB9GvSiZczxvOBQ==", + "dependencies": [ + "@noble/curves@1.8.1", + "@noble/hashes@1.7.1", + "@scure/bip32@1.6.2", + "@scure/bip39@1.5.4", + "abitype", + "isows", + "ox", + "ws@8.18.0" + ] + }, + "walk-up-path@3.0.1": { + "integrity": "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==" + }, + "wcwidth@1.0.1": { + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": [ + "defaults" + ] + }, + "web3-bzz@1.10.0": { + "integrity": "sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==", + "dependencies": [ + "@types/node@12.20.55", + "got@12.1.0", + "swarm-js" + ] + }, + "web3-bzz@1.10.4": { + "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", + "dependencies": [ + "@types/node@12.20.55", + "got@12.1.0", + "swarm-js" + ] + }, + "web3-core-helpers@1.10.0": { + "integrity": "sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==", + "dependencies": [ + "web3-eth-iban@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-core-helpers@1.10.4": { + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", + "dependencies": [ + "web3-eth-iban@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-core-method@1.10.0": { + "integrity": "sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==", + "dependencies": [ + "@ethersproject/transactions", + "web3-core-helpers@1.10.0", + "web3-core-promievent@1.10.0", + "web3-core-subscriptions@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-core-method@1.10.4": { + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", + "dependencies": [ + "@ethersproject/transactions", + "web3-core-helpers@1.10.4", + "web3-core-promievent@1.10.4", + "web3-core-subscriptions@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-core-promievent@1.10.0": { + "integrity": "sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==", + "dependencies": [ + "eventemitter3@4.0.4" + ] + }, + "web3-core-promievent@1.10.4": { + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", + "dependencies": [ + "eventemitter3@4.0.4" + ] + }, + "web3-core-requestmanager@1.10.0": { + "integrity": "sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==", + "dependencies": [ + "util@0.12.5", + "web3-core-helpers@1.10.0", + "web3-providers-http@1.10.0", + "web3-providers-ipc@1.10.0", + "web3-providers-ws@1.10.0" + ] + }, + "web3-core-requestmanager@1.10.4": { + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", + "dependencies": [ + "util@0.12.5", + "web3-core-helpers@1.10.4", + "web3-providers-http@1.10.4", + "web3-providers-ipc@1.10.4", + "web3-providers-ws@1.10.4" + ] + }, + "web3-core-subscriptions@1.10.0": { + "integrity": "sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==", + "dependencies": [ + "eventemitter3@4.0.4", + "web3-core-helpers@1.10.0" + ] + }, + "web3-core-subscriptions@1.10.4": { + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", + "dependencies": [ + "eventemitter3@4.0.4", + "web3-core-helpers@1.10.4" + ] + }, + "web3-core@1.10.0": { + "integrity": "sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==", + "dependencies": [ + "@types/bn.js", + "@types/node@12.20.55", + "bignumber.js@9.1.2", + "web3-core-helpers@1.10.0", + "web3-core-method@1.10.0", + "web3-core-requestmanager@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-core@1.10.4": { + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", + "dependencies": [ + "@types/bn.js", + "@types/node@12.20.55", + "bignumber.js@9.1.2", + "web3-core-helpers@1.10.4", + "web3-core-method@1.10.4", + "web3-core-requestmanager@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-eth-abi@1.10.0": { + "integrity": "sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==", + "dependencies": [ + "@ethersproject/abi", + "web3-utils@1.10.0" + ] + }, + "web3-eth-abi@1.10.4": { + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", + "dependencies": [ + "@ethersproject/abi", + "web3-utils@1.10.4" + ] + }, + "web3-eth-accounts@1.10.0": { + "integrity": "sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==", + "dependencies": [ + "@ethereumjs/common@2.5.0", + "@ethereumjs/tx@3.3.2", + "eth-lib@0.2.8", + "ethereumjs-util", + "scrypt-js", + "uuid@9.0.1", + "web3-core@1.10.0", + "web3-core-helpers@1.10.0", + "web3-core-method@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-eth-accounts@1.10.4": { + "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", + "dependencies": [ + "@ethereumjs/common@2.6.5", + "@ethereumjs/tx@3.5.2", + "@ethereumjs/util@8.1.0", + "eth-lib@0.2.8", + "scrypt-js", + "uuid@9.0.1", + "web3-core@1.10.4", + "web3-core-helpers@1.10.4", + "web3-core-method@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-eth-contract@1.10.0": { + "integrity": "sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==", + "dependencies": [ + "@types/bn.js", + "web3-core@1.10.0", + "web3-core-helpers@1.10.0", + "web3-core-method@1.10.0", + "web3-core-promievent@1.10.0", + "web3-core-subscriptions@1.10.0", + "web3-eth-abi@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-eth-contract@1.10.4": { + "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", + "dependencies": [ + "@types/bn.js", + "web3-core@1.10.4", + "web3-core-helpers@1.10.4", + "web3-core-method@1.10.4", + "web3-core-promievent@1.10.4", + "web3-core-subscriptions@1.10.4", + "web3-eth-abi@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-eth-ens@1.10.0": { + "integrity": "sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==", + "dependencies": [ + "content-hash", + "eth-ens-namehash", + "web3-core@1.10.0", + "web3-core-helpers@1.10.0", + "web3-core-promievent@1.10.0", + "web3-eth-abi@1.10.0", + "web3-eth-contract@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-eth-ens@1.10.4": { + "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", + "dependencies": [ + "content-hash", + "eth-ens-namehash", + "web3-core@1.10.4", + "web3-core-helpers@1.10.4", + "web3-core-promievent@1.10.4", + "web3-eth-abi@1.10.4", + "web3-eth-contract@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-eth-iban@1.10.0": { + "integrity": "sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==", + "dependencies": [ + "bn.js@5.2.1", + "web3-utils@1.10.0" + ] + }, + "web3-eth-iban@1.10.4": { + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", + "dependencies": [ + "bn.js@5.2.1", + "web3-utils@1.10.4" + ] + }, + "web3-eth-personal@1.10.0": { + "integrity": "sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==", + "dependencies": [ + "@types/node@12.20.55", + "web3-core@1.10.0", + "web3-core-helpers@1.10.0", + "web3-core-method@1.10.0", + "web3-net@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-eth-personal@1.10.4": { + "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", + "dependencies": [ + "@types/node@12.20.55", + "web3-core@1.10.4", + "web3-core-helpers@1.10.4", + "web3-core-method@1.10.4", + "web3-net@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-eth@1.10.0": { + "integrity": "sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==", + "dependencies": [ + "web3-core@1.10.0", + "web3-core-helpers@1.10.0", + "web3-core-method@1.10.0", + "web3-core-subscriptions@1.10.0", + "web3-eth-abi@1.10.0", + "web3-eth-accounts@1.10.0", + "web3-eth-contract@1.10.0", + "web3-eth-ens@1.10.0", + "web3-eth-iban@1.10.0", + "web3-eth-personal@1.10.0", + "web3-net@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-eth@1.10.4": { + "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", + "dependencies": [ + "web3-core@1.10.4", + "web3-core-helpers@1.10.4", + "web3-core-method@1.10.4", + "web3-core-subscriptions@1.10.4", + "web3-eth-abi@1.10.4", + "web3-eth-accounts@1.10.4", + "web3-eth-contract@1.10.4", + "web3-eth-ens@1.10.4", + "web3-eth-iban@1.10.4", + "web3-eth-personal@1.10.4", + "web3-net@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-net@1.10.0": { + "integrity": "sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==", + "dependencies": [ + "web3-core@1.10.0", + "web3-core-method@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3-net@1.10.4": { + "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", + "dependencies": [ + "web3-core@1.10.4", + "web3-core-method@1.10.4", + "web3-utils@1.10.4" + ] + }, + "web3-providers-http@1.10.0": { + "integrity": "sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==", + "dependencies": [ + "abortcontroller-polyfill", + "cross-fetch@3.1.5", + "es6-promise", + "web3-core-helpers@1.10.0" + ] + }, + "web3-providers-http@1.10.4": { + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", + "dependencies": [ + "abortcontroller-polyfill", + "cross-fetch@4.1.0", + "es6-promise", + "web3-core-helpers@1.10.4" + ] + }, + "web3-providers-ipc@1.10.0": { + "integrity": "sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==", + "dependencies": [ + "oboe", + "web3-core-helpers@1.10.0" + ] + }, + "web3-providers-ipc@1.10.4": { + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", + "dependencies": [ + "oboe", + "web3-core-helpers@1.10.4" + ] + }, + "web3-providers-ws@1.10.0": { + "integrity": "sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==", + "dependencies": [ + "eventemitter3@4.0.4", + "web3-core-helpers@1.10.0", + "websocket" + ] + }, + "web3-providers-ws@1.10.4": { + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", + "dependencies": [ + "eventemitter3@4.0.4", + "web3-core-helpers@1.10.4", + "websocket" + ] + }, + "web3-shh@1.10.0": { + "integrity": "sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==", + "dependencies": [ + "web3-core@1.10.0", + "web3-core-method@1.10.0", + "web3-core-subscriptions@1.10.0", + "web3-net@1.10.0" + ] + }, + "web3-shh@1.10.4": { + "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", + "dependencies": [ + "web3-core@1.10.4", + "web3-core-method@1.10.4", + "web3-core-subscriptions@1.10.4", + "web3-net@1.10.4" + ] + }, + "web3-utils@1.10.0": { + "integrity": "sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==", + "dependencies": [ + "bn.js@5.2.1", + "ethereum-bloom-filters", + "ethereumjs-util", + "ethjs-unit", + "number-to-bn", + "randombytes", + "utf8" + ] + }, + "web3-utils@1.10.4": { + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "dependencies": [ + "@ethereumjs/util@8.1.0", + "bn.js@5.2.1", + "ethereum-bloom-filters", + "ethereum-cryptography@2.2.1", + "ethjs-unit", + "number-to-bn", + "randombytes", + "utf8" + ] + }, + "web3@1.10.0": { + "integrity": "sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==", + "dependencies": [ + "web3-bzz@1.10.0", + "web3-core@1.10.0", + "web3-eth@1.10.0", + "web3-eth-personal@1.10.0", + "web3-net@1.10.0", + "web3-shh@1.10.0", + "web3-utils@1.10.0" + ] + }, + "web3@1.10.4": { + "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", + "dependencies": [ + "web3-bzz@1.10.4", + "web3-core@1.10.4", + "web3-eth@1.10.4", + "web3-eth-personal@1.10.4", + "web3-net@1.10.4", + "web3-shh@1.10.4", + "web3-utils@1.10.4" + ] + }, + "webidl-conversions@3.0.1": { + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "websocket@1.0.35": { + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", + "dependencies": [ + "bufferutil", + "debug@2.6.9", + "es5-ext", + "typedarray-to-buffer", + "utf-8-validate", + "yaeti" + ] + }, + "whatwg-url@5.0.0": { + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": [ + "tr46", + "webidl-conversions" + ] + }, + "which-typed-array@1.1.18": { + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "dependencies": [ + "available-typed-arrays", + "call-bind", + "call-bound", + "for-each", + "gopd", + "has-tostringtag" + ] + }, + "which@2.0.2": { + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": [ + "isexe@2.0.0" + ] + }, + "which@4.0.0": { + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": [ + "isexe@3.1.1" + ] + }, + "wide-align@1.1.5": { + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": [ + "string-width@4.2.3" + ] + }, + "widest-line@3.1.0": { + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": [ + "string-width@4.2.3" + ] + }, + "wordwrap@1.0.0": { + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + }, + "wrap-ansi@6.2.0": { + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": [ + "ansi-styles@4.3.0", + "string-width@4.2.3", + "strip-ansi@6.0.1" + ] + }, + "wrap-ansi@7.0.0": { + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": [ + "ansi-styles@4.3.0", + "string-width@4.2.3", + "strip-ansi@6.0.1" + ] + }, + "wrap-ansi@8.1.0": { + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": [ + "ansi-styles@6.2.1", + "string-width@5.1.2", + "strip-ansi@7.1.0" + ] + }, + "wrappy@1.0.2": { + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic@5.0.1": { + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dependencies": [ + "imurmurhash", + "signal-exit@4.1.0" + ] + }, + "ws@3.3.3": { + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dependencies": [ + "async-limiter", + "safe-buffer@5.1.2", + "ultron" + ] + }, + "ws@7.4.6": { + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" + }, + "ws@8.18.0": { + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==" + }, + "xhr-request-promise@0.1.3": { + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dependencies": [ + "xhr-request" + ] + }, + "xhr-request@1.1.0": { + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dependencies": [ + "buffer-to-arraybuffer", + "object-assign", + "query-string", + "simple-get@2.8.2", + "timed-out", + "url-set-query", + "xhr" + ] + }, + "xhr@2.6.0": { + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dependencies": [ + "global", + "is-function", + "parse-headers", + "xtend" + ] + }, + "xtend@4.0.2": { + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "yaeti@0.0.6": { + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==" + }, + "yallist@3.1.1": { + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yallist@4.0.0": { + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yarn@1.22.22": { + "integrity": "sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==" + }, + "yoctocolors-cjs@2.1.2": { + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==" + } + }, + "workspace": { + "dependencies": [ + "jsr:@dx/reflect@~0.2.14", + "jsr:@std/assert@^1.0.11", + "jsr:@std/dotenv@~0.225.3", + "jsr:@std/expect@^1.0.13", + "jsr:@std/io@~0.225.2", + "jsr:@std/testing@^1.0.9", + "npm:@celo/celocli@6", + "npm:reverse-mirage@^1.1.0", + "npm:viem@^2.22.21" + ], + "members": { + "packages/celo-test-runner": { + "dependencies": [ + "jsr:@std/path@^1.0.8", + "npm:viem@^2.22.16" + ] + }, + "packages/celo-test-util": { + "dependencies": [ + "npm:viem@^2.22.16" + ] + }, + "packages/celo-test-viem": { + "dependencies": [ + "npm:reverse-mirage@^1.1.0", + "npm:viem@^2.22.16" + ] + } + } + } +} diff --git a/op-e2e/celo/jest.config.json b/op-e2e/celo/jest.config.json deleted file mode 100644 index aea28c9f68597..0000000000000 --- a/op-e2e/celo/jest.config.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "transformIgnorePatterns": [ - "node_modules/(?!(string-width|strip-ansi|ansi-regex|test-json-import)/)" - ] -} diff --git a/op-e2e/celo/main.test.ts b/op-e2e/celo/main.test.ts new file mode 100644 index 0000000000000..a54f8e4f61405 --- /dev/null +++ b/op-e2e/celo/main.test.ts @@ -0,0 +1,3 @@ +import { parseConfigWithPrefixFromEnv, run } from "@celo-test/runner"; + +await run(parseConfigWithPrefixFromEnv(Deno.env.toObject(), "CELOTEST")); diff --git a/op-e2e/celo/networks/42220-dryrun/celo-contracts.json b/op-e2e/celo/networks/42220-dryrun/celo-contracts.json new file mode 100644 index 0000000000000..eba9c4c6fcc48 --- /dev/null +++ b/op-e2e/celo/networks/42220-dryrun/celo-contracts.json @@ -0,0 +1,170 @@ +[ + { + "contract": "Accounts", + "proxy": "0x7d21685C17607338b313a7174bAb6620baD0aaB7", + "implementation": "0x75Ec00c4B09574945F7d407797f8b61ca5AD9Cef", + "version": "1.1.4.1" + }, + { + "contract": "Attestations", + "proxy": "0xdC553892cdeeeD9f575aa0FBA099e5847fd88D20", + "implementation": "0x5729126891355E3C2626338151Dd50Cc0415E071", + "version": "1.2.0.0" + }, + { + "contract": "BlockchainParameters", + "proxy": "0x6E10a8864C65434A721d82e424d727326F9d5Bfa", + "implementation": "0x34FE128561A54F8d4185cd24d78634300B119725", + "version": "1.3.0.0" + }, + { + "contract": "DoubleSigningSlasher", + "proxy": "0x50C100baCDe7E2b546371EB0Be1eACcf0A6772ec", + "implementation": "0x4Bb82B5862Beb483Fdb762EC4A6cB60953568A12", + "version": "1.1.1.0" + }, + { + "contract": "DowntimeSlasher", + "proxy": "0x71CAc3B31c138F3327C6cA14f9a1c8d752463fDd", + "implementation": "0x9ebB6A46149a43C9D1B12EfdC068b969eCA7246F", + "version": "2.0.0.0" + }, + { + "contract": "Election", + "proxy": "0x8D6677192144292870907E3Fa8A5527fE55A7ff6", + "implementation": "0xCdE5039e3AcB3483aEebEBd59Cf6936056c455D4", + "version": "1.1.3.0" + }, + { + "contract": "EpochRewards", + "proxy": "0x07F007d389883622Ef8D4d347b3f78007f28d8b7", + "implementation": "0x563BA8Ed56bd32a964831aB6AfF1E53238177eDA", + "version": "1.1.1.0" + }, + { + "contract": "Escrow", + "proxy": "0xf4Fa51472Ca8d72AF678975D9F8795A504E7ada5", + "implementation": "0xcC4E6caBe88EBb7FCCB40d862bf1C3a89f88e835", + "version": "1.2.0.0" + }, + { + "contract": "FederatedAttestations", + "proxy": "0x0aD5b1d0C25ecF6266Dd951403723B2687d6aff2", + "implementation": "0x76A4daaC43912A443f098D413DED2Cb7A153EA85", + "version": "1.1.0.0" + }, + { + "contract": "FeeCurrencyWhitelist", + "proxy": "0xBB024E9cdCB2f9E34d893630D19611B8A5381b3c", + "implementation": "0xbC75342726648c4798543bac986c529f54220953", + "version": "NONE" + }, + { + "contract": "FeeHandler", + "proxy": "0xcD437749E43A154C07F3553504c68fBfD56B8778", + "implementation": "0x90eD9a893bC7be80F2D0E68650a8780A4E7373a5", + "version": "1.1.0.0" + }, + { + "contract": "Freezer", + "proxy": "0x47a472F45057A9d79d62C6427367016409f4fF5A", + "implementation": "0xa79cDb272799175A118A4Ce49ceCBF3eC86649e6", + "version": "NONE" + }, + { + "contract": "GasPriceMinimum", + "proxy": "0xDfca3a8d7699D8bAfe656823AD60C17cb8270ECC", + "implementation": "0x52737f41EA463226af071933c823c2D550Bd6610", + "version": "1.2.0.1" + }, + { + "contract": "GoldToken", + "proxy": "0x471EcE3750Da237f93B8E339c536989b8978a438", + "implementation": "0xcB8710e072aC4700eE7eD0C63B2f2102366a7a39", + "version": "1.1.2.0" + }, + { + "contract": "Governance", + "proxy": "0xD533Ca259b330c7A88f74E000a3FaEa2d63B7972", + "implementation": "0x19F78d207493Bf6f7E8D54900d01bb387F211b28", + "version": "1.4.1.0" + }, + { + "contract": "GovernanceSlasher", + "proxy": "0xf2a347F184b0Fef572C7CBd2c392359eCcf43F3c", + "implementation": "0x68f04Ab73B93f5175207296528454999475294d5", + "version": "1.1.1.0" + }, + { + "contract": "LockedGold", + "proxy": "0x6cC083Aed9e3ebe302A6336dBC7c921C9f03349E", + "implementation": "0xbc518666F0827F4736220aC11c9a2cF37B1DE5aD", + "version": "1.1.4.0" + }, + { + "contract": "MentoFeeHandlerSeller", + "proxy": "0x4eFa274B7e33476C961065000D58ee09F7921A74", + "implementation": "0xBCF2374Fe8D582aB31840Ac08Fbc6bCD073d8c09", + "version": "1.1.0.0" + }, + { + "contract": "OdisPayments", + "proxy": "0xAE6B29f31B96e61DdDc792f45fDa4e4F0356D0CB", + "implementation": "0x9Ea5E9b9B48a72325D59B3EBA147F42b1b14BF78", + "version": "1.1.0.0" + }, + { + "contract": "Random", + "proxy": "0x22a4aAF42A50bFA7238182460E32f15859c93dfe", + "implementation": "0xE43ea9C641a2af9959CaEEe54aDB089F65457028", + "version": "1.1.1.0" + }, + { + "contract": "Registry", + "proxy": "0x000000000000000000000000000000000000ce10", + "implementation": "0x203fdf86A00999107Df531fa00b4bA81d674cb66", + "version": "NONE" + }, + { + "contract": "Reserve", + "proxy": "0x9380fA34Fd9e4Fd14c06305fd7B6199089eD4eb9", + "implementation": "0xfD9651862Bc1965349E92073152112289393b57d", + "version": "2.1.0.0" + }, + { + "contract": "SortedOracles", + "proxy": "0xefB84935239dAcdecF7c5bA76d8dE40b077B7b33", + "implementation": "0x35a4f0C8C0B48769F036b79F9d428BeA286f6ab5", + "version": "1.1.3.0" + }, + { + "contract": "StableToken", + "proxy": "0x765DE816845861e75A25fCA122bb6898B8B1282a", + "implementation": "0x434563B0604BE100F04B7Ae485BcafE3c9D8850E", + "version": "NONE" + }, + { + "contract": "StableTokenBRL", + "proxy": "0xe8537a3d056DA446677B9E9d6c5dB704EaAb4787", + "implementation": "0x434563B0604BE100F04B7Ae485BcafE3c9D8850E", + "version": "NONE" + }, + { + "contract": "StableTokenEUR", + "proxy": "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73", + "implementation": "0x434563B0604BE100F04B7Ae485BcafE3c9D8850E", + "version": "NONE" + }, + { + "contract": "UniswapFeeHandlerSeller", + "proxy": "0xD3aeE28548Dbb65DF03981f0dC0713BfCBd10a97", + "implementation": "0xb851A5f1dbC743FdCe3009a3410df317cb33e24b", + "version": "1.1.0.0" + }, + { + "contract": "Validators", + "proxy": "0xaEb865bCa93DdC8F47b8e29F40C5399cE34d0C58", + "implementation": "0xe52EaC18fB3C1e1713e73d4A5b7dCb12a2f2C697", + "version": "1.2.0.5" + } +] diff --git a/op-e2e/celo/networks/42220-dryrun/contracts-l1.json b/op-e2e/celo/networks/42220-dryrun/contracts-l1.json new file mode 100644 index 0000000000000..7221c26174a45 --- /dev/null +++ b/op-e2e/celo/networks/42220-dryrun/contracts-l1.json @@ -0,0 +1,39 @@ +{ + "AddressManager": "0x4C840822Ed883799000b2578517e6B1868d84625", + "AnchorStateRegistry": "0x19D9F5831F3a744cD0c483E6Ae95c1008e164D2A", + "AnchorStateRegistryProxy": "0xF155fa4050C11F52bd1A12a88e2253f190aD9E6A", + "CeloSuperchainConfig": "0xB23b8450a32278eb941Ec1aB0ecB00B206ED249e", + "CeloSuperchainConfigProxy": "0xa5802e31Df634f4D3997EDdFE28D03fe430cdd5A", + "CustomGasToken": "0x009Ec5CBFA0EfcaA573F878B015ca1C502400D8f", + "CustomGasTokenProxy": "0xEFd3e391AAb7fB9f19913d12DBdB2a1F0cB22950", + "DelayedWETH": "0xA240B7A16A0F0059D91AC3476d4FCDE4CAd1E736", + "DelayedWETHProxy": "0xA99e3D5565388BC9e224D2E318064c5b06f79E17", + "DisputeGameFactory": "0x36606a8099B764fe69De890631Bc8F0Af04986fa", + "DisputeGameFactoryProxy": "0x78E86406656Efa6808a678ef18e305F5bD9A9a51", + "L1CrossDomainMessenger": "0x98d38e98Ef8f4e5CCd1C746E7675d985DE5D0439", + "L1CrossDomainMessengerProxy": "0x56755c35448244887048620c608341E97F69e030", + "L1ERC721Bridge": "0xA9daD747195a4CBDf60E9996e2D67146a91026d1", + "L1ERC721BridgeProxy": "0x0D953E7B476F7c419EB4bfDBbb3228535fa45385", + "L1StandardBridge": "0x4F1D210917A8ceC0d7B2298A7F665625b04F4EFB", + "L1StandardBridgeProxy": "0xCEB456FE87509b60e4DF309cC386f6B762e103D3", + "L2OutputOracle": "0xC0DD27cB183E9Ad3689A2d3893D7547a57902F73", + "L2OutputOracleProxy": "0xb41616909e36b35cBd8d359E91F4F427823CAfDf", + "Mips": "0x2f44Fb4350a12B2cf4081271fFc4Ec3Ef48c1d37", + "OptimismMintableERC20Factory": "0x7058D2313CCA5458bd2939f8a21242A6c5782689", + "OptimismMintableERC20FactoryProxy": "0x31DC8dCeAD668A3F2f7Cf1e747111334c7FDAeC9", + "OptimismPortal": "0x87B9db18c00496DbCaECAE0490b17a7AB4b9425f", + "OptimismPortal2": "0xe12105f0559210F192dd2A0977825ba525a29626", + "OptimismPortalProxy": "0xBDC8150B10cC7c910241911e9E20EB89eA8EC88c", + "PermissionedDelayedWETHProxy": "0x21dd847d1f9eA32a4BC9876d8242f7Aee3Ae866c", + "PreimageOracle": "0x624ce7C4af9E285971f8401c93DBDA8f2913BDE1", + "ProtocolVersions": "0xAe96bc9EA95Ea67F885B5775b469152Ab072502f", + "ProtocolVersionsProxy": "0x4959Dc9946c38273Ad1ADF20531eDA11717D6F7D", + "ProxyAdmin": "0xC7cf1B5A66Eb69625Fbc650bBbC9f20DC95ad7e8", + "SafeProxyFactory": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "SafeSingleton": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "StorageSetter": "0xF2bF7906a0a8E0a580e254c8BBC06Fce0A8AE8AA", + "SuperchainConfigProxy": "0x95703e0982140D16f8ebA6d158FccEde42f04a4C", + "SystemConfig": "0x1fe98c6519812bF125130812a06a40abCBEaeF3E", + "SystemConfigProxy": "0x77DfC6ce990b32290066d27b7a62F78d12DC34a0", + "SystemOwnerSafe": "0x405dfa72313842e6604DA478989E0353364Db62e" +} diff --git a/op-e2e/celo/networks/62320/celo-contracts.json b/op-e2e/celo/networks/62320/celo-contracts.json new file mode 100644 index 0000000000000..7523176b6292d --- /dev/null +++ b/op-e2e/celo/networks/62320/celo-contracts.json @@ -0,0 +1,200 @@ +[ + { + "contract": "Accounts", + "proxy": "0x64FF4e6F7e08119d877Fd2E26F4C20B537819080", + "implementation": "0xF713E832d66ae7021BD9124934cC5fa6b21de066", + "version": "1.1.4.2" + }, + { + "contract": "Attestations", + "proxy": "0xaeB505a8ba97241cc85d98c2e892608dD16Da3cc", + "implementation": "0x481641355450cc85B1Ea5b2bF1115866b14D2883", + "version": "1.3.0.0" + }, + { + "contract": "BlockchainParameters", + "proxy": "0x2F6fEAcB6a4326c47E5AC16dddb5542ADAf45FC8", + "implementation": "0x3F07170a900F846ec8E8FaA3a1ec1de52bC92A4c", + "version": "1.3.1.0" + }, + { + "contract": "CeloUnreleasedTreasury", + "proxy": "0x022c5d5837E177B6d145761feb4C5574e5b48F5e", + "implementation": "0x8BCbA0cc135Ccf700eE96f40f9D7A7859a644cc2", + "version": "1.1.0.0" + }, + { + "contract": "DoubleSigningSlasher", + "proxy": "0x9c2FBF60Aa2A8dDc73c499C9b724e86D8C15F72f", + "implementation": "0xBC7b6EE6a01624425c4002DAE5c337187085833D", + "version": "1.1.1.1" + }, + { + "contract": "DowntimeSlasher", + "proxy": "0xC743C9a58050a669ec4aff41D8A6C76f2264e206", + "implementation": "0x021221823FCBD2a7391C9F972475B6C2C67d43C2", + "version": "2.0.0.1" + }, + { + "contract": "Election", + "proxy": "0x7eb2b2f696C60A48Afd7632f280c7De91c8E5aa5", + "implementation": "0x725D81Bb7E5D628D2C55f3777D54533BdFd2f23B", + "version": "1.1.4.0" + }, + { + "contract": "EpochManager", + "proxy": "0x6Dc9B42731E225404da7D7B9efC6344B21C16836", + "implementation": "0x6521fc44B75Bf32b6aE5A78f45A388076D852afb", + "version": "1.1.0.0" + }, + { + "contract": "EpochManagerEnabler", + "proxy": "0x3F29BB9FA489B86CA762eA27645558395B379E5B", + "implementation": "0x12b45baEaE85C695dA04031812360fBaFdAA6505", + "version": "1.1.0.0" + }, + { + "contract": "EpochRewards", + "proxy": "0xfdc7D3da53Ca155dDCE793B0de46f4c29230EecD", + "implementation": "0x043E4F60D9f5D1927cFF1C658f70455DEF81aD7d", + "version": "1.1.2.0" + }, + { + "contract": "Escrow", + "proxy": "0xDDc9821C93203d00A264514888De01Fc1129DBFF", + "implementation": "0x44230762B2f914769E127AA9e1c93Fc090175a46", + "version": "1.2.0.0" + }, + { + "contract": "FederatedAttestations", + "proxy": "0xea2e712082E7B5c5C7B1BC004929ECfDf8F36AbD", + "implementation": "0x4BAF344774624Dae35ae53ECC4a6E7495152F1B2", + "version": "1.1.0.0" + }, + { + "contract": "FeeCurrencyDirectory", + "proxy": "0xD59E1599F45e42Eb356202B2C714D6C7b734C034", + "implementation": "0xb7D76CcEd6B3e0cc83DADd6CabaD9DB4b32Ed2F0", + "version": "1.1.0.0" + }, + { + "contract": "FeeCurrencyWhitelist", + "proxy": "0x14D449EF428e679da48B3e8CfFa9036fF404B28A", + "implementation": "0x0712e12cF2c4f0D3cBb742aDf6838a383C1E5b40", + "version": "NONE" + }, + { + "contract": "FeeHandler", + "proxy": "0xeed0A69c51079114C280f7b936C79e24bD94013e", + "implementation": "0x340006B619816161e50AE36BF2BcA4f1bC8ADc91", + "version": "1.2.0.0" + }, + { + "contract": "Freezer", + "proxy": "0x3f155CD55697C44fb6e4e0CB7D885fAeaE38B62d", + "implementation": "0x639cCd7fFBfa20DDBAadB394dC9cA4450A50cD74", + "version": "NONE" + }, + { + "contract": "GasPriceMinimum", + "proxy": "0xA701fa0B85D935790984ddf3a3eF5597848e1a5f", + "implementation": "0x33ab8f69B26B88Ff6826Be72f0d27B38556D2a1c", + "version": "1.2.1.0" + }, + { + "contract": "GoldToken", + "proxy": "0xdDc9bE57f553fe75752D61606B94CBD7e0264eF8", + "implementation": "0xCbCFb899998605759B94EB9f5682F0c7B7AF6FcA", + "version": "1.1.3.0" + }, + { + "contract": "Governance", + "proxy": "0x28443b1d87db521320a6517A4F1B6Ead77F8C811", + "implementation": "0xD9a0c965C298dadd8CD89CA7a8e00D7Baa1E1C59", + "version": "1.4.2.0" + }, + { + "contract": "GovernanceSlasher", + "proxy": "0xEE8b4e865aD8B6d93D8B815D8943Ad0e04A0F8f9", + "implementation": "0x5f3eBD1dF144289d956E9836afd265A30A3B1AE7", + "version": "1.1.1.0" + }, + { + "contract": "LockedGold", + "proxy": "0xF07406D8040fBD831e9983CA9cC278fBfFeB56bF", + "implementation": "0x3798c9c5CFaF13A05db0f28F39a43CeBbE52530e", + "version": "1.1.5.0" + }, + { + "contract": "MentoFeeHandlerSeller", + "proxy": "0xd3f13216B1286459B04C444a25D91892Ee2FAAc9", + "implementation": "0xBb2B204DA02F92C48f1b8304FF23DF6c09E8c348", + "version": "1.1.1.0" + }, + { + "contract": "OdisPayments", + "proxy": "0x77150d61ba9fbA8f0413849e8Ea8cb1b1d636E34", + "implementation": "0x773CeFd4627f161F521f08C4b83Bfb7a53Be933F", + "version": "1.1.0.0" + }, + { + "contract": "Random", + "proxy": "0x3fcEcdaFf7C2d48EA73fBf338E99E375A3d6754F", + "implementation": "0x63D9D3db6b10CF703f3a2e6D23506caf4eBF1304", + "version": "1.1.2.0" + }, + { + "contract": "Registry", + "proxy": "0x000000000000000000000000000000000000ce10", + "implementation": "0x90eAbEC87C52186E26E2F0f3A2bdFeeDE0450022", + "version": "NONE" + }, + { + "contract": "Reserve", + "proxy": "0x68Dd816611d3DE196FDeb87438B74A9c29fd649f", + "implementation": "0x1888c9f6d77dDc5517074cb77F024871B9614002", + "version": "2.1.0.0" + }, + { + "contract": "ScoreManager", + "proxy": "0x6798dAF2B7cEc459c16a2c7b7E69410b7f39390C", + "implementation": "0x30fF5025eFdefeb2F67e4Fa6203c7AB7E51C5DF7", + "version": "1.1.0.0" + }, + { + "contract": "SortedOracles", + "proxy": "0x88A187a876290E9843175027902B9f7f1B092c88", + "implementation": "0x06CF5DE4bc05e037DD6b476ea7f57F5f8230146D", + "version": "1.1.4.0" + }, + { + "contract": "StableToken", + "proxy": "0x62492A644A588FD904270BeD06ad52B9abfEA1aE", + "implementation": "0xb8956d1fCeff0655B2B9DF1975c5c25B71de1Df3", + "version": "NONE" + }, + { + "contract": "StableTokenBRL", + "proxy": "0x6a0EEf2bed4C30Dc2CB42fe6c5f01F80f7EF16d1", + "implementation": "0xb8956d1fCeff0655B2B9DF1975c5c25B71de1Df3", + "version": "NONE" + }, + { + "contract": "StableTokenEUR", + "proxy": "0xf9ecE301247aD2CE21894941830A2470f4E774ca", + "implementation": "0xb8956d1fCeff0655B2B9DF1975c5c25B71de1Df3", + "version": "NONE" + }, + { + "contract": "UniswapFeeHandlerSeller", + "proxy": "0xB53F049eE8E9e0c48AC430b70d9e030f23d4727D", + "implementation": "0x6066bb42a690255782F0b553086c6B707c00888c", + "version": "2.0.0.0" + }, + { + "contract": "Validators", + "proxy": "0xcb3A2f0520edBb4Fc37Ecb646d06877E339bBC9D", + "implementation": "0x6D97C787402C1bEf9651040d33812719A8CE1700", + "version": "1.3.0.0" + } +] diff --git a/op-e2e/celo/networks/62320/contracts-l1.json b/op-e2e/celo/networks/62320/contracts-l1.json new file mode 100644 index 0000000000000..d193cb216ab4f --- /dev/null +++ b/op-e2e/celo/networks/62320/contracts-l1.json @@ -0,0 +1,40 @@ +{ + "AddressManager": "0x156aa732322e878E01e3fB9d6C7a3b30b267bBA4", + "AnchorStateRegistry": "0xFbAe891e299D97A8B1e142d8413E26b771BE24Fa", + "AnchorStateRegistryProxy": "0x9C4B83AED7e5103dC6F38DfA265933Fe418Ed090", + "CeloSuperchainConfig": "0x6fD51d9A96e7822B33ddEb0bcB614342C6E6C179", + "CeloSuperchainConfigProxy": "0x6ac47E296d59A8D3b8933276EA3dB1CC28e920DA", + "CustomGasToken": "0x7Fad4A58727B2e926a3fA29ec5Dd2cfe913Ee8E5", + "CustomGasTokenProxy": "0xE692fD8305e097b0e73f1b61aCA8b74Cd921443B", + "DelayedWETH": "0x7866c074fCaBF85C256CBd713d334d2331be34e8", + "DelayedWETHProxy": "0x9B014033014c8C9026Dbc5151049ffFA8581942E", + "DisputeGameFactory": "0xB590770Fb259c4e3CB8a485a0b65332F9B6a5957", + "DisputeGameFactoryProxy": "0x788ef5850c3a51d41f59Dc4327017EF8D754eD80", + "L1CrossDomainMessenger": "0xbbbD1661C9DF6caB8398a1d0d6450f3c745D3858", + "L1CrossDomainMessengerProxy": "0x418F16753b868adDc5f0C2860b05D8b921fCee75", + "L1ERC721Bridge": "0x27c38F647AC92007C63755399450dE02Ad4e2795", + "L1ERC721BridgeProxy": "0xe65F0FE051FCe8a8De3A5c8DcFa474025F6F2D73", + "L1StandardBridge": "0x494Ba1b1F7A5504F3E2241001CF1AdA463337516", + "L1StandardBridgeProxy": "0x6fd3fF186975aD8B66Ab40b705EC016b36da0486", + "L2OutputOracle": "0xBFE7aC127012f5C647288a4987F0f7286Baa97c1", + "L2OutputOracleProxy": "0x1C084a644951A5d189396c8761A9F95b33c282E6", + "Mips": "0x8F5a62ceb69c0D0674937DA29023b49BA279F164", + "OptimismMintableERC20Factory": "0x91A3E5DaDbAd1A2333202769295d0b3a34A36dC9", + "OptimismMintableERC20FactoryProxy": "0x0e8e9173e163C593AcF823BA0880f25bCF40fEa1", + "OptimismPortal": "0xC10869a4674bd8cB8ea6182d6354cE4E04307470", + "OptimismPortal2": "0x6C6cE21Bd9b7Fc9a52aC4Ff84C637e2D0968e8cF", + "OptimismPortalProxy": "0x87e9cB54f185a32266689138fbA56F0C994CF50c", + "PermissionedDelayedWETHProxy": "0x913D24b7E2730Cab1d97423cE154aC1C224734f2", + "PreimageOracle": "0x3052f7e497870bE9aD7cd2C1fFC415c5Fb8ecFC3", + "ProtocolVersions": "0x3eeB36750BEe9E2f85485fc8cff214216377caac", + "ProtocolVersionsProxy": "0x3d438C63e0431DA844d3F60E6c712d10FC75c529", + "ProxyAdmin": "0xBF101Bd81fb69aB00ab261465454dF1a171726Bf", + "SafeProxyFactory": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", + "SafeSingleton": "0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552", + "StorageSetter": "0x5C808C7339e812321ef47d1118194337C5fed4E4", + "SuperchainConfig": "0x2E4F0959330C65860738221DD5Fcf9D421A92Be9", + "SuperchainConfigProxy": "0xf07502A4a950d870c43b12660fB1Dd18c170D344", + "SystemConfig": "0x7e1C54769795f1Be7cd427b5879ae9c8023FFbbF", + "SystemConfigProxy": "0x3ee24bF404e4a5D27A437d910F56E1eD999B1De8", + "SystemOwnerSafe": "0xd542f3328ff2516443FE4db1c89E427F67169D94" +} \ No newline at end of file diff --git a/op-e2e/celo/networks/901/celo-contracts.json b/op-e2e/celo/networks/901/celo-contracts.json new file mode 100644 index 0000000000000..56860eb40e11d --- /dev/null +++ b/op-e2e/celo/networks/901/celo-contracts.json @@ -0,0 +1,20 @@ +[ + { + "contract": "GoldToken", + "proxy": "0x471ece3750da237f93b8e339c536989b8978a438", + "implementation": "0x471ece3750da237f93b8e339c536989b8978a438", + "version": "NONE" + }, + { + "contract": "Registry", + "proxy": "0x000000000000000000000000000000000000ce10", + "implementation": "0x000000000000000000000000000000000000ce10", + "version": "NONE" + }, + { + "contract": "FeeCurrencyDirectory", + "proxy": "0x9212Fb72ae65367A7c887eC4Ad9bE310BAC611BF", + "implementation": "0x9212Fb72ae65367A7c887eC4Ad9bE310BAC611BF", + "version": "NONE" + } +] diff --git a/op-e2e/celo/package-lock.json b/op-e2e/celo/package-lock.json deleted file mode 100644 index fc39534dff450..0000000000000 --- a/op-e2e/celo/package-lock.json +++ /dev/null @@ -1,6578 +0,0 @@ -{ - "name": "testsuite", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "testsuite", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "reverse-mirage": "^1.1.0", - "viem": "^2.13.1" - }, - "devDependencies": { - "@babel/core": "^7.24.7", - "@babel/preset-env": "^7.24.7", - "babel-jest": "^29.7.0", - "jest": "^29.7.0", - "prettier": "3.3.3" - } - }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", - "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==" - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", - "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", - "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.9", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-module-transforms": "^7.24.9", - "@babel/helpers": "^7.24.8", - "@babel/parser": "^7.24.8", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.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" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", - "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.9", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", - "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", - "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", - "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", - "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", - "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", - "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", - "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", - "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", - "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", - "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", - "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", - "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", - "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", - "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", - "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", - "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", - "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", - "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", - "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", - "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", - "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", - "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", - "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", - "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", - "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", - "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", - "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", - "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", - "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", - "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", - "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.7", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@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-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.8", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-dotall-regex": "^7.24.7", - "@babel/plugin-transform-duplicate-keys": "^7.24.7", - "@babel/plugin-transform-dynamic-import": "^7.24.7", - "@babel/plugin-transform-exponentiation-operator": "^7.24.7", - "@babel/plugin-transform-export-namespace-from": "^7.24.7", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", - "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-member-expression-literals": "^7.24.7", - "@babel/plugin-transform-modules-amd": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", - "@babel/plugin-transform-modules-umd": "^7.24.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-new-target": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-object-super": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-property-literals": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-reserved-words": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-template-literals": "^7.24.7", - "@babel/plugin-transform-typeof-symbol": "^7.24.8", - "@babel/plugin-transform-unicode-escapes": "^7.24.7", - "@babel/plugin-transform-unicode-property-regex": "^7.24.7", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.37.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", - "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@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.8", - "@babel/types": "^7.24.8", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.24.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", - "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@noble/curves": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", - "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", - "dependencies": { - "@noble/hashes": "1.5.0" - }, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/base": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", - "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip32": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", - "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", - "dependencies": { - "@noble/curves": "~1.6.0", - "@noble/hashes": "~1.5.0", - "@scure/base": "~1.1.7" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@scure/bip39": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.4.0.tgz", - "integrity": "sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==", - "dependencies": { - "@noble/hashes": "~1.5.0", - "@scure/base": "~1.1.8" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/abitype": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz", - "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==", - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001642", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", - "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", - "dev": true, - "dependencies": { - "browserslist": "^4.23.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/create-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/create-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/create-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.829", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.829.tgz", - "integrity": "sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", - "dev": true, - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isows": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.6.tgz", - "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "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" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "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" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", - "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/reverse-mirage": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reverse-mirage/-/reverse-mirage-1.1.0.tgz", - "integrity": "sha512-cA1O7GR0pn4rMFoaiEG7Skms9GenuW91DtCxeR5hphyNhH90eowV4RmUVlVPVS11CPkezm/iUjnCfmxlHri05w==", - "peerDependencies": { - "typescript": ">=5.0.4", - "viem": ">=2" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/viem": { - "version": "2.21.19", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.21.19.tgz", - "integrity": "sha512-FdlkN+UI1IU5sYOmzvygkxsUNjDRD5YHht3gZFu2X9xFv6Z3h9pXq9ycrYQ3F17lNfb41O2Ot4/aqbUkwOv9dA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "dependencies": { - "@adraffy/ens-normalize": "1.11.0", - "@noble/curves": "1.6.0", - "@noble/hashes": "1.5.0", - "@scure/bip32": "1.5.0", - "@scure/bip39": "1.4.0", - "abitype": "1.0.6", - "isows": "1.0.6", - "webauthn-p256": "0.0.10", - "ws": "8.18.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webauthn-p256": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/webauthn-p256/-/webauthn-p256-0.0.10.tgz", - "integrity": "sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "dependencies": { - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "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" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/op-e2e/celo/package.json b/op-e2e/celo/package.json deleted file mode 100644 index ee0d66c7a7b5c..0000000000000 --- a/op-e2e/celo/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "testsuite", - "version": "1.0.0", - "description": "", - "type": "module", - "main": "dist/test.js", - "scripts": { - "test": "jest tests --detectOpenHandles", - "format": "npx prettier . --write" - }, - "author": "Celo Labs Inc.", - "license": "ISC", - "dependencies": { - "reverse-mirage": "^1.1.0", - "viem": "^2.13.1" - }, - "devDependencies": { - "@babel/core": "^7.24.7", - "@babel/preset-env": "^7.24.7", - "babel-jest": "^29.7.0", - "jest": "^29.7.0", - "prettier": "3.3.3" - } -} diff --git a/op-e2e/celo/packages/celo-test-runner/deno.json b/op-e2e/celo/packages/celo-test-runner/deno.json new file mode 100644 index 0000000000000..abfa2c66da4d4 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/deno.json @@ -0,0 +1,9 @@ +{ + "name": "@celo-test/runner", + "version": "0.1.0", + "exports": "./main.ts", + "imports": { + "@std/path": "jsr:@std/path@^1.0.8", + "viem": "npm:viem@^2.22.16" + } +} diff --git a/op-e2e/celo/packages/celo-test-runner/main.ts b/op-e2e/celo/packages/celo-test-runner/main.ts new file mode 100644 index 0000000000000..3910071264107 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/main.ts @@ -0,0 +1,6 @@ +export { Context } from "./src/context.ts"; +export { parseConfigWithPrefixFromEnv } from "./src/config.ts"; +export { run } from "./src/runner.ts"; +export { addTestOptions } from "./src/metadata.ts"; +export type { TestMetadata } from "./src/metadata.ts"; +export type { Config, TestFuncAsync } from "./src/types.ts"; diff --git a/op-e2e/celo/packages/celo-test-runner/src/config.ts b/op-e2e/celo/packages/celo-test-runner/src/config.ts new file mode 100644 index 0000000000000..1ee3a602ef8e7 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/config.ts @@ -0,0 +1,87 @@ +import "jsr:@std/dotenv/load"; +import type { Config } from "./types.ts"; +import { type Hex, isHex } from "viem"; +import { resolve } from "jsr:@std/path"; + +function stringToBool(value: string): boolean | undefined { + const normalized = value.trim().toLowerCase(); + if (normalized === "true" || normalized === "1") { + return true; + } + if (normalized === "false" || normalized === "0") { + return false; + } + return undefined; +} + +export function parseConfigWithPrefixFromEnv( + env: Record, + prefix: string, +): Config { + const getEnvValueAndKey = ( + key: string, + optional: boolean, + ): [string, string] => { + const fullKey = `${prefix}_${key}`; + if (!(fullKey in env)) { + if (optional === true) { + return ["", fullKey]; + } + throw new Error(`Environment variable ${fullKey} is missing.`); + } + return [env[fullKey], fullKey]; + }; + const getEnvValueString = (key: string, optional: boolean): string => { + const [val, _] = getEnvValueAndKey(key, optional); + return val; + }; + const getEnvValueBool = (key: string): boolean => { + const [val, fullKey] = getEnvValueAndKey(key, false); + const hexVal = stringToBool(val); + if (hexVal === undefined) { + throw new Error( + `${fullKey} has to be a boolean value ('true'/'false' or '0'/'1')`, + ); + } + return hexVal; + }; + const getEnvValueHex = (key: string): Hex => { + const [val, fullKey] = getEnvValueAndKey(key, false); + if (!isHex(val)) { + throw new Error( + `${fullKey} has to be a hex encoded value ('0x' prefixed)`, + ); + } + return val; + }; + + const l2ContractAddressesPath = getEnvValueString( + "ADDRESSES_L2_FILEPATH", + true, + ); + return { + L1: { + RPCURL: new URL(getEnvValueString("L1_RPCURL", false)), + ChainID: parseInt(getEnvValueString("L1_CHAINID", false), 10), + }, + L2: { + RPCURL: new URL(getEnvValueString("L2_RPCURL", false)), + ChainID: parseInt(getEnvValueString("L2_CHAINID", false), 10), + }, + SpawnDevnet: getEnvValueBool("SPAWN_DEVNET"), + UseAltDA: getEnvValueBool("USE_ALTDA"), + UseFaultproofSystem: getEnvValueBool("USE_FAULTPROOFS"), + FunderPrivateKey: getEnvValueHex("FUNDER_PRIVATEKEY"), + ContractAddressesL1FilePath: resolve( + getEnvValueString("ADDRESSES_L1_FILEPATH", false), + ), + ContractAddressesL2FilePath: + l2ContractAddressesPath && resolve(l2ContractAddressesPath), + AccountsSeedPhrase: getEnvValueString("ACCOUNTS_SEEDPHRASE", false), + TestDirPath: resolve(getEnvValueString("TESTDIRPATH", false)), + ArtifactsDirPath: resolve(getEnvValueString("ARTIFACTSDIRPATH", false)), + MonorepoPath: resolve(getEnvValueString("MONOREPOPATH", false)), + }; +} + +export const DefaultEnvPrefix = "CELOTEST_"; diff --git a/op-e2e/celo/packages/celo-test-runner/src/context.ts b/op-e2e/celo/packages/celo-test-runner/src/context.ts new file mode 100644 index 0000000000000..3941011c91729 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/context.ts @@ -0,0 +1,123 @@ +import { ClientAccountManager } from "@celo-test/viem"; +import type { + Chains, + ContractAddressesL1, + PublicClients, + WalletClients, +} from "@celo-test/viem"; +import type { Config } from "./types.ts"; +import type { TestLogger } from "./logger.ts"; +import type { Account, HDAccount, Hex } from "viem"; +import { toHex } from "viem"; + +// deno-lint-ignore no-explicit-any +type StoreArtifactFnExternal = (id: string, message: string, data: any) => void; +// deno-lint-ignore no-explicit-any +type StoreArtifactFn = (message: string, data: any) => void; + +// interface TestLogger { +// injectLogger(id: string, ctx: Context): void; +// // deno-lint-ignore no-explicit-any +// store(id: string, message: string, data: any): void; +// flush(): Promise; +// } + +export class Context { + concurrent: boolean; + config: Config; + contracts: ContractAddressesL1; + clientManager: ClientAccountManager; + parent: Context | null; + chains: Chains; + private _storeArtifact: StoreArtifactFn | undefined; + logger: TestLogger; + + private _pubClients: PublicClients | undefined; + private _walletClients: WalletClients | undefined; + + constructor( + clientManager: ClientAccountManager, + config: Config, + parent: Context | undefined, + concurrent: boolean, + contracts: ContractAddressesL1, + logger: TestLogger, + ) { + this.logger = logger; + this.contracts = contracts; + this.clientManager = clientManager; + this.chains = clientManager.chains; + this.config = config; + this.concurrent = concurrent; + if (parent === undefined) { + this.parent = null; + } else { + this.parent = parent; + this._pubClients = parent.public(); + } + } + public(): PublicClients { + if (this._pubClients !== undefined) { + return this._pubClients; + } + this._pubClients = this.clientManager.public(); + return this._pubClients; + } + + l1PrivateKey(): Hex { + const acc = this.wallet().l1.account as HDAccount; + return toHex(acc.getHdKey().privateKey!); + } + l2PrivateKey(): Hex { + const acc = this.wallet().l2.account as HDAccount; + return toHex(acc.getHdKey().privateKey!); + } + + injectArtifactStore(id: string, fn: StoreArtifactFnExternal) { + // deno-lint-ignore no-explicit-any + this._storeArtifact = function (message: string, data: any) { + return fn(id, message, data); + }; + } + + // deno-lint-ignore no-explicit-any + storeArtifact(message: string, data: any) { + if (this._storeArtifact === undefined) { + throw Error("artifact store not injected"); + } + this._storeArtifact(message, data); + } + + resetClients(numFundedAccounts: number) { + this._pubClients = undefined; + this._walletClients = undefined; + this.clientManager.reset(numFundedAccounts); + } + + wallet(): WalletClients { + if (this._walletClients !== undefined) { + return this._walletClients; + } + + if (this.concurrent || this.parent === null) { + const account = this.clientManager.nextFundedL2Account(); + // reuse the l2 private-key for l1 as well. + // TODO: check if they are funded? + this._walletClients = this.clientManager.wallet(account, account); + } else { + this._walletClients = this.parent.wallet(); + } + return this._walletClients; + } + + child(concurrent: boolean): Context { + return new Context( + this.clientManager, + this.config, + this, + concurrent, + this.contracts, + this.logger, + ); + } +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/devnet.ts b/op-e2e/celo/packages/celo-test-runner/src/devnet.ts new file mode 100644 index 0000000000000..115e8fc2acd66 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/devnet.ts @@ -0,0 +1,59 @@ +import type { Config } from "./types.ts"; + +export async function setupDevnet(config: Config) { + if (!config.SpawnDevnet) { + return; + } + console.log("config requested to spawn devnet ..."); + + const env = { + DEVNET_L2OO: !config.UseFaultproofSystem, + GENERIC_ALTDA: config.UseAltDA, + DEVNET_ALTDA: config.UseAltDA, + DEVNET_CELO: true, + }; + + const envAsString: Record = Object.fromEntries( + Object.entries(env).map(([key, value]) => [key, String(value)]), + ); + const devnetUp = new Deno.Command("make", { + args: ["devnet-up"], + stdout: "piped", + stderr: "piped", + cwd: config.MonorepoPath, + env: envAsString, + }); + + const process = devnetUp.spawn(); + const { code, stderr } = await process.output(); + + if (code !== 0) { + const errorOutput = new TextDecoder().decode(stderr); + console.error("failed to spawn devnet:\n", errorOutput); + Deno.exit(1); + } + + console.log("devnet started."); +} + +export async function teardownDevnet(config: Config) { + if (!config.SpawnDevnet) { + return; + } + console.log("stopping and clearing devnet..."); + const devnetClean = new Deno.Command("make", { + args: ["devnet-clean"], + stdout: "piped", + stderr: "piped", + cwd: config.MonorepoPath, + }); + + const process = devnetClean.spawn(); + const { code, stderr } = await process.output(); + + if (code !== 0) { + const errorOutput = new TextDecoder().decode(stderr); + console.error("Failed to clean devnet:\n", errorOutput); + } + console.log("cleaned devnet."); +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/logger.ts b/op-e2e/celo/packages/celo-test-runner/src/logger.ts new file mode 100644 index 0000000000000..9c4f9e37bb982 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/logger.ts @@ -0,0 +1,107 @@ +// deno-lint-ignore-file no-explicit-any +import { ensureDir } from "jsr:@std/fs/ensure-dir"; +import { join } from "jsr:@std/path"; +import type { Context } from "./context.ts"; +import type { Address } from "viem"; + +interface TestInfo { + l1Info: { + address: Address; + chainId: number; + rpcUrl: string; + }; + l2Info: { + address: Address; + chainId: number; + rpcUrl: string; + }; + concurrent: boolean; +} + +interface LogEntry { + timestamp: string; + message: string; + data: any; +} + +export function stringifyWithBigInt(obj: any): string { + return JSON.stringify( + obj, + (_k, v) => (typeof v === "bigint" ? v.toString() : v), + 2, + ); +} + +export function parseWithBigInt(json: string): any { + return JSON.parse(json, (_k, v) => + typeof v === "string" && /^\d{15,}$/.test(v) ? BigInt(v) : v, + ); +} + +export function bindLoggerToTest(t: Deno.TestContext, ctx: Context) { + const logger = ctx.logger; + logger.addMetadata(t.name, ctx); + ctx.injectArtifactStore(t.name, logger.store.bind(logger)); +} + +export class TestLogger { + private rootDir: string; + private logsByTest: Record = {}; + private testInfoByTest: Record = {}; + + constructor(rootDir: string) { + this.rootDir = rootDir; + } + + addMetadata(id: string, ctx: Context) { + const info = { + l1Info: { + address: ctx.wallet().l1.account!.address, + chainId: ctx.config.L1.ChainID, + rpcUrl: ctx.config.L1.RPCURL.toString(), + }, + l2Info: { + address: ctx.wallet().l2.account!.address, + chainId: ctx.config.L2.ChainID, + rpcUrl: ctx.config.L2.RPCURL.toString(), + }, + concurrent: ctx.concurrent, + }; + this.testInfoByTest[id] = info; + } + + store(id: string, message: string, data: any) { + if (!this.logsByTest[id]) { + this.logsByTest[id] = []; + } + this.logsByTest[id].push({ + timestamp: new Date().toISOString(), + message, + data, + }); + } + + async flush() { + const tests: Record = {}; + + for (const [testName, logs] of Object.entries(this.logsByTest)) { + tests[testName] = { + info: this.testInfoByTest[testName], + logs, + }; + } + + const artifact = { + tests, + }; + + await ensureDir(this.rootDir); + + const timestamp = new Date().toISOString().replace(/[:.]/g, "-"); + const outFile = join(this.rootDir, `test_logs_${timestamp}.json`); + + await Deno.writeTextFile(outFile, stringifyWithBigInt(artifact)); + + console.log(`all test logs flushed to ${outFile}`); + } +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/metadata.ts b/op-e2e/celo/packages/celo-test-runner/src/metadata.ts new file mode 100644 index 0000000000000..f8602c82c97b8 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/metadata.ts @@ -0,0 +1,32 @@ +import "npm:reflect-metadata"; +import type { TestFunc } from "./types.ts"; + +export type TestMetadata = { + Name: string; + Concurrent: boolean; + OnlyRunOnL2ChainIDs: Array | undefined; +}; + +const testMetadataKey = "test-metadata"; + +// when this decorator is not used to wrap a test-function, +// the default values for the metadata will be used (see getTestOptions). +export function addTestOptions(metadata: TestMetadata) { + return (fn: T): T => { + Reflect.defineMetadata(testMetadataKey, metadata, fn); + return fn; + }; +} +export function getTestOptions(fn: T): TestMetadata { + let meta = Reflect.getMetadata(testMetadataKey, fn); + if (meta === undefined) { + // default values when the function is not decorated with the + // metadata adder: + meta = { + RunConcurrent: false, + Name: fn.name, + OnlyRunOnL2ChainID: undefined, + }; + } + return meta; +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/runner.ts b/op-e2e/celo/packages/celo-test-runner/src/runner.ts new file mode 100644 index 0000000000000..11428551414f8 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/runner.ts @@ -0,0 +1,281 @@ +import type { Context } from "./context.ts"; +import { bindLoggerToTest } from "./logger.ts"; +import type { + Config, + TestCase, + TestCases, + TestDefinitionsPerFile, +} from "./types.ts"; +import { + implementsTestCaseAsync, + implementsTestCaseSync, + importTestsForDirectory, +} from "./testimport.ts"; +import { setup, teardown } from "./setup.ts"; + +export async function run(config: Config) { + const tests = await importTestsForDirectory(config.TestDirPath); + Deno.test({ + name: "celo-test runner", + sanitizeOps: false, + sanitizeResources: false, + sanitizeExit: false, + fn: async (t) => { + await runAllTests(t, config, tests); + }, + }); +} + +function countSkippedTests(testCases: TestCases, config: Config): number { + return testCases.reduce( + (count, item) => count + (skipTest(item, config) ? 1 : 0), + 0, + ); +} +function filterConcurrentTests(testCases: TestCases): TestCases { + return testCases.filter( + (testCase) => + implementsTestCaseAsync(testCase.Func) && + testCase.Metadata.Concurrent === true, + ); +} +function filterSerialAsyncTests(testCases: TestCases): TestCases { + return testCases.filter( + (testCase) => + implementsTestCaseAsync(testCase.Func) && + testCase.Metadata.Concurrent === false, + ); +} +function filterSyncTests(testCases: TestCases): TestCases { + return testCases.filter( + (testCase) => + implementsTestCaseSync(testCase.Func) && + testCase.Metadata.Concurrent === false, + ); +} +function skipTest(test: TestCase, config: Config): boolean { + if (test.Metadata.OnlyRunOnL2ChainIDs === undefined) { + return false; + } + const allowedIDs = new Set(test.Metadata.OnlyRunOnL2ChainIDs); + return !allowedIDs.has(config.L2.ChainID); +} + +function serialTestDefinitionsForFile( + parentCtx: Context, + fileName: string, + testCases: TestCases, +): TestDefinitionsPerFile { + const asyncTests = filterSerialAsyncTests(testCases); + const syncTests = filterSyncTests(testCases); + if (asyncTests.length == 0 && syncTests.length == 0) { + return { + name: fileName, + step: null, + concurrent: false, + numActiveTestSteps: 0, + }; + } + let numSkippedTests = countSkippedTests(syncTests, parentCtx.config); + numSkippedTests += countSkippedTests(asyncTests, parentCtx.config); + const step = { + name: fileName, + sanitizeOps: false, + sanitizeResources: false, + sanitizeExit: false, + fn: async (t: Deno.TestContext) => { + for (const [_, test] of asyncTests.entries()) { + const ctx = parentCtx.child(false); + await t.step({ + name: `${test.Metadata.Name} (execution=serial)`, + sanitizeOps: false, + ignore: skipTest(test, ctx.config), + sanitizeResources: false, + sanitizeExit: false, + fn: async (t) => { + bindLoggerToTest(t, ctx); + await test.Func(t, ctx); + }, + }); + } + for (const [_, test] of syncTests.entries()) { + const ctx = parentCtx.child(false); + await t.step({ + name: `${test.Metadata.Name} (execution=serial)`, + sanitizeOps: false, + sanitizeResources: false, + ignore: skipTest(test, ctx.config), + sanitizeExit: false, + fn: (t) => { + bindLoggerToTest(t, ctx); + test.Func(t, ctx); + }, + }); + } + }, + }; + return { + name: fileName, + step: step, + concurrent: false, + numActiveTestSteps: syncTests.length + asyncTests.length - numSkippedTests, + }; +} + +function concurrentTestDefinitionsForFile( + parentCtx: Context, + fileName: string, + testCases: TestCases, +): TestDefinitionsPerFile { + const tests = filterConcurrentTests(testCases); + if (tests.length == 0) { + return { + name: fileName, + step: null, + concurrent: true, + numActiveTestSteps: 0, + }; + } + const numSkippedTests = countSkippedTests(tests, parentCtx.config); + const step = { + name: fileName, + sanitizeOps: false, + sanitizeResources: false, + sanitizeExit: false, + fn: async (t: Deno.TestContext) => { + const testPromises: Array> = []; + for (const [_, test] of tests.entries()) { + const ctx = parentCtx.child(true); + testPromises.push( + t.step({ + name: `${test.Metadata.Name} (execution=concurrent)`, + sanitizeOps: false, + ignore: skipTest(test, ctx.config), + sanitizeResources: false, + sanitizeExit: false, + fn: async (t) => { + bindLoggerToTest(t, ctx); + await test.Func(t, ctx); + }, + }), + ); + } + await Promise.allSettled(testPromises); + }, + }; + return { + name: fileName, + step: step, + concurrent: true, + numActiveTestSteps: tests.length - numSkippedTests, + }; +} +async function runAllTests( + t: Deno.TestContext, + config: Config, + tests: Record, +) { + let rootCtx: Context | undefined = undefined; + try { + const setupSuccess = await t.step({ + name: "setup", + sanitizeOps: false, + sanitizeResources: false, + sanitizeExit: false, + fn: async (t) => { + rootCtx = await setup(t, config); + }, + }); + if (!setupSuccess) { + throw Error("setup failed"); + } + if (rootCtx === undefined) { + throw Error("parent test context couldn't be set up"); + } + const concurrentTests: Array = []; + const serialTests: Array = []; + let totalConcurrentChildContexts = 0; + for (const [fileName, testCases] of Object.entries(tests)) { + const concurrentDefs = concurrentTestDefinitionsForFile( + rootCtx, + fileName, + testCases, + ); + if (concurrentDefs.step !== null) { + concurrentTests.push(concurrentDefs.step); + // we need a new account per each concurrently executed test + // to avoid nonce overlap + totalConcurrentChildContexts += concurrentDefs.numActiveTestSteps; + } + const serialDefs = serialTestDefinitionsForFile( + rootCtx, + fileName, + testCases, + ); + if (serialDefs.step !== null) { + serialTests.push(serialDefs.step); + } + } + if (serialTests.length > 0) { + // we only need one account for the serially executed tests + totalConcurrentChildContexts++; + } + const success = await t.step({ + name: `distribute funds to ${totalConcurrentChildContexts} test-acccounts`, + fn: async (_) => { + if (rootCtx === undefined) { + throw Error("context is undefined"); + } + rootCtx.resetClients(totalConcurrentChildContexts); + await rootCtx.clientManager.fundAccountsFrom( + rootCtx.config.FunderPrivateKey, + ); + }, + }); + if (!success) { + throw Error("couldn't distribute test acccount funds"); + } + + const steps: Array> = []; + if (concurrentTests.length > 0) { + steps.push( + t.step({ + name: "concurrently running tests", + fn: async (_) => { + await Promise.allSettled( + concurrentTests.map((test) => t.step(test)), + ); + }, + }), + ); + } + if (serialTests.length > 0) { + steps.push( + t.step({ + name: "serially running tests", + fn: async (_) => { + for (const test of serialTests) { + await t.step(test); + } + }, + }), + ); + } + await Promise.allSettled(steps); + } finally { + // TODO: refund the funder account from all contexts + await t.step({ + name: "teardown", + sanitizeOps: false, + sanitizeResources: false, + sanitizeExit: false, + fn: async (t1) => { + if (rootCtx !== undefined) { + console.log("writing artifacts file"); + await rootCtx.logger.flush(); + } + await teardown(t1, config); + }, + }); + } +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/setup.ts b/op-e2e/celo/packages/celo-test-runner/src/setup.ts new file mode 100644 index 0000000000000..80b288d3fd5b1 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/setup.ts @@ -0,0 +1,136 @@ +import { join } from "jsr:@std/path"; +import { ClientAccountManager } from "@celo-test/viem"; +import type { Config } from "./types.ts"; +import { Context } from "./context.ts"; +import { TestLogger } from "./logger.ts"; +import { + waitClientNotSyncing, + waitClientReturnsBlockNum, + waitInitialL2OracleOutput, + waitUntilTwoGames, +} from "@celo-test/util"; +import { setupDevnet, teardownDevnet } from "./devnet.ts"; +import { makeChainConfigs } from "@celo-test/viem"; +import { isHex } from "viem"; +import { getPortalVersion } from "viem/op-stack"; +import type { + ChainContractsCeloL2, + ContractAddressesL1, +} from "@celo-test/viem"; + +type CeloCLIContractInfo = { + contract: string; + proxy: string; + implementation: string; + version: string; +}; + +type CeloCLIContractsList = CeloCLIContractInfo[]; + +// uses the celocli "network:contracts" --json formatted +// contract spec and converts it into something +// that can be injected into viem's "Chain" config. +function readCeloCLIAddresses(config: Config): ChainContractsCeloL2 { + if (config.ContractAddressesL2FilePath === undefined) { + return {}; + } + const addressesJson = Deno.readTextFileSync( + join(config.ContractAddressesL2FilePath), + ); + + const addresses: CeloCLIContractsList = JSON.parse(addressesJson); + const contractAddressesL2Celo = addresses.reduce( + (acc: ChainContractsCeloL2, contract: CeloCLIContractInfo) => { + let contractName = contract.contract; + if (!contractName) { + return acc; + } + // lower-case the first char of the contract name, + // since this is how it is standard in viem + contractName = + contractName.charAt(0).toLowerCase() + contractName.slice(1); + if (!isHex(contract.proxy)) { + throw Error( + `provided Celo contract proxy address of contract '${contract.contract}' is not Hex formatted: ${contract.proxy}`, + ); + } + acc[contractName] = { address: contract.proxy }; + return acc; + }, + {}, + ); + return contractAddressesL2Celo; +} + +export async function setup( + _: Deno.TestContext, + config: Config, +): Promise { + await setupDevnet(config); + const addressesJson = Deno.readTextFileSync( + join(config.ContractAddressesL1FilePath), + ); + const addressesL1: ContractAddressesL1 = JSON.parse(addressesJson); + const addressesL2Celo = readCeloCLIAddresses(config); + + const chains = makeChainConfigs( + config.L1.ChainID, + config.L2.ChainID, + config.L1.RPCURL.toString(), + config.L2.RPCURL.toString(), + addressesL1, + addressesL2Celo, + ); + + // the num accounts will be reset later, when we know + // how many concurrently sending accounts we need. + // For now, we don't even use the wallet clients. + const clients = new ClientAccountManager( + chains, + config.AccountsSeedPhrase, + 1, + ); + const publicClient = clients.public(); + console.log("waiting for chain networks to stabilize"); + { + const success = await Promise.all([ + waitClientReturnsBlockNum(publicClient.l1, 20), + waitClientReturnsBlockNum(publicClient.l2, 20), + waitClientNotSyncing(publicClient.l1, 15), + waitClientNotSyncing(publicClient.l2, 15), + ]); + if (!success.every((v) => v === null)) { + throw new Error("l1 and l2 clients not reachable within the deadline"); + } + } + const portalVersion = await getPortalVersion(clients.public().l1, { + //TODO: use proper types + // deno-lint-ignore no-explicit-any + targetChain: clients.public().l2.chain as any, + }); + const chainUsesFaultProofs = portalVersion.major >= 3; + if (chainUsesFaultProofs !== config.UseFaultproofSystem) { + console.log( + `'UseFaultproofSystem' is set to ${config.UseFaultproofSystem}, ` + + `but the chain contracts do not reflect that`, + ); + } + if (chainUsesFaultProofs) { + console.log("L2 chain uses fault-proofs, wait until two games available"); + // NOTE: viem needs at least two games to infer the + // time to next game, otherwise the function + // returns NaN + await waitUntilTwoGames(publicClient, 120); + } else { + console.log("L2 chain uses output-oracle, waiting for initial oracle"); + await waitInitialL2OracleOutput(publicClient, 120); + } + console.log("chain networks stable"); + + const logger = new TestLogger(config.ArtifactsDirPath); + return new Context(clients, config, undefined, false, addressesL1, logger); +} + +export async function teardown(_: Deno.TestContext, config: Config) { + await teardownDevnet(config); +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/testimport.ts b/op-e2e/celo/packages/celo-test-runner/src/testimport.ts new file mode 100644 index 0000000000000..7da22747b6971 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/testimport.ts @@ -0,0 +1,61 @@ +import type { + TestCase, + TestCases, + TestFuncAsync, + TestFuncSync, +} from "./types.ts"; +import { getTestOptions } from "./metadata.ts"; + +// Utility function to check if a function matches the TestCase interface. +// Note that TS is lacking runtime checks for type definitions, and +// the check here is very basic (doesn't check for type signature, only length) +function implementsTestCase(func: unknown, sync: boolean): boolean { + if (!(typeof func === "function" && func.length === 2)) { + return false; + } + if (sync) { + return func.constructor.name === "Function"; + } else { + return func.constructor.name === "AsyncFunction"; + } +} + +export function implementsTestCaseSync(func: unknown): func is TestFuncSync { + return implementsTestCase(func, true); +} +export function implementsTestCaseAsync(func: unknown): func is TestFuncAsync { + return implementsTestCase(func, false); +} + +export async function importTestsForDirectory( + directory: string, +): Promise> { + const testCasesPerFile: Record = {}; + // expects a flat file directory, no nested folders + for await (const entry of Deno.readDir(directory)) { + const testCases: TestCases = []; + if ( + entry.isFile && + (entry.name.endsWith(".ts") || entry.name.endsWith(".js")) + ) { + const absolutePath = await Deno.realPath(`${directory}/${entry.name}`); // Resolve to an absolute path + const module = await import(absolutePath); + // Filter and merge functions that implement the TestCase interface + Object.entries(module).forEach(([_, value]) => { + if (implementsTestCaseAsync(value) || implementsTestCaseSync(value)) { + const metadata = getTestOptions(value); + const testCase: TestCase = { + File: entry.name, + Metadata: metadata, + Func: value, + }; + testCases.push(testCase); + } + }); + } + if (testCases.length !== 0) { + testCasesPerFile[entry.name] = testCases; + } + } + return testCasesPerFile; +} diff --git a/op-e2e/celo/packages/celo-test-runner/src/types.ts b/op-e2e/celo/packages/celo-test-runner/src/types.ts new file mode 100644 index 0000000000000..28ff8dbf4dbc9 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-runner/src/types.ts @@ -0,0 +1,48 @@ +import type { Context } from "./context.ts"; +import type { TestMetadata } from "./metadata.ts"; +import type { Hex } from "viem"; +import "jsr:@std/dotenv/load"; + +export type ChainConfig = { + RPCURL: URL; + ChainID: number; +}; + +export type Config = { + L1: ChainConfig; + L2: ChainConfig; + FunderPrivateKey: Hex; + UseFaultproofSystem: boolean; + UseAltDA: boolean; + SpawnDevnet: boolean; + + TestDirPath: string; + ArtifactsDirPath: string; + MonorepoPath: string; + ContractAddressesL1FilePath: string; + ContractAddressesL2FilePath: string | undefined; + AccountsSeedPhrase: string; +}; + +export type TestFunc = TestFuncAsync | TestFuncSync; +export type TestFuncAsync = ( + t: Deno.TestContext, + ctx: Context, +) => Promise; + +export type TestFuncSync = (t: Deno.TestContext, ctx: Context) => boolean; + +export type TestCase = { + File: string; + Metadata: TestMetadata; + Func: TestFuncSync | TestFuncAsync; +}; + +export type TestCases = Array; + +export type TestDefinitionsPerFile = { + name: string; + step: Deno.TestStepDefinition | null; + concurrent: boolean; + numActiveTestSteps: number; +}; diff --git a/op-e2e/celo/packages/celo-test-util/deno.json b/op-e2e/celo/packages/celo-test-util/deno.json new file mode 100644 index 0000000000000..7178fbae71324 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-util/deno.json @@ -0,0 +1,8 @@ +{ + "name": "@celo-test/util", + "version": "0.1.0", + "exports": "./src/wait.ts", + "imports": { + "viem": "npm:viem@^2.22.16" + } +} diff --git a/op-e2e/celo/packages/celo-test-util/src/wait.ts b/op-e2e/celo/packages/celo-test-util/src/wait.ts new file mode 100644 index 0000000000000..78c7ad026501d --- /dev/null +++ b/op-e2e/celo/packages/celo-test-util/src/wait.ts @@ -0,0 +1,204 @@ +import { getGames, getL2Output } from "viem/op-stack"; + +const sleepMaxWaitTimeMs = 1000; + +export function sleep(milliseconds: number): Promise { + return sleepUntil(Date.now() + milliseconds); +} +export function sleepSeconds(seconds: number): Promise { + return sleep(seconds * 1000); +} + +export function sleepUntil(targetTime: Date | number): Promise { + const target = + typeof targetTime === "number" ? targetTime : targetTime.getTime(); + + return new Promise((resolve) => { + const check = () => { + const now = Date.now(); + if (now >= target) { + resolve(); + } else { + // calculate remaining time, but cap the delay to a maximum value + const delay = Math.min(target - now, sleepMaxWaitTimeMs); + // recursively call the time-checking with a timeout + setTimeout(check, delay); + } + }; + check(); + }); +} + +export async function pollFunction( + fn: () => Promise, + until: (value: T | null, err: Error | null) => boolean | undefined, + initialPollInterval: number, + timeout: number | undefined, + exponentialBackoff: boolean, +): Promise { + const start = Date.now(); + let err: Error | null = null; + let result: T | null = null; + const pollScalingFactor = exponentialBackoff ? 1.2 : 1; + let lastPollTick = start; + let currentPollInterval = initialPollInterval; + const maxPollInterval = initialPollInterval * 100; + + if (typeof until !== "function") { + throw Error("passed in `until` parameter is not a function"); + } + const waitUntilNextTick = async function (): Promise { + const timeNow = Date.now(); + const timePassed = timeNow - lastPollTick; + + let pollTime = currentPollInterval - timePassed; + if (pollTime < 0) { + // we should have polled already, don't wait + return; + } + if (timeout !== undefined) { + const timeUntilTimeout = start + timeout - timeNow; + if (timeUntilTimeout < 0) { + return; + } + if (timeUntilTimeout < pollTime) { + pollTime = timeUntilTimeout; + } + } + + await sleep(pollTime); + lastPollTick = Date.now(); + currentPollInterval = currentPollInterval * pollScalingFactor; + if (currentPollInterval > maxPollInterval) { + currentPollInterval = maxPollInterval; + } + }; + + while (timeout === undefined || Date.now() - start < timeout) { + err = null; + result = null; + try { + result = await fn(); + } catch (error) { + if (error instanceof Error) { + err = error; + } else { + console.log("caught unknown error type", err); + } + } + //NOTE: the function will never + // throw an error before the timeout, or never throw an error at all + // when no timeout is given. + // That means that the 'until' function + // has to throw or return true if the poll-loop + // should get canceled + if (until(result, err) === true) { + return result; + } + await waitUntilNextTick(); + } + if (err) { + throw new Error(`timeout reached polling function: ${err.message}`, { + cause: err, + }); + } + throw new Error(`timeout reached polling function`); +} + +export async function waitClientReachable( + client: { getChainId: () => Promise }, + timeoutSeconds: number, +): Promise { + const until = (val: number | null, _err: Error | null): boolean => { + return typeof val === "number"; + }; + await pollFunction( + client.getChainId, + until, + 500, + timeoutSeconds * 1000, + false, + ); + return null; +} + +export async function waitClientNotSyncing( + // deno-lint-ignore no-explicit-any + client: any, + timeoutSeconds: number, +): Promise { + await pollFunction( + async (): Promise => { + return await client.request({ method: "eth_syncing" }); + }, + (val: boolean | null, _err: Error | null): boolean => val === false, + 500, + timeoutSeconds * 1000, + false, + ); + return null; +} + +export async function waitClientReturnsBlockNum( + client: { getBlockNumber: () => Promise }, + timeoutSeconds: number, +): Promise { + const until = (val: bigint | null, _err: Error | null): boolean => { + return typeof val === "bigint"; + }; + await pollFunction( + client.getBlockNumber, + until, + 500, + timeoutSeconds * 1000, + false, + ); + return null; +} + +export async function waitInitialL2OracleOutput( + publicClients: any, + timeout: number, +) { + const fn = async () => { + // @ts-ignore: allow anonymous type passing until the celo-e2e package + // is ported to TS + const games = await getL2Output(publicClients.l1, { + targetChain: publicClients.l2.chain, + // set 0n here, since we just want to wait so that + // the contract returns any games at all, otherwise + // viem can run into an uncaught index-error during bridging + l2BlockNumber: 0n, + }); + return games; + }; + + await pollFunction( + fn, + (l2Output: any | null, _err: Error | null) => !!l2Output, + 500, + timeout * 1000, + true, + ); + return null; +} + +export async function waitUntilTwoGames(publicClients: any, timeout: number) { + const fn = async () => { + // @ts-ignore: allow anonymous type passing until the celo-e2e package + // is ported to TS + return await getGames(publicClients.l1, { + targetChain: publicClients.l2.chain, + }); + }; + + await pollFunction( + fn, + (games: Array | null, _err: Error | null) => + games !== null ? games.length >= 2 : false, + 500, + timeout * 1000, + true, + ); + return null; +} diff --git a/op-e2e/celo/packages/celo-test-viem/abis/OptimismMintableERC20Factory.json b/op-e2e/celo/packages/celo-test-viem/abis/OptimismMintableERC20Factory.json new file mode 100644 index 0000000000000..4b706e16ea194 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/abis/OptimismMintableERC20Factory.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"bridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"createOptimismMintableERC20","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createOptimismMintableERC20WithDecimals","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"},{"name":"_decimals","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"createStandardL2Token","inputs":[{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployments","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_bridge","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OptimismMintableERC20Created","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"deployer","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StandardL2TokenCreated","inputs":[{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"localToken","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b5061001b6000610020565b610169565b600054610100900460ff16158080156100405750600054600160ff909116105b8061006b57506100593061015a60201b6105fe1760201c565b15801561006b575060005460ff166001145b6100d25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff1916600117905580156100f5576000805461ff0019166101001790555b600180546001600160a01b0319166001600160a01b0384161790558015610156576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b612ef6806101786000396000f3fe60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063c4d66de81162000062578063c4d66de81462000175578063ce5ac90f146200018e578063e78cea9214620001a5578063ee9a31a214620001c657600080fd5b8063316b3739146200009857806354fd4d5014620000fb578063896f93d114620001475780638cf0629c146200015e575b600080fd5b620000d1620000a936600462000652565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001386040518060400160405280600d81526020017f312e31302e312d626574612e340000000000000000000000000000000000000081525081565b604051620000f29190620006e5565b620000d162000158366004620007dc565b620001e5565b620000d16200016f36600462000859565b620001fc565b6200018c6200018636600462000652565b6200041b565b005b620000d16200019f366004620007dc565b620005ed565b600154620000d19073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16620000d1565b6000620001f4848484620005ed565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8516620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e20616464726573730060648201526084015b60405180910390fd5b600085858585604051602001620002c29493929190620008f0565b604051602081830303815290604052805190602001209050600081600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168888888860405162000312906200061a565b620003229594939291906200094a565b8190604051809103906000f590508015801562000343573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526002602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948d1694851790555193945090927fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf9190a360405133815273ffffffffffffffffffffffffffffffffffffffff80891691908316907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a39695505050505050565b600054610100900460ff16158080156200043c5750600054600160ff909116105b80620004585750303b15801562000458575060005460ff166001145b620004e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200029e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200054557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015620005e957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000620001f48484846012620001fc565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61253a80620009b083390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200064d57600080fd5b919050565b6000602082840312156200066557600080fd5b620006708262000628565b9392505050565b6000815180845260005b818110156200069f5760208185018101518683018201520162000681565b81811115620006b2576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000670602083018462000677565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200073b57600080fd5b813567ffffffffffffffff80821115620007595762000759620006fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715620007a257620007a2620006fa565b81604052838152866020858801011115620007bc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620007f257600080fd5b620007fd8462000628565b9250602084013567ffffffffffffffff808211156200081b57600080fd5b620008298783880162000729565b935060408601359150808211156200084057600080fd5b506200084f8682870162000729565b9150509250925092565b600080600080608085870312156200087057600080fd5b6200087b8562000628565b9350602085013567ffffffffffffffff808211156200089957600080fd5b620008a78883890162000729565b94506040870135915080821115620008be57600080fd5b50620008cd8782880162000729565b925050606085013560ff81168114620008e557600080fd5b939692955090935050565b73ffffffffffffffffffffffffffffffffffffffff8516815260806020820152600062000921608083018662000677565b828103604084015262000935818662000677565b91505060ff8316606083015295945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526200098560a083018662000677565b828103606084015262000999818662000677565b91505060ff83166080830152969550505050505056fe6101a06040523480156200001257600080fd5b506040516200253a3803806200253a833981016040819052620000359162000215565b6040805180820190915260018152603160f81b6020820152839081908185600362000061838262000350565b50600462000070828262000350565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c05261012052505050506001600160a01b0394851661014052509390921661016052505060ff16610180526200041c565b80516001600160a01b03811681146200014357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017057600080fd5b81516001600160401b03808211156200018d576200018d62000148565b604051601f8301601f19908116603f01168101908282118183101715620001b857620001b862000148565b81604052838152602092508683858801011115620001d557600080fd5b600091505b83821015620001f95785820183015181830184015290820190620001da565b838211156200020b5760008385830101525b9695505050505050565b600080600080600060a086880312156200022e57600080fd5b62000239866200012b565b945062000249602087016200012b565b60408701519094506001600160401b03808211156200026757600080fd5b6200027589838a016200015e565b945060608801519150808211156200028c57600080fd5b506200029b888289016200015e565b925050608086015160ff81168114620002b357600080fd5b809150509295509295909350565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c62000148565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051610140516101605161018051612091620004a960003960006102a6015260008181610401015281816104760152818161080a0152610a6d0152600081816101f6015261042701526000611557015260006115a601526000611581015260006114da015260006115040152600061152e01526120916000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636afdd850116100f9578063ae1f6aaf11610097578063d6c0b2c411610071578063d6c0b2c414610425578063dd62ed3e1461045e578063e78cea92146103ff578063ee9a31a21461047157600080fd5b8063ae1f6aaf146103ff578063c01e1bd614610425578063d505accf1461044b57600080fd5b806395d89b41116100d357806395d89b41146103be5780639dc29fac146103c6578063a457c2d7146103d9578063a9059cbb146103ec57600080fd5b80636afdd8501461036057806370a08231146103755780637ecebe00146103ab57600080fd5b8063313ce5671161016657806340c10f191161014057806340c10f19146102eb57806354fd4d50146102fe57806358cf96721461033a5780636a30b2531461034d57600080fd5b8063313ce5671461029f5780633644e515146102d057806339509351146102d857600080fd5b8063095ea7b3116101a2578063095ea7b31461025257806318160ddd1461026557806323b872dd146102775780632e0f98ad1461028a57600080fd5b806301ffc9a7146101c9578063033964be146101f157806306fdde031461023d575b600080fd5b6101dc6101d7366004611c0e565b610498565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b610245610589565b6040516101e89190611c50565b6101dc610260366004611cec565b61061b565b6002545b6040519081526020016101e8565b6101dc610285366004611d16565b610635565b61029d610298366004611d9e565b610659565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e8565b6102696107c1565b6101dc6102e6366004611cec565b6107d0565b61029d6102f9366004611cec565b6107f2565b6102456040518060400160405280600c81526020017f312e342e302d626574612e32000000000000000000000000000000000000000081525081565b61029d610348366004611cec565b610915565b61029d61035b366004611e0a565b61098b565b6e22d473030f116ddee9f6b43ac78ba3610218565b610269610383366004611e82565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696103b9366004611e82565b610a1b565b610245610a46565b61029d6103d4366004611cec565b610a55565b6101dc6103e7366004611cec565b610b6c565b6101dc6103fa366004611cec565b610c19565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b61029d610459366004611e9d565b610c27565b61026961046c366004611f10565b610de6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000851683148061055157507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061058057507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461059890611f43565b80601f01602080910402602001604051908101604052809291908181526020018280546105c490611f43565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b600033610629818585610e87565b60019150505b92915050565b60003361064385828561103b565b61064e8585856110ed565b506001949350505050565b33156106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064015b60405180910390fd5b828114610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f526563697069656e747320616e6420616d6f756e7473206d757374206265207460448201527f68652073616d65206c656e6774682e000000000000000000000000000000000060648201526084016106bd565b60005b838110156107ba576107a885858381811061077557610775611f90565b905060200201602081019061078a9190611e82565b84848481811061079c5761079c611f90565b905060200201356113a0565b806107b281611fee565b915050610758565b5050505050565b60006107cb6114c0565b905090565b6000336106298185856107e38383610de6565b6107ed9190612026565b610e87565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b6108c182826113a0565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161090991815260200190565b60405180910390a25050565b331561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b61098782826115f4565b5050565b33156109f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b6109fd88856113a0565b610a0787846113a0565b610a1185826113a0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205461062f565b60606004805461059890611f43565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b610b2482826115f4565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161090991815260200190565b60003381610b7a8286610de6565b905083811015610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106bd565b61064e8286868403610e87565b6000336106298185856110ed565b83421115610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106bd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610cc08c6117d9565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d288261180e565b90506000610d3882878787611877565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106bd565b610dda8a8a8a610e87565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610e4c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61062f565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006110478484610de6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e757818110156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106bd565b6110e78484848403610e87565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061132d908490612026565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139391815260200190565b60405180910390a36110e7565b73ffffffffffffffffffffffffffffffffffffffff821661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106bd565b806002600082825461142f9190612026565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611469908490612026565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561152657507f000000000000000000000000000000000000000000000000000000000000000046145b1561155057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b73ffffffffffffffffffffffffffffffffffffffff8216611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061178990849061203e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161102e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b600061062f61181b6114c0565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118888787878761189f565b91509150611895816119b7565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118d657506000905060036119ae565b8460ff16601b141580156118ee57508460ff16601c14155b156118ff57506000905060046119ae565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611953573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166119a7576000600192509250506119ae565b9150600090505b94509492505050565b60008160048111156119cb576119cb612055565b036119d35750565b60018160048111156119e7576119e7612055565b03611a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106bd565b6002816004811115611a6257611a62612055565b03611ac9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106bd565b6003816004811115611add57611add612055565b03611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b6004816004811115611b7e57611b7e612055565b03611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b50565b600060208284031215611c2057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e8057600080fd5b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b81811115611c8f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce757600080fd5b919050565b60008060408385031215611cff57600080fd5b611d0883611cc3565b946020939093013593505050565b600080600060608486031215611d2b57600080fd5b611d3484611cc3565b9250611d4260208501611cc3565b9150604084013590509250925092565b60008083601f840112611d6457600080fd5b50813567ffffffffffffffff811115611d7c57600080fd5b6020830191508360208260051b8501011115611d9757600080fd5b9250929050565b60008060008060408587031215611db457600080fd5b843567ffffffffffffffff80821115611dcc57600080fd5b611dd888838901611d52565b90965094506020870135915080821115611df157600080fd5b50611dfe87828801611d52565b95989497509550505050565b600080600080600080600080610100898b031215611e2757600080fd5b611e3089611cc3565b9750611e3e60208a01611cc3565b9650611e4c60408a01611cc3565b9550611e5a60608a01611cc3565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600060208284031215611e9457600080fd5b610e8082611cc3565b600080600080600080600060e0888a031215611eb857600080fd5b611ec188611cc3565b9650611ecf60208901611cc3565b95506040880135945060608801359350608088013560ff81168114611ef357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611f2357600080fd5b611f2c83611cc3565b9150611f3a60208401611cc3565b90509250929050565b600181811c90821680611f5757607f821691505b602082108103611808577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361201f5761201f611fbf565b5060010190565b6000821982111561203957612039611fbf565b500190565b60008282101561205057612050611fbf565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"871:5369:386:-:0;;;3021:66;;;;;;;;;-1:-1:-1;3045:35:386;3075:1;3045:10;:35::i;:::-;871:5369;;3203:89;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:58;;216:2:564;3146:190:58;;;198:21:564;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:564;;;338:44;399:19;;3146:190:58;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:58;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:58;;;;;3372:65;3269:6:386::1;:16:::0;;-1:-1:-1;;;;;;3269:16:386::1;-1:-1:-1::0;;;;;3269:16:386;::::1;;::::0;;3457:99:58;;;;3507:5;3491:21;;-1:-1:-1;;3491:21:58;;;3531:14;;-1:-1:-1;581:36:564;;3531:14:58;;569:2:564;554:18;3531:14:58;;;;;;;3457:99;3090:472;3203:89:386;:::o;1175:320:74:-;-1:-1:-1;;;;;1465:19:74;;:23;;;1175:320::o;429:194:564:-;871:5369:386;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040523480156200001157600080fd5b5060043610620000935760003560e01c8063c4d66de81162000062578063c4d66de81462000175578063ce5ac90f146200018e578063e78cea9214620001a5578063ee9a31a214620001c657600080fd5b8063316b3739146200009857806354fd4d5014620000fb578063896f93d114620001475780638cf0629c146200015e575b600080fd5b620000d1620000a936600462000652565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b620001386040518060400160405280600d81526020017f312e31302e312d626574612e340000000000000000000000000000000000000081525081565b604051620000f29190620006e5565b620000d162000158366004620007dc565b620001e5565b620000d16200016f36600462000859565b620001fc565b6200018c6200018636600462000652565b6200041b565b005b620000d16200019f366004620007dc565b620005ed565b600154620000d19073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16620000d1565b6000620001f4848484620005ed565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff8516620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7560448201527f73742070726f766964652072656d6f746520746f6b656e20616464726573730060648201526084015b60405180910390fd5b600085858585604051602001620002c29493929190620008f0565b604051602081830303815290604052805190602001209050600081600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168888888860405162000312906200061a565b620003229594939291906200094a565b8190604051809103906000f590508015801562000343573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526002602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948d1694851790555193945090927fceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf9190a360405133815273ffffffffffffffffffffffffffffffffffffffff80891691908316907f52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb9060200160405180910390a39695505050505050565b600054610100900460ff16158080156200043c5750600054600160ff909116105b80620004585750303b15801562000458575060005460ff166001145b620004e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200029e565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156200054557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84161790558015620005e957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000620001f48484846012620001fc565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b61253a80620009b083390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200064d57600080fd5b919050565b6000602082840312156200066557600080fd5b620006708262000628565b9392505050565b6000815180845260005b818110156200069f5760208185018101518683018201520162000681565b81811115620006b2576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600062000670602083018462000677565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f8301126200073b57600080fd5b813567ffffffffffffffff80821115620007595762000759620006fa565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715620007a257620007a2620006fa565b81604052838152866020858801011115620007bc57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215620007f257600080fd5b620007fd8462000628565b9250602084013567ffffffffffffffff808211156200081b57600080fd5b620008298783880162000729565b935060408601359150808211156200084057600080fd5b506200084f8682870162000729565b9150509250925092565b600080600080608085870312156200087057600080fd5b6200087b8562000628565b9350602085013567ffffffffffffffff808211156200089957600080fd5b620008a78883890162000729565b94506040870135915080821115620008be57600080fd5b50620008cd8782880162000729565b925050606085013560ff81168114620008e557600080fd5b939692955090935050565b73ffffffffffffffffffffffffffffffffffffffff8516815260806020820152600062000921608083018662000677565b828103604084015262000935818662000677565b91505060ff8316606083015295945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526200098560a083018662000677565b828103606084015262000999818662000677565b91505060ff83166080830152969550505050505056fe6101a06040523480156200001257600080fd5b506040516200253a3803806200253a833981016040819052620000359162000215565b6040805180820190915260018152603160f81b6020820152839081908185600362000061838262000350565b50600462000070828262000350565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c05261012052505050506001600160a01b0394851661014052509390921661016052505060ff16610180526200041c565b80516001600160a01b03811681146200014357600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200017057600080fd5b81516001600160401b03808211156200018d576200018d62000148565b604051601f8301601f19908116603f01168101908282118183101715620001b857620001b862000148565b81604052838152602092508683858801011115620001d557600080fd5b600091505b83821015620001f95785820183015181830184015290820190620001da565b838211156200020b5760008385830101525b9695505050505050565b600080600080600060a086880312156200022e57600080fd5b62000239866200012b565b945062000249602087016200012b565b60408701519094506001600160401b03808211156200026757600080fd5b6200027589838a016200015e565b945060608801519150808211156200028c57600080fd5b506200029b888289016200015e565b925050608086015160ff81168114620002b357600080fd5b809150509295509295909350565b600181811c90821680620002d657607f821691505b602082108103620002f757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034b57600081815260208120601f850160051c81016020861015620003265750805b601f850160051c820191505b81811015620003475782815560010162000332565b5050505b505050565b81516001600160401b038111156200036c576200036c62000148565b62000384816200037d8454620002c1565b84620002fd565b602080601f831160018114620003bc5760008415620003a35750858301515b600019600386901b1c1916600185901b17855562000347565b600085815260208120601f198616915b82811015620003ed57888601518255948401946001909101908401620003cc565b50858210156200040c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516101005161012051610140516101605161018051612091620004a960003960006102a6015260008181610401015281816104760152818161080a0152610a6d0152600081816101f6015261042701526000611557015260006115a601526000611581015260006114da015260006115040152600061152e01526120916000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636afdd850116100f9578063ae1f6aaf11610097578063d6c0b2c411610071578063d6c0b2c414610425578063dd62ed3e1461045e578063e78cea92146103ff578063ee9a31a21461047157600080fd5b8063ae1f6aaf146103ff578063c01e1bd614610425578063d505accf1461044b57600080fd5b806395d89b41116100d357806395d89b41146103be5780639dc29fac146103c6578063a457c2d7146103d9578063a9059cbb146103ec57600080fd5b80636afdd8501461036057806370a08231146103755780637ecebe00146103ab57600080fd5b8063313ce5671161016657806340c10f191161014057806340c10f19146102eb57806354fd4d50146102fe57806358cf96721461033a5780636a30b2531461034d57600080fd5b8063313ce5671461029f5780633644e515146102d057806339509351146102d857600080fd5b8063095ea7b3116101a2578063095ea7b31461025257806318160ddd1461026557806323b872dd146102775780632e0f98ad1461028a57600080fd5b806301ffc9a7146101c9578063033964be146101f157806306fdde031461023d575b600080fd5b6101dc6101d7366004611c0e565b610498565b60405190151581526020015b60405180910390f35b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e8565b610245610589565b6040516101e89190611c50565b6101dc610260366004611cec565b61061b565b6002545b6040519081526020016101e8565b6101dc610285366004611d16565b610635565b61029d610298366004611d9e565b610659565b005b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101e8565b6102696107c1565b6101dc6102e6366004611cec565b6107d0565b61029d6102f9366004611cec565b6107f2565b6102456040518060400160405280600c81526020017f312e342e302d626574612e32000000000000000000000000000000000000000081525081565b61029d610348366004611cec565b610915565b61029d61035b366004611e0a565b61098b565b6e22d473030f116ddee9f6b43ac78ba3610218565b610269610383366004611e82565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6102696103b9366004611e82565b610a1b565b610245610a46565b61029d6103d4366004611cec565b610a55565b6101dc6103e7366004611cec565b610b6c565b6101dc6103fa366004611cec565b610c19565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b7f0000000000000000000000000000000000000000000000000000000000000000610218565b61029d610459366004611e9d565b610c27565b61026961046c366004611f10565b610de6565b6102187f000000000000000000000000000000000000000000000000000000000000000081565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007f1d1d8b63000000000000000000000000000000000000000000000000000000007fec4fc8e3000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000851683148061055157507fffffffff00000000000000000000000000000000000000000000000000000000858116908316145b8061058057507fffffffff00000000000000000000000000000000000000000000000000000000858116908216145b95945050505050565b60606003805461059890611f43565b80601f01602080910402602001604051908101604052809291908181526020018280546105c490611f43565b80156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b5050505050905090565b600033610629818585610e87565b60019150505b92915050565b60003361064385828561103b565b61064e8585856110ed565b506001949350505050565b33156106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064015b60405180910390fd5b828114610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f526563697069656e747320616e6420616d6f756e7473206d757374206265207460448201527f68652073616d65206c656e6774682e000000000000000000000000000000000060648201526084016106bd565b60005b838110156107ba576107a885858381811061077557610775611f90565b905060200201602081019061078a9190611e82565b84848481811061079c5761079c611f90565b905060200201356113a0565b806107b281611fee565b915050610758565b5050505050565b60006107cb6114c0565b905090565b6000336106298185856107e38383610de6565b6107ed9190612026565b610e87565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146108b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b6108c182826113a0565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161090991815260200190565b60405180910390a25050565b331561097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b61098782826115f4565b5050565b33156109f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4f6e6c7920564d2063616e2063616c6c0000000000000000000000000000000060448201526064016106bd565b6109fd88856113a0565b610a0787846113a0565b610a1185826113a0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205461062f565b60606004805461059890611f43565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4f7074696d69736d4d696e7461626c6545524332303a206f6e6c79206272696460448201527f67652063616e206d696e7420616e64206275726e00000000000000000000000060648201526084016106bd565b610b2482826115f4565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161090991815260200190565b60003381610b7a8286610de6565b905083811015610c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106bd565b61064e8286868403610e87565b6000336106298185856110ed565b83421115610c91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016106bd565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610cc08c6117d9565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610d288261180e565b90506000610d3882878787611877565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610dcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016106bd565b610dda8a8a8a610e87565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610e4c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61062f565b73ffffffffffffffffffffffffffffffffffffffff8084166000908152600160209081526040808320938616835292905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216610fcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006110478484610de6565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110e757818110156110da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106bd565b6110e78484848403610e87565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8216611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156112e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822085850390559185168152908120805484929061132d908490612026565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161139391815260200190565b60405180910390a36110e7565b73ffffffffffffffffffffffffffffffffffffffff821661141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106bd565b806002600082825461142f9190612026565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290611469908490612026565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561152657507f000000000000000000000000000000000000000000000000000000000000000046145b1561155057507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b73ffffffffffffffffffffffffffffffffffffffff8216611697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020548181101561174d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040812083830390556002805484929061178990849061203e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161102e565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604090208054600181018255905b50919050565b600061062f61181b6114c0565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006118888787878761189f565b91509150611895816119b7565b5095945050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156118d657506000905060036119ae565b8460ff16601b141580156118ee57508460ff16601c14155b156118ff57506000905060046119ae565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611953573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166119a7576000600192509250506119ae565b9150600090505b94509492505050565b60008160048111156119cb576119cb612055565b036119d35750565b60018160048111156119e7576119e7612055565b03611a4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016106bd565b6002816004811115611a6257611a62612055565b03611ac9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016106bd565b6003816004811115611add57611add612055565b03611b6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b6004816004811115611b7e57611b7e612055565b03611c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016106bd565b50565b600060208284031215611c2057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e8057600080fd5b600060208083528351808285015260005b81811015611c7d57858101830151858201604001528201611c61565b81811115611c8f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ce757600080fd5b919050565b60008060408385031215611cff57600080fd5b611d0883611cc3565b946020939093013593505050565b600080600060608486031215611d2b57600080fd5b611d3484611cc3565b9250611d4260208501611cc3565b9150604084013590509250925092565b60008083601f840112611d6457600080fd5b50813567ffffffffffffffff811115611d7c57600080fd5b6020830191508360208260051b8501011115611d9757600080fd5b9250929050565b60008060008060408587031215611db457600080fd5b843567ffffffffffffffff80821115611dcc57600080fd5b611dd888838901611d52565b90965094506020870135915080821115611df157600080fd5b50611dfe87828801611d52565b95989497509550505050565b600080600080600080600080610100898b031215611e2757600080fd5b611e3089611cc3565b9750611e3e60208a01611cc3565b9650611e4c60408a01611cc3565b9550611e5a60608a01611cc3565b979a969950949760808101359660a0820135965060c0820135955060e0909101359350915050565b600060208284031215611e9457600080fd5b610e8082611cc3565b600080600080600080600060e0888a031215611eb857600080fd5b611ec188611cc3565b9650611ecf60208901611cc3565b95506040880135945060608801359350608088013560ff81168114611ef357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215611f2357600080fd5b611f2c83611cc3565b9150611f3a60208401611cc3565b90509250929050565b600181811c90821680611f5757607f821691505b602082108103611808577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361201f5761201f611fbf565b5060010190565b6000821982111561203957612039611fbf565b500190565b60008282101561205057612050611fbf565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000aa164736f6c634300080f000a","sourceMap":"871:5369:386:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1408:46;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;582:42:564;570:55;;;552:74;;540:2;525:18;1408:46:386;;;;;;;;2896:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4067:255::-;;;;;;:::i;:::-;;:::i;5235:1003::-;;;;;;:::i;:::-;;:::i;3203:89::-;;;;;;:::i;:::-;;:::i;:::-;;4607:275;;;;;;:::i;:::-;;:::i;1239:21::-;;;;;;;;;3564:80;3631:6;;;;3564:80;;4067:255;4228:7;4258:57;4286:12;4300:5;4307:7;4258:27;:57::i;:::-;4251:64;4067:255;-1:-1:-1;;;;4067:255:386:o;5235:1003::-;5437:7;5468:26;;;5460:102;;;;;;;3974:2:564;5460:102:386;;;3956:21:564;4013:2;3993:18;;;3986:30;4052:34;4032:18;;;4025:62;4123:33;4103:18;;;4096:61;4174:19;;5460:102:386;;;;;;;;;5573:12;5609;5623:5;5630:7;5639:9;5598:51;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5588:62;;;;;;5573:77;;5661:18;5735:4;5742:6;;;;;;;;;;;5750:12;5764:5;5771:7;5780:9;5702:88;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5802:23:386;;;;;;;;:11;:23;;;;;;:38;;;;;;;;;;;;5910:48;5802:23;;-1:-1:-1;5802:23:386;;5910:48;;5802:23;5910:48;6137:66;;6192:10;552:74:564;;6137:66:386;;;;;;;;;;;540:2:564;525:18;6137:66:386;;;;;;;6221:10;5235:1003;-1:-1:-1;;;;;;5235:1003:386:o;3203:89::-;3100:19:58;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:58;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:58;1465:19:74;:23;;;3208:55:58;;-1:-1:-1;3246:12:58;;;;;:17;3208:55;3146:190;;;;;;;5684:2:564;3146:190:58;;;5666:21:564;5723:2;5703:18;;;5696:30;5762:34;5742:18;;;5735:62;5833:16;5813:18;;;5806:44;5867:19;;3146:190:58;5482:410:564;3146:190:58;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;3269:6:386::1;:16:::0;;;::::1;;::::0;::::1;;::::0;;3457:99:58;;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;6049:36:564;;3531:14:58;;6037:2:564;6022:18;3531:14:58;;;;;;;3457:99;3090:472;3203:89:386;:::o;4607:275::-;4772:7;4802:73;4842:12;4856:5;4863:7;4872:2;4802:39;:73::i;1175:320:74:-;1465:19;;;:23;;;1175:320::o;-1:-1:-1:-;;;;;;;;:::o;14:196:564:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:564:o;637:531::-;679:3;717:5;711:12;744:6;739:3;732:19;769:1;779:162;793:6;790:1;787:13;779:162;;;855:4;911:13;;;907:22;;901:29;883:11;;;879:20;;872:59;808:12;779:162;;;959:6;956:1;953:13;950:87;;;1025:1;1018:4;1009:6;1004:3;1000:16;996:27;989:38;950:87;-1:-1:-1;1082:2:564;1070:15;1087:66;1066:88;1057:98;;;;1157:4;1053:109;;637:531;-1:-1:-1;;637:531:564:o;1173:220::-;1322:2;1311:9;1304:21;1285:4;1342:45;1383:2;1372:9;1368:18;1360:6;1342:45;:::i;1398:184::-;1450:77;1447:1;1440:88;1547:4;1544:1;1537:15;1571:4;1568:1;1561:15;1587:778;1630:5;1683:3;1676:4;1668:6;1664:17;1660:27;1650:55;;1701:1;1698;1691:12;1650:55;1737:6;1724:20;1763:18;1800:2;1796;1793:10;1790:36;;;1806:18;;:::i;:::-;1940:2;1934:9;2002:4;1994:13;;1845:66;1990:22;;;2014:2;1986:31;1982:40;1970:53;;;2038:18;;;2058:22;;;2035:46;2032:72;;;2084:18;;:::i;:::-;2124:10;2120:2;2113:22;2159:2;2151:6;2144:18;2205:3;2198:4;2193:2;2185:6;2181:15;2177:26;2174:35;2171:55;;;2222:1;2219;2212:12;2171:55;2286:2;2279:4;2271:6;2267:17;2260:4;2252:6;2248:17;2235:54;2333:1;2326:4;2321:2;2313:6;2309:15;2305:26;2298:37;2353:6;2344:15;;;;;;1587:778;;;;:::o;2370:617::-;2467:6;2475;2483;2536:2;2524:9;2515:7;2511:23;2507:32;2504:52;;;2552:1;2549;2542:12;2504:52;2575:29;2594:9;2575:29;:::i;:::-;2565:39;;2655:2;2644:9;2640:18;2627:32;2678:18;2719:2;2711:6;2708:14;2705:34;;;2735:1;2732;2725:12;2705:34;2758:50;2800:7;2791:6;2780:9;2776:22;2758:50;:::i;:::-;2748:60;;2861:2;2850:9;2846:18;2833:32;2817:48;;2890:2;2880:8;2877:16;2874:36;;;2906:1;2903;2896:12;2874:36;;2929:52;2973:7;2962:8;2951:9;2947:24;2929:52;:::i;:::-;2919:62;;;2370:617;;;;;:::o;2992:775::-;3096:6;3104;3112;3120;3173:3;3161:9;3152:7;3148:23;3144:33;3141:53;;;3190:1;3187;3180:12;3141:53;3213:29;3232:9;3213:29;:::i;:::-;3203:39;;3293:2;3282:9;3278:18;3265:32;3316:18;3357:2;3349:6;3346:14;3343:34;;;3373:1;3370;3363:12;3343:34;3396:50;3438:7;3429:6;3418:9;3414:22;3396:50;:::i;:::-;3386:60;;3499:2;3488:9;3484:18;3471:32;3455:48;;3528:2;3518:8;3515:16;3512:36;;;3544:1;3541;3534:12;3512:36;;3567:52;3611:7;3600:8;3589:9;3585:24;3567:52;:::i;:::-;3557:62;;;3669:2;3658:9;3654:18;3641:32;3713:4;3706:5;3702:16;3695:5;3692:27;3682:55;;3733:1;3730;3723:12;3682:55;2992:775;;;;-1:-1:-1;2992:775:564;;-1:-1:-1;;2992:775:564:o;4204:583::-;4465:42;4457:6;4453:55;4442:9;4435:74;4545:3;4540:2;4529:9;4525:18;4518:31;4416:4;4572:46;4613:3;4602:9;4598:19;4590:6;4572:46;:::i;:::-;4666:9;4658:6;4654:22;4649:2;4638:9;4634:18;4627:50;4694:33;4720:6;4712;4694:33;:::i;:::-;4686:41;;;4775:4;4767:6;4763:17;4758:2;4747:9;4743:18;4736:45;4204:583;;;;;;;:::o;4792:685::-;5032:4;5061:42;5142:2;5134:6;5130:15;5119:9;5112:34;5194:2;5186:6;5182:15;5177:2;5166:9;5162:18;5155:43;;5234:3;5229:2;5218:9;5214:18;5207:31;5261:46;5302:3;5291:9;5287:19;5279:6;5261:46;:::i;:::-;5355:9;5347:6;5343:22;5338:2;5327:9;5323:18;5316:50;5383:33;5409:6;5401;5383:33;:::i;:::-;5375:41;;;5465:4;5457:6;5453:17;5447:3;5436:9;5432:19;5425:46;4792:685;;;;;;;;:::o","linkReferences":{}},"methodIdentifiers":{"BRIDGE()":"ee9a31a2","bridge()":"e78cea92","createOptimismMintableERC20(address,string,string)":"ce5ac90f","createOptimismMintableERC20WithDecimals(address,string,string,uint8)":"8cf0629c","createStandardL2Token(address,string,string)":"896f93d1","deployments(address)":"316b3739","initialize(address)":"c4d66de8","version()":"54fd4d50"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"name\":\"OptimismMintableERC20Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"}],\"name\":\"StandardL2TokenCreated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createOptimismMintableERC20\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"_decimals\",\"type\":\"uint8\"}],\"name\":\"createOptimismMintableERC20WithDecimals\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"name\":\"createStandardL2Token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployments\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:predeployed\":\"0x4200000000000000000000000000000000000012\",\"custom:proxied\":\"true\",\"events\":{\"OptimismMintableERC20Created(address,address,address)\":{\"params\":{\"deployer\":\"Address of the account that deployed the token.\",\"localToken\":\"Address of the created token on the local chain.\",\"remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"StandardL2TokenCreated(address,address)\":{\"custom:legacy\":\"@notice Emitted whenever a new OptimismMintableERC20 is created. Legacy version of the newer OptimismMintableERC20Created event. We recommend relying on that event instead.\",\"params\":{\"localToken\":\"Address of the created token on the local chain.\",\"remoteToken\":\"Address of the token on the remote chain.\"}}},\"kind\":\"dev\",\"methods\":{\"BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Address of the StandardBridge on this chain.\"}},\"createOptimismMintableERC20(address,string,string)\":{\"params\":{\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"createOptimismMintableERC20WithDecimals(address,string,string,uint8)\":{\"params\":{\"_decimals\":\"ERC20 decimals\",\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"createStandardL2Token(address,string,string)\":{\"custom:legacy\":\"@notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the newer createOptimismMintableERC20 function, which has a more intuitive name.\",\"params\":{\"_name\":\"ERC20 name.\",\"_remoteToken\":\"Address of the token on the remote chain.\",\"_symbol\":\"ERC20 symbol.\"},\"returns\":{\"_0\":\"Address of the newly created token.\"}},\"initialize(address)\":{\"params\":{\"_bridge\":\"Address of the StandardBridge on this chain.\"}}},\"stateVariables\":{\"bridge\":{\"custom:network-specific\":\"\"},\"spacer_0_2_30\":{\"custom:spacer\":\"OptimismMintableERC20Factory's initializer slot spacing\"},\"version\":{\"custom:semver\":\"1.10.1-beta.4\"}},\"title\":\"OptimismMintableERC20Factory\",\"version\":1},\"userdoc\":{\"events\":{\"OptimismMintableERC20Created(address,address,address)\":{\"notice\":\"Emitted whenever a new OptimismMintableERC20 is created.\"}},\"kind\":\"user\",\"methods\":{\"BRIDGE()\":{\"notice\":\"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead.\"},\"bridge()\":{\"notice\":\"Address of the StandardBridge on this chain.\"},\"constructor\":{\"notice\":\"Constructs the OptimismMintableERC20Factory contract.\"},\"createOptimismMintableERC20(address,string,string)\":{\"notice\":\"Creates an instance of the OptimismMintableERC20 contract.\"},\"createOptimismMintableERC20WithDecimals(address,string,string,uint8)\":{\"notice\":\"Creates an instance of the OptimismMintableERC20 contract, with specified decimals.\"},\"deployments(address)\":{\"notice\":\"Mapping of local token address to remote token address. This is used to keep track of the token deployments.\"},\"initialize(address)\":{\"notice\":\"Initializes the contract.\"},\"version()\":{\"notice\":\"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version.\"}},\"notice\":\"OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 contracts on the network it's deployed to. Simplifies the deployment process for users who may be less familiar with deploying smart contracts. Designed to be backwards compatible with the older StandardL2ERC20Factory contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/OptimismMintableERC20Factory.sol\":\"OptimismMintableERC20Factory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L2/interfaces/IOptimismERC20Factory.sol\":{\"keccak256\":\"0x28d85b4a67e8d606dbcbec54ac3ae2e12d7e61f8e746e9c4d6aaeb2a0ed98892\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a836ef43aaebb0a0c3f9448434aac5cb110d419c15725db93464edbff1409c1a\",\"dweb:/ipfs/QmWKerw9ZjK2N5ZFTmPEfHUzCb457JEAVSUhv5BF5AMBrh\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/OptimismMintableERC20Factory.sol\":{\"keccak256\":\"0x5ddc60301165422f44df4a5f341d02b8286234a84cc250c5c492eb55f04ee1f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8d418102364739911d1e0cb199e4a2a1befc8221bf686077ddef071e76399c\",\"dweb:/ipfs/QmWWanWUh4ruZqh7GdSWvR1WQPnjKngGKnLRKTzfaGGovS\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"deployer","type":"address","indexed":false}],"type":"event","name":"OptimismMintableERC20Created","anonymous":false},{"inputs":[{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"localToken","type":"address","indexed":true}],"type":"event","name":"StandardL2TokenCreated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createOptimismMintableERC20","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"createOptimismMintableERC20WithDecimals","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"createStandardL2Token","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deployments","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_bridge","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]}],"devdoc":{"kind":"dev","methods":{"BRIDGE()":{"custom:legacy":"","returns":{"_0":"Address of the StandardBridge on this chain."}},"createOptimismMintableERC20(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"params":{"_decimals":"ERC20 decimals","_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createStandardL2Token(address,string,string)":{"custom:legacy":"@notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the newer createOptimismMintableERC20 function, which has a more intuitive name.","params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"initialize(address)":{"params":{"_bridge":"Address of the StandardBridge on this chain."}}},"version":1},"userdoc":{"kind":"user","methods":{"BRIDGE()":{"notice":"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead."},"bridge()":{"notice":"Address of the StandardBridge on this chain."},"constructor":{"notice":"Constructs the OptimismMintableERC20Factory contract."},"createOptimismMintableERC20(address,string,string)":{"notice":"Creates an instance of the OptimismMintableERC20 contract."},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"notice":"Creates an instance of the OptimismMintableERC20 contract, with specified decimals."},"deployments(address)":{"notice":"Mapping of local token address to remote token address. This is used to keep track of the token deployments."},"initialize(address)":{"notice":"Initializes the contract."},"version()":{"notice":"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/OptimismMintableERC20Factory.sol":"OptimismMintableERC20Factory"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L2/interfaces/IOptimismERC20Factory.sol":{"keccak256":"0x28d85b4a67e8d606dbcbec54ac3ae2e12d7e61f8e746e9c4d6aaeb2a0ed98892","urls":["bzz-raw://a836ef43aaebb0a0c3f9448434aac5cb110d419c15725db93464edbff1409c1a","dweb:/ipfs/QmWKerw9ZjK2N5ZFTmPEfHUzCb457JEAVSUhv5BF5AMBrh"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/OptimismMintableERC20Factory.sol":{"keccak256":"0x5ddc60301165422f44df4a5f341d02b8286234a84cc250c5c492eb55f04ee1f7","urls":["bzz-raw://cc8d418102364739911d1e0cb199e4a2a1befc8221bf686077ddef071e76399c","dweb:/ipfs/QmWWanWUh4ruZqh7GdSWvR1WQPnjKngGKnLRKTzfaGGovS"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":44324,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":44327,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":161820,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":161823,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"bridge","offset":0,"slot":"1","type":"t_address"},{"astId":161828,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"deployments","offset":0,"slot":"2","type":"t_mapping(t_address,t_address)"},{"astId":161833,"contract":"src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory","label":"__gap","offset":0,"slot":"3","type":"t_array(t_uint256)48_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)48_storage":{"encoding":"inplace","label":"uint256[48]","numberOfBytes":"1536","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_mapping(t_address,t_address)":{"encoding":"mapping","key":"t_address","label":"mapping(address => address)","numberOfBytes":"32","value":"t_address"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"BRIDGE()":{"notice":"Getter function for the address of the StandardBridge on this chain. Public getter is legacy and will be removed in the future. Use `bridge` instead."},"bridge()":{"notice":"Address of the StandardBridge on this chain."},"constructor":{"notice":"Constructs the OptimismMintableERC20Factory contract."},"createOptimismMintableERC20(address,string,string)":{"notice":"Creates an instance of the OptimismMintableERC20 contract."},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"notice":"Creates an instance of the OptimismMintableERC20 contract, with specified decimals."},"deployments(address)":{"notice":"Mapping of local token address to remote token address. This is used to keep track of the token deployments."},"initialize(address)":{"notice":"Initializes the contract."},"version()":{"notice":"The semver MUST be bumped any time that there is a change in the OptimismMintableERC20 token contract since this contract is responsible for deploying OptimismMintableERC20 contracts.Semantic version."}},"events":{"OptimismMintableERC20Created(address,address,address)":{"notice":"Emitted whenever a new OptimismMintableERC20 is created."}},"notice":"OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20 contracts on the network it's deployed to. Simplifies the deployment process for users who may be less familiar with deploying smart contracts. Designed to be backwards compatible with the older StandardL2ERC20Factory contract."},"devdoc":{"version":1,"kind":"dev","methods":{"BRIDGE()":{"returns":{"_0":"Address of the StandardBridge on this chain."}},"createOptimismMintableERC20(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createOptimismMintableERC20WithDecimals(address,string,string,uint8)":{"params":{"_decimals":"ERC20 decimals","_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"createStandardL2Token(address,string,string)":{"params":{"_name":"ERC20 name.","_remoteToken":"Address of the token on the remote chain.","_symbol":"ERC20 symbol."},"returns":{"_0":"Address of the newly created token."}},"initialize(address)":{"params":{"_bridge":"Address of the StandardBridge on this chain."}}},"events":{"OptimismMintableERC20Created(address,address,address)":{"params":{"deployer":"Address of the account that deployed the token.","localToken":"Address of the created token on the local chain.","remoteToken":"Address of the corresponding token on the remote chain."}},"StandardL2TokenCreated(address,address)":{"params":{"localToken":"Address of the created token on the local chain.","remoteToken":"Address of the token on the remote chain."}}},"title":"OptimismMintableERC20Factory"},"ast":{"absolutePath":"src/universal/OptimismMintableERC20Factory.sol","id":162002,"exportedSymbols":{"IOptimismERC20Factory":[115913],"ISemver":[165319],"Initializable":[44468],"OptimismMintableERC20":[161800],"OptimismMintableERC20Factory":[162001]},"nodeType":"SourceUnit","src":"32:6209:386","nodes":[{"id":161802,"nodeType":"PragmaDirective","src":"32:23:386","nodes":[],"literals":["solidity","0.8",".15"]},{"id":161804,"nodeType":"ImportDirective","src":"57:80:386","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":161801,"symbolAliases":[{"foreign":{"id":161803,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161800,"src":"66:21:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161806,"nodeType":"ImportDirective","src":"138:63:386","nodes":[],"absolutePath":"src/universal/interfaces/ISemver.sol","file":"src/universal/interfaces/ISemver.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":165320,"symbolAliases":[{"foreign":{"id":161805,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":165319,"src":"147:7:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161808,"nodeType":"ImportDirective","src":"202:86:386","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":44469,"symbolAliases":[{"foreign":{"id":161807,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44468,"src":"211:13:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":161810,"nodeType":"ImportDirective","src":"289:84:386","nodes":[],"absolutePath":"src/L2/interfaces/IOptimismERC20Factory.sol","file":"src/L2/interfaces/IOptimismERC20Factory.sol","nameLocation":"-1:-1:-1","scope":162002,"sourceUnit":115914,"symbolAliases":[{"foreign":{"id":161809,"name":"IOptimismERC20Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":115913,"src":"298:21:386","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":162001,"nodeType":"ContractDefinition","src":"871:5369:386","nodes":[{"id":161820,"nodeType":"VariableDeclaration","src":"1109:29:386","nodes":[],"constant":false,"documentation":{"id":161818,"nodeType":"StructuredDocumentation","src":"964:140:386","text":"@custom:spacer OptimismMintableERC20Factory's initializer slot spacing\n @notice Spacer to avoid packing into the initializer slot"},"mutability":"mutable","name":"spacer_0_2_30","nameLocation":"1125:13:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"},"typeName":{"id":161819,"name":"bytes30","nodeType":"ElementaryTypeName","src":"1109:7:386","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"}},"visibility":"private"},{"id":161823,"nodeType":"VariableDeclaration","src":"1239:21:386","nodes":[],"constant":false,"documentation":{"id":161821,"nodeType":"StructuredDocumentation","src":"1145:89:386","text":"@notice Address of the StandardBridge on this chain.\n @custom:network-specific"},"functionSelector":"e78cea92","mutability":"mutable","name":"bridge","nameLocation":"1254:6:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161822,"name":"address","nodeType":"ElementaryTypeName","src":"1239:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":161828,"nodeType":"VariableDeclaration","src":"1408:46:386","nodes":[],"baseFunctions":[115912],"constant":false,"documentation":{"id":161824,"nodeType":"StructuredDocumentation","src":"1267:136:386","text":"@notice Mapping of local token address to remote token address.\n This is used to keep track of the token deployments."},"functionSelector":"316b3739","mutability":"mutable","name":"deployments","nameLocation":"1443:11:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"typeName":{"id":161827,"keyType":{"id":161825,"name":"address","nodeType":"ElementaryTypeName","src":"1416:7:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1408:27:386","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"},"valueType":{"id":161826,"name":"address","nodeType":"ElementaryTypeName","src":"1427:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"public"},{"id":161833,"nodeType":"VariableDeclaration","src":"1681:25:386","nodes":[],"constant":false,"documentation":{"id":161829,"nodeType":"StructuredDocumentation","src":"1461:215:386","text":"@notice Reserve extra slots in the storage layout for future upgrades.\n A gap size of 48 was chosen here, so that the first slot used in a child contract\n would be a multiple of 50."},"mutability":"mutable","name":"__gap","nameLocation":"1701:5:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage","typeString":"uint256[48]"},"typeName":{"baseType":{"id":161830,"name":"uint256","nodeType":"ElementaryTypeName","src":"1681:7:386","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":161832,"length":{"hexValue":"3438","id":161831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1689:2:386","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"nodeType":"ArrayTypeName","src":"1681:11:386","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$48_storage_ptr","typeString":"uint256[48]"}},"visibility":"private"},{"id":161840,"nodeType":"EventDefinition","src":"2078:86:386","nodes":[],"anonymous":false,"documentation":{"id":161834,"nodeType":"StructuredDocumentation","src":"1713:360:386","text":"@custom:legacy\n @notice Emitted whenever a new OptimismMintableERC20 is created. Legacy version of the newer\n OptimismMintableERC20Created event. We recommend relying on that event instead.\n @param remoteToken Address of the token on the remote chain.\n @param localToken Address of the created token on the local chain."},"eventSelector":"ceeb8e7d520d7f3b65fc11a262b91066940193b05d4f93df07cfdced0eb551cf","name":"StandardL2TokenCreated","nameLocation":"2084:22:386","parameters":{"id":161839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161836,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"2123:11:386","nodeType":"VariableDeclaration","scope":161840,"src":"2107:27:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161835,"name":"address","nodeType":"ElementaryTypeName","src":"2107:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161838,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"2152:10:386","nodeType":"VariableDeclaration","scope":161840,"src":"2136:26:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161837,"name":"address","nodeType":"ElementaryTypeName","src":"2136:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2106:57:386"}},{"id":161849,"nodeType":"EventDefinition","src":"2477:110:386","nodes":[],"anonymous":false,"documentation":{"id":161841,"nodeType":"StructuredDocumentation","src":"2170:302:386","text":"@notice Emitted whenever a new OptimismMintableERC20 is created.\n @param localToken Address of the created token on the local chain.\n @param remoteToken Address of the corresponding token on the remote chain.\n @param deployer Address of the account that deployed the token."},"eventSelector":"52fe89dd5930f343d25650b62fd367bae47088bcddffd2a88350a6ecdd620cdb","name":"OptimismMintableERC20Created","nameLocation":"2483:28:386","parameters":{"id":161848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161843,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"2528:10:386","nodeType":"VariableDeclaration","scope":161849,"src":"2512:26:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161842,"name":"address","nodeType":"ElementaryTypeName","src":"2512:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161845,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"2556:11:386","nodeType":"VariableDeclaration","scope":161849,"src":"2540:27:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161844,"name":"address","nodeType":"ElementaryTypeName","src":"2540:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161847,"indexed":false,"mutability":"mutable","name":"deployer","nameLocation":"2577:8:386","nodeType":"VariableDeclaration","scope":161849,"src":"2569:16:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161846,"name":"address","nodeType":"ElementaryTypeName","src":"2569:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2511:75:386"}},{"id":161853,"nodeType":"VariableDeclaration","src":"2896:48:386","nodes":[],"baseFunctions":[165318],"constant":true,"documentation":{"id":161850,"nodeType":"StructuredDocumentation","src":"2593:298:386","text":"@notice The semver MUST be bumped any time that there is a change in\n the OptimismMintableERC20 token contract since this contract\n is responsible for deploying OptimismMintableERC20 contracts.\n @notice Semantic version.\n @custom:semver 1.10.1-beta.4"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2919:7:386","scope":162001,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161851,"name":"string","nodeType":"ElementaryTypeName","src":"2896:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e31302e312d626574612e34","id":161852,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2929:15:386","typeDescriptions":{"typeIdentifier":"t_stringliteral_75ca9981864c20ace3def742ed3b1b47d766c3b833ff767f6a6a23bd4d51eba5","typeString":"literal_string \"1.10.1-beta.4\""},"value":"1.10.1-beta.4"},"visibility":"public"},{"id":161865,"nodeType":"FunctionDefinition","src":"3021:66:386","nodes":[],"body":{"id":161864,"nodeType":"Block","src":"3035:52:386","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":161860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3075:1:386","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":161859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3067:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161858,"name":"address","nodeType":"ElementaryTypeName","src":"3067:7:386","typeDescriptions":{}}},"id":161861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3067:10:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":161857,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161878,"src":"3045:10:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":161862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_bridge"],"nodeType":"FunctionCall","src":"3045:35:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161863,"nodeType":"ExpressionStatement","src":"3045:35:386"}]},"documentation":{"id":161854,"nodeType":"StructuredDocumentation","src":"2951:65:386","text":"@notice Constructs the OptimismMintableERC20Factory contract."},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":161855,"nodeType":"ParameterList","parameters":[],"src":"3032:2:386"},"returnParameters":{"id":161856,"nodeType":"ParameterList","parameters":[],"src":"3035:0:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":161878,"nodeType":"FunctionDefinition","src":"3203:89:386","nodes":[],"body":{"id":161877,"nodeType":"Block","src":"3259:33:386","nodes":[],"statements":[{"expression":{"id":161875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":161873,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"3269:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":161874,"name":"_bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161868,"src":"3278:7:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3269:16:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":161876,"nodeType":"ExpressionStatement","src":"3269:16:386"}]},"documentation":{"id":161866,"nodeType":"StructuredDocumentation","src":"3093:105:386","text":"@notice Initializes the contract.\n @param _bridge Address of the StandardBridge on this chain."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":161871,"kind":"modifierInvocation","modifierName":{"id":161870,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":44388,"src":"3247:11:386"},"nodeType":"ModifierInvocation","src":"3247:11:386"}],"name":"initialize","nameLocation":"3212:10:386","parameters":{"id":161869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161868,"mutability":"mutable","name":"_bridge","nameLocation":"3231:7:386","nodeType":"VariableDeclaration","scope":161878,"src":"3223:15:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161867,"name":"address","nodeType":"ElementaryTypeName","src":"3223:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3222:17:386"},"returnParameters":{"id":161872,"nodeType":"ParameterList","parameters":[],"src":"3259:0:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":161887,"nodeType":"FunctionDefinition","src":"3564:80:386","nodes":[],"body":{"id":161886,"nodeType":"Block","src":"3614:30:386","nodes":[],"statements":[{"expression":{"id":161884,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"3631:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161883,"id":161885,"nodeType":"Return","src":"3624:13:386"}]},"documentation":{"id":161879,"nodeType":"StructuredDocumentation","src":"3298:261:386","text":"@notice Getter function for the address of the StandardBridge on this chain.\n Public getter is legacy and will be removed in the future. Use `bridge` instead.\n @return Address of the StandardBridge on this chain.\n @custom:legacy"},"functionSelector":"ee9a31a2","implemented":true,"kind":"function","modifiers":[],"name":"BRIDGE","nameLocation":"3573:6:386","parameters":{"id":161880,"nodeType":"ParameterList","parameters":[],"src":"3579:2:386"},"returnParameters":{"id":161883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161887,"src":"3605:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161881,"name":"address","nodeType":"ElementaryTypeName","src":"3605:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3604:9:386"},"scope":162001,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":161906,"nodeType":"FunctionDefinition","src":"4067:255:386","nodes":[],"body":{"id":161905,"nodeType":"Block","src":"4241:81:386","nodes":[],"statements":[{"expression":{"arguments":[{"id":161900,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161890,"src":"4286:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161901,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161892,"src":"4300:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161902,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161894,"src":"4307:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":161899,"name":"createOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161926,"src":"4258:27:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_address_$","typeString":"function (address,string memory,string memory) returns (address)"}},"id":161903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4258:57:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161898,"id":161904,"nodeType":"Return","src":"4251:64:386"}]},"documentation":{"id":161888,"nodeType":"StructuredDocumentation","src":"3650:412:386","text":"@custom:legacy\n @notice Creates an instance of the OptimismMintableERC20 contract. Legacy version of the\n newer createOptimismMintableERC20 function, which has a more intuitive name.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @return Address of the newly created token."},"functionSelector":"896f93d1","implemented":true,"kind":"function","modifiers":[],"name":"createStandardL2Token","nameLocation":"4076:21:386","parameters":{"id":161895,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161890,"mutability":"mutable","name":"_remoteToken","nameLocation":"4115:12:386","nodeType":"VariableDeclaration","scope":161906,"src":"4107:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161889,"name":"address","nodeType":"ElementaryTypeName","src":"4107:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161892,"mutability":"mutable","name":"_name","nameLocation":"4151:5:386","nodeType":"VariableDeclaration","scope":161906,"src":"4137:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161891,"name":"string","nodeType":"ElementaryTypeName","src":"4137:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161894,"mutability":"mutable","name":"_symbol","nameLocation":"4180:7:386","nodeType":"VariableDeclaration","scope":161906,"src":"4166:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161893,"name":"string","nodeType":"ElementaryTypeName","src":"4166:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4097:96:386"},"returnParameters":{"id":161898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161897,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161906,"src":"4228:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161896,"name":"address","nodeType":"ElementaryTypeName","src":"4228:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4227:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":161926,"nodeType":"FunctionDefinition","src":"4607:275:386","nodes":[],"body":{"id":161925,"nodeType":"Block","src":"4785:97:386","nodes":[],"statements":[{"expression":{"arguments":[{"id":161919,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161909,"src":"4842:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161920,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161911,"src":"4856:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161921,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161913,"src":"4863:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"3138","id":161922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4872:2:386","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"id":161918,"name":"createOptimismMintableERC20WithDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":162000,"src":"4802:39:386","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_address_$","typeString":"function (address,string memory,string memory,uint8) returns (address)"}},"id":161923,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4802:73:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161917,"id":161924,"nodeType":"Return","src":"4795:80:386"}]},"documentation":{"id":161907,"nodeType":"StructuredDocumentation","src":"4328:274:386","text":"@notice Creates an instance of the OptimismMintableERC20 contract.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @return Address of the newly created token."},"functionSelector":"ce5ac90f","implemented":true,"kind":"function","modifiers":[],"name":"createOptimismMintableERC20","nameLocation":"4616:27:386","parameters":{"id":161914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161909,"mutability":"mutable","name":"_remoteToken","nameLocation":"4661:12:386","nodeType":"VariableDeclaration","scope":161926,"src":"4653:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161908,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161911,"mutability":"mutable","name":"_name","nameLocation":"4697:5:386","nodeType":"VariableDeclaration","scope":161926,"src":"4683:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161910,"name":"string","nodeType":"ElementaryTypeName","src":"4683:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161913,"mutability":"mutable","name":"_symbol","nameLocation":"4726:7:386","nodeType":"VariableDeclaration","scope":161926,"src":"4712:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161912,"name":"string","nodeType":"ElementaryTypeName","src":"4712:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4643:96:386"},"returnParameters":{"id":161917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161916,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":161926,"src":"4772:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161915,"name":"address","nodeType":"ElementaryTypeName","src":"4772:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4771:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":162000,"nodeType":"FunctionDefinition","src":"5235:1003:386","nodes":[],"body":{"id":161999,"nodeType":"Block","src":"5450:788:386","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":161946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":161941,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5468:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":161944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5492:1:386","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":161943,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5484:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161942,"name":"address","nodeType":"ElementaryTypeName","src":"5484:7:386","typeDescriptions":{}}},"id":161945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5484:10:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5468:26:386","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f7074696d69736d4d696e7461626c654552433230466163746f72793a206d7573742070726f766964652072656d6f746520746f6b656e2061646472657373","id":161947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5496:65:386","typeDescriptions":{"typeIdentifier":"t_stringliteral_1fc9c38ce58e5889170de515a92b1e54913f12f8fd8aa9ab11446ca47e097779","typeString":"literal_string \"OptimismMintableERC20Factory: must provide remote token address\""},"value":"OptimismMintableERC20Factory: must provide remote token address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1fc9c38ce58e5889170de515a92b1e54913f12f8fd8aa9ab11446ca47e097779","typeString":"literal_string \"OptimismMintableERC20Factory: must provide remote token address\""}],"id":161940,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5460:7:386","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":161948,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5460:102:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161949,"nodeType":"ExpressionStatement","src":"5460:102:386"},{"assignments":[161951],"declarations":[{"constant":false,"id":161951,"mutability":"mutable","name":"salt","nameLocation":"5581:4:386","nodeType":"VariableDeclaration","scope":161999,"src":"5573:12:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161950,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5573:7:386","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":161961,"initialValue":{"arguments":[{"arguments":[{"id":161955,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5609:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161956,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161931,"src":"5623:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161957,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161933,"src":"5630:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161958,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161935,"src":"5639:9:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"id":161953,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"5598:3:386","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":161954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","src":"5598:10:386","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":161959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5598:51:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":161952,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"5588:9:386","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":161960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5588:62:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"5573:77:386"},{"assignments":[161963],"declarations":[{"constant":false,"id":161963,"mutability":"mutable","name":"localToken","nameLocation":"5669:10:386","nodeType":"VariableDeclaration","scope":161999,"src":"5661:18:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161962,"name":"address","nodeType":"ElementaryTypeName","src":"5661:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":161978,"initialValue":{"arguments":[{"arguments":[{"id":161971,"name":"bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161823,"src":"5742:6:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161972,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5750:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161973,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161931,"src":"5764:5:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161974,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161933,"src":"5771:7:386","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":161975,"name":"_decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161935,"src":"5780:9:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":161968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5702:25:386","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_OptimismMintableERC20_$161800_$","typeString":"function (address,address,string memory,string memory,uint8) returns (contract OptimismMintableERC20)"},"typeName":{"id":161967,"nodeType":"UserDefinedTypeName","pathNode":{"id":161966,"name":"OptimismMintableERC20","nodeType":"IdentifierPath","referencedDeclaration":161800,"src":"5706:21:386"},"referencedDeclaration":161800,"src":"5706:21:386","typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}}},"id":161970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["salt"],"nodeType":"FunctionCallOptions","options":[{"id":161969,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161951,"src":"5735:4:386","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"src":"5702:39:386","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint8_$returns$_t_contract$_OptimismMintableERC20_$161800_$salt","typeString":"function (address,address,string memory,string memory,uint8) returns (contract OptimismMintableERC20)"}},"id":161976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5702:88:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_OptimismMintableERC20_$161800","typeString":"contract OptimismMintableERC20"}],"id":161965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5694:7:386","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":161964,"name":"address","nodeType":"ElementaryTypeName","src":"5694:7:386","typeDescriptions":{}}},"id":161977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5694:97:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5661:130:386"},{"expression":{"id":161983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":161979,"name":"deployments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161828,"src":"5802:11:386","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_address_$","typeString":"mapping(address => address)"}},"id":161981,"indexExpression":{"id":161980,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"5814:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5802:23:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":161982,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5828:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5802:38:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":161984,"nodeType":"ExpressionStatement","src":"5802:38:386"},{"eventCall":{"arguments":[{"id":161986,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"5933:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161987,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"5947:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":161985,"name":"StandardL2TokenCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161840,"src":"5910:22:386","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$returns$__$","typeString":"function (address,address)"}},"id":161988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5910:48:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161989,"nodeType":"EmitStatement","src":"5905:53:386"},{"eventCall":{"arguments":[{"id":161991,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"6166:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":161992,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161929,"src":"6178:12:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":161993,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6192:3:386","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":161994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"6192:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":161990,"name":"OptimismMintableERC20Created","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161849,"src":"6137:28:386","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$","typeString":"function (address,address,address)"}},"id":161995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6137:66:386","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":161996,"nodeType":"EmitStatement","src":"6132:71:386"},{"expression":{"id":161997,"name":"localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":161963,"src":"6221:10:386","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":161939,"id":161998,"nodeType":"Return","src":"6214:17:386"}]},"documentation":{"id":161927,"nodeType":"StructuredDocumentation","src":"4888:342:386","text":"@notice Creates an instance of the OptimismMintableERC20 contract, with specified decimals.\n @param _remoteToken Address of the token on the remote chain.\n @param _name ERC20 name.\n @param _symbol ERC20 symbol.\n @param _decimals ERC20 decimals\n @return Address of the newly created token."},"functionSelector":"8cf0629c","implemented":true,"kind":"function","modifiers":[],"name":"createOptimismMintableERC20WithDecimals","nameLocation":"5244:39:386","parameters":{"id":161936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161929,"mutability":"mutable","name":"_remoteToken","nameLocation":"5301:12:386","nodeType":"VariableDeclaration","scope":162000,"src":"5293:20:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161928,"name":"address","nodeType":"ElementaryTypeName","src":"5293:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":161931,"mutability":"mutable","name":"_name","nameLocation":"5337:5:386","nodeType":"VariableDeclaration","scope":162000,"src":"5323:19:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161930,"name":"string","nodeType":"ElementaryTypeName","src":"5323:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161933,"mutability":"mutable","name":"_symbol","nameLocation":"5366:7:386","nodeType":"VariableDeclaration","scope":162000,"src":"5352:21:386","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":161932,"name":"string","nodeType":"ElementaryTypeName","src":"5352:6:386","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":161935,"mutability":"mutable","name":"_decimals","nameLocation":"5389:9:386","nodeType":"VariableDeclaration","scope":162000,"src":"5383:15:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":161934,"name":"uint8","nodeType":"ElementaryTypeName","src":"5383:5:386","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"5283:121:386"},"returnParameters":{"id":161939,"nodeType":"ParameterList","parameters":[{"constant":false,"id":161938,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":162000,"src":"5437:7:386","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":161937,"name":"address","nodeType":"ElementaryTypeName","src":"5437:7:386","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5436:9:386"},"scope":162001,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":161812,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":165319,"src":"912:7:386"},"id":161813,"nodeType":"InheritanceSpecifier","src":"912:7:386"},{"baseName":{"id":161814,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":44468,"src":"921:13:386"},"id":161815,"nodeType":"InheritanceSpecifier","src":"921:13:386"},{"baseName":{"id":161816,"name":"IOptimismERC20Factory","nodeType":"IdentifierPath","referencedDeclaration":115913,"src":"936:21:386"},"id":161817,"nodeType":"InheritanceSpecifier","src":"936:21:386"}],"canonicalName":"OptimismMintableERC20Factory","contractDependencies":[161800],"contractKind":"contract","documentation":{"id":161811,"nodeType":"StructuredDocumentation","src":"375:496:386","text":"@custom:proxied true\n @custom:predeployed 0x4200000000000000000000000000000000000012\n @title OptimismMintableERC20Factory\n @notice OptimismMintableERC20Factory is a factory contract that generates OptimismMintableERC20\n contracts on the network it's deployed to. Simplifies the deployment process for users\n who may be less familiar with deploying smart contracts. Designed to be backwards\n compatible with the older StandardL2ERC20Factory contract."},"fullyImplemented":true,"linearizedBaseContracts":[162001,115913,44468,165319],"name":"OptimismMintableERC20Factory","nameLocation":"880:28:386","scope":162002,"usedErrors":[]}],"license":"MIT"},"id":386} \ No newline at end of file diff --git a/op-e2e/celo/packages/celo-test-viem/abis/StandardBridge.json b/op-e2e/celo/packages/celo-test-viem/abis/StandardBridge.json new file mode 100644 index 0000000000000..18d7484b9ea5b --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/abis/StandardBridge.json @@ -0,0 +1 @@ +{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeBridgeETH","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"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\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeInitiated\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"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\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:upgradeable\":\"@title StandardBridge\",\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}}},\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}}},\"stateVariables\":{\"messenger\":{\"custom:network-specific\":\"\"},\"otherBridge\":{\"custom:network-specific\":\"\"},\"spacer_0_2_30\":{\"custom:legacy\":\"@custom:spacer messenger\"},\"spacer_1_0_20\":{\"custom:legacy\":\"@custom:spacer l2TokenBridge\"}},\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op.\"}},\"notice\":\"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/StandardBridge.sol\":\"StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3\",\"dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L1/interfaces/IResourceMetering.sol\":{\"keccak256\":\"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990\",\"dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356\",\"dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753\",\"dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe\",\"dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf\"]},\"src/universal/interfaces/ICrossDomainMessenger.sol\":{\"keccak256\":\"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818\",\"dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","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","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeBridgeERC20"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeBridgeETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/StandardBridge.sol":"StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d","urls":["bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3","dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L1/interfaces/IResourceMetering.sol":{"keccak256":"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c","urls":["bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990","dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b","urls":["bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356","dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3","urls":["bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753","dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537","urls":["bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe","dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf"],"license":"MIT"},"src/universal/interfaces/ICrossDomainMessenger.sol":{"keccak256":"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4","urls":["bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818","dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":42550,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":42553,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":120296,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":120299,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":120306,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":120310,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(ICrossDomainMessenger)121721"},{"astId":120314,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)121076"},{"astId":120319,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(ICrossDomainMessenger)121721":{"encoding":"inplace","label":"contract ICrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)121076":{"encoding":"inplace","label":"contract StandardBridge","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ETHBridgeFinalized(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}},"ETHBridgeInitiated(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}}}},"ast":{"absolutePath":"src/universal/StandardBridge.sol","id":121077,"exportedSymbols":{"Address":[46285],"Constants":[112908],"ERC165Checker":[47367],"ICrossDomainMessenger":[121721],"IERC20":[43398],"ILegacyMintableERC20":[121854],"IOptimismMintableERC20":[121886],"Initializable":[42694],"OptimismMintableERC20":[118972],"SafeCall":[114979],"SafeERC20":[44593],"StandardBridge":[121076]},"nodeType":"SourceUnit","src":"32:22897:298","nodes":[{"id":120260,"nodeType":"PragmaDirective","src":"32:23:298","nodes":[],"literals":["solidity","0.8",".15"]},{"id":120262,"nodeType":"ImportDirective","src":"57:72:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":43399,"symbolAliases":[{"foreign":{"id":120261,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"66:6:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120264,"nodeType":"ImportDirective","src":"130:94:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":47368,"symbolAliases":[{"foreign":{"id":120263,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"139:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120266,"nodeType":"ImportDirective","src":"225:68:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":46286,"symbolAliases":[{"foreign":{"id":120265,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"234:7:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120268,"nodeType":"ImportDirective","src":"294:84:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":44594,"symbolAliases":[{"foreign":{"id":120267,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44593,"src":"303:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120270,"nodeType":"ImportDirective","src":"379:54:298","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":114980,"symbolAliases":[{"foreign":{"id":120269,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"388:8:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120272,"nodeType":"ImportDirective","src":"434:93:298","nodes":[],"absolutePath":"src/universal/interfaces/IOptimismMintableERC20.sol","file":"src/universal/interfaces/IOptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121887,"symbolAliases":[{"foreign":{"id":120271,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"443:22:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120274,"nodeType":"ImportDirective","src":"528:89:298","nodes":[],"absolutePath":"src/universal/interfaces/ILegacyMintableERC20.sol","file":"src/universal/interfaces/ILegacyMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121855,"symbolAliases":[{"foreign":{"id":120273,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"537:20:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120276,"nodeType":"ImportDirective","src":"618:91:298","nodes":[],"absolutePath":"src/universal/interfaces/ICrossDomainMessenger.sol","file":"src/universal/interfaces/ICrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121722,"symbolAliases":[{"foreign":{"id":120275,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121721,"src":"627:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120278,"nodeType":"ImportDirective","src":"710:80:298","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":118973,"symbolAliases":[{"foreign":{"id":120277,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"719:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120280,"nodeType":"ImportDirective","src":"791:86:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":42695,"symbolAliases":[{"foreign":{"id":120279,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42694,"src":"800:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120282,"nodeType":"ImportDirective","src":"878:56:298","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":112909,"symbolAliases":[{"foreign":{"id":120281,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"887:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":121076,"nodeType":"ContractDefinition","src":"1260:21668:298","nodes":[{"id":120289,"nodeType":"UsingForDirective","src":"1316:27:298","nodes":[],"global":false,"libraryName":{"id":120286,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":44593,"src":"1322:9:298"},"typeName":{"id":120288,"nodeType":"UserDefinedTypeName","pathNode":{"id":120287,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":43398,"src":"1336:6:298"},"referencedDeclaration":43398,"src":"1336:6:298","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}}},{"id":120293,"nodeType":"VariableDeclaration","src":"1439:60:298","nodes":[],"constant":true,"documentation":{"id":120290,"nodeType":"StructuredDocumentation","src":"1349:85:298","text":"@notice The L2 gas limit set when eth is depoisited using the receive() function."},"mutability":"constant","name":"RECEIVE_DEFAULT_GAS_LIMIT","nameLocation":"1464:25:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120291,"name":"uint32","nodeType":"ElementaryTypeName","src":"1439:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"3230305f303030","id":120292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:7:298","typeDescriptions":{"typeIdentifier":"t_rational_200000_by_1","typeString":"int_const 200000"},"value":"200_000"},"visibility":"internal"},{"id":120296,"nodeType":"VariableDeclaration","src":"1614:29:298","nodes":[],"constant":false,"documentation":{"id":120294,"nodeType":"StructuredDocumentation","src":"1506:103:298","text":"@custom:legacy\n @custom:spacer messenger\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_0_2_30","nameLocation":"1630:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"},"typeName":{"id":120295,"name":"bytes30","nodeType":"ElementaryTypeName","src":"1614:7:298","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"}},"visibility":"private"},{"id":120299,"nodeType":"VariableDeclaration","src":"1762:29:298","nodes":[],"constant":false,"documentation":{"id":120297,"nodeType":"StructuredDocumentation","src":"1650:107:298","text":"@custom:legacy\n @custom:spacer l2TokenBridge\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_1_0_20","nameLocation":"1778:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120298,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":120306,"nodeType":"VariableDeclaration","src":"1888:63:298","nodes":[],"constant":false,"documentation":{"id":120300,"nodeType":"StructuredDocumentation","src":"1798:85:298","text":"@notice Mapping that stores deposits for a given pair of local and remote tokens."},"functionSelector":"8f601f66","mutability":"mutable","name":"deposits","nameLocation":"1943:8:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":120305,"keyType":{"id":120301,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1888:47:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":120304,"keyType":{"id":120302,"name":"address","nodeType":"ElementaryTypeName","src":"1915:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1907:27:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":120303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":120310,"nodeType":"VariableDeclaration","src":"2042:38:298","nodes":[],"constant":false,"documentation":{"id":120307,"nodeType":"StructuredDocumentation","src":"1958:79:298","text":"@notice Messenger contract on this domain.\n @custom:network-specific"},"functionSelector":"3cb747bf","mutability":"mutable","name":"messenger","nameLocation":"2071:9:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120309,"nodeType":"UserDefinedTypeName","pathNode":{"id":120308,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"2042:21:298"},"referencedDeclaration":121721,"src":"2042:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"public"},{"id":120314,"nodeType":"VariableDeclaration","src":"2178:33:298","nodes":[],"constant":false,"documentation":{"id":120311,"nodeType":"StructuredDocumentation","src":"2087:86:298","text":"@notice Corresponding bridge on the other domain.\n @custom:network-specific"},"functionSelector":"c89701a2","mutability":"mutable","name":"otherBridge","nameLocation":"2200:11:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120313,"nodeType":"UserDefinedTypeName","pathNode":{"id":120312,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"2178:14:298"},"referencedDeclaration":121076,"src":"2178:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"public"},{"id":120319,"nodeType":"VariableDeclaration","src":"2457:25:298","nodes":[],"constant":false,"documentation":{"id":120315,"nodeType":"StructuredDocumentation","src":"2218:234:298","text":"@notice Reserve extra slots (to a total of 50) in the storage layout for future upgrades.\n A gap size of 45 was chosen here, so that the first slot used in a child contract\n would be a multiple of 50."},"mutability":"mutable","name":"__gap","nameLocation":"2477:5:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage","typeString":"uint256[45]"},"typeName":{"baseType":{"id":120316,"name":"uint256","nodeType":"ElementaryTypeName","src":"2457:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120318,"length":{"hexValue":"3435","id":120317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2465:2:298","typeDescriptions":{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"},"value":"45"},"nodeType":"ArrayTypeName","src":"2457:11:298","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage_ptr","typeString":"uint256[45]"}},"visibility":"private"},{"id":120330,"nodeType":"EventDefinition","src":"2771:100:298","nodes":[],"anonymous":false,"documentation":{"id":120320,"nodeType":"StructuredDocumentation","src":"2489:277:298","text":"@notice Emitted when an ETH bridge is initiated to the other chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af5","name":"ETHBridgeInitiated","nameLocation":"2777:18:298","parameters":{"id":120329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120322,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2812:4:298","nodeType":"VariableDeclaration","scope":120330,"src":"2796:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120321,"name":"address","nodeType":"ElementaryTypeName","src":"2796:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120324,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2834:2:298","nodeType":"VariableDeclaration","scope":120330,"src":"2818:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120323,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120326,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2846:6:298","nodeType":"VariableDeclaration","scope":120330,"src":"2838:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2838:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120328,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2860:9:298","nodeType":"VariableDeclaration","scope":120330,"src":"2854:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120327,"name":"bytes","nodeType":"ElementaryTypeName","src":"2854:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2795:75:298"}},{"id":120341,"nodeType":"EventDefinition","src":"3154:100:298","nodes":[],"anonymous":false,"documentation":{"id":120331,"nodeType":"StructuredDocumentation","src":"2877:272:298","text":"@notice Emitted when an ETH bridge is finalized on this chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d","name":"ETHBridgeFinalized","nameLocation":"3160:18:298","parameters":{"id":120340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120333,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3195:4:298","nodeType":"VariableDeclaration","scope":120341,"src":"3179:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120332,"name":"address","nodeType":"ElementaryTypeName","src":"3179:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120335,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3217:2:298","nodeType":"VariableDeclaration","scope":120341,"src":"3201:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120334,"name":"address","nodeType":"ElementaryTypeName","src":"3201:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120337,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3229:6:298","nodeType":"VariableDeclaration","scope":120341,"src":"3221:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120336,"name":"uint256","nodeType":"ElementaryTypeName","src":"3221:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120339,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3243:9:298","nodeType":"VariableDeclaration","scope":120341,"src":"3237:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120338,"name":"bytes","nodeType":"ElementaryTypeName","src":"3237:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3178:75:298"}},{"id":120356,"nodeType":"EventDefinition","src":"3690:205:298","nodes":[],"anonymous":false,"documentation":{"id":120342,"nodeType":"StructuredDocumentation","src":"3260:425:298","text":"@notice Emitted when an ERC20 bridge is initiated to the other chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf","name":"ERC20BridgeInitiated","nameLocation":"3696:20:298","parameters":{"id":120355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120344,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"3742:10:298","nodeType":"VariableDeclaration","scope":120356,"src":"3726:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120343,"name":"address","nodeType":"ElementaryTypeName","src":"3726:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120346,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"3778:11:298","nodeType":"VariableDeclaration","scope":120356,"src":"3762:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120345,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120348,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3815:4:298","nodeType":"VariableDeclaration","scope":120356,"src":"3799:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120347,"name":"address","nodeType":"ElementaryTypeName","src":"3799:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120350,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"3837:2:298","nodeType":"VariableDeclaration","scope":120356,"src":"3829:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120349,"name":"address","nodeType":"ElementaryTypeName","src":"3829:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120352,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3857:6:298","nodeType":"VariableDeclaration","scope":120356,"src":"3849:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120351,"name":"uint256","nodeType":"ElementaryTypeName","src":"3849:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120354,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3879:9:298","nodeType":"VariableDeclaration","scope":120356,"src":"3873:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120353,"name":"bytes","nodeType":"ElementaryTypeName","src":"3873:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3716:178:298"}},{"id":120371,"nodeType":"EventDefinition","src":"4326:205:298","nodes":[],"anonymous":false,"documentation":{"id":120357,"nodeType":"StructuredDocumentation","src":"3901:420:298","text":"@notice Emitted when an ERC20 bridge is finalized on this chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"d59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd","name":"ERC20BridgeFinalized","nameLocation":"4332:20:298","parameters":{"id":120370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120359,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"4378:10:298","nodeType":"VariableDeclaration","scope":120371,"src":"4362:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120358,"name":"address","nodeType":"ElementaryTypeName","src":"4362:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120361,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"4414:11:298","nodeType":"VariableDeclaration","scope":120371,"src":"4398:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120360,"name":"address","nodeType":"ElementaryTypeName","src":"4398:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120363,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"4451:4:298","nodeType":"VariableDeclaration","scope":120371,"src":"4435:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120362,"name":"address","nodeType":"ElementaryTypeName","src":"4435:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120365,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"4473:2:298","nodeType":"VariableDeclaration","scope":120371,"src":"4465:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120364,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120367,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4493:6:298","nodeType":"VariableDeclaration","scope":120371,"src":"4485:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120366,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120369,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"4515:9:298","nodeType":"VariableDeclaration","scope":120371,"src":"4509:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120368,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4352:178:298"}},{"id":120386,"nodeType":"ModifierDefinition","src":"4834:146:298","nodes":[],"body":{"id":120385,"nodeType":"Block","src":"4853:127:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4871:31:298","subExpression":{"arguments":[{"expression":{"id":120377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4891:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4891:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":120375,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"4872:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$46285_$","typeString":"type(library Address)"}},"id":120376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":46008,"src":"4872:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4872:30:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":120381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":120374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4863:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120383,"nodeType":"ExpressionStatement","src":"4863:99:298"},{"id":120384,"nodeType":"PlaceholderStatement","src":"4972:1:298"}]},"documentation":{"id":120372,"nodeType":"StructuredDocumentation","src":"4537:292:298","text":"@notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n calling code within their constructors, but also doesn't really matter since we're\n just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"4843:7:298","parameters":{"id":120373,"nodeType":"ParameterList","parameters":[],"src":"4850:2:298"},"virtual":false,"visibility":"internal"},{"id":120411,"nodeType":"ModifierDefinition","src":"5074:259:298","nodes":[],"body":{"id":120410,"nodeType":"Block","src":"5101:232:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5132:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5132:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120394,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5154:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5146:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120392,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:298","typeDescriptions":{}}},"id":120395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5132:32:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":120397,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5168:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":121717,"src":"5168:30:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5168:32:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120402,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5212:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5204:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120400,"name":"address","nodeType":"ElementaryTypeName","src":"5204:7:298","typeDescriptions":{}}},"id":120403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5204:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5168:56:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5132:92:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":120406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5238:67:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":120389,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5111:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5111:204:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120408,"nodeType":"ExpressionStatement","src":"5111:204:298"},{"id":120409,"nodeType":"PlaceholderStatement","src":"5325:1:298"}]},"documentation":{"id":120387,"nodeType":"StructuredDocumentation","src":"4986:83:298","text":"@notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"5083:15:298","parameters":{"id":120388,"nodeType":"ParameterList","parameters":[],"src":"5098:2:298"},"virtual":false,"visibility":"internal"},{"id":120432,"nodeType":"FunctionDefinition","src":"5523:237:298","nodes":[],"body":{"id":120431,"nodeType":"Block","src":"5685:75:298","nodes":[],"statements":[{"expression":{"id":120425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120423,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5695:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120424,"name":"_messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120415,"src":"5707:10:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"src":"5695:22:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120426,"nodeType":"ExpressionStatement","src":"5695:22:298"},{"expression":{"id":120429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120427,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5727:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120428,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120418,"src":"5741:12:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"src":"5727:26:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120430,"nodeType":"ExpressionStatement","src":"5727:26:298"}]},"documentation":{"id":120412,"nodeType":"StructuredDocumentation","src":"5339:179:298","text":"@notice Initializer.\n @param _messenger Contract for CrossDomainMessenger on this network.\n @param _otherBridge Contract for the other StandardBridge contract."},"implemented":true,"kind":"function","modifiers":[{"id":120421,"kind":"modifierInvocation","modifierName":{"id":120420,"name":"onlyInitializing","nodeType":"IdentifierPath","referencedDeclaration":42657,"src":"5664:16:298"},"nodeType":"ModifierInvocation","src":"5664:16:298"}],"name":"__StandardBridge_init","nameLocation":"5532:21:298","parameters":{"id":120419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120415,"mutability":"mutable","name":"_messenger","nameLocation":"5585:10:298","nodeType":"VariableDeclaration","scope":120432,"src":"5563:32:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120414,"nodeType":"UserDefinedTypeName","pathNode":{"id":120413,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"5563:21:298"},"referencedDeclaration":121721,"src":"5563:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"},{"constant":false,"id":120418,"mutability":"mutable","name":"_otherBridge","nameLocation":"5620:12:298","nodeType":"VariableDeclaration","scope":120432,"src":"5605:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120417,"nodeType":"UserDefinedTypeName","pathNode":{"id":120416,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"5605:14:298"},"referencedDeclaration":121076,"src":"5605:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"5553:85:298"},"returnParameters":{"id":120422,"nodeType":"ParameterList","parameters":[],"src":"5685:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120436,"nodeType":"FunctionDefinition","src":"5906:35:298","nodes":[],"documentation":{"id":120433,"nodeType":"StructuredDocumentation","src":"5766:135:298","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge.\n Must be implemented by contracts that inherit."},"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":120434,"nodeType":"ParameterList","parameters":[],"src":"5913:2:298"},"returnParameters":{"id":120435,"nodeType":"ParameterList","parameters":[],"src":"5940:0:298"},"scope":121076,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":120444,"nodeType":"FunctionDefinition","src":"6033:73:298","nodes":[],"documentation":{"id":120437,"nodeType":"StructuredDocumentation","src":"5947:81:298","text":"@notice Returns the address of the custom gas token and the token's decimals."},"implemented":false,"kind":"function","modifiers":[],"name":"gasPayingToken","nameLocation":"6042:14:298","parameters":{"id":120438,"nodeType":"ParameterList","parameters":[],"src":"6056:2:298"},"returnParameters":{"id":120443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6090:7:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120439,"name":"address","nodeType":"ElementaryTypeName","src":"6090:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6099:5:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":120441,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:298","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6089:16:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":120461,"nodeType":"FunctionDefinition","src":"6186:150:298","nodes":[],"body":{"id":120460,"nodeType":"Block","src":"6243:93:298","nodes":[],"statements":[{"assignments":[120451,null],"declarations":[{"constant":false,"id":120451,"mutability":"mutable","name":"token","nameLocation":"6262:5:298","nodeType":"VariableDeclaration","scope":120460,"src":"6254:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120450,"name":"address","nodeType":"ElementaryTypeName","src":"6254:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":120454,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":120452,"name":"gasPayingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120444,"src":"6272:14:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint8_$","typeString":"function () view returns (address,uint8)"}},"id":120453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6272:16:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint8_$","typeString":"tuple(address,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"6253:35:298"},{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120455,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120451,"src":"6305:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":120456,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"6314:9:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112908_$","typeString":"type(library Constants)"}},"id":120457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETHER","nodeType":"MemberAccess","referencedDeclaration":112874,"src":"6314:15:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6305:24:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120449,"id":120459,"nodeType":"Return","src":"6298:31:298"}]},"documentation":{"id":120445,"nodeType":"StructuredDocumentation","src":"6112:69:298","text":"@notice Returns whether the chain uses a custom gas token or not."},"implemented":true,"kind":"function","modifiers":[],"name":"isCustomGasToken","nameLocation":"6195:16:298","parameters":{"id":120446,"nodeType":"ParameterList","parameters":[],"src":"6211:2:298"},"returnParameters":{"id":120449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120461,"src":"6237:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120447,"name":"bool","nodeType":"ElementaryTypeName","src":"6237:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6236:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120471,"nodeType":"FunctionDefinition","src":"6570:100:298","nodes":[],"body":{"id":120470,"nodeType":"Block","src":"6637:33:298","nodes":[],"statements":[{"expression":{"id":120468,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"6654:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"functionReturnParameters":120467,"id":120469,"nodeType":"Return","src":"6647:16:298"}]},"documentation":{"id":120462,"nodeType":"StructuredDocumentation","src":"6342:223:298","text":"@notice Getter for messenger contract.\n Public getter is legacy and will be removed in the future. Use `messenger` instead.\n @return Contract of the messenger on this domain.\n @custom:legacy"},"functionSelector":"927ede2d","implemented":true,"kind":"function","modifiers":[],"name":"MESSENGER","nameLocation":"6579:9:298","parameters":{"id":120463,"nodeType":"ParameterList","parameters":[],"src":"6588:2:298"},"returnParameters":{"id":120467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120471,"src":"6614:21:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120465,"nodeType":"UserDefinedTypeName","pathNode":{"id":120464,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"6614:21:298"},"referencedDeclaration":121721,"src":"6614:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"}],"src":"6613:23:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120481,"nodeType":"FunctionDefinition","src":"6916:98:298","nodes":[],"body":{"id":120480,"nodeType":"Block","src":"6979:35:298","nodes":[],"statements":[{"expression":{"id":120478,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"6996:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"functionReturnParameters":120477,"id":120479,"nodeType":"Return","src":"6989:18:298"}]},"documentation":{"id":120472,"nodeType":"StructuredDocumentation","src":"6676:235:298","text":"@notice Getter for the other bridge contract.\n Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\n @return Contract of the bridge on the other network.\n @custom:legacy"},"functionSelector":"7f46ddb2","implemented":true,"kind":"function","modifiers":[],"name":"OTHER_BRIDGE","nameLocation":"6925:12:298","parameters":{"id":120473,"nodeType":"ParameterList","parameters":[],"src":"6937:2:298"},"returnParameters":{"id":120477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120481,"src":"6963:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120475,"nodeType":"UserDefinedTypeName","pathNode":{"id":120474,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"6963:14:298"},"referencedDeclaration":121076,"src":"6963:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"6962:16:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120490,"nodeType":"FunctionDefinition","src":"7297:82:298","nodes":[],"body":{"id":120489,"nodeType":"Block","src":"7350:29:298","nodes":[],"statements":[{"expression":{"hexValue":"66616c7365","id":120487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7367:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":120486,"id":120488,"nodeType":"Return","src":"7360:12:298"}]},"documentation":{"id":120482,"nodeType":"StructuredDocumentation","src":"7020:272:298","text":"@notice This function should return true if the contract is paused.\n On L1 this function will check the SuperchainConfig for its paused status.\n On L2 this function should be a no-op.\n @return Whether or not the contract is paused."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"7306:6:298","parameters":{"id":120483,"nodeType":"ParameterList","parameters":[],"src":"7312:2:298"},"returnParameters":{"id":120486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120490,"src":"7344:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120484,"name":"bool","nodeType":"ElementaryTypeName","src":"7344:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7343:6:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":120512,"nodeType":"FunctionDefinition","src":"7800:186:298","nodes":[],"body":{"id":120511,"nodeType":"Block","src":"7890:96:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120501,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7919:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7919:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7931:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7931:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120505,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7943:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"7943:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120507,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120493,"src":"7954:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120508,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120495,"src":"7968:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120500,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"7900:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7900:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120510,"nodeType":"ExpressionStatement","src":"7900:79:298"}]},"documentation":{"id":120491,"nodeType":"StructuredDocumentation","src":"7385:410:298","text":"@notice Sends ETH to the sender's address on the other chain.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"09fc8843","implemented":true,"kind":"function","modifiers":[{"id":120498,"kind":"modifierInvocation","modifierName":{"id":120497,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"7882:7:298"},"nodeType":"ModifierInvocation","src":"7882:7:298"}],"name":"bridgeETH","nameLocation":"7809:9:298","parameters":{"id":120496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120493,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7826:12:298","nodeType":"VariableDeclaration","scope":120512,"src":"7819:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120492,"name":"uint32","nodeType":"ElementaryTypeName","src":"7819:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120495,"mutability":"mutable","name":"_extraData","nameLocation":"7855:10:298","nodeType":"VariableDeclaration","scope":120512,"src":"7840:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120494,"name":"bytes","nodeType":"ElementaryTypeName","src":"7840:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7818:48:298"},"returnParameters":{"id":120499,"nodeType":"ParameterList","parameters":[],"src":"7890:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120533,"nodeType":"FunctionDefinition","src":"8997:186:298","nodes":[],"body":{"id":120532,"nodeType":"Block","src":"9094:89:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9123:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9123:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120525,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120515,"src":"9135:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120526,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9140:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"9140:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120528,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120517,"src":"9151:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120529,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120519,"src":"9165:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120522,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"9104:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9104:72:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120531,"nodeType":"ExpressionStatement","src":"9104:72:298"}]},"documentation":{"id":120513,"nodeType":"StructuredDocumentation","src":"7992:1000:298","text":"@notice Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a\n smart contract and the call fails, the ETH will be temporarily locked in the\n StandardBridge on the other chain until the call is replayed. If the call cannot be\n replayed with any amount of gas (call always reverts), then the ETH will be\n permanently locked in the StandardBridge on the other chain. ETH will also\n be locked if the receiver is the other bridge, because finalizeBridgeETH will revert\n in that case.\n @param _to Address of the receiver.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"e11013dd","implemented":true,"kind":"function","modifiers":[],"name":"bridgeETHTo","nameLocation":"9006:11:298","parameters":{"id":120520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120515,"mutability":"mutable","name":"_to","nameLocation":"9026:3:298","nodeType":"VariableDeclaration","scope":120533,"src":"9018:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120514,"name":"address","nodeType":"ElementaryTypeName","src":"9018:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120517,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9038:12:298","nodeType":"VariableDeclaration","scope":120533,"src":"9031:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120516,"name":"uint32","nodeType":"ElementaryTypeName","src":"9031:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120519,"mutability":"mutable","name":"_extraData","nameLocation":"9067:10:298","nodeType":"VariableDeclaration","scope":120533,"src":"9052:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120518,"name":"bytes","nodeType":"ElementaryTypeName","src":"9052:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9017:61:298"},"returnParameters":{"id":120521,"nodeType":"ParameterList","parameters":[],"src":"9094:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120562,"nodeType":"FunctionDefinition","src":"9824:349:298","nodes":[],"body":{"id":120561,"nodeType":"Block","src":"10050:123:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120550,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120536,"src":"10081:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120551,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120538,"src":"10094:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120552,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10108:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10108:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10120:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10120:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120556,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120540,"src":"10132:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120557,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120542,"src":"10141:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120558,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120544,"src":"10155:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120549,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"10060:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10060:106:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120560,"nodeType":"ExpressionStatement","src":"10060:106:298"}]},"documentation":{"id":120534,"nodeType":"StructuredDocumentation","src":"9189:630:298","text":"@notice Sends ERC20 tokens to the sender's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":120547,"kind":"modifierInvocation","modifierName":{"id":120546,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"10038:7:298"},"nodeType":"ModifierInvocation","src":"10038:7:298"}],"name":"bridgeERC20","nameLocation":"9833:11:298","parameters":{"id":120545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120536,"mutability":"mutable","name":"_localToken","nameLocation":"9862:11:298","nodeType":"VariableDeclaration","scope":120562,"src":"9854:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120535,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120538,"mutability":"mutable","name":"_remoteToken","nameLocation":"9891:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9883:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120537,"name":"address","nodeType":"ElementaryTypeName","src":"9883:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120540,"mutability":"mutable","name":"_amount","nameLocation":"9921:7:298","nodeType":"VariableDeclaration","scope":120562,"src":"9913:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120539,"name":"uint256","nodeType":"ElementaryTypeName","src":"9913:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120542,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9945:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9938:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120541,"name":"uint32","nodeType":"ElementaryTypeName","src":"9938:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120544,"mutability":"mutable","name":"_extraData","nameLocation":"9982:10:298","nodeType":"VariableDeclaration","scope":120562,"src":"9967:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120543,"name":"bytes","nodeType":"ElementaryTypeName","src":"9967:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9844:154:298"},"returnParameters":{"id":120548,"nodeType":"ParameterList","parameters":[],"src":"10050:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120590,"nodeType":"FunctionDefinition","src":"10867:349:298","nodes":[],"body":{"id":120589,"nodeType":"Block","src":"11100:116:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120579,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120565,"src":"11131:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120580,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120567,"src":"11144:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120581,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11158:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11158:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120583,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120569,"src":"11170:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120584,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120571,"src":"11175:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120585,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120573,"src":"11184:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120586,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120575,"src":"11198:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120578,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"11110:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11110:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120588,"nodeType":"ExpressionStatement","src":"11110:99:298"}]},"documentation":{"id":120563,"nodeType":"StructuredDocumentation","src":"10179:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"10876:13:298","parameters":{"id":120576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120565,"mutability":"mutable","name":"_localToken","nameLocation":"10907:11:298","nodeType":"VariableDeclaration","scope":120590,"src":"10899:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120564,"name":"address","nodeType":"ElementaryTypeName","src":"10899:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120567,"mutability":"mutable","name":"_remoteToken","nameLocation":"10936:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"10928:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120566,"name":"address","nodeType":"ElementaryTypeName","src":"10928:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120569,"mutability":"mutable","name":"_to","nameLocation":"10966:3:298","nodeType":"VariableDeclaration","scope":120590,"src":"10958:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120568,"name":"address","nodeType":"ElementaryTypeName","src":"10958:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120571,"mutability":"mutable","name":"_amount","nameLocation":"10987:7:298","nodeType":"VariableDeclaration","scope":120590,"src":"10979:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120570,"name":"uint256","nodeType":"ElementaryTypeName","src":"10979:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120573,"mutability":"mutable","name":"_minGasLimit","nameLocation":"11011:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"11004:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120572,"name":"uint32","nodeType":"ElementaryTypeName","src":"11004:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120575,"mutability":"mutable","name":"_extraData","nameLocation":"11048:10:298","nodeType":"VariableDeclaration","scope":120590,"src":"11033:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120574,"name":"bytes","nodeType":"ElementaryTypeName","src":"11033:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10889:175:298"},"returnParameters":{"id":120577,"nodeType":"ParameterList","parameters":[],"src":"11100:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120672,"nodeType":"FunctionDefinition","src":"11780:1007:298","nodes":[],"body":{"id":120671,"nodeType":"Block","src":"11976:811:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120605,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"11994:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11994:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12006:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11994:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12013:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11986:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120611,"nodeType":"ExpressionStatement","src":"11986:52:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120613,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"12056:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12056:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12078:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12056:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12085:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12048:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12048:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120619,"nodeType":"ExpressionStatement","src":"12048:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12161:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"12161:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120623,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12174:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12161:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20616d6f756e742073656e7420646f6573206e6f74206d6174636820616d6f756e74207265717569726564","id":120625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12183:60:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""},"value":"StandardBridge: amount sent does not match amount required"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""}],"id":120620,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12153:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12153:91:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120627,"nodeType":"ExpressionStatement","src":"12153:91:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120629,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12262:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120632,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12277:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12269:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120630,"name":"address","nodeType":"ElementaryTypeName","src":"12269:7:298","typeDescriptions":{}}},"id":120633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12269:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12262:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f2073656c66","id":120635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12284:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""},"value":"StandardBridge: cannot send to self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""}],"id":120628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12254:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12254:68:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120637,"nodeType":"ExpressionStatement","src":"12254:68:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120639,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12340:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120642,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"12355:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12347:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120640,"name":"address","nodeType":"ElementaryTypeName","src":"12347:7:298","typeDescriptions":{}}},"id":120643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12347:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12340:25:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d657373656e676572","id":120645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12367:42:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""},"value":"StandardBridge: cannot send to messenger"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""}],"id":120638,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12332:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12332:78:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120647,"nodeType":"ExpressionStatement","src":"12332:78:298"},{"expression":{"arguments":[{"id":120649,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"12612:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120650,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12619:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120651,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12624:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120652,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120599,"src":"12633:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120648,"name":"_emitETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121023,"src":"12588:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12588:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120654,"nodeType":"ExpressionStatement","src":"12588:56:298"},{"assignments":[120656],"declarations":[{"constant":false,"id":120656,"mutability":"mutable","name":"success","nameLocation":"12660:7:298","nodeType":"VariableDeclaration","scope":120671,"src":"12655:12:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120655,"name":"bool","nodeType":"ElementaryTypeName","src":"12655:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":120665,"initialValue":{"arguments":[{"id":120659,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12684:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":120660,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"12689:7:298","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":120661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12689:9:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120662,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12700:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":120663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"12709:5:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":120657,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"12670:8:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$114979_$","typeString":"type(library SafeCall)"}},"id":120658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":114889,"src":"12670:13:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":120664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12670:45:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12655:60:298"},{"expression":{"arguments":[{"id":120667,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120656,"src":"12733:7:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20455448207472616e73666572206661696c6564","id":120668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12742:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""},"value":"StandardBridge: ETH transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""}],"id":120666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12725:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12725:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120670,"nodeType":"ExpressionStatement","src":"12725:55:298"}]},"documentation":{"id":120591,"nodeType":"StructuredDocumentation","src":"11222:553:298","text":"@notice Finalizes an ETH bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"1635f5fd","implemented":true,"kind":"function","modifiers":[{"id":120602,"kind":"modifierInvocation","modifierName":{"id":120601,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"11956:15:298"},"nodeType":"ModifierInvocation","src":"11956:15:298"}],"name":"finalizeBridgeETH","nameLocation":"11789:17:298","parameters":{"id":120600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120593,"mutability":"mutable","name":"_from","nameLocation":"11824:5:298","nodeType":"VariableDeclaration","scope":120672,"src":"11816:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120592,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120595,"mutability":"mutable","name":"_to","nameLocation":"11847:3:298","nodeType":"VariableDeclaration","scope":120672,"src":"11839:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120594,"name":"address","nodeType":"ElementaryTypeName","src":"11839:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120597,"mutability":"mutable","name":"_amount","nameLocation":"11868:7:298","nodeType":"VariableDeclaration","scope":120672,"src":"11860:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120596,"name":"uint256","nodeType":"ElementaryTypeName","src":"11860:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120599,"mutability":"mutable","name":"_extraData","nameLocation":"11900:10:298","nodeType":"VariableDeclaration","scope":120672,"src":"11885:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120598,"name":"bytes","nodeType":"ElementaryTypeName","src":"11885:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11806:110:298"},"returnParameters":{"id":120603,"nodeType":"ParameterList","parameters":[],"src":"11976:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120752,"nodeType":"FunctionDefinition","src":"13519:1084:298","nodes":[],"body":{"id":120751,"nodeType":"Block","src":"13760:843:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120691,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"13778:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13778:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13790:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13778:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13797:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13770:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13770:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120697,"nodeType":"ExpressionStatement","src":"13770:52:298"},{"condition":{"arguments":[{"id":120699,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13861:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120698,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"13836:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13836:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120740,"nodeType":"Block","src":"14153:168:298","statements":[{"expression":{"id":120730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120718,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14167:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120721,"indexExpression":{"id":120719,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14176:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14167:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120722,"indexExpression":{"id":120720,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14189:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14167:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120723,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14205:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120725,"indexExpression":{"id":120724,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14214:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120727,"indexExpression":{"id":120726,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14227:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":120728,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14243:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14205:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14167:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120731,"nodeType":"ExpressionStatement","src":"14167:83:298"},{"expression":{"arguments":[{"id":120736,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14297:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120737,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14302:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120733,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14271:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"14264:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":44344,"src":"14264:32:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,uint256)"}},"id":120738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120739,"nodeType":"ExpressionStatement","src":"14264:46:298"}]},"id":120741,"nodeType":"IfStatement","src":"13832:489:298","trueBody":{"id":120717,"nodeType":"Block","src":"13875:272:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120703,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13934:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120704,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"13947:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120702,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"13914:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13914:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13978:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13889:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13889:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120708,"nodeType":"ExpressionStatement","src":"13889:179:298"},{"expression":{"arguments":[{"id":120713,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14123:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120714,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14128:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120710,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14105:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120709,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"14083:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":118872,"src":"14083:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:53:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120716,"nodeType":"ExpressionStatement","src":"14083:53:298"}]}},{"expression":{"arguments":[{"id":120743,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14537:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120744,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14550:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120745,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120679,"src":"14564:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120746,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14571:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120747,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14576:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120748,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120685,"src":"14585:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120742,"name":"_emitERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121075,"src":"14511:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14511:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120750,"nodeType":"ExpressionStatement","src":"14511:85:298"}]},"documentation":{"id":120673,"nodeType":"StructuredDocumentation","src":"12793:721:298","text":"@notice Finalizes an ERC20 bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"0166a07a","implemented":true,"kind":"function","modifiers":[{"id":120688,"kind":"modifierInvocation","modifierName":{"id":120687,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"13740:15:298"},"nodeType":"ModifierInvocation","src":"13740:15:298"}],"name":"finalizeBridgeERC20","nameLocation":"13528:19:298","parameters":{"id":120686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120675,"mutability":"mutable","name":"_localToken","nameLocation":"13565:11:298","nodeType":"VariableDeclaration","scope":120752,"src":"13557:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120674,"name":"address","nodeType":"ElementaryTypeName","src":"13557:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120677,"mutability":"mutable","name":"_remoteToken","nameLocation":"13594:12:298","nodeType":"VariableDeclaration","scope":120752,"src":"13586:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120676,"name":"address","nodeType":"ElementaryTypeName","src":"13586:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120679,"mutability":"mutable","name":"_from","nameLocation":"13624:5:298","nodeType":"VariableDeclaration","scope":120752,"src":"13616:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120678,"name":"address","nodeType":"ElementaryTypeName","src":"13616:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120681,"mutability":"mutable","name":"_to","nameLocation":"13647:3:298","nodeType":"VariableDeclaration","scope":120752,"src":"13639:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120680,"name":"address","nodeType":"ElementaryTypeName","src":"13639:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120683,"mutability":"mutable","name":"_amount","nameLocation":"13668:7:298","nodeType":"VariableDeclaration","scope":120752,"src":"13660:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120682,"name":"uint256","nodeType":"ElementaryTypeName","src":"13660:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120685,"mutability":"mutable","name":"_extraData","nameLocation":"13700:10:298","nodeType":"VariableDeclaration","scope":120752,"src":"13685:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120684,"name":"bytes","nodeType":"ElementaryTypeName","src":"13685:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13547:169:298"},"returnParameters":{"id":120689,"nodeType":"ParameterList","parameters":[],"src":"13760:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":120812,"nodeType":"FunctionDefinition","src":"15191:894:298","nodes":[],"body":{"id":120811,"nodeType":"Block","src":"15377:708:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120767,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"15395:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15395:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15417:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15395:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15424:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15387:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15387:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120773,"nodeType":"ExpressionStatement","src":"15387:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120775,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15500:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"15500:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120777,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15513:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15500:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a206272696467696e6720455448206d75737420696e636c7564652073756666696369656e74204554482076616c7565","id":120779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15522:64:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""},"value":"StandardBridge: bridging ETH must include sufficient ETH value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""}],"id":120774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15492:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15492:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120781,"nodeType":"ExpressionStatement","src":"15492:95:298"},{"expression":{"arguments":[{"id":120783,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15789:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120784,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"15796:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120785,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15801:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120786,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"15810:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120782,"name":"_emitETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121003,"src":"15765:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15765:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120788,"nodeType":"ExpressionStatement","src":"15765:56:298"},{"expression":{"arguments":[{"arguments":[{"id":120796,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"15903:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15895:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120794,"name":"address","nodeType":"ElementaryTypeName","src":"15895:7:298","typeDescriptions":{}}},"id":120797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15895:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120800,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15962:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeETH","nodeType":"MemberAccess","referencedDeclaration":120672,"src":"15962:22:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory) payable external"}},"id":120802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15962:31:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120803,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15995:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120804,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"16002:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120805,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"16007:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120806,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"16016:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120798,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15939:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15939:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15939:88:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120808,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120761,"src":"16055:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120789,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"15832:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"15832:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":120792,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15862:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"15832:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$value","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"15832:246:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120810,"nodeType":"ExpressionStatement","src":"15832:246:298"}]},"documentation":{"id":120753,"nodeType":"StructuredDocumentation","src":"14609:577:298","text":"@notice Initiates a bridge of ETH through the CrossDomainMessenger.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeETH","nameLocation":"15200:18:298","parameters":{"id":120764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120755,"mutability":"mutable","name":"_from","nameLocation":"15236:5:298","nodeType":"VariableDeclaration","scope":120812,"src":"15228:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120754,"name":"address","nodeType":"ElementaryTypeName","src":"15228:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120757,"mutability":"mutable","name":"_to","nameLocation":"15259:3:298","nodeType":"VariableDeclaration","scope":120812,"src":"15251:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120756,"name":"address","nodeType":"ElementaryTypeName","src":"15251:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120759,"mutability":"mutable","name":"_amount","nameLocation":"15280:7:298","nodeType":"VariableDeclaration","scope":120812,"src":"15272:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120758,"name":"uint256","nodeType":"ElementaryTypeName","src":"15272:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120761,"mutability":"mutable","name":"_minGasLimit","nameLocation":"15304:12:298","nodeType":"VariableDeclaration","scope":120812,"src":"15297:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120760,"name":"uint32","nodeType":"ElementaryTypeName","src":"15297:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120763,"mutability":"mutable","name":"_extraData","nameLocation":"15339:10:298","nodeType":"VariableDeclaration","scope":120812,"src":"15326:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120762,"name":"bytes","nodeType":"ElementaryTypeName","src":"15326:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15218:137:298"},"returnParameters":{"id":120765,"nodeType":"ParameterList","parameters":[],"src":"15377:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120918,"nodeType":"FunctionDefinition","src":"16779:1751:298","nodes":[],"body":{"id":120917,"nodeType":"Block","src":"17026:1504:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17044:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"17044:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":120833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17057:1:298","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17044:14:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e642076616c7565","id":120835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17060:35:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""},"value":"StandardBridge: cannot send value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""}],"id":120830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17036:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17036:60:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120837,"nodeType":"ExpressionStatement","src":"17036:60:298"},{"condition":{"arguments":[{"id":120839,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17136:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120838,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"17111:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17111:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120884,"nodeType":"Block","src":"17430:189:298","statements":[{"expression":{"arguments":[{"id":120862,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17481:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":120865,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17496:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17488:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120863,"name":"address","nodeType":"ElementaryTypeName","src":"17488:7:298","typeDescriptions":{}}},"id":120866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17488:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120867,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17503:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120859,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17451:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120858,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"17444:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":44370,"src":"17444:36:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":120868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:67:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120869,"nodeType":"ExpressionStatement","src":"17444:67:298"},{"expression":{"id":120882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120870,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17525:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120873,"indexExpression":{"id":120871,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17534:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17525:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120874,"indexExpression":{"id":120872,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17547:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17525:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120875,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17563:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120877,"indexExpression":{"id":120876,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17572:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120879,"indexExpression":{"id":120878,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17585:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":120880,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17601:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17563:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17525:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120883,"nodeType":"ExpressionStatement","src":"17525:83:298"}]},"id":120885,"nodeType":"IfStatement","src":"17107:512:298","trueBody":{"id":120857,"nodeType":"Block","src":"17150:274:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120843,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17209:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120844,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17222:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120842,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"17189:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17189:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17253:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120841,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17164:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17164:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120848,"nodeType":"ExpressionStatement","src":"17164:179:298"},{"expression":{"arguments":[{"id":120853,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17398:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120854,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17405:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120850,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17380:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120849,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"17358:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":118893,"src":"17358:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120856,"nodeType":"ExpressionStatement","src":"17358:55:298"}]}},{"expression":{"arguments":[{"id":120887,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17835:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120888,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17848:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120889,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17862:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120890,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"17869:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120891,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17874:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120892,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"17883:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120886,"name":"_emitERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121049,"src":"17809:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17809:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120894,"nodeType":"ExpressionStatement","src":"17809:85:298"},{"expression":{"arguments":[{"arguments":[{"id":120900,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"17958:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17950:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120898,"name":"address","nodeType":"ElementaryTypeName","src":"17950:7:298","typeDescriptions":{}}},"id":120901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17950:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120904,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18034:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeERC20","nodeType":"MemberAccess","referencedDeclaration":120752,"src":"18034:24:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory) external"}},"id":120906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"18034:33:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120907,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"18320:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120908,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"18350:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120909,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"18379:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120910,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"18402:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120911,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"18423:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120912,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"18448:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17994:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17994:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17994:478:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120914,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120825,"src":"18500:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120895,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"17905:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"17905:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"17905:618:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120916,"nodeType":"ExpressionStatement","src":"17905:618:298"}]},"documentation":{"id":120813,"nodeType":"StructuredDocumentation","src":"16091:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeERC20","nameLocation":"16788:20:298","parameters":{"id":120828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120815,"mutability":"mutable","name":"_localToken","nameLocation":"16826:11:298","nodeType":"VariableDeclaration","scope":120918,"src":"16818:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120814,"name":"address","nodeType":"ElementaryTypeName","src":"16818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120817,"mutability":"mutable","name":"_remoteToken","nameLocation":"16855:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16847:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120816,"name":"address","nodeType":"ElementaryTypeName","src":"16847:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120819,"mutability":"mutable","name":"_from","nameLocation":"16885:5:298","nodeType":"VariableDeclaration","scope":120918,"src":"16877:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120818,"name":"address","nodeType":"ElementaryTypeName","src":"16877:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120821,"mutability":"mutable","name":"_to","nameLocation":"16908:3:298","nodeType":"VariableDeclaration","scope":120918,"src":"16900:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120820,"name":"address","nodeType":"ElementaryTypeName","src":"16900:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120823,"mutability":"mutable","name":"_amount","nameLocation":"16929:7:298","nodeType":"VariableDeclaration","scope":120918,"src":"16921:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120822,"name":"uint256","nodeType":"ElementaryTypeName","src":"16921:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120825,"mutability":"mutable","name":"_minGasLimit","nameLocation":"16953:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16946:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120824,"name":"uint32","nodeType":"ElementaryTypeName","src":"16946:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120827,"mutability":"mutable","name":"_extraData","nameLocation":"16988:10:298","nodeType":"VariableDeclaration","scope":120918,"src":"16975:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120826,"name":"bytes","nodeType":"ElementaryTypeName","src":"16975:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16808:196:298"},"returnParameters":{"id":120829,"nodeType":"ParameterList","parameters":[],"src":"17026:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120945,"nodeType":"FunctionDefinition","src":"18794:279:298","nodes":[],"body":{"id":120944,"nodeType":"Block","src":"18873:200:298","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":120928,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"18922:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120930,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"18935:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120929,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18930:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18930:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"18930:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120926,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18890:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18890:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18890:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":120936,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"19017:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120938,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19030:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}],"id":120937,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19025:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19025:28:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOptimismMintableERC20_$121886","typeString":"type(contract IOptimismMintableERC20)"}},"id":120940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19025:40:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120934,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18985:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18985:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18985:81:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18890:176:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120925,"id":120943,"nodeType":"Return","src":"18883:183:298"}]},"documentation":{"id":120919,"nodeType":"StructuredDocumentation","src":"18536:253:298","text":"@notice Checks if a given address is an OptimismMintableERC20. Not perfect, but good enough.\n Just the way we like it.\n @param _token Address of the token to check.\n @return True if the token is an OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isOptimismMintableERC20","nameLocation":"18803:24:298","parameters":{"id":120922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120921,"mutability":"mutable","name":"_token","nameLocation":"18836:6:298","nodeType":"VariableDeclaration","scope":120945,"src":"18828:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120920,"name":"address","nodeType":"ElementaryTypeName","src":"18828:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18827:16:298"},"returnParameters":{"id":120925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120945,"src":"18867:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120923,"name":"bool","nodeType":"ElementaryTypeName","src":"18867:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18866:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120983,"nodeType":"FunctionDefinition","src":"19520:410:298","nodes":[],"body":{"id":120982,"nodeType":"Block","src":"19623:307:298","nodes":[],"statements":[{"condition":{"arguments":[{"id":120957,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19669:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120959,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19690:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19685:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19685:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19685:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120955,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"19637:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"19637:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19637:87:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120980,"nodeType":"Block","src":"19825:99:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120972,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19846:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120974,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19884:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120973,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19861:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}},"id":120975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:38:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismMintableERC20_$121886","typeString":"contract IOptimismMintableERC20"}},"id":120976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"remoteToken","nodeType":"MemberAccess","referencedDeclaration":121866,"src":"19861:50:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19846:67:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120979,"nodeType":"Return","src":"19839:74:298"}]},"id":120981,"nodeType":"IfStatement","src":"19633:291:298","trueBody":{"id":120971,"nodeType":"Block","src":"19726:93:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120963,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19747:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120965,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19783:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120964,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19762:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}},"id":120966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:36:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILegacyMintableERC20_$121854","typeString":"contract ILegacyMintableERC20"}},"id":120967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":121839,"src":"19762:44:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19747:61:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120970,"nodeType":"Return","src":"19740:68:298"}]}}]},"documentation":{"id":120946,"nodeType":"StructuredDocumentation","src":"19079:436:298","text":"@notice Checks if the \"other token\" is the correct pair token for the OptimismMintableERC20.\n Calls can be saved in the future by combining this logic with\n `_isOptimismMintableERC20`.\n @param _mintableToken OptimismMintableERC20 to check against.\n @param _otherToken Pair token to check.\n @return True if the other token is the correct pair token for the OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isCorrectTokenPair","nameLocation":"19529:19:298","parameters":{"id":120951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120948,"mutability":"mutable","name":"_mintableToken","nameLocation":"19557:14:298","nodeType":"VariableDeclaration","scope":120983,"src":"19549:22:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120947,"name":"address","nodeType":"ElementaryTypeName","src":"19549:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120950,"mutability":"mutable","name":"_otherToken","nameLocation":"19581:11:298","nodeType":"VariableDeclaration","scope":120983,"src":"19573:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120949,"name":"address","nodeType":"ElementaryTypeName","src":"19573:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19548:45:298"},"returnParameters":{"id":120954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120983,"src":"19617:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120952,"name":"bool","nodeType":"ElementaryTypeName","src":"19617:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19616:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":121003,"nodeType":"FunctionDefinition","src":"20306:251:298","nodes":[],"body":{"id":121002,"nodeType":"Block","src":"20484:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":120996,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120986,"src":"20518:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120997,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120988,"src":"20525:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120998,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120990,"src":"20530:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120999,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120992,"src":"20539:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120995,"name":"ETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120330,"src":"20499:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20499:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121001,"nodeType":"EmitStatement","src":"20494:56:298"}]},"documentation":{"id":120984,"nodeType":"StructuredDocumentation","src":"19936:365:298","text":"@notice Emits the ETHBridgeInitiated event and if necessary the appropriate legacy event\n when an ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"20315:23:298","parameters":{"id":120993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120986,"mutability":"mutable","name":"_from","nameLocation":"20356:5:298","nodeType":"VariableDeclaration","scope":121003,"src":"20348:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120985,"name":"address","nodeType":"ElementaryTypeName","src":"20348:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120988,"mutability":"mutable","name":"_to","nameLocation":"20379:3:298","nodeType":"VariableDeclaration","scope":121003,"src":"20371:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120987,"name":"address","nodeType":"ElementaryTypeName","src":"20371:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120990,"mutability":"mutable","name":"_amount","nameLocation":"20400:7:298","nodeType":"VariableDeclaration","scope":121003,"src":"20392:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20392:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120992,"mutability":"mutable","name":"_extraData","nameLocation":"20430:10:298","nodeType":"VariableDeclaration","scope":121003,"src":"20417:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120991,"name":"bytes","nodeType":"ElementaryTypeName","src":"20417:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20338:108:298"},"returnParameters":{"id":120994,"nodeType":"ParameterList","parameters":[],"src":"20484:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121023,"nodeType":"FunctionDefinition","src":"20927:251:298","nodes":[],"body":{"id":121022,"nodeType":"Block","src":"21105:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121016,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121006,"src":"21139:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121017,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121008,"src":"21146:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121018,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121010,"src":"21151:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121019,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121012,"src":"21160:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121015,"name":"ETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120341,"src":"21120:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21120:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121021,"nodeType":"EmitStatement","src":"21115:56:298"}]},"documentation":{"id":121004,"nodeType":"StructuredDocumentation","src":"20563:359:298","text":"@notice Emits the ETHBridgeFinalized and if necessary the appropriate legacy event when an\n ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"20936:23:298","parameters":{"id":121013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121006,"mutability":"mutable","name":"_from","nameLocation":"20977:5:298","nodeType":"VariableDeclaration","scope":121023,"src":"20969:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121005,"name":"address","nodeType":"ElementaryTypeName","src":"20969:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121008,"mutability":"mutable","name":"_to","nameLocation":"21000:3:298","nodeType":"VariableDeclaration","scope":121023,"src":"20992:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121007,"name":"address","nodeType":"ElementaryTypeName","src":"20992:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121010,"mutability":"mutable","name":"_amount","nameLocation":"21021:7:298","nodeType":"VariableDeclaration","scope":121023,"src":"21013:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121009,"name":"uint256","nodeType":"ElementaryTypeName","src":"21013:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121012,"mutability":"mutable","name":"_extraData","nameLocation":"21051:10:298","nodeType":"VariableDeclaration","scope":121023,"src":"21038:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121011,"name":"bytes","nodeType":"ElementaryTypeName","src":"21038:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20959:108:298"},"returnParameters":{"id":121014,"nodeType":"ParameterList","parameters":[],"src":"21105:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121049,"nodeType":"FunctionDefinition","src":"21711:341:298","nodes":[],"body":{"id":121048,"nodeType":"Block","src":"21950:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121040,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121026,"src":"21986:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121041,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121028,"src":"21999:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121042,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121030,"src":"22013:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121043,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121032,"src":"22020:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121044,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121034,"src":"22025:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121045,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121036,"src":"22034:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121039,"name":"ERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120356,"src":"21965:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21965:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121047,"nodeType":"EmitStatement","src":"21960:85:298"}]},"documentation":{"id":121024,"nodeType":"StructuredDocumentation","src":"21184:522:298","text":"@notice Emits the ERC20BridgeInitiated event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"21720:25:298","parameters":{"id":121037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121026,"mutability":"mutable","name":"_localToken","nameLocation":"21763:11:298","nodeType":"VariableDeclaration","scope":121049,"src":"21755:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121025,"name":"address","nodeType":"ElementaryTypeName","src":"21755:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121028,"mutability":"mutable","name":"_remoteToken","nameLocation":"21792:12:298","nodeType":"VariableDeclaration","scope":121049,"src":"21784:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121027,"name":"address","nodeType":"ElementaryTypeName","src":"21784:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121030,"mutability":"mutable","name":"_from","nameLocation":"21822:5:298","nodeType":"VariableDeclaration","scope":121049,"src":"21814:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121029,"name":"address","nodeType":"ElementaryTypeName","src":"21814:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121032,"mutability":"mutable","name":"_to","nameLocation":"21845:3:298","nodeType":"VariableDeclaration","scope":121049,"src":"21837:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121031,"name":"address","nodeType":"ElementaryTypeName","src":"21837:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121034,"mutability":"mutable","name":"_amount","nameLocation":"21866:7:298","nodeType":"VariableDeclaration","scope":121049,"src":"21858:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121033,"name":"uint256","nodeType":"ElementaryTypeName","src":"21858:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121036,"mutability":"mutable","name":"_extraData","nameLocation":"21896:10:298","nodeType":"VariableDeclaration","scope":121049,"src":"21883:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121035,"name":"bytes","nodeType":"ElementaryTypeName","src":"21883:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21745:167:298"},"returnParameters":{"id":121038,"nodeType":"ParameterList","parameters":[],"src":"21950:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121075,"nodeType":"FunctionDefinition","src":"22585:341:298","nodes":[],"body":{"id":121074,"nodeType":"Block","src":"22824:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121066,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121052,"src":"22860:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121067,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121054,"src":"22873:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121068,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121056,"src":"22887:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121069,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121058,"src":"22894:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121070,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121060,"src":"22899:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121071,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121062,"src":"22908:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121065,"name":"ERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120371,"src":"22839:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22839:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121073,"nodeType":"EmitStatement","src":"22834:85:298"}]},"documentation":{"id":121050,"nodeType":"StructuredDocumentation","src":"22058:522:298","text":"@notice Emits the ERC20BridgeFinalized event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"22594:25:298","parameters":{"id":121063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121052,"mutability":"mutable","name":"_localToken","nameLocation":"22637:11:298","nodeType":"VariableDeclaration","scope":121075,"src":"22629:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121051,"name":"address","nodeType":"ElementaryTypeName","src":"22629:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121054,"mutability":"mutable","name":"_remoteToken","nameLocation":"22666:12:298","nodeType":"VariableDeclaration","scope":121075,"src":"22658:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121053,"name":"address","nodeType":"ElementaryTypeName","src":"22658:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121056,"mutability":"mutable","name":"_from","nameLocation":"22696:5:298","nodeType":"VariableDeclaration","scope":121075,"src":"22688:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121055,"name":"address","nodeType":"ElementaryTypeName","src":"22688:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121058,"mutability":"mutable","name":"_to","nameLocation":"22719:3:298","nodeType":"VariableDeclaration","scope":121075,"src":"22711:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121057,"name":"address","nodeType":"ElementaryTypeName","src":"22711:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121060,"mutability":"mutable","name":"_amount","nameLocation":"22740:7:298","nodeType":"VariableDeclaration","scope":121075,"src":"22732:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121059,"name":"uint256","nodeType":"ElementaryTypeName","src":"22732:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121062,"mutability":"mutable","name":"_extraData","nameLocation":"22770:10:298","nodeType":"VariableDeclaration","scope":121075,"src":"22757:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121061,"name":"bytes","nodeType":"ElementaryTypeName","src":"22757:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22619:167:298"},"returnParameters":{"id":121064,"nodeType":"ParameterList","parameters":[],"src":"22824:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":120284,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":42694,"src":"1296:13:298"},"id":120285,"nodeType":"InheritanceSpecifier","src":"1296:13:298"}],"canonicalName":"StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":120283,"nodeType":"StructuredDocumentation","src":"936:324:298","text":"@custom:upgradeable\n @title StandardBridge\n @notice StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles\n the core bridging logic, including escrowing tokens that are native to the local chain\n and minting/burning tokens that are native to the remote chain."},"fullyImplemented":false,"linearizedBaseContracts":[121076,42694],"name":"StandardBridge","nameLocation":"1278:14:298","scope":121077,"usedErrors":[]}],"license":"MIT"},"id":298} \ No newline at end of file diff --git a/op-e2e/celo/packages/celo-test-viem/abis/abis.ts b/op-e2e/celo/packages/celo-test-viem/abis/abis.ts new file mode 100644 index 0000000000000..eeb08c6405922 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/abis/abis.ts @@ -0,0 +1,6 @@ +import { join } from "jsr:@std/path"; +const __dirname = new URL(".", import.meta.url).pathname; + +export const standardBridge = JSON.parse( + Deno.readTextFileSync(join(__dirname, "StandardBridge.json")), +); diff --git a/op-e2e/celo/packages/celo-test-viem/actions/bridge.ts b/op-e2e/celo/packages/celo-test-viem/actions/bridge.ts new file mode 100644 index 0000000000000..31cf1bf5b63a9 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/actions/bridge.ts @@ -0,0 +1,161 @@ +import { standardBridge } from "../abis/abis.ts"; +import { getStandardBridgeAddresses } from "./common.ts"; +import type { PublicClients, WalletClients } from "../clients/clients.ts"; +import type { BridgedERC20TokenPair } from "./common.ts"; +import type { Account, Address, Chain, TransactionReceipt } from "viem"; +import type { ERC20 } from "reverse-mirage"; +import { sleep } from "@celo-test/util"; + +export type InitiateBridgeERC20ToReturnType = { + approve: { + receipt: TransactionReceipt | undefined; + chainId: number; + }; + bridge: { + receipt: TransactionReceipt | undefined; + chainId: number; + }; +}; + +// works in both directions +export async function initiateBridgeERC20To( + value: bigint, + to: Address, + chain: any, // this is the source chain, where the tx is sent on + // l1Gas: bigint, // TODO: do we need this here, or should we simulate? + tokenPair: BridgedERC20TokenPair, + publicClients: PublicClients, + walletClients: WalletClients, +): Promise { + let localToken: ERC20; + let remoteToken: ERC20; + + let pubClient: any; + let walletClient: any; + let localStandardBridge: Address; + let approveReceipt: TransactionReceipt | undefined; + let gasPaid = BigInt(0); + + const standardBridges = getStandardBridgeAddresses(publicClients); + let chainHasNativeToken = false; + if (chain.id === publicClients.l1.chain.id) { + chainHasNativeToken = tokenPair.nativeOnL1; + pubClient = publicClients.l1; + walletClient = walletClients.l1; + localStandardBridge = standardBridges.l1; + } else if (chain.id === publicClients.l2.chain.id) { + chainHasNativeToken = !tokenPair.nativeOnL1; + pubClient = publicClients.l2; + walletClient = walletClients.l2; + localStandardBridge = standardBridges.l2; + } else { + throw Error("native chain does not match any client chain ids"); + } + if (chainHasNativeToken === true) { + localToken = tokenPair.nativeToken; + remoteToken = tokenPair.bridgedToken; + } else { + localToken = tokenPair.bridgedToken; + remoteToken = tokenPair.nativeToken; + } + + //TODO: return approve receipt + // approve the allowance for the bridge, + // but only if we are on the "native" side + if (chainHasNativeToken === true) { + const approve = await walletClient.simulateERC20Approve({ + args: { + amount: { amount: value, token: localToken, type: "Amount" }, + spender: localStandardBridge, + }, + }); + if (!approve.result) { + throw Error("couldn't approve to bridge"); + } + const approveHash = await walletClient.writeContract(approve.request); + approveReceipt = await pubClient.waitForTransactionReceipt({ + hash: approveHash, + }); + } + sleep(5000); + + const bridgeERC20 = await simulateBridgeERC20To( + { + account: walletClient.account, + chain: chain, + request: { + //TODO: calculate gas for the other chain execution, + //so this would be a ERC20 transfer simulated on the other chain rpc? + // gas: 200000, + gas: 200000, // FIXME: this seems to work, but this is only what's added to some base-gas calculations within the messenger. + to: to, + value: value, + data: "0x", + }, + localToken: localToken.address, + remoteToken: remoteToken.address, + }, + publicClients, + ); + const hash = await walletClient.writeContract(bridgeERC20.args); // TODO: fix type + const receipt = await pubClient.waitForTransactionReceipt({ + hash: hash, + }); + + return { + approve: { + receipt: approveReceipt, + chainId: chain.id, + }, + bridge: { + receipt: receipt, + chainId: chain.id, + }, + }; +} + +export async function simulateBridgeERC20To( + parameters: any, + publicClients: PublicClients, +) { + const { + account, + chain, + request: { data = "0x", gas: depositGas, to = "0x", value }, + localToken, + remoteToken, + } = parameters; + + let client; + let localStandardBridgeAddress; + const standardBridges = getStandardBridgeAddresses(publicClients); + if (chain.id === publicClients.l1.chain.id) { + client = publicClients.l1; + localStandardBridgeAddress = standardBridges.l1; + } else if (chain.id === publicClients.l2.chain.id) { + client = publicClients.l2; + localStandardBridgeAddress = standardBridges.l2; + } else { + throw Error("provided chain does not match any client"); + } + + const { maxFeePerGas, maxPriorityFeePerGas } = + await client.estimateFeesPerGas(); + // TODO: estimate the erc20 contract call on the other side for the depositGas + const args = { + address: localStandardBridgeAddress as Address, + abi: standardBridge.abi, + account: account, + chain: chain as Chain, + functionName: "bridgeERC20To", + args: [localToken, remoteToken, to, value ?? 0n, depositGas, data] as any, //TODO: use the proper type + maxFeePerGas, + maxPriorityFeePerGas, + }; + const gas_ = await client.estimateContractGas(args); + (args as any).gas = gas_; + // XXX: maybe have to add the depositGas gas here as well? + + const result = client.simulateContract(args); + return { result: result, args: args }; +} diff --git a/op-e2e/celo/packages/celo-test-viem/actions/common.ts b/op-e2e/celo/packages/celo-test-viem/actions/common.ts new file mode 100644 index 0000000000000..15132a8df4fae --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/actions/common.ts @@ -0,0 +1,49 @@ +import type { Address, Chain, ChainContract } from "viem"; +import type { PublicClients } from "../clients/clients.ts"; +import type { ERC20 } from "reverse-mirage"; + +export type StandardBridgeAddresses = { + l1: Address; + l2: Address; +}; + +export type BridgedERC20TokenPair = { + bridgedToken: ERC20; + nativeToken: ERC20; + nativeOnL1: boolean; +}; + +export function getContractAddress( + chain: Chain, + sourceChain: Chain, + contract: string, +): Address | undefined { + if (chain.id === sourceChain.id) { + const c = chain?.contracts?.[contract] as ChainContract | undefined; + return c?.address; + } + const c = chain?.contracts?.[contract] as { + [sourceId: number]: ChainContract | undefined; + }; + return c[sourceChain.id]?.address; +} + +export function getStandardBridgeAddresses( + publicClients: PublicClients, +): StandardBridgeAddresses { + const l1StandardBridgeAddress = getContractAddress( + publicClients.l2.chain, + publicClients.l1.chain, + "l1StandardBridge", + ); + if (l1StandardBridgeAddress === undefined) { + throw Error("l1 standard bridge not found"); + } + const l2standardBridgeAddress = ( + publicClients.l2.chain.contracts?.l2StandardBridge as ChainContract + ).address; + if (l2standardBridgeAddress === undefined) { + throw Error("l2standard bridge not found"); + } + return { l1: l1StandardBridgeAddress, l2: l2standardBridgeAddress }; +} diff --git a/op-e2e/celo/packages/celo-test-viem/actions/deposit.ts b/op-e2e/celo/packages/celo-test-viem/actions/deposit.ts new file mode 100644 index 0000000000000..e655cb1d4ce4a --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/actions/deposit.ts @@ -0,0 +1,201 @@ +import type { PublicClients, WalletClients } from "../clients/clients.d.ts"; +import type { L2Chain } from "../chains.ts"; +import { getContractAddress } from "./common.ts"; +import { simulateBridgeERC20To } from "./bridge.ts"; +import { parseAbiItem } from "viem"; +import type { + Account, + Address, + Chain, + TransactionReceipt, + WaitForTransactionReceiptReturnType, +} from "viem"; +import { getL2TransactionHashes } from "viem/op-stack"; +import type { BuildDepositTransactionReturnType } from "viem/op-stack"; + +export type DepositReturnType = { + l1Approve: { + success: boolean; + receipt: TransactionReceipt | undefined; + }; + l1Deposit: { + success: boolean; + receipt: TransactionReceipt | undefined; + }; + l2Deposit: { + success: boolean; + receipt: TransactionReceipt | undefined; + }; +}; + +export async function waitForDepositReceiptL2( + l1Receipt: TransactionReceipt, + publicClients: PublicClients, +): Promise> { + const [l2Hash] = getL2TransactionHashes(l1Receipt); + const l2Receipt = await publicClients.l2.waitForTransactionReceipt({ + hash: l2Hash, + // 30 minutes timeout, we need the l1 block to finalise in order for the + // deposit tx to appear on the l2 + timeout: 30 * 60000, + }); + return l2Receipt as WaitForTransactionReceiptReturnType; +} + +export async function deposit( + amount: bigint, + to: Address, + publicClients: PublicClients, + walletClients: WalletClients, +): Promise { + let spentGas = BigInt(0); + + const depositArgs = await publicClients.l2.buildDepositTransaction({ + account: walletClients.l1.account, + to: to, + mint: amount, + value: BigInt(0), + }); + + const customGasTokenAddress = getContractAddress( + publicClients.l2.chain, + publicClients.l1.chain, + "customGasToken", + ); + if (customGasTokenAddress === undefined) { + throw Error("customGasToken contract is not defined on l2 chain config"); + } + const portalAddress = getContractAddress( + publicClients.l2.chain, + publicClients.l1.chain, + "portal", + ); + if (portalAddress === undefined) { + throw Error("portal contract is not defined on l2 chain config"); + } + const celoToken = await publicClients.l1.getERC20({ + erc20: { + address: customGasTokenAddress, + chainID: publicClients.l1.chain!.id, + }, + }); + const approve = await walletClients.l1.simulateERC20Approve({ + args: { + amount: { amount: amount, token: celoToken, type: "Amount" }, + spender: portalAddress, + }, + }); + if (!approve.result) { + return { + l1Approve: { + success: false, + receipt: undefined, + }, + l1Deposit: { + success: false, + receipt: undefined, + }, + l2Deposit: { + success: false, + receipt: undefined, + }, + }; + } + + const approveHash = await walletClients.l1.writeContract(approve.request); + const approveReceipt = await publicClients.l1.waitForTransactionReceipt({ + hash: approveHash, + }); + + spentGas += approveReceipt.gasUsed * approveReceipt.effectiveGasPrice; + + const depositCustomGas = await simulateDepositCustomGas( + depositArgs, + publicClients, + ); + const hash = await walletClients.l1.writeContract(depositCustomGas.args); + const l1Receipt = await publicClients.l1.waitForTransactionReceipt({ + hash: hash, + }); + spentGas += l1Receipt.gasUsed * l1Receipt.effectiveGasPrice; + const [l2Hash] = getL2TransactionHashes(l1Receipt); + const l2Receipt = await publicClients.l2.waitForTransactionReceipt({ + hash: l2Hash, + // 30 minutes timeout, we need the l1 block to finalise in order for the + // deposit tx to appear on the l2 + timeout: 30 * 60000, + }); + return { + l1Approve: { + success: true, + receipt: approveReceipt, + }, + l1Deposit: { + success: true, + receipt: l1Receipt, + }, + l2Deposit: { + success: l2Receipt.status === "success", + receipt: l2Receipt, + }, + }; +} + +async function simulateDepositCustomGas( + parameters: BuildDepositTransactionReturnType, + publicClients: PublicClients, +) { + const client = publicClients.l1; + const { + account, + chain = client.chain, + gas, + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + request: { + data = "0x", + gas: l2Gas, + isCreation = false, + mint, + to = "0x", + value, + }, + targetChain, + } = parameters; + + const depositERC20Transaction = parseAbiItem( + "function depositERC20Transaction(address _to, uint256 _mint, uint256 _value, uint64 _gasLimit, bool _isCreation, bytes memory _data) public", + ); + + const portalAddress = (() => { + if (parameters.portalAddress) return parameters.portalAddress; + if (chain) return targetChain!.contracts.portal[chain.id].address; + return Object.values(targetChain!.contracts.portal)[0].address; + })(); + const args = { + address: portalAddress, + abi: [depositERC20Transaction], + account: account, + chain: chain as Chain, + functionName: depositERC20Transaction.name, + args: [ + to, + mint ?? value ?? 0n, + value ?? mint ?? 0n, + l2Gas, + isCreation, + data, + ] as any, //TODO: use the proper type + maxFeePerGas, + maxPriorityFeePerGas, + nonce, + gas: gas === null ? undefined : gas, + }; + if (typeof args.gas !== "number") { + const gas_ = await client.estimateContractGas(args); + args.gas = gas_; + } + const result = client.simulateContract(args); + return { result: result, args: args }; +} diff --git a/op-e2e/celo/packages/celo-test-viem/actions/withdraw.ts b/op-e2e/celo/packages/celo-test-viem/actions/withdraw.ts new file mode 100644 index 0000000000000..be56400afeebd --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/actions/withdraw.ts @@ -0,0 +1,333 @@ +import type { + PublicClient, + PublicClients, + WalletClients, +} from "../clients/clients.ts"; +import type { + Account, + Address, + Chain, + GetBlockReturnType, + HttpTransport, + TransactionReceipt, +} from "viem"; +import type { + BuildProveWithdrawalParameters, + GetGameReturnType, + WaitToFinalizeParameters, + WaitToFinalizeReturnType, +} from "viem/op-stack"; +import { getPortalVersion } from "viem/op-stack"; +import { parseAbi } from "viem"; +import { pollFunction, sleepSeconds } from "@celo-test/util"; + +// partial ABI, only the used functions and errors are defined here +const portal2Abi = parseAbi([ + "function disputeGameFinalityDelaySeconds() view returns (uint256)", + "function numProofSubmitters(bytes32 _withdrawalHash) view returns (uint256)", + "function proofSubmitters(bytes32 _withdrawalHash, uint256 index) view returns (address)", + "function checkWithdrawal(bytes32 _withdrawalHash, address _proofSubmitter) view", + "error AlreadyFinalized()", + "error GasEstimation()", + "error TransferFailed()", + "error BadTarget()", + "error Blacklisted()", + "error Unproven()", +]); + +export type WithdrawReturnType = { + prove: { + receipt: TransactionReceipt | undefined; + success: boolean; + chainId: number; + }; + finalize: { + receipt: TransactionReceipt | undefined; + success: boolean; + chainId: number; + }; +}; + +export type InitiateWithdrawReturnType = { + receipt: TransactionReceipt; + gasPaid: bigint; +}; + +export type InitiateBridgeERC20ToReturnType = { + receipt: TransactionReceipt; + gasPaid: bigint; +}; + +export async function initiateNativeWithdraw( + value: bigint, + to: Address, + l1Gas: bigint, + publicClients: PublicClients, + walletClients: WalletClients, +): Promise { + const initiateHash = await walletClients.l2.initiateWithdrawal({ + request: { + gas: l1Gas, + to: to, + value: value, + }, + }); + const receipt = await publicClients.l2.waitForTransactionReceipt({ + hash: initiateHash, + }); + + return { + receipt: receipt, + gasPaid: + receipt.gasUsed * receipt.effectiveGasPrice + (receipt.l1Fee ?? 0n), + }; +} + +export async function settleWithdraw( + withdrawReceipt: TransactionReceipt, + publicClients: PublicClients, + walletClients: WalletClients, +): Promise { + // the getTimeToProve broadly speaking takes the average delta of the last 10 games + // so this overestimates when we recently stopped the propeser / challenger. + // that's why we rather poll the get games for the l2Blocknumber, + // so that the waitToProve immediately finds the game and calculates a wait time of 0 + + console.log( + "waiting for dispute game that includes l2-block: ", + withdrawReceipt.blockNumber, + ); + await pollFunction( + async (): Promise => + await publicClients.l1.getGame({ + l2BlockNumber: withdrawReceipt.blockNumber, + targetChain: publicClients.l2.chain as any, + }), + (val: GetGameReturnType | null, _err: Error | null) => { + if (_err != null) { + return false; + } + if (val !== null) { + // we found a game for the blocknumber + return true; + } else { + return false; + } + }, + 60_000, + undefined, + false, + ); + // now check again that the time to prove is actually 0 + // // XXX: (this is mainly for testing that the poll time calculation in waitToProve now returns 0) + // first wait with our wait function, because it is target-time based + // and considers CPU suspend and hibernate: + // NOTE: viem only returns a time here when more than 2 fault-games + // can be found from the DisputeGameFactory + const timeToProve = await publicClients.l1.getTimeToProve({ + receipt: withdrawReceipt, + // deno-lint-ignore no-explicit-any + targetChain: publicClients.l2.chain as any, + }); + console.log("timeToProve", timeToProve); + if (timeToProve.seconds === undefined) { + throw Error("couldn't calculate time to prove"); + } + console.log("waiting for time to prove (in s):", timeToProve.seconds); + await sleepSeconds(timeToProve.seconds); + + // Only now call the waitToProve, which now will immediately + // try to call the L1 contracts + // (XXX: I think? why is this taking so + // long on the mainnet after already waiting the timeToProve?). + // TODO: check again what get-time-toprove would show now. + // because internally the waitToProve waits this time initially + // before making any calls.. + // + // + // NOTE: for the L2OO system, + // this function requires the mulitcall3 contract to be deployed + // on the L1 chain. + // + console.log("call wait to prove"); + const { output, game, withdrawal } = await publicClients.l1.waitToProve({ + receipt: withdrawReceipt, + // deno-lint-ignore no-explicit-any + targetChain: publicClients.l2.chain as any, + }); + + const portalVersion = await getPortalVersion(publicClients.l1, { + // deno-lint-ignore no-explicit-any + targetChain: publicClients.l2.chain as any, + }); + const usesL2OO = portalVersion.major < 3; + const proveWithdrawalParams: BuildProveWithdrawalParameters = (() => { + if (usesL2OO) { + return { + chain: publicClients.l2.chain, + withdrawal: withdrawal, + output: output, + }; + } else { + return { + chain: publicClients.l2.chain, + withdrawal: withdrawal, + game: game, + }; + } + })(); + + const proveWithdrawalArgs = await publicClients.l2.buildProveWithdrawal( + proveWithdrawalParams, + ); + const proveHash = await walletClients.l1.proveWithdrawal( + // deno-lint-ignore no-explicit-any + proveWithdrawalArgs as any, + ); + + const proveReceipt = await publicClients.l1.waitForTransactionReceipt({ + hash: proveHash, + }); + const proveSuccess = proveReceipt.status === "success"; + if (!proveSuccess) { + return { + prove: { + receipt: proveReceipt, + success: proveSuccess, + chainId: publicClients.l1.chain.id, + }, + finalize: { + receipt: undefined, + success: false, + chainId: publicClients.l1.chain.id, + }, + }; + } + + const waitToFinalizeParams = { + withdrawalHash: withdrawal.withdrawalHash, + // deno-lint-ignore no-explicit-any + targetChain: publicClients.l2.chain satisfies Chain as any, + }; + const timeToFinalize = + await publicClients.l1.getTimeToFinalize(waitToFinalizeParams); + + console.log("waiting for time to finalize (in s):", timeToFinalize.seconds); + await sleepSeconds(timeToFinalize.seconds); + if (usesL2OO) { + // the getTimeToFinalize calculates the expected time to finalization + // based on some contract parameters in wall-time. + // This could be imprecise, either due to lagging l1 progress (?), + // or because the time has not been inferred correctly with an incorrect + // replication of the contracts businesss logic. + // That's why we actually wait until the block timestamp has reached + // the calculated finalization time. + await pollFunction( + async (): Promise => + await publicClients.l1.getBlock(), + (val: GetBlockReturnType | null, _err: Error | null) => { + if (val !== null) { + // block timestamp is given in seconds, + // finalize-suggestion timestamp in ms + return Number(val.timestamp) * 1000 >= timeToFinalize.timestamp; + } else { + return false; + } + }, + 10000, + undefined, + true, + ); + // XXX: is this enough to be certain of a successful finalization for the L2OO system + // or do we also need to poll a contract call similarly to the Fault-Proof system? + // (see else case below) + } else { + // We waited the inferred "time-to-finalize" that viem gave us. + // Now we actually simulate a call to the contract until it + // lets us finalize. + // This is necessary because viem's inferrence of the wait + // time is not correct and underestimates e.g. the additional air-gap + // time. + await pollCheckWithdrawal(publicClients.l1, waitToFinalizeParams); + } + + const finalizeHash = await walletClients.l1.finalizeWithdrawal({ + withdrawal: withdrawal, + // deno-lint-ignore no-explicit-any + targetChain: publicClients.l2.chain satisfies Chain as any, + }); + + const finalizeReceipt = await publicClients.l1.waitForTransactionReceipt({ + hash: finalizeHash, + }); + + return { + prove: { + receipt: proveReceipt, + success: proveSuccess, + chainId: publicClients.l1.chain.id, + }, + finalize: { + receipt: finalizeReceipt, + success: finalizeReceipt.status === "success", + chainId: publicClients.l1.chain.id, + }, + }; +} + +export async function pollCheckWithdrawal< + chain extends Chain | undefined, + account extends Account | undefined, + chainOverride extends Chain | undefined = undefined, +>( + client: PublicClient, + parameters: WaitToFinalizeParameters, +): Promise { + const { chain = client.chain, withdrawalHash, targetChain } = parameters; + + const portalAddress = (() => { + if (parameters.portalAddress) return parameters.portalAddress; + if (chain) return targetChain!.contracts.portal[chain.id].address; + return Object.values(targetChain!.contracts.portal)[0].address; + })(); + const numProofSubmitters = await client + .readContract({ + abi: portal2Abi, + address: portalAddress, + functionName: "numProofSubmitters", + args: [withdrawalHash], + }) + .catch(() => 1n); + + const proofSubmitter = await client + .readContract({ + abi: portal2Abi, + address: portalAddress, + functionName: "proofSubmitters", + args: [withdrawalHash, numProofSubmitters - 1n], + }) + .catch(() => undefined); + if (proofSubmitter === undefined) { + throw Error("no proof submitter found"); + } + + await pollFunction( + async (): Promise => { + await client.readContract({ + abi: portal2Abi, + address: portalAddress, + functionName: "checkWithdrawal", + args: [withdrawalHash, proofSubmitter], + }); + }, + (_value: void | null | null, err: Error | null): boolean => { + if (err === null) { + return true; + } + return false; + }, + 10000, + undefined, + true, + ); +} diff --git a/op-e2e/celo/packages/celo-test-viem/chains.ts b/op-e2e/celo/packages/celo-test-viem/chains.ts new file mode 100644 index 0000000000000..d909b21cebf78 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/chains.ts @@ -0,0 +1,151 @@ +import { chainConfig as l2ChainConfig } from "viem/op-stack"; +import { defineChain } from "viem"; +import type { Address, Chain, ChainContract, Prettify } from "viem"; + +export type L2Chain = Chain; +export type Chains = { + l1: Chain; + l2: L2Chain; +}; + +export type ChainContractsCeloL2 = Prettify< + { + [key: string]: ChainContract | undefined; + } & { + goldToken?: ChainContract | undefined; + registry?: ChainContract | undefined; + feeCurrencyDirectory?: ChainContract | undefined; + } +>; + +export interface ContractAddressesL1 { + AddressManager: Address; + AnchorStateRegistry: Address; + AnchorStateRegistryProxy: Address; + CustomGasTokenProxy: Address; + DelayedWETH: Address; + DelayedWETHProxy: Address; + DisputeGameFactory: Address; + DisputeGameFactoryProxy: Address; + FastPreimageOracle: Address; + FaultDisputeGame_0: Address; + FaultDisputeGame_254: Address; + FaultDisputeGame_255: Address; + L1CrossDomainMessenger: Address; + L1CrossDomainMessengerProxy: Address; + L1ERC721Bridge: Address; + L1ERC721BridgeProxy: Address; + L1StandardBridge: Address; + L1StandardBridgeProxy: Address; + L2OutputOracleProxy: Address; + Mips: Address; + Multicall3: Address; + OPContractsManager: Address; + OPContractsManagerProxy: Address; + OptimismMintableERC20Factory: Address; + OptimismMintableERC20FactoryProxy: Address; + OptimismPortal2: Address; + OptimismPortalProxy: Address; + PermissionedDelayedWETHProxy: Address; + PermissionedDisputeGame: Address; + PreimageOracle: Address; + ProtocolVersions: Address; + ProtocolVersionsProxy: Address; + ProxyAdmin: Address; + SuperchainConfig: Address; + SuperchainConfigProxy: Address; + SuperchainProxyAdmin: Address; + SystemConfig: Address; + SystemConfigProxy: Address; +} + +export function makeChainConfigs( + l1ChainID: number, + l2ChainID: number, + rpcUrlL1: string, + rpcUrlL2: string, + contractAddressesL1: ContractAddressesL1, + contractAddressesL2Celo: ChainContractsCeloL2, +): Chains { + return { + l2: defineChain({ + formatters: { + ...l2ChainConfig.formatters, + }, + serializers: { + ...l2ChainConfig.serializers, + }, + id: l2ChainID, + name: "Celo", + nativeCurrency: { + decimals: 18, + name: "Celo - native currency", + symbol: "CELO", + }, + rpcUrls: { + default: { + http: [rpcUrlL2], + }, + }, + contracts: { + ...l2ChainConfig.contracts, + ...contractAddressesL2Celo, + optimismMintableERC20Factory: { + address: "0x4200000000000000000000000000000000000012", + [l1ChainID]: { + address: contractAddressesL1.OptimismMintableERC20FactoryProxy, + }, + }, + customGasToken: { + [l1ChainID]: { + address: contractAddressesL1.CustomGasTokenProxy, + }, + }, + l2OutputOracle: { + [l1ChainID]: { + address: contractAddressesL1.L2OutputOracleProxy, + }, + }, + disputeGameFactory: { + [l1ChainID]: { + address: contractAddressesL1.DisputeGameFactoryProxy, + }, + }, + portal: { + [l1ChainID]: { + address: contractAddressesL1.OptimismPortalProxy, + }, + }, + l1StandardBridge: { + [l1ChainID]: { + address: contractAddressesL1.L1StandardBridgeProxy, + }, + }, + }, + sourceId: l1ChainID, + }), + l1: defineChain({ + id: l1ChainID, + testnet: true, + name: "Ethereum L1", + nativeCurrency: { + decimals: 18, + name: "Ether", + symbol: "ETH", + }, + rpcUrls: { + default: { + http: [rpcUrlL1], + }, + }, + contracts: { + customGasToken: { + address: contractAddressesL1.CustomGasTokenProxy, + }, + multicall3: { + address: contractAddressesL1.Multicall3, + }, + }, + }), + }; +} diff --git a/op-e2e/celo/packages/celo-test-viem/clients/clients.d.ts b/op-e2e/celo/packages/celo-test-viem/clients/clients.d.ts new file mode 100644 index 0000000000000..135f09ba51d15 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/clients/clients.d.ts @@ -0,0 +1,112 @@ +import type { + Account, + Address, + Chain, + Client, + HttpTransport, + ParseAccount, + PublicActions, + RpcSchema, + Transport, + WalletActions, +} from "viem"; +import type { PublicActionsERC20, WalletActionsERC20 } from "./erc20.d.ts"; +import type { L2Chain } from "../chains.ts"; +import type { + PublicActionsL1, + PublicActionsL2, + WalletActionsL1, + WalletActionsL2, +} from "viem/op-stack"; + +export type PublicClients = publicClients; + +type publicClients< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = { + l1: PublicL1Client; + l2: PublicL2Client; +}; + +export type WalletClients< + accountOrAddress extends Account | Address | undefined = Account | undefined, +> = walletClients>; + +type walletClients< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = { + l1: WalletL1Client; + l2: WalletL2Client; +}; + +export type PublicClient< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = Client< + transport, + chain, + account, + RpcSchema, + PublicActions & PublicActionsERC20 +>; + +export type PublicL1Client< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = Client< + transport, + chain, + account, + RpcSchema, + PublicActions & + PublicActionsL1 & + PublicActionsERC20 +>; + +export type PublicL2Client< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = Client< + transport, + chain, + account, + RpcSchema, + PublicActions & + PublicActionsL2 & + PublicActionsERC20 +>; + +export type WalletL1Client< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = Client< + transport, + chain, + account, + RpcSchema, + WalletActions & + WalletActionsL1 & + WalletActionsERC20 +>; + +export type WalletL2Client< + transport extends Transport = Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = Client< + transport, + chain, + account, + RpcSchema, + WalletActions & + WalletActionsL2 & + WalletActionsERC20 +>; diff --git a/op-e2e/celo/packages/celo-test-viem/clients/clients.ts b/op-e2e/celo/packages/celo-test-viem/clients/clients.ts new file mode 100644 index 0000000000000..5f32cec40ed4f --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/clients/clients.ts @@ -0,0 +1,215 @@ +import { createPublicClient, createWalletClient, http } from "viem"; +import { privateKeyToAccount } from "viem/accounts"; +import { sleep } from "@celo-test/util"; +import { publicActionsERC20, walletActionsERC20 } from "./erc20.ts"; +import type { + Account, + Address, + Chain, + HDAccount, + Hex, + HttpTransport, + PublicClient as ViemPublicClient, + TransactionReceipt, + WalletClient as ViemWalletClient, +} from "viem"; +import type { + PublicClient, + PublicClients, + WalletClients, +} from "./clients.d.ts"; +import type { Chains } from "../chains.ts"; +import { + publicActionsL1, + publicActionsL2, + walletActionsL1, + walletActionsL2, +} from "viem/op-stack"; +import { mnemonicToAccount } from "viem/accounts"; +export type { PublicClient }; + +export function createPublicClients(chains: Chains): PublicClients { + return { + l1: createPublicClient({ + chain: chains.l1, + transport: http(), + }) + .extend(publicActionsL1()) + .extend(publicActionsERC20()), + l2: createPublicClient({ + chain: chains.l2, + transport: http(), + }) + .extend(publicActionsL2()) + .extend(publicActionsERC20()), + }; +} + +export function createWalletClients< + accountOrAddress extends Account | Address | undefined = undefined, +>( + chains: Chains, + account: accountOrAddress, + accountL2: accountOrAddress | undefined, +): WalletClients { + return { + l1: createWalletClient({ + account: account, + chain: chains.l1, + transport: http(), + }) + .extend(walletActionsERC20()) + .extend(walletActionsL1()), + l2: createWalletClient({ + account: accountL2 ?? account, + chain: chains.l2, + transport: http(), + }) + .extend(walletActionsERC20()) + .extend(walletActionsL2()), + }; +} + +export class ClientAccountManager { + chains: Chains; + seedPhrase: string; + l1Iterator: Generator; + l2Iterator: Generator; + numAccounts: number; + + constructor(chains: Chains, seedPhrase: string, numAccounts: number) { + this.seedPhrase = seedPhrase; + this.chains = chains; + this.numAccounts = numAccounts; + this.l1Iterator = this.iterFundedAccounts(this.chains.l1, this.numAccounts); + this.l2Iterator = this.iterFundedAccounts(this.chains.l2, this.numAccounts); + } + + public(): PublicClients { + return createPublicClients(this.chains); + } + wallet(l1Account: Account, l2Account: Account): WalletClients { + return createWalletClients(this.chains, l1Account, l2Account); + } + + private deriveAccount(chain: Chain, index: number): HDAccount { + return mnemonicToAccount(this.seedPhrase, { + // changeIndex: chain.id, //NOTE: for now use same accounts on different chains + // maps to the last number in the path: + addressIndex: index, + }); + } + async fundAccountsFrom(privkey: Hex): Promise { + const funderAccount = privateKeyToAccount(privkey); + const funder = createWalletClients( + this.chains, + funderAccount, + funderAccount, + ); + const pub = this.public(); + const res = await Promise.allSettled([ + this._fundAccountsForChainFrom( + funder.l1 as ViemWalletClient, + pub.l1 as ViemPublicClient, + ), + this._fundAccountsForChainFrom( + funder.l2 as ViemWalletClient, + pub.l2 as ViemPublicClient, + ), + ]); + // Flatten the results and check for success + const successes = res + .filter((result) => result.status === "fulfilled") + .map( + (result) => + (result as PromiseFulfilledResult>).value, + ); + + const errors = res + .filter((result) => result.status === "rejected") + .map((result) => (result as PromiseRejectedResult).reason); + + if (errors.length > 0) { + throw new Error(`funding accounts failed: ${JSON.stringify(errors)}`); + } + successes.forEach((receipts) => { + receipts.forEach((receipt) => { + if (receipt.status !== "success") { + throw new Error( + `funding accounts failed with 'reverted' transaction, ` + + `tx-hash: ${receipt.transactionHash}`, + ); + } + }); + }); + } + private async _fundAccountsForChainFrom( + leader: ViemWalletClient, + publicClient: ViemPublicClient, + ): Promise> { + const it = this.iterFundedAccounts(leader.chain, this.numAccounts); + const balance = await publicClient.getBalance({ + address: leader.account.address, + }); + + const gasPrice = await publicClient.getGasPrice(); + // overshoot the current gas-price for fluctuation + const maxFeePerGas = (gasPrice * BigInt(15)) / BigInt(10); + // We need some funds for gas to distribute to the test accounts. + const feePerTx = maxFeePerGas * BigInt(21000); + const sendBalance = + (balance as bigint) / BigInt(this.numAccounts) - feePerTx; + if (sendBalance <= BigInt(0)) { + throw Error("leader account insufficient funds"); + } + + const receipts: Array> = []; + let transactionCount = await publicClient.getTransactionCount({ + address: leader.account.address, + }); + for (const acc of it) { + if (acc.address === leader.account.address) { + console.log("skipping funding leader account"); + continue; + } + await sleep(500); + const hash = await leader.sendTransaction({ + type: "eip1559", + maxFeePerGas: maxFeePerGas, + value: sendBalance, + to: acc.address, + nonce: transactionCount, + }); + transactionCount++; + receipts.push( + publicClient.waitForTransactionReceipt({ + hash: hash, + }), + ); + } + return await Promise.all(receipts); + } + + reset(newNumAccounts: number | null) { + this.numAccounts = newNumAccounts ?? this.numAccounts; + this.l1Iterator = this.iterFundedAccounts(this.chains.l1, this.numAccounts); + this.l2Iterator = this.iterFundedAccounts(this.chains.l2, this.numAccounts); + } + + //TODO: in all 3 methods below: + // what if iterator exhausted + // error or return undefined? + nextFundedL1Account(): HDAccount { + return this.l1Iterator.next().value; + } + nextFundedL2Account(): HDAccount { + return this.l2Iterator.next().value; + } + private *iterFundedAccounts(chain: Chain, num: number): Generator { + for (let i = 0; i < num; i++) { + yield this.deriveAccount(chain, i); + } + } +} + +export type { PublicClients, WalletClients }; diff --git a/op-e2e/celo/packages/celo-test-viem/clients/erc20.d.ts b/op-e2e/celo/packages/celo-test-viem/clients/erc20.d.ts new file mode 100644 index 0000000000000..d951825e71cd2 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/clients/erc20.d.ts @@ -0,0 +1,438 @@ +import type { + BaseERC20, + ERC20, + erc20Abi, + ERC20Amount, + ERC20Permit, + ERC20PermitData, + PermitType, +} from "reverse-mirage"; +import type { + Account, + Address, + Chain, + ContractFunctionArgs, + Hash, + Hex, + ReadContractParameters, + SignTypedDataParameters, + SimulateContractParameters, + SimulateContractReturnType, +} from "viem"; + +export type GetERC20Parameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick & + Partial>; +}; +export type GetERC20ReturnType = ERC20; + +export type GetERC20AllowanceParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: TERC20; + owner: Address; + spender: Address; +}; +export type GetERC20AllowanceReturnType = + ERC20Amount; + +export type GetERC20BalanceOfParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: TERC20; + address: Address; +}; +export type GetERC20BalanceOfReturnType = + ERC20Amount; + +export type GetERC20DecimalsParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick; +}; +export type GetERC20DecimalsReturnType = number; + +export type GetERC20DomainSeparatorParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick; +}; +export type GetERC20DomainSeparatorReturnType = Hex; + +export type GetERC20NameParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick; +}; +export type GetERC20NameReturnType = string; + +export type GetERC20PermitParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick & + Partial>; +}; +export type GetERC20PermitReturnType = ERC20Permit; + +export type GetERC20PermitDataParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: TERC20; + address: Address; +}; +export type GetERC20PermitDataReturnType = + ERC20PermitData; + +export type GetERC20PermitNonceParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: ERC20Permit; + address: Address; +}; +export type GetERC20PermitNonceReturnType = bigint; + +export type GetERC20SymbolParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick; +}; +export type GetERC20SymbolReturnType = string; + +export type GetERC20TotalSupplyParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: TERC20; +}; +export type GetERC20TotalSupplyReturnType = + ERC20Amount; + +export type GetIsERC20PermitParameters = Omit< + ReadContractParameters, + "address" | "abi" | "functionName" | "args" +> & { + erc20: Pick & + Partial> & + Partial>; +}; +export type GetIsERC20PermitReturnType = ERC20 | ERC20Permit; +export type SignERC20PermitParameters = + Pick< + SignTypedDataParameters, + "account" + > & { + permitData: ERC20PermitData; + spender: Address; + deadline: bigint; + }; + +export type ERC20ApproveParameters = { + amount: ERC20Amount; + spender: Address; +}; +export type SimulateERC20ApproveParameters< + chain extends Chain | undefined = Chain | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = Omit< + SimulateContractParameters< + typeof erc20Abi, + "approve", + ContractFunctionArgs, + chain, + chainOverride, + accountOverride + >, + "args" | "address" | "abi" | "functionName" +> & { + args: ERC20ApproveParameters; +}; +export type SimulateERC20ApproveReturnType< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = SimulateContractReturnType< + typeof erc20Abi, + "approve", + ContractFunctionArgs, + chain, + account, + chainOverride, + accountOverride +>; +export type ERC20PermitParameters = { + signature: Hex; + owner: Address; + spender: Address; + permitData: ERC20PermitData; + deadline: bigint; +}; +export type SimulateERC20PermitParameters< + chain extends Chain | undefined = Chain | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = Omit< + SimulateContractParameters< + typeof erc20Abi, + "permit", + ContractFunctionArgs, + chain, + chainOverride, + accountOverride + >, + "args" | "address" | "abi" | "functionName" +> & { + args: ERC20PermitParameters; +}; +export type SimulateERC20PermitReturnType< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = SimulateContractReturnType< + typeof erc20Abi, + "permit", + ContractFunctionArgs, + chain, + account, + chainOverride, + accountOverride +>; + +export type ERC20TransferParameters = { + amount: ERC20Amount; + to: Address; +}; +export type SimulateERC20TransferParameters< + chain extends Chain | undefined = Chain | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = Omit< + SimulateContractParameters< + typeof erc20Abi, + "transfer", + ContractFunctionArgs, + chain, + chainOverride, + accountOverride + >, + "args" | "address" | "abi" | "functionName" +> & { + args: ERC20TransferParameters; +}; +export type SimulateERC20TransferReturnType< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = SimulateContractReturnType< + typeof erc20Abi, + "transfer", + ContractFunctionArgs, + chain, + account, + chainOverride, + accountOverride +>; + +export type ERC20TransferFromParameters = { + amount: ERC20Amount; + from: Address; + to: Address; +}; +export type SimulateERC20TransferFromParameters< + chain extends Chain | undefined = Chain | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = Omit< + SimulateContractParameters< + typeof erc20Abi, + "transferFrom", + ContractFunctionArgs< + typeof erc20Abi, + "nonpayable" | "payable", + "transferFrom" + >, + chain, + chainOverride, + accountOverride + >, + "args" | "address" | "abi" | "functionName" +> & { + args: ERC20TransferFromParameters; +}; +export type SimulateERC20TransferFromReturnType< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + chainOverride extends Chain | undefined = Chain | undefined, + accountOverride extends Account | Address | undefined = + | Account + | Address + | undefined, +> = SimulateContractReturnType< + typeof erc20Abi, + "transferFrom", + ContractFunctionArgs< + typeof erc20Abi, + "nonpayable" | "payable", + "transferFrom" + >, + chain, + account, + chainOverride, + accountOverride +>; + +export type PublicActionsERC20< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = { + getERC20: (args: GetERC20Parameters) => Promise; + getERC20Allowance: ( + args: GetERC20AllowanceParameters, + ) => Promise>; + getERC20BalanceOf: ( + args: GetERC20BalanceOfParameters, + ) => Promise>; + + getERC20Decimals: ( + args: GetERC20DecimalsParameters, + ) => Promise; + + getERC20DomainSeparator: ( + args: GetERC20DomainSeparatorParameters, + ) => Promise; + + getERC20Name: ( + args: GetERC20NameParameters, + ) => Promise; + + getERC20Permit: ( + args: GetERC20PermitParameters, + ) => Promise; + + getERC20PermitData: ( + args: GetERC20PermitDataParameters, + ) => Promise>; + + getERC20PermitNonce: ( + args: GetERC20PermitNonceParameters, + ) => Promise; + + getERC20Symbol: ( + args: GetERC20SymbolParameters, + ) => Promise; + + getERC20TotalSupply: ( + args: GetERC20TotalSupplyParameters, + ) => Promise>; + + getIsERC20Permit: ( + args: GetIsERC20PermitParameters, + ) => Promise; +}; + +export type WalletActionsERC20< + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, +> = { + signERC20Permit: (args: SignERC20PermitParameters) => Promise; + + simulateERC20Approve: < + chainOverride extends Chain | undefined = undefined, + accountOverride extends Address | Account | undefined = undefined, + >( + args: SimulateERC20ApproveParameters, + ) => Promise< + SimulateERC20ApproveReturnType< + chain, + account, + chainOverride, + accountOverride + > + >; + + simulateERC20Permit: < + chainOverride extends Chain | undefined = undefined, + accountOverride extends Address | Account | undefined = undefined, + >( + args: SimulateERC20PermitParameters, + ) => Promise< + SimulateERC20PermitReturnType< + chain, + account, + chainOverride, + accountOverride + > + >; + + simulateERC20Transfer: < + chainOverride extends Chain | undefined = undefined, + accountOverride extends Address | Account | undefined = undefined, + >( + args: SimulateERC20TransferParameters< + chain, + chainOverride, + accountOverride + >, + ) => Promise< + SimulateERC20TransferReturnType< + chain, + account, + chainOverride, + accountOverride + > + >; + + simulateERC20TransferFrom: < + chainOverride extends Chain | undefined = undefined, + accountOverride extends Address | Account | undefined = undefined, + >( + args: SimulateERC20TransferFromParameters< + chain, + chainOverride, + accountOverride + >, + ) => Promise< + SimulateERC20TransferFromReturnType< + chain, + account, + chainOverride, + accountOverride + > + >; +}; diff --git a/op-e2e/celo/packages/celo-test-viem/clients/erc20.ts b/op-e2e/celo/packages/celo-test-viem/clients/erc20.ts new file mode 100644 index 0000000000000..25bc310d5f8fe --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/clients/erc20.ts @@ -0,0 +1,48 @@ +import type { Account, Chain, Client, Transport } from "viem"; +import * as rmir from "reverse-mirage"; +import type { PublicActionsERC20, WalletActionsERC20 } from "./erc20.d.ts"; + +export function publicActionsERC20() { + return < + transport extends Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + >( + client: Client, + ): PublicActionsERC20 => { + return { + getERC20: (args) => rmir.getERC20(client, args), + getERC20Allowance: (args) => rmir.getERC20Allowance(client, args), + getERC20BalanceOf: (args) => rmir.getERC20BalanceOf(client, args), + getERC20Decimals: (args) => rmir.getERC20Decimals(client, args), + getERC20DomainSeparator: (args) => + rmir.getERC20DomainSeparator(client, args), + getERC20Name: (args) => rmir.getERC20Name(client, args), + getERC20Permit: (args) => rmir.getERC20Permit(client, args), + getERC20PermitData: (args) => rmir.getERC20PermitData(client, args), + getERC20PermitNonce: (args) => rmir.getERC20PermitNonce(client, args), + getERC20Symbol: (args) => rmir.getERC20Symbol(client, args), + getERC20TotalSupply: (args) => rmir.getERC20TotalSupply(client, args), + getIsERC20Permit: (args) => rmir.getIsERC20Permit(client, args), + }; + }; +} + +export function walletActionsERC20() { + return < + transport extends Transport, + chain extends Chain | undefined = Chain | undefined, + account extends Account | undefined = Account | undefined, + >( + client: Client, + ): WalletActionsERC20 => { + return { + signERC20Permit: (args) => rmir.signERC20Permit(client, args), + simulateERC20Approve: (args) => rmir.simulateERC20Approve(client, args), + simulateERC20Permit: (args) => rmir.simulateERC20Permit(client, args), + simulateERC20Transfer: (args) => rmir.simulateERC20Transfer(client, args), + simulateERC20TransferFrom: (args) => + rmir.simulateERC20TransferFrom(client, args), + }; + }; +} diff --git a/op-e2e/celo/packages/celo-test-viem/deno.json b/op-e2e/celo/packages/celo-test-viem/deno.json new file mode 100644 index 0000000000000..dc4ed4da6bbff --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/deno.json @@ -0,0 +1,9 @@ +{ + "name": "@celo-test/viem", + "version": "0.1.0", + "exports": "./main.ts", + "imports": { + "reverse-mirage": "npm:reverse-mirage@^1.1.0", + "viem": "npm:viem@^2.22.16" + } +} diff --git a/op-e2e/celo/packages/celo-test-viem/deno.lock b/op-e2e/celo/packages/celo-test-viem/deno.lock new file mode 100644 index 0000000000000..2865793e5a634 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/deno.lock @@ -0,0 +1,116 @@ +{ + "version": "4", + "specifiers": { + "jsr:@std/assert@1": "1.0.9", + "jsr:@std/internal@^1.0.5": "1.0.5", + "npm:reverse-mirage@^1.1.0": "1.1.0_viem@2.21.55__ws@8.18.0", + "npm:viem@^2.21.55": "2.21.55_ws@8.18.0" + }, + "jsr": { + "@std/assert@1.0.9": { + "integrity": "a9f0c611a869cc791b26f523eec54c7e187aab7932c2c8e8bea0622d13680dcd", + "dependencies": [ + "jsr:@std/internal" + ] + }, + "@std/internal@1.0.5": { + "integrity": "54a546004f769c1ac9e025abd15a76b6671ddc9687e2313b67376125650dc7ba" + } + }, + "npm": { + "@adraffy/ens-normalize@1.11.0": { + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==" + }, + "@noble/curves@1.7.0": { + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "dependencies": [ + "@noble/hashes@1.6.0" + ] + }, + "@noble/hashes@1.6.0": { + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==" + }, + "@noble/hashes@1.6.1": { + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==" + }, + "@scure/base@1.2.1": { + "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==" + }, + "@scure/bip32@1.6.0": { + "integrity": "sha512-82q1QfklrUUdXJzjuRU7iG7D7XiFx5PHYVS0+oeNKhyDLT7WPqs6pBcM2W5ZdwOwKCwoE1Vy1se+DHjcXwCYnA==", + "dependencies": [ + "@noble/curves", + "@noble/hashes@1.6.1", + "@scure/base" + ] + }, + "@scure/bip39@1.5.0": { + "integrity": "sha512-Dop+ASYhnrwm9+HA/HwXg7j2ZqM6yk2fyLWb5znexjctFY3+E+eU8cIWI0Pql0Qx4hPZCijlGq4OL71g+Uz30A==", + "dependencies": [ + "@noble/hashes@1.6.1", + "@scure/base" + ] + }, + "abitype@1.0.7": { + "integrity": "sha512-ZfYYSktDQUwc2eduYu8C4wOs+RDPmnRYMh7zNfzeMtGGgb0U+6tLGjixUic6mXf5xKKCcgT5Qp6cv39tOARVFw==" + }, + "eventemitter3@5.0.1": { + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "isows@1.0.6_ws@8.18.0": { + "integrity": "sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw==", + "dependencies": [ + "ws" + ] + }, + "ox@0.1.2": { + "integrity": "sha512-ak/8K0Rtphg9vnRJlbOdaX9R7cmxD2MiSthjWGaQdMk3D7hrAlDoM+6Lxn7hN52Za3vrXfZ7enfke/5WjolDww==", + "dependencies": [ + "@adraffy/ens-normalize", + "@noble/curves", + "@noble/hashes@1.6.1", + "@scure/bip32", + "@scure/bip39", + "abitype", + "eventemitter3" + ] + }, + "reverse-mirage@1.1.0_viem@2.21.55__ws@8.18.0": { + "integrity": "sha512-cA1O7GR0pn4rMFoaiEG7Skms9GenuW91DtCxeR5hphyNhH90eowV4RmUVlVPVS11CPkezm/iUjnCfmxlHri05w==", + "dependencies": [ + "viem" + ] + }, + "viem@2.21.55_ws@8.18.0": { + "integrity": "sha512-PgXew7C11cAuEtOSgRyQx2kJxEOPUwIwZA9dMglRByqJuFVA7wSGZZOOo/93iylAA8E15bEdqy9xulU3oKZ70Q==", + "dependencies": [ + "@noble/curves", + "@noble/hashes@1.6.1", + "@scure/bip32", + "@scure/bip39", + "abitype", + "isows", + "ox", + "webauthn-p256", + "ws" + ] + }, + "webauthn-p256@0.0.10": { + "integrity": "sha512-EeYD+gmIT80YkSIDb2iWq0lq2zbHo1CxHlQTeJ+KkCILWpVy3zASH3ByD4bopzfk0uCwXxLqKGLqp2W4O28VFA==", + "dependencies": [ + "@noble/curves", + "@noble/hashes@1.6.1" + ] + }, + "ws@8.18.0": { + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==" + } + }, + "workspace": { + "dependencies": [ + "jsr:@std/assert@1", + "npm:reverse-mirage@^1.1.0", + "npm:viem@^2.21.55" + ] + } +} diff --git a/op-e2e/celo/packages/celo-test-viem/main.ts b/op-e2e/celo/packages/celo-test-viem/main.ts new file mode 100644 index 0000000000000..07637a9eb9837 --- /dev/null +++ b/op-e2e/celo/packages/celo-test-viem/main.ts @@ -0,0 +1,19 @@ +export type { DepositReturnType } from "./actions/deposit.ts"; +export { deposit, waitForDepositReceiptL2 } from "./actions/deposit.ts"; +export { initiateBridgeERC20To } from "./actions/bridge.ts"; +export { initiateNativeWithdraw, settleWithdraw } from "./actions/withdraw.ts"; +export type { WithdrawReturnType } from "./actions/withdraw.ts"; +export { ClientAccountManager } from "./clients/clients.ts"; +export type { PublicClients, WalletClients } from "./clients/clients.d.ts"; +export type { + ChainContractsCeloL2, + Chains, + ContractAddressesL1, + L2Chain, +} from "./chains.ts"; +export { makeChainConfigs } from "./chains.ts"; +export { + type BridgedERC20TokenPair, + getContractAddress, + getStandardBridgeAddresses, +} from "./actions/common.ts"; diff --git a/op-e2e/celo/run_all_tests.sh b/op-e2e/celo/run_all_tests.sh deleted file mode 100755 index 0021e440e032b..0000000000000 --- a/op-e2e/celo/run_all_tests.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -#shellcheck disable=SC1091 -set -eo pipefail - -SCRIPT_DIR=$(readlink -f "$(dirname "$0")") -TEST_GLOB=$1 -spawn_devnet=${SPAWN_DEVNET:-true} - -if [[ $spawn_devnet != false ]]; then - ## Start geth - cd "$SCRIPT_DIR/../.." || exit 1 - trap 'cd "$SCRIPT_DIR/../.." && make devnet-down' EXIT # kill bg job at exit - DEVNET_CELO=true make devnet-up -fi - -cd "$SCRIPT_DIR" || exit 1 -source "$SCRIPT_DIR/shared.sh" - -# Wait for geth to be ready -for _ in {1..10}; do - if cast block &>/dev/null; then - echo geth ready - break - fi - sleep 0.2 -done - -## Run tests -echo Start tests -failures=0 -tests=0 -for f in test_*"$TEST_GLOB"*; do - echo -e "\nRun $f" - if "./$f"; then - tput setaf 2 || true - echo "PASS $f" - else - tput setaf 1 || true - echo "FAIL $f ❌" - ((failures++)) || true - fi - tput sgr0 || true - ((tests++)) || true -done - -## Final summary -echo -if [[ $failures -eq 0 ]]; then - tput setaf 2 || true - echo All tests succeeded! -else - tput setaf 1 || true - echo "$failures/$tests" failed. -fi -tput sgr0 || true -exit "$failures" diff --git a/op-e2e/celo/shared.sh b/op-e2e/celo/shared.sh deleted file mode 100644 index 7d15e83d45efe..0000000000000 --- a/op-e2e/celo/shared.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -#shellcheck disable=SC2034 # unused vars make sense in a shared file - -export ETH_RPC_URL=http://localhost:9545 -export ETH_RPC_URL_L1=http://localhost:8545 - -export ACC_PRIVKEY=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 -ACC_ADDR=$(cast wallet address $ACC_PRIVKEY) -export ACC_ADDR -export REGISTRY_ADDR=0x000000000000000000000000000000000000ce10 -export TOKEN_ADDR=0x471ece3750da237f93b8e339c536989b8978a438 -export FEE_CURRENCY_DIRECTORY_ADDR=0x9212Fb72ae65367A7c887eC4Ad9bE310BAC611BF diff --git a/op-e2e/celo/src/OptimismPortal.js b/op-e2e/celo/src/OptimismPortal.js deleted file mode 100644 index 80b02f3834142..0000000000000 --- a/op-e2e/celo/src/OptimismPortal.js +++ /dev/null @@ -1,658 +0,0 @@ -export const OptimismPortalABI = [ - { - type: 'constructor', - inputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'receive', - stateMutability: 'payable', - }, - { - type: 'function', - name: 'balance', - inputs: [], - outputs: [ - { - name: '', - type: 'uint256', - internalType: 'uint256', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'depositERC20Transaction', - inputs: [ - { - name: '_to', - type: 'address', - internalType: 'address', - }, - { - name: '_mint', - type: 'uint256', - internalType: 'uint256', - }, - { - name: '_value', - type: 'uint256', - internalType: 'uint256', - }, - { - name: '_gasLimit', - type: 'uint64', - internalType: 'uint64', - }, - { - name: '_isCreation', - type: 'bool', - internalType: 'bool', - }, - { - name: '_data', - type: 'bytes', - internalType: 'bytes', - }, - ], - outputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'function', - name: 'depositTransaction', - inputs: [ - { - name: '_to', - type: 'address', - internalType: 'address', - }, - { - name: '_value', - type: 'uint256', - internalType: 'uint256', - }, - { - name: '_gasLimit', - type: 'uint64', - internalType: 'uint64', - }, - { - name: '_isCreation', - type: 'bool', - internalType: 'bool', - }, - { - name: '_data', - type: 'bytes', - internalType: 'bytes', - }, - ], - outputs: [], - stateMutability: 'payable', - }, - { - type: 'function', - name: 'donateETH', - inputs: [], - outputs: [], - stateMutability: 'payable', - }, - { - type: 'function', - name: 'finalizeWithdrawalTransaction', - inputs: [ - { - name: '_tx', - type: 'tuple', - internalType: 'struct Types.WithdrawalTransaction', - components: [ - { - name: 'nonce', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'sender', - type: 'address', - internalType: 'address', - }, - { - name: 'target', - type: 'address', - internalType: 'address', - }, - { - name: 'value', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'gasLimit', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'data', - type: 'bytes', - internalType: 'bytes', - }, - ], - }, - ], - outputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'function', - name: 'finalizedWithdrawals', - inputs: [ - { - name: '', - type: 'bytes32', - internalType: 'bytes32', - }, - ], - outputs: [ - { - name: '', - type: 'bool', - internalType: 'bool', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'guardian', - inputs: [], - outputs: [ - { - name: '', - type: 'address', - internalType: 'address', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'initialize', - inputs: [ - { - name: '_l2Oracle', - type: 'address', - internalType: 'contract L2OutputOracle', - }, - { - name: '_systemConfig', - type: 'address', - internalType: 'contract SystemConfig', - }, - { - name: '_superchainConfig', - type: 'address', - internalType: 'contract SuperchainConfig', - }, - { - name: '_initialBalance', - type: 'uint256', - internalType: 'uint256', - }, - ], - outputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'function', - name: 'isOutputFinalized', - inputs: [ - { - name: '_l2OutputIndex', - type: 'uint256', - internalType: 'uint256', - }, - ], - outputs: [ - { - name: '', - type: 'bool', - internalType: 'bool', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'l2Oracle', - inputs: [], - outputs: [ - { - name: '', - type: 'address', - internalType: 'contract L2OutputOracle', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'l2Sender', - inputs: [], - outputs: [ - { - name: '', - type: 'address', - internalType: 'address', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'minimumGasLimit', - inputs: [ - { - name: '_byteCount', - type: 'uint64', - internalType: 'uint64', - }, - ], - outputs: [ - { - name: '', - type: 'uint64', - internalType: 'uint64', - }, - ], - stateMutability: 'pure', - }, - { - type: 'function', - name: 'params', - inputs: [], - outputs: [ - { - name: 'prevBaseFee', - type: 'uint128', - internalType: 'uint128', - }, - { - name: 'prevBoughtGas', - type: 'uint64', - internalType: 'uint64', - }, - { - name: 'prevBlockNum', - type: 'uint64', - internalType: 'uint64', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'paused', - inputs: [], - outputs: [ - { - name: 'paused_', - type: 'bool', - internalType: 'bool', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'proveWithdrawalTransaction', - inputs: [ - { - name: '_tx', - type: 'tuple', - internalType: 'struct Types.WithdrawalTransaction', - components: [ - { - name: 'nonce', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'sender', - type: 'address', - internalType: 'address', - }, - { - name: 'target', - type: 'address', - internalType: 'address', - }, - { - name: 'value', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'gasLimit', - type: 'uint256', - internalType: 'uint256', - }, - { - name: 'data', - type: 'bytes', - internalType: 'bytes', - }, - ], - }, - { - name: '_l2OutputIndex', - type: 'uint256', - internalType: 'uint256', - }, - { - name: '_outputRootProof', - type: 'tuple', - internalType: 'struct Types.OutputRootProof', - components: [ - { - name: 'version', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'stateRoot', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'messagePasserStorageRoot', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'latestBlockhash', - type: 'bytes32', - internalType: 'bytes32', - }, - ], - }, - { - name: '_withdrawalProof', - type: 'bytes[]', - internalType: 'bytes[]', - }, - ], - outputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'function', - name: 'provenWithdrawals', - inputs: [ - { - name: '', - type: 'bytes32', - internalType: 'bytes32', - }, - ], - outputs: [ - { - name: 'outputRoot', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: 'timestamp', - type: 'uint128', - internalType: 'uint128', - }, - { - name: 'l2OutputIndex', - type: 'uint128', - internalType: 'uint128', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'setGasPayingToken', - inputs: [ - { - name: '_token', - type: 'address', - internalType: 'address', - }, - { - name: '_decimals', - type: 'uint8', - internalType: 'uint8', - }, - { - name: '_name', - type: 'bytes32', - internalType: 'bytes32', - }, - { - name: '_symbol', - type: 'bytes32', - internalType: 'bytes32', - }, - ], - outputs: [], - stateMutability: 'nonpayable', - }, - { - type: 'function', - name: 'superchainConfig', - inputs: [], - outputs: [ - { - name: '', - type: 'address', - internalType: 'contract SuperchainConfig', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'systemConfig', - inputs: [], - outputs: [ - { - name: '', - type: 'address', - internalType: 'contract SystemConfig', - }, - ], - stateMutability: 'view', - }, - { - type: 'function', - name: 'version', - inputs: [], - outputs: [ - { - name: '', - type: 'string', - internalType: 'string', - }, - ], - stateMutability: 'view', - }, - { - type: 'event', - name: 'Initialized', - inputs: [ - { - name: 'version', - type: 'uint8', - indexed: false, - internalType: 'uint8', - }, - ], - anonymous: false, - }, - { - type: 'event', - name: 'TransactionDeposited', - inputs: [ - { - name: 'from', - type: 'address', - indexed: true, - internalType: 'address', - }, - { - name: 'to', - type: 'address', - indexed: true, - internalType: 'address', - }, - { - name: 'version', - type: 'uint256', - indexed: true, - internalType: 'uint256', - }, - { - name: 'opaqueData', - type: 'bytes', - indexed: false, - internalType: 'bytes', - }, - ], - anonymous: false, - }, - { - type: 'event', - name: 'WithdrawalFinalized', - inputs: [ - { - name: 'withdrawalHash', - type: 'bytes32', - indexed: true, - internalType: 'bytes32', - }, - { - name: 'success', - type: 'bool', - indexed: false, - internalType: 'bool', - }, - ], - anonymous: false, - }, - { - type: 'event', - name: 'WithdrawalProven', - inputs: [ - { - name: 'withdrawalHash', - type: 'bytes32', - indexed: true, - internalType: 'bytes32', - }, - { - name: 'from', - type: 'address', - indexed: true, - internalType: 'address', - }, - { - name: 'to', - type: 'address', - indexed: true, - internalType: 'address', - }, - ], - anonymous: false, - }, - { - type: 'error', - name: 'BadTarget', - inputs: [], - }, - { - type: 'error', - name: 'CallPaused', - inputs: [], - }, - { - type: 'error', - name: 'ContentLengthMismatch', - inputs: [], - }, - { - type: 'error', - name: 'EmptyItem', - inputs: [], - }, - { - type: 'error', - name: 'GasEstimation', - inputs: [], - }, - { - type: 'error', - name: 'InvalidDataRemainder', - inputs: [], - }, - { - type: 'error', - name: 'InvalidHeader', - inputs: [], - }, - { - type: 'error', - name: 'LargeCalldata', - inputs: [], - }, - { - type: 'error', - name: 'NoValue', - inputs: [], - }, - { - type: 'error', - name: 'NonReentrant', - inputs: [], - }, - { - type: 'error', - name: 'OnlyCustomGasToken', - inputs: [], - }, - { - type: 'error', - name: 'OutOfGas', - inputs: [], - }, - { - type: 'error', - name: 'SmallGasLimit', - inputs: [], - }, - { - type: 'error', - name: 'TransferFailed', - inputs: [], - }, - { - type: 'error', - name: 'Unauthorized', - inputs: [], - }, - { - type: 'error', - name: 'UnexpectedList', - inputs: [], - }, - { - type: 'error', - name: 'UnexpectedString', - inputs: [], - }, -] diff --git a/op-e2e/celo/src/chain.js b/op-e2e/celo/src/chain.js deleted file mode 100644 index 25dac875054dd..0000000000000 --- a/op-e2e/celo/src/chain.js +++ /dev/null @@ -1,71 +0,0 @@ -import { chainConfig } from 'viem/op-stack' -import { defineChain } from 'viem' - -export function makeChainConfigs(l1ChainID, l2ChainID, contractAddresses) { - console.log(process.env) - return { - l2: defineChain({ - formatters: { - ...chainConfig.formatters, - }, - serializers: { - ...chainConfig.serializers, - }, - id: l2ChainID, - name: 'Celo', - nativeCurrency: { - decimals: 18, - name: 'Celo - native currency', - symbol: 'CELO', - }, - rpcUrls: { - default: { - http: [process.env.ETH_RPC_URL], - }, - }, - contracts: { - ...chainConfig.contracts, - l2OutputOracle: { - [l1ChainID]: { - address: contractAddresses.L2OutputOracleProxy, - }, - }, - disputeGameFactory: { - [l1ChainID]: { - address: contractAddresses.DisputeGameFactoryProxy, - }, - }, - portal: { - [l1ChainID]: { - address: contractAddresses.OptimismPortalProxy, - }, - }, - l1StandardBridge: { - [l1ChainID]: { - address: contractAddresses.L1StandardBridgeProxy, - }, - }, - }, - }), - l1: defineChain({ - id: l1ChainID, - testnet: true, - name: 'Ethereum L1', - nativeCurrency: { - decimals: 18, - name: 'Ether', - symbol: 'ETH', - }, - rpcUrls: { - default: { - http: [process.env.ETH_RPC_URL_L1], - }, - }, - contracts: { - multicall3: { - address: contractAddresses.Multicall3, - }, - }, - }), - } -} diff --git a/op-e2e/celo/src/config.js b/op-e2e/celo/src/config.js deleted file mode 100644 index 7e410dffbdd0d..0000000000000 --- a/op-e2e/celo/src/config.js +++ /dev/null @@ -1,98 +0,0 @@ -import { createPublicClient, createWalletClient, http } from 'viem' -import { readContract } from 'viem/actions' -import { constructDepositCustomGas } from './deposit.js' -import { - getERC20, - simulateERC20Transfer, - getERC20BalanceOf, - getERC20Symbol, - getERC20Decimals, - simulateERC20Approve, -} from 'reverse-mirage' -import { - publicActionsL1, - publicActionsL2, - walletActionsL1, - walletActionsL2, -} from 'viem/op-stack' - -export function makeReadContract(contractAddress, contractABI) { - return (client) => { - return { - readContract: (args) => { - const rcArgs = { - address: contractAddress, - abi: contractABI, - functionName: args.functionName, - args: args.args, - } - return readContract(client, rcArgs) - }, - } - } -} - -export function erc20PublicActions(client) { - return { - getERC20: (args) => getERC20(client, args), - getERC20Symbol: (args) => getERC20Symbol(client, args), - getERC20BalanceOf: (args) => getERC20BalanceOf(client, args), - getERC20Decimals: (args) => getERC20Decimals(client, args), - } -} -export function erc20WalletActions(client) { - return { - simulateERC20Transfer: (args) => { - return simulateERC20Transfer(client, { args: args }) - }, - simulateERC20Approve: (args) => { - return simulateERC20Approve(client, { args: args }) - }, - } -} - -export function celoL1PublicActions(client) { - return { - prepareDepositGasPayingTokenERC20: (args) => { - return constructDepositCustomGas(client, args) - }, - } -} - -export function setupClients(l1ChainConfig, l2ChainConfig, account) { - return { - l1: { - public: createPublicClient({ - account, - chain: l1ChainConfig, - transport: http(), - }) - .extend(publicActionsL1()) - .extend(celoL1PublicActions) - .extend(erc20PublicActions), - wallet: createWalletClient({ - account, - chain: l1ChainConfig, - transport: http(), - }) - .extend(erc20WalletActions) - .extend(walletActionsL1()), - }, - l2: { - public: createPublicClient({ - account, - chain: l2ChainConfig, - transport: http(), - }) - .extend(publicActionsL2()) - .extend(erc20PublicActions), - wallet: createWalletClient({ - account, - chain: l2ChainConfig, - transport: http(), - }) - .extend(erc20WalletActions) - .extend(walletActionsL2()), - }, - } -} diff --git a/op-e2e/celo/src/deposit.js b/op-e2e/celo/src/deposit.js deleted file mode 100644 index 2e1f5ef17dbdf..0000000000000 --- a/op-e2e/celo/src/deposit.js +++ /dev/null @@ -1,127 +0,0 @@ -import { getL2TransactionHashes } from 'viem/op-stack' -import { OptimismPortalABI } from './OptimismPortal.js' - -// public client functionality -export async function constructDepositCustomGas(client, parameters) { - const { - account, - chain = client.chain, - gas, - maxFeePerGas, - maxPriorityFeePerGas, - nonce, - request: { - data = '0x', - gas: l2Gas, - isCreation = false, - mint, - to = '0x', - value, - }, - targetChain, - } = parameters - - const portalAddress = (() => { - if (parameters.portalAddress) return parameters.portalAddress - if (chain) return targetChain.contracts.portal[chain.id].address - return Object.values(targetChain.contracts.portal)[0].address - })() - const callArgs = { - account: account, - abi: OptimismPortalABI, - address: portalAddress, - chain, - functionName: 'depositERC20Transaction', - /// @notice Entrypoint to depositing an ERC20 token as a custom gas token. - /// This function depends on a well formed ERC20 token. There are only - /// so many checks that can be done on chain for this so it is assumed - /// that chain operators will deploy chains with well formed ERC20 tokens. - /// @param _to Target address on L2. - /// @param _mint Units of ERC20 token to deposit into L2. - /// @param _value Units of ERC20 token to send on L2 to the recipient. - /// @param _gasLimit Amount of L2 gas to purchase by burning gas on L1. - /// @param _isCreation Whether or not the transaction is a contract creation. - /// @param _data Data to trigger the recipient with. - args: [ - isCreation ? zeroAddress : to, - mint ?? value ?? 0n, - value ?? mint ?? 0n, - l2Gas, - isCreation, - data, - ], - maxFeePerGas, - maxPriorityFeePerGas, - nonce, - } - const gas_ = - typeof gas !== 'number' && gas !== null - ? await client.estimateContractGas(callArgs) - : undefined - callArgs.gas = gas_ - const result = client.simulateContract(callArgs) - return { result: result, args: callArgs } -} - -export async function deposit(args, config) { - var spentGas = BigInt(0) - const depositArgs = await config.client.l2.public.buildDepositTransaction({ - mint: args.mint, - to: args.to, - }) - - const celoToken = await config.client.l1.public.getERC20({ - erc20: { - address: config.addresses.CustomGasTokenProxy, - chainID: config.client.l1.public.chain.id, - }, - }) - const portalAddress = - config.client.l2.public.chain.contracts.portal[ - config.client.l1.public.chain.id - ].address - const approve = await config.client.l1.wallet.simulateERC20Approve({ - amount: { amount: args.mint, token: celoToken }, - spender: portalAddress, - }) - if (!approve.result) { - return { - success: false, - l1GasPayment: spentGas, - } - } - - const approveHash = await config.client.l1.wallet.writeContract( - approve.request - ) - // Wait for the L1 transaction to be processed. - const approveReceipt = - await config.client.l1.public.waitForTransactionReceipt({ - hash: approveHash, - }) - - spentGas += approveReceipt.gasUsed * approveReceipt.effectiveGasPrice - const dep = - await config.client.l1.public.prepareDepositGasPayingTokenERC20(depositArgs) - const hash = await config.client.l1.wallet.writeContract(dep.args) - - // Wait for the L1 transaction to be processed. - const receipt = await config.client.l1.public.waitForTransactionReceipt({ - hash: hash, - }) - - spentGas += receipt.gasUsed * receipt.effectiveGasPrice - - // Get the L2 transaction hash from the L1 transaction receipt. - const [l2Hash] = getL2TransactionHashes(receipt) - - // Wait for the L2 transaction to be processed. - const l2Receipt = await config.client.l2.public.waitForTransactionReceipt({ - hash: l2Hash, - }) - - return { - success: l2Receipt.status == 'success', - l1GasPayment: spentGas, - } -} diff --git a/op-e2e/celo/src/withdraw.js b/op-e2e/celo/src/withdraw.js deleted file mode 100644 index ca98e43a5a6b9..0000000000000 --- a/op-e2e/celo/src/withdraw.js +++ /dev/null @@ -1,70 +0,0 @@ -export const withdraw = async function (args, config) { - const initiateHash = await config.client.l2.wallet.initiateWithdrawal({ - request: { - gas: args.gas, - to: args.to, - value: args.amount, - }, - }) - const receipt = await config.client.l2.public.waitForTransactionReceipt({ - hash: initiateHash, - }) - console.log('receipt', receipt) - - const l2GasPayment = - receipt.gasUsed * receipt.effectiveGasPrice + receipt.l1fee - - // FIXME: this blocks longer, the longer the devnet is running, see - // https://github.com/ethereum-optimism/optimism/issues/7668 - // NOTE: this function requires the mulitcall contract to be deployed - // on the L1 chain. - const { output, withdrawal } = await config.client.l1.public.waitToProve({ - receipt, - targetChain: config.client.l2.public.chain, - }) - // - - const proveWithdrawalArgs = - await config.client.l2.public.buildProveWithdrawal({ - output, - withdrawal, - }) - const proveHash = - await config.client.l1.wallet.proveWithdrawal(proveWithdrawalArgs) - - const proveReceipt = await config.client.l1.public.waitForTransactionReceipt({ - hash: proveHash, - }) - if (proveReceipt.status != 'success') { - return { - success: false, - l2GasPayment: l2GasPayment, - } - } - - await config.client.l1.public.waitToFinalize({ - withdrawalHash: withdrawal.withdrawalHash, - targetChain: config.client.l2.public.chain, - }) - - // HACK: the waitToFinalize does not seem to calculate the wait time - // correctly..., lets hardcode a wait time for now to see if it can work. - // In theory viem is not waiting an additional DISPUTE_GAME_FINALITY_DELAY_SECONDS. - // The current default value for this is 6, but this was not enough in manual testing. - // TODO: fix this upstream in viem... - await new Promise((res) => setTimeout(res, 16 * 1000)) - const finalizeHash = await config.client.l1.wallet.finalizeWithdrawal({ - targetChain: config.client.l2.public.chain, - withdrawal, - }) - - const finalizeReceipt = - await config.client.l1.public.waitForTransactionReceipt({ - hash: finalizeHash, - }) - - return { - success: finalizeReceipt.status == 'success', - l2GasPayment: l2GasPayment, - } -} diff --git a/op-e2e/celo/test_npm.sh b/op-e2e/celo/test_npm.sh deleted file mode 100755 index 89783597300cf..0000000000000 --- a/op-e2e/celo/test_npm.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -#shellcheck disable=SC1091 -set -eo pipefail - -source shared.sh -npm test diff --git a/op-e2e/celo/tests/deposit_withdraw_erc20_l1.ts b/op-e2e/celo/tests/deposit_withdraw_erc20_l1.ts new file mode 100644 index 0000000000000..81dbbd938b667 --- /dev/null +++ b/op-e2e/celo/tests/deposit_withdraw_erc20_l1.ts @@ -0,0 +1,209 @@ +import { + initiateBridgeERC20To, + settleWithdraw, + waitForDepositReceiptL2, +} from "@celo-test/viem"; +import { sleep } from "@celo-test/util"; +import { setupERC20BridgeToken } from "./util/bridge.ts"; +import type { + BridgedERC20TokenPair, + WithdrawReturnType, +} from "@celo-test/viem"; +import { addTestOptions, Context } from "@celo-test/runner"; +import { parseEther } from "viem"; +import type { BaseERC20, ERC20Amount } from "reverse-mirage"; +import { expect } from "jsr:@std/expect"; + +export const withdrawDepositERC20L1Native = addTestOptions({ + Concurrent: true, + Name: "test-deposit-and-withdraw-back-erc20-l1", + OnlyRunOnL2ChainIDs: undefined, +})(async function (t: Deno.TestContext, ctx: Context): Promise { + // NOTE: important for mainnet test-runs: + // the initial L1 balance should cover the gas fee for + // the bridge contract interactions. + let initialBalanceNative: ERC20Amount; + let initialBalanceBridged: ERC20Amount; + let initialBalanceL2Eth: bigint; + const bridgingAmount: bigint = parseEther("10"); + + let bridgeTokenPair: BridgedERC20TokenPair; + let withdrawResult: WithdrawReturnType; + + if ( + !(await t.step( + "deploy ERC20 contract on l1 and create mintable representation on l2", + async () => { + bridgeTokenPair = await setupERC20BridgeToken( + ctx, + ctx.public().l1.chain, + bridgingAmount, + ); + ctx.storeArtifact("erc20 bridge token metadata", bridgeTokenPair); + }, + )) + ) { + return false; + } + if ( + !(await t.step("setup test and query balances", async () => { + await sleep(10000); + initialBalanceL2Eth = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 initial", initialBalanceL2Eth); + + initialBalanceNative = await ctx.public().l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact("balance native initial", initialBalanceNative.amount); + initialBalanceBridged = await ctx.public().l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance bridged initial", + initialBalanceBridged.amount, + ); + + expect(initialBalanceBridged.amount == BigInt(0)).toBe(true); + expect(initialBalanceNative.amount >= bridgingAmount).toBe(true); + })) + ) { + return false; + } + if ( + !(await t.step("deposit", async () => { + const deposit = await initiateBridgeERC20To( + bridgingAmount, + ctx.wallet().l2.account!.address, + ctx.public().l1.chain, // bridge FROM l1 + bridgeTokenPair, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("deposit result", deposit); + expect(deposit.bridge.receipt).toBeDefined(); + expect(deposit.bridge.receipt?.status === "success").toBe(true); + + const depositReceiptL2 = await waitForDepositReceiptL2( + deposit.bridge.receipt!, + ctx.public(), + ); + ctx.storeArtifact("deposit receipt on l2", depositReceiptL2); + expect(depositReceiptL2.status === "success").toBe(true); + await sleep(10000); + + const balanceNativeAfterDeposit = await ctx + .public() + .l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance native after deposit", + balanceNativeAfterDeposit.amount, + ); + + const balanceBridgedAfterDeposit = await ctx + .public() + .l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance bridged after deposit", + balanceBridgedAfterDeposit.amount, + ); + const balanceL2EthAfterDeposit = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 eth initial", balanceL2EthAfterDeposit); + + expect(balanceNativeAfterDeposit.amount).toBe( + initialBalanceNative.amount - bridgingAmount, + ); + //FIXME: this fails, as the amount is 0 + // maybe this is not deposited yet?? + expect(balanceBridgedAfterDeposit.amount).toBe(bridgingAmount); + // TODO: do we know the exact expected amount? + // FIXME: this is not true in the test, is this correct? + // expect(balanceL2EthAfterDeposit < initialBalanceL2Eth).toBe(true); + })) + ) { + return false; + } + if ( + !(await t.step("withdraw", async () => { + const withdraw = await initiateBridgeERC20To( + bridgingAmount, + ctx.wallet().l1.account!.address, + ctx.public().l2.chain, // bridge FROM L2 + bridgeTokenPair, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("withdraw result", withdraw); + expect(withdraw.bridge.receipt).toBeDefined(); + expect(withdraw.bridge.receipt?.status === "success").toBe(true); + + await sleep(10000); + withdrawResult = await settleWithdraw( + withdraw.bridge.receipt!, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("settle withdraw result", withdrawResult); + expect(withdrawResult.finalize.success).toBe(true); + expect(withdrawResult.prove.success).toBe(true); + + await sleep(10000); + const balanceNativeAfterWithdraw = await ctx + .public() + .l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance native after withdraw", + balanceNativeAfterWithdraw.amount, + ); + const balanceBridgedAfterWithdraw = await ctx + .public() + .l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance bridged after withdraw", + balanceBridgedAfterWithdraw.amount, + ); + + const balanceL2EthAfterWithdraw = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance eth l2 after withdraw", + balanceL2EthAfterWithdraw, + ); + + // XXX: is this true? + // we should have spent some eth for the tx gas + expect(balanceL2EthAfterWithdraw < initialBalanceL2Eth).toBe(true); + + // since we don't pay gas on either network in the + // bridged token, we should be at the same balances as before + expect(balanceNativeAfterWithdraw.amount).toBe( + initialBalanceNative.amount, + ); + expect(balanceBridgedAfterWithdraw.amount).toBe(0n); + + // TODO: also check gas currency balance, + })) + ) { + return false; + } + + return true; +}); diff --git a/op-e2e/celo/tests/setup.js b/op-e2e/celo/tests/setup.js deleted file mode 100644 index e7400420f6748..0000000000000 --- a/op-e2e/celo/tests/setup.js +++ /dev/null @@ -1,64 +0,0 @@ -import { setupClients } from '../src/config.js' -import { makeChainConfigs } from '../src/chain.js' -import { privateKeyToAccount } from 'viem/accounts' -import { readFileSync } from 'fs' - -// Default Anvil dev account that has a pre-allocation on the op-devnet: -// "test test test test test test test test test test test junk" mnemonic account, -// on path "m/44'/60'/0'/0/6". -// Address: 0x976EA74026E726554dB657fA54763abd0C3a0aa9. -const privKey = - '0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e' - -async function waitForNoError(func, timeout) { - const start = Date.now() - while (Date.now() - start < timeout) { - try { - await func() - return true - } catch (error) {} - await new Promise((r) => setTimeout(r, 1000)) - } - return false -} - -async function waitReachable(client, timeout) { - const f = async () => client.getChainId() - return waitForNoError(f, timeout) -} - -async function waitForNextGame(client, l2ChainConfig, timeout) { - const f = async () => - client.waitForNextGame({ - pollingInterval: 500, - l2BlockNumber: 0, - targetChain: l2ChainConfig, - }) - return waitForNoError(f, timeout) -} - -export async function setup() { - const contractAddrs = JSON.parse( - readFileSync('../../.devnet/addresses.json', 'utf8') - ) - const config = { account: privateKeyToAccount(privKey) } - const chainConfig = makeChainConfigs(900, 901, contractAddrs) - - config.client = setupClients( - chainConfig.l1, - chainConfig.l2, - config.account, - contractAddrs - ) - config.addresses = contractAddrs - - const success = await Promise.all([ - waitReachable(config.client.l1.public, 10_000), - waitReachable(config.client.l2.public, 10_000), - waitForNextGame(config.client.l1.public, chainConfig.l2, 60_000), - ]) - if (success.every((v) => v == true)) { - return config - } - throw new Error('l1 and l2 clients not reachable within the deadline') -} diff --git a/op-e2e/celo/tests/tokenduality.test.js b/op-e2e/celo/tests/tokenduality.test.js deleted file mode 100644 index 9980c81fece42..0000000000000 --- a/op-e2e/celo/tests/tokenduality.test.js +++ /dev/null @@ -1,42 +0,0 @@ -import { createAmountFromString } from 'reverse-mirage' -import { setup } from './setup.js' - -const minute = 60 * 1000 -let config = {} - -beforeAll(async () => { - config = await setup() -}, 30_000) - -test( - 'test token duality', - async () => { - const receiverAddr = '0x000000000000000000000000000000000000dEaD' - const dualityToken = await config.client.l2.public.getERC20({ - erc20: { - address: '0x471ece3750da237f93b8e339c536989b8978a438', - chainID: config.client.l2.public.chain.id, - }, - }) - const balanceBefore = await config.client.l2.public.getBalance({ - address: receiverAddr, - }) - - const sendAmount = createAmountFromString(dualityToken, '100') - const { request } = await config.client.l2.wallet.simulateERC20Transfer({ - to: receiverAddr, - amount: sendAmount, - }) - const transferHash = await config.client.l2.wallet.writeContract(request) - const receipt = await config.client.l2.public.waitForTransactionReceipt({ - hash: transferHash, - }) - expect(receipt.status).toBe('success') - const balanceAfter = await config.client.l2.public.getBalance({ - address: receiverAddr, - }) - - expect(balanceAfter).toBe(balanceBefore + sendAmount.amount) - }, - 1 * minute -) diff --git a/op-e2e/celo/tests/tokenduality.ts b/op-e2e/celo/tests/tokenduality.ts new file mode 100644 index 0000000000000..9805652714bc9 --- /dev/null +++ b/op-e2e/celo/tests/tokenduality.ts @@ -0,0 +1,52 @@ +import { addTestOptions, Context } from "@celo-test/runner"; +import type { ChainContractsCeloL2 } from "@celo-test/viem"; +import { createAmountFromString } from "reverse-mirage"; +import { expect } from "jsr:@std/expect"; + +export const tokenduality = addTestOptions({ + Concurrent: true, + Name: "test-tokenduality", + OnlyRunOnL2ChainIDs: [999], +})(async function (_: Deno.TestContext, ctx: Context): Promise { + const l2Contracts: ChainContractsCeloL2 = ctx.public().l2.chain! + .contracts as ChainContractsCeloL2; + const goldTokenAddress = l2Contracts?.goldToken?.address; + if (goldTokenAddress === undefined) { + throw Error("`GoldToken` address is not known"); + } + + const dualityToken = await ctx.public().l2.getERC20({ + erc20: { + address: goldTokenAddress, + chainID: ctx.public().l2.chain!.id, + }, + }); + + const receiverAddr = "0x000000000000000000000000000000000000dEaD"; + const balanceBefore = await ctx.public().l2.getBalance({ + address: receiverAddr, + }); + + //FIXME: only send less than the balance before, and don't specify + // an absolute amount + const sendAmount = createAmountFromString(dualityToken, "0.00001"); + const { request } = await ctx.wallet().l2.simulateERC20Transfer({ + args: { + to: receiverAddr, + amount: sendAmount, + }, + }); + const transferHash = await ctx.wallet().l2.writeContract(request); + const receipt = await ctx.public().l2.waitForTransactionReceipt({ + hash: transferHash, + timeout: 30_000, + }); + + expect(receipt.status).toBe("success"); + const balanceAfter = await ctx.public().l2.getBalance({ + address: receiverAddr, + }); + + expect(balanceAfter).toBe(balanceBefore + sendAmount.amount); + return true; +}); diff --git a/op-e2e/celo/tests/util/bridge.ts b/op-e2e/celo/tests/util/bridge.ts new file mode 100644 index 0000000000000..47aee343c6fe7 --- /dev/null +++ b/op-e2e/celo/tests/util/bridge.ts @@ -0,0 +1,133 @@ +import { join } from "jsr:@std/path"; +import { Context } from "@celo-test/runner"; +import { Address, parseEventLogs } from "viem"; +import { sleep } from "@celo-test/util"; +import { BridgedERC20TokenPair, getContractAddress } from "@celo-test/viem"; +import { expect } from "jsr:@std/expect"; + +export async function setupERC20BridgeToken( + ctx: Context, + nativeChain: any, + bridgingAmount: BigInt, +): Promise { + let pubCNative: any; + let wlltCNative: any; + let pubCRemote: any; + let wlltCRemote: any; + let mntblFactoryRemote: Address | undefined; + + if (nativeChain.id === ctx.public().l1.chain.id) { + pubCNative = ctx.public().l1; + wlltCNative = ctx.wallet().l1; + pubCRemote = ctx.public().l2; + wlltCRemote = ctx.wallet().l2; + mntblFactoryRemote = getContractAddress( + ctx.public().l2.chain, + ctx.public().l2.chain, // get the factory on the remote chain + "optimismMintableERC20Factory", + ); + if (mntblFactoryRemote === undefined) { + throw Error("optimismMintableERC20Factory address not known on l2"); + } + } else if (nativeChain.id === ctx.public().l2.chain.id) { + pubCNative = ctx.public().l2; + wlltCNative = ctx.wallet().l2; + pubCRemote = ctx.public().l1; + wlltCRemote = ctx.wallet().l1; + mntblFactoryRemote = getContractAddress( + ctx.public().l2.chain, + ctx.public().l1.chain, // get the factory on the remote chain + "optimismMintableERC20Factory", + ); + if (mntblFactoryRemote === undefined) { + throw Error("optimismMintableERC20Factory address not known on l1"); + } + } else { + throw Error("native chain does not match any client chain ids"); + } + + const mintableERC20Factory = JSON.parse( + Deno.readTextFileSync( + join( + ctx.config.TestDirPath, + "../contracts/OptimismMintableERC20Factory.json", + ), + ), + ); + const testBridgeToken = JSON.parse( + Deno.readTextFileSync( + join(ctx.config.TestDirPath, "../contracts/TestBridgeToken.json"), + ), + ); + + let txHash = await wlltCNative.deployContract({ + abi: testBridgeToken.abi, + args: [], + bytecode: testBridgeToken.bytecode["object"], + }); + const tokenDeployReceipt = await pubCNative.waitForTransactionReceipt({ + hash: txHash, + }); + if (!tokenDeployReceipt.contractAddress) { + throw Error("receipt didn't have contract address"); + } + // TODO: only mint if we don't have balance? + const nativeTokenAddress: Address = tokenDeployReceipt.contractAddress; + // TODO: use the CREATE2 deployer, + // so that we can reuse the token on mainnet + // TODO: mint as often as long as we don't have the bridgingAmount balance + txHash = await wlltCNative.writeContract({ + address: nativeTokenAddress, + abi: testBridgeToken.abi, + functionName: "mint100", + args: [], + }); + let receipt = await pubCNative.waitForTransactionReceipt({ + hash: txHash, + }); + + const { request } = await pubCRemote.simulateContract({ + account: wlltCRemote.account, + address: mntblFactoryRemote, + abi: mintableERC20Factory.abi, + functionName: "createOptimismMintableERC20", + args: [nativeTokenAddress, "TestBridgeToken", "TBT"], + }); + + txHash = await wlltCRemote.writeContract(request); + receipt = await pubCRemote.waitForTransactionReceipt({ + hash: txHash, + }); + expect(receipt.status).toBe("success"); + const topics = parseEventLogs({ + abi: mintableERC20Factory.abi, + logs: receipt.logs, + }); + expect(topics.length).toBe(2); + // FIXME: type + const bridgeTokenAddress = topics[1].args!.localToken; + + // FIXME: not strictly equal, because the actual address is checksummed + // expect(topics[1].args!.remoteToken).toBe(bridgingTokenAddressL1); + // + + await sleep(5000); + const bridgedTokenERC20 = await pubCRemote.getERC20({ + erc20: { + address: bridgeTokenAddress, + chainID: pubCRemote.chain!.id, + }, + }); + const nativeTokenERC20 = await pubCNative.getERC20({ + erc20: { + address: nativeTokenAddress, + chainID: pubCNative.chain!.id, + }, + }); + + return { + bridgedToken: bridgedTokenERC20, + nativeToken: nativeTokenERC20, + nativeOnL1: pubCNative.chain!.id === ctx.public().l1!.chain!.id, + }; +} diff --git a/op-e2e/celo/test_weth_bridge.sh b/op-e2e/celo/tests/weth_bridge.sh similarity index 57% rename from op-e2e/celo/test_weth_bridge.sh rename to op-e2e/celo/tests/weth_bridge.sh index 19ff0ddb2cbb2..a52abf358cc68 100755 --- a/op-e2e/celo/test_weth_bridge.sh +++ b/op-e2e/celo/tests/weth_bridge.sh @@ -3,28 +3,26 @@ set -eo pipefail set -x -source shared.sh -SCRIPT_DIR=$(readlink -f "$(dirname "$0")") -CONTRACTS_DIR=$SCRIPT_DIR/../../packages/contracts-bedrock +ACC_ADDR=$(cast wallet address $ACC_PRIVKEY) # Deploy WETH L1_WETH=$( - ETH_RPC_URL=$ETH_RPC_URL_L1 forge create --broadcast --private-key=$ACC_PRIVKEY --root $CONTRACTS_DIR $CONTRACTS_DIR/src/universal/WETH98.sol:WETH98 --json | jq .deployedTo -r + forge create --rpc-url $ETH_RPC_URL_L1 --broadcast --private-key=$ACC_PRIVKEY --root $CONTRACTS_DIR $CONTRACTS_DIR/src/universal/WETH98.sol:WETH98 --json | jq .deployedTo -r ) # create ERC20 token on L2 L2_TOKEN=$( - cast send --private-key $ACC_PRIVKEY 0x4200000000000000000000000000000000000012 "createOptimismMintableERC20(address,string,string)" $L1_WETH "Wrapped Ether" "WETH" --json \ - | jq -r '.logs[0].topics[2]' | cast parse-bytes32-address + cast send --private-key $ACC_PRIVKEY 0x4200000000000000000000000000000000000012 "createOptimismMintableERC20(address,string,string)" $L1_WETH "Wrapped Ether" "WETH" --json | + jq -r '.logs[0].topics[2]' | cast parse-bytes32-address ) # Wrap some ETH -ETH_RPC_URL=$ETH_RPC_URL_L1 cast send --private-key $ACC_PRIVKEY $L1_WETH --value 1ether +cast send --private-key $ACC_PRIVKEY $L1_WETH --value 1ether --rpc-url $ETH_RPC_URL_L1 # Approve transfer to bridge L1_BRIDGE_ADDR=$(cast call 0x4200000000000000000000000000000000000010 'otherBridge() returns (address)') -ETH_RPC_URL=$ETH_RPC_URL_L1 cast send --private-key $ACC_PRIVKEY $L1_WETH 'approve(address, uint256) returns (bool)' $L1_BRIDGE_ADDR 1ether +cast send --private-key $ACC_PRIVKEY $L1_WETH 'approve(address, uint256) returns (bool)' $L1_BRIDGE_ADDR 1ether --rpc-url $ETH_RPC_URL_L1 # Bridge to L2 -ETH_RPC_URL=$ETH_RPC_URL_L1 cast send --private-key $ACC_PRIVKEY $L1_BRIDGE_ADDR 'bridgeERC20(address _localToken, address _remoteToken, uint256 _amount, uint32 _minGasLimit, bytes calldata _extraData)' $L1_WETH $L2_TOKEN 0.3ether 50000 0x --gas-limit 6000000 +cast send --private-key $ACC_PRIVKEY $L1_BRIDGE_ADDR 'bridgeERC20(address _localToken, address _remoteToken, uint256 _amount, uint32 _minGasLimit, bytes calldata _extraData)' $L1_WETH $L2_TOKEN 0.3ether 50000 0x --gas-limit 6000000 --rpc-url $ETH_RPC_URL_L1 # Setup up oracle and FeeCurrencyDirectory ORACLE=$(forge create --broadcast --private-key=$ACC_PRIVKEY --root $CONTRACTS_DIR $CONTRACTS_DIR/src/celo/testing/MockSortedOracles.sol:MockSortedOracles --json | jq .deployedTo -r) @@ -34,7 +32,10 @@ cast send --private-key $ACC_PRIVKEY $FEE_CURRENCY_DIRECTORY_ADDR 'setCurrencyCo # Check balance from bridging (we intentionally don't do this right after bridging, since it takes a bit) L2_BALANCE=$(cast call $L2_TOKEN 'balanceOf(address) returns (uint256)' $ACC_ADDR) echo L2 balance: $L2_BALANCE -[[ $(echo $L2_BALANCE | awk '{print $1}') -gt 0 ]] || (echo "Bridging to L2 failed!"; exit 1) +[[ $(echo $L2_BALANCE | awk '{print $1}') -gt 0 ]] || ( + echo "Bridging to L2 failed!" + exit 1 +) # Send fee currency tx! #TXHASH=$(~/op-geth/e2e_test/js-tests/send_tx.mjs 901 $ACC_PRIVKEY $L2_TOKEN) diff --git a/op-e2e/celo/tests/weth_bridge.ts b/op-e2e/celo/tests/weth_bridge.ts new file mode 100644 index 0000000000000..c480904450c82 --- /dev/null +++ b/op-e2e/celo/tests/weth_bridge.ts @@ -0,0 +1,57 @@ +import { addTestOptions, Context } from "@celo-test/runner"; +import type { ChainContractsCeloL2 } from "@celo-test/viem"; +import { join } from "jsr:@std/path"; + +export const wethBridge = addTestOptions({ + Concurrent: true, + Name: "test-weth-bridge", + // only run on local devnet, since this test + // works with hardcoded owner accounts on the devnet + // deployment + OnlyRunOnL2ChainIDs: [999], +})(async function (_: Deno.TestContext, ctx: Context): Promise { + const contractsPath = join( + ctx.config.MonorepoPath, + "packages/contracts-bedrock", + ); + + const l2Contracts: ChainContractsCeloL2 = ctx.public().l2.chain! + .contracts as ChainContractsCeloL2; + + const env = { + ETH_RPC_URL: String(ctx.config.L2.RPCURL), + ETH_RPC_URL_L1: String(ctx.config.L1.RPCURL), + REGISTRY_ADDR: l2Contracts.registry!.address, + TOKEN_ADDR: l2Contracts.goldToken!.address, + FEE_CURRENCY_DIRECTORY_ADDR: l2Contracts.feeCurrencyDirectory!.address, + // NOTE: the FeeCurrencyDirectory owner is hardcoded to be the first devnet account + // when the l2-genesis is generated with 'deployCeloContracts=true'. + // so don't use the provided funded account from the Context + // but hardcode the privkey here as well. + // This only works for the local devnet + ACC_PRIVKEY: + "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", + CONTRACTS_DIR: contractsPath, + }; + + const envAsString: Record = Object.fromEntries( + Object.entries(env).map(([key, value]) => [key, String(value)]), + ); + + const devnetUp = new Deno.Command("bash", { + args: ["weth_bridge.sh"], + stdout: "piped", + stderr: "piped", + cwd: ctx.config.TestDirPath, + env: envAsString, + }); + + const process = devnetUp.spawn(); + const { code, stderr } = await process.output(); + + if (code !== 0) { + const errorOutput = new TextDecoder().decode(stderr); + throw Error(`Failed to execute test script: ${errorOutput}`); + } + return true; +}); diff --git a/op-e2e/celo/tests/withdraw_deposit.test.js b/op-e2e/celo/tests/withdraw_deposit.test.js deleted file mode 100644 index b7235239f4d1f..0000000000000 --- a/op-e2e/celo/tests/withdraw_deposit.test.js +++ /dev/null @@ -1,77 +0,0 @@ -import { withdraw } from '../src/withdraw.js' -import { deposit } from '../src/deposit.js' -import { parseEther } from 'viem' -import { setup } from './setup.js' - -const minute = 60 * 1000 -var config = {} - -beforeAll(async () => { - config = await setup() -}, minute) - -test( - 'execute a withdraw and a deposit in succession', - async () => { - const celoToken = await config.client.l1.public.getERC20({ - erc20: { - address: config.addresses.CustomGasTokenProxy, - chainID: config.client.l1.public.chain.id, - }, - }) - const balanceL1Before = await config.client.l1.public.getERC20BalanceOf({ - erc20: celoToken, - address: config.account.address, - }) - const balanceL2Before = await config.client.l2.public.getBalance({ - address: config.account.address, - }) - const withdrawAmount = parseEther('1') - const withdrawResult = await withdraw( - { - amount: withdrawAmount, - to: config.account.address, - gas: 21_000n, - }, - config - ) - expect(withdrawResult.success).toBe(true) - const balanceL1AfterWithdraw = - await config.client.l1.public.getERC20BalanceOf({ - erc20: celoToken, - address: config.account.address, - }) - const balanceL2AfterWithdraw = await config.client.l2.public.getBalance({ - address: config.account.address, - }) - expect(balanceL1AfterWithdraw.amount).toBe( - balanceL1Before.amount + BigInt(withdrawAmount) - ) - expect(balanceL2AfterWithdraw).toBe( - balanceL2Before - BigInt(withdrawAmount) - withdrawResult.l2GasPayment - ) - const depositResult = await deposit( - { - mint: withdrawAmount, - to: config.account.address, - }, - config - ) - expect(depositResult.success).toBe(true) - - const balanceL1AfterDeposit = - await config.client.l1.public.getERC20BalanceOf({ - erc20: celoToken, - address: config.account.address, - }) - const balanceL2AfterDeposit = await config.client.l2.public.getBalance({ - address: config.account.address, - }) - - expect(balanceL1AfterDeposit.amount).toBe(balanceL1Before.amount) - expect(balanceL2AfterDeposit).toBe( - balanceL2Before - withdrawResult.l2GasPayment - ) - }, - 15 * minute -) diff --git a/op-e2e/celo/tests/withdraw_deposit.ts b/op-e2e/celo/tests/withdraw_deposit.ts new file mode 100644 index 0000000000000..149f20796c378 --- /dev/null +++ b/op-e2e/celo/tests/withdraw_deposit.ts @@ -0,0 +1,145 @@ +import { + deposit, + initiateNativeWithdraw, + settleWithdraw, +} from "@celo-test/viem"; +import { addTestOptions, Context } from "@celo-test/runner"; +import { parseEther } from "viem"; +import type { BaseERC20, ERC20, ERC20Amount } from "reverse-mirage"; +import { expect } from "jsr:@std/expect"; + +// FIXME: add sleeps in between writes, so that +// the prod nodes can keep up to incorporate / serve the new state +export const withdrawDeposit = addTestOptions({ + Concurrent: true, + Name: "test-withdraw-and-deposit-back", + OnlyRunOnL2ChainIDs: undefined, +})(async function (t: Deno.TestContext, ctx: Context): Promise { + // NOTE: important for mainnet test-runs: + // the initial L1 balance should cover the gas fee for + // the bridge contract interactions. + // Last time I checked locally this was around 441745 gas + let initialBalanceL1: ERC20Amount; + let initialBalanceL2: bigint; + let bridgingAmount: bigint; + let celoToken: ERC20; + let l2GasPaid: bigint = BigInt(0); + + if ( + !(await t.step("setup test and query balances", async () => { + celoToken = await ctx.public().l1.getERC20({ + erc20: { + address: ctx.contracts.CustomGasTokenProxy, + chainID: ctx.public().l1.chain!.id, + }, + }); + ctx.storeArtifact("l1 custom gas token metadata", celoToken); + initialBalanceL1 = await ctx.public().l1.getERC20BalanceOf({ + erc20: celoToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact("balance l1 initial", initialBalanceL1.amount); + + initialBalanceL2 = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 initial", initialBalanceL2); + // minimum withdraw amount + expect(initialBalanceL2 >= parseEther("0.02")).toBe(true); + // use half of the initial balance to account for gas cost. + // this isn't fool proof when amounts get small, + // but right now we don't want to calculate + // withdraw gascost. + bridgingAmount = initialBalanceL2 / BigInt(2); + // maximum brdiging amount + if (bridgingAmount > parseEther("1")) { + bridgingAmount = parseEther("1"); + } + ctx.storeArtifact("bridgingAmount", bridgingAmount); + })) + ) { + return false; + } + if ( + !(await t.step("withdraw from l2", async () => { + const withdraw = await initiateNativeWithdraw( + bridgingAmount, + ctx.wallet().l1.account!.address, + 21_000n, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("withdraw transaction from l2", withdraw); + expect(withdraw.receipt.status === "success").toBe(true); + const withdrawSettleResult = await settleWithdraw( + withdraw.receipt, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("withdraw settle result l1", withdrawSettleResult); + expect(withdrawSettleResult.finalize.success).toBe(true); + expect(withdrawSettleResult.prove.success).toBe(true); + + const balanceL1AfterWithdraw = await ctx.public().l1.getERC20BalanceOf({ + erc20: celoToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance l1 after withdraw", + balanceL1AfterWithdraw.amount, + ); + const balanceL2AfterWithdraw = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 after withdraw", balanceL2AfterWithdraw); + + //FIXME: l1 gas? + expect(balanceL1AfterWithdraw.amount).toBe( + initialBalanceL1.amount + BigInt(bridgingAmount), + ); + + expect(balanceL2AfterWithdraw).toBe( + initialBalanceL2 - BigInt(bridgingAmount) - withdraw.gasPaid, + ); + l2GasPaid += withdraw.gasPaid; + })) + ) { + return false; + } + + if ( + !(await t.step("deposit back to l2", async () => { + const depositResult = await deposit( + bridgingAmount, + ctx.wallet().l2.account!.address, + ctx.public(), + ctx.wallet(), + ); + + ctx.storeArtifact("deposit back to l2 result", depositResult); + expect(depositResult.l1Approve.success).toBe(true); + expect(depositResult.l1Deposit.success).toBe(true); + expect(depositResult.l2Deposit.success).toBe(true); + + const balanceL1AfterDeposit = await ctx.public().l1.getERC20BalanceOf({ + erc20: celoToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance l1 after deposit", + balanceL1AfterDeposit.amount, + ); + + const balanceL2AfterDeposit = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 after deposit", balanceL2AfterDeposit); + + expect(balanceL1AfterDeposit.amount).toBe(initialBalanceL1.amount); + expect(balanceL2AfterDeposit).toBe(initialBalanceL2 - l2GasPaid); + })) + ) { + return false; + } + return true; +}); diff --git a/op-e2e/celo/tests/withdraw_deposit_erc20_l2.ts b/op-e2e/celo/tests/withdraw_deposit_erc20_l2.ts new file mode 100644 index 0000000000000..9eada3c99c598 --- /dev/null +++ b/op-e2e/celo/tests/withdraw_deposit_erc20_l2.ts @@ -0,0 +1,202 @@ +import { + initiateBridgeERC20To, + settleWithdraw, + waitForDepositReceiptL2, +} from "@celo-test/viem"; +import type { + BridgedERC20TokenPair, + WithdrawReturnType, +} from "@celo-test/viem"; +import { addTestOptions, Context } from "@celo-test/runner"; +import { parseEther } from "viem"; +import { setupERC20BridgeToken } from "./util/bridge.ts"; +import type { BaseERC20, ERC20Amount } from "reverse-mirage"; +import { expect } from "jsr:@std/expect"; + +// FIXME: add sleeps in between writes, so that +// the prod nodes can keep up to incorporate / serve the new state +export const withdrawDepositERC20L2Native = addTestOptions({ + Concurrent: true, + Name: "test-withdraw-and-deposit-back-erc20-l2", + OnlyRunOnL2ChainIDs: undefined, +})(async function (t: Deno.TestContext, ctx: Context): Promise { + // NOTE: important for mainnet test-runs: + // the initial L1 balance should cover the gas fee for + // the bridge contract interactions. + + let initialBalanceBridged: ERC20Amount; + let initialBalanceNative: ERC20Amount; + let initialBalanceL2Eth: bigint; + + let bridgeTokenPair: BridgedERC20TokenPair; + const bridgingAmount: bigint = parseEther("10"); + let withdrawResult: WithdrawReturnType; + + if ( + !(await t.step( + "deploy ERC20 contract on l2 and create mintable representation on l1", + async () => { + bridgeTokenPair = await setupERC20BridgeToken( + ctx, + ctx.public().l2.chain, + bridgingAmount, + ); + ctx.storeArtifact("erc20 bridge token metadata", bridgeTokenPair); + }, + )) + ) { + return false; + } + if ( + !(await t.step("setup test and query balances", async () => { + initialBalanceL2Eth = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance l2 eth inital", initialBalanceL2Eth); + + initialBalanceBridged = await ctx.public().l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance bridged initial", + initialBalanceBridged.amount, + ); + + initialBalanceNative = await ctx.public().l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact("balance native initial", initialBalanceNative.amount); + + expect(initialBalanceNative.amount >= BigInt(bridgingAmount)).toBe(true); + // we just created the bridged token, nothin is there yet + expect(initialBalanceBridged.amount == BigInt(0)).toBe(true); + })) + ) { + return false; + } + if ( + !(await t.step("withdraw", async () => { + //FIXME: I think here we have the allowance issue + const withdraw = await initiateBridgeERC20To( + bridgingAmount, + ctx.wallet().l1.account!.address, + ctx.public().l2.chain, // bridge FROM l2 + bridgeTokenPair, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("settle withdraw result", withdraw); + expect(withdraw.bridge.receipt).toBeDefined(); + expect(withdraw.bridge.receipt?.status === "success").toBe(true); + withdrawResult = await settleWithdraw( + withdraw.bridge.receipt!, + ctx.public(), + ctx.wallet(), + ); + expect(withdrawResult.prove.success).toBe(true); + expect(withdrawResult.finalize.success).toBe(true); + ctx.storeArtifact("settle withdraw result", withdrawResult); + + const balanceBridgedAfterWithdraw = await ctx + .public() + .l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance bridged after withdraw", + balanceBridgedAfterWithdraw.amount, + ); + const balanceNativeAfterWithdraw = await ctx + .public() + .l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance native after withdraw", + initialBalanceNative.amount, + ); + + // the full bridged amount should be on the bridged + // token representation (on l1) now + expect(balanceBridgedAfterWithdraw.amount).toBe(bridgingAmount); + expect(balanceNativeAfterWithdraw.amount).toBe( + initialBalanceNative.amount - bridgingAmount, + ); + + // TODO: also check gas currency balance, + })) + ) { + return false; + } + if ( + //l2 native, "deposit", so bridge back l1->l2 + !(await t.step("deposit", async () => { + const depositResult = await initiateBridgeERC20To( + bridgingAmount, + ctx.wallet().l2.account!.address, + ctx.public().l1.chain, // bridge FROM l1 + bridgeTokenPair, + ctx.public(), + ctx.wallet(), + ); + ctx.storeArtifact("deposit result", depositResult); + expect(depositResult.bridge.receipt).toBeDefined(); + // now wait for the deposit transaction to be included + // in the l2 unsafe head + const depositReceiptL2 = await waitForDepositReceiptL2( + depositResult.bridge.receipt!, + ctx.public(), + ); + ctx.storeArtifact("deposit receipt on l2", depositReceiptL2); + expect(depositReceiptL2.status).toBe("success"); + + const balanceBridgedAfterDeposit = await ctx + .public() + .l1.getERC20BalanceOf({ + erc20: bridgeTokenPair.bridgedToken, + address: ctx.wallet().l1.account!.address, + }); + ctx.storeArtifact( + "balance bridged after deposit", + balanceBridgedAfterDeposit.amount, + ); + + const balanceNativeAfterDeposit = await ctx + .public() + .l2.getERC20BalanceOf({ + erc20: bridgeTokenPair.nativeToken, + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance native after deposit", + balanceNativeAfterDeposit.amount, + ); + + const balanceL2EthAfterDeposit = await ctx.public().l2.getBalance({ + address: ctx.wallet().l2.account!.address, + }); + ctx.storeArtifact( + "balance eth l2 after deposit", + balanceL2EthAfterDeposit, + ); + + // XXX: is this true? + // we should have spent some eth for the tx gas + // TODO: specify the exact amount expected? + expect(balanceL2EthAfterDeposit < initialBalanceL2Eth).toBe(true); + + expect(balanceBridgedAfterDeposit.amount).toBe(0n); + expect(balanceNativeAfterDeposit.amount).toBe( + initialBalanceNative.amount, + ); + })) + ) { + return false; + } + + return true; +});