From 7a0a17ac43761291728145857aed7606dc1ca46e Mon Sep 17 00:00:00 2001 From: noot <36753753+noot@users.noreply.github.com> Date: Sat, 8 Jun 2024 19:34:12 -0400 Subject: [PATCH] chore(withdrawer): replace contracts with `astria-bridge-contracts` submodule (#1164) ## Summary the bridge contracts were moved to their own repo (https://github.com/astriaorg/astria-bridge-contracts/tree/main) as we rely on them in astria-geth as well. this replaces the contracts in the repo with a submodule. ## Changes - replace withdrawer contracts with `astria-bridge-contracts` submodule ## Testing n/a --- .github/workflows/test.yml | 12 + .gitmodules | 9 +- .../astria-bridge-contracts | 1 + crates/astria-bridge-withdrawer/build.rs | 6 +- .../ethereum/.gitignore | 14 -- .../ethereum/README.md | 38 --- .../ethereum/foundry.toml | 6 - .../ethereum/lib/forge-std | 1 - .../ethereum/lib/openzeppelin-contracts | 1 - .../ethereum/local.env.example | 26 --- .../AstriaBridgeableERC20.json | 1 - .../AstriaMintableERC20.json | 1 - .../AstriaWithdrawer.json | 1 - .../IAstriaWithdrawer.json | 1 - .../ethereum/script/AstriaWithdrawer.s.sol | 45 ---- .../ethereum/src/AstriaBridgeableERC20.sol | 68 ------ .../ethereum/src/AstriaWithdrawer.sol | 35 --- .../ethereum/src/IAstriaWithdrawer.sol | 25 -- .../src/withdrawer/ethereum/convert.rs | 21 +- .../generated/astria_bridgeable_erc20.rs | 180 +++++++++++++-- .../ethereum/generated/astria_withdrawer.rs | 196 ++++++++++++++-- .../generated/astria_withdrawer_interface.rs | 217 ++++++++++++++++-- .../src/withdrawer/ethereum/test_utils.rs | 95 +++++--- .../src/withdrawer/ethereum/watcher.rs | 45 +++- 24 files changed, 678 insertions(+), 367 deletions(-) create mode 160000 crates/astria-bridge-withdrawer/astria-bridge-contracts delete mode 100644 crates/astria-bridge-withdrawer/ethereum/.gitignore delete mode 100644 crates/astria-bridge-withdrawer/ethereum/README.md delete mode 100644 crates/astria-bridge-withdrawer/ethereum/foundry.toml delete mode 160000 crates/astria-bridge-withdrawer/ethereum/lib/forge-std delete mode 160000 crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts delete mode 100644 crates/astria-bridge-withdrawer/ethereum/local.env.example delete mode 100644 crates/astria-bridge-withdrawer/ethereum/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json delete mode 100644 crates/astria-bridge-withdrawer/ethereum/out/AstriaMintableERC20.sol/AstriaMintableERC20.json delete mode 100644 crates/astria-bridge-withdrawer/ethereum/out/AstriaWithdrawer.sol/AstriaWithdrawer.json delete mode 100644 crates/astria-bridge-withdrawer/ethereum/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json delete mode 100644 crates/astria-bridge-withdrawer/ethereum/script/AstriaWithdrawer.s.sol delete mode 100644 crates/astria-bridge-withdrawer/ethereum/src/AstriaBridgeableERC20.sol delete mode 100644 crates/astria-bridge-withdrawer/ethereum/src/AstriaWithdrawer.sol delete mode 100644 crates/astria-bridge-withdrawer/ethereum/src/IAstriaWithdrawer.sol diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 90cd246c91..f1818a6118 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -50,6 +50,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@1.76.0 - uses: taiki-e/install-action@v2.15.2 with: @@ -97,6 +99,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@1.76.0 - uses: Swatinem/rust-cache@v2.7.3 with: @@ -123,6 +127,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@1.76.0 - uses: Swatinem/rust-cache@v2.7.3 with: @@ -146,6 +152,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@1.76.0 - uses: Swatinem/rust-cache@v2.7.3 with: @@ -163,6 +171,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' && needs.run_checker.outputs.run_lint_rust == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@1.76.0 with: components: clippy @@ -189,6 +199,8 @@ jobs: if: needs.run_checker.outputs.run_tests == 'true' && needs.run_checker.outputs.run_lint_rust == 'true' steps: - uses: actions/checkout@v4 + with: + submodules: 'true' - uses: dtolnay/rust-toolchain@v1 with: # This has to match `rust-toolchain` in the rust-toolchain file of the dylint lints diff --git a/.gitmodules b/.gitmodules index db594c61b0..83d8292afe 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "crates/astria-bridge-withdrawer/ethereum/lib/forge-std"] - path = crates/astria-bridge-withdrawer/ethereum/lib/forge-std - url = https://github.com/foundry-rs/forge-std -[submodule "crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts"] - path = crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts - url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "crates/astria-bridge-withdrawer/astria-bridge-contracts"] + path = crates/astria-bridge-withdrawer/astria-bridge-contracts + url = https://github.com/astriaorg/astria-bridge-contracts.git diff --git a/crates/astria-bridge-withdrawer/astria-bridge-contracts b/crates/astria-bridge-withdrawer/astria-bridge-contracts new file mode 160000 index 0000000000..4580ffc074 --- /dev/null +++ b/crates/astria-bridge-withdrawer/astria-bridge-contracts @@ -0,0 +1 @@ +Subproject commit 4580ffc0747f463e304214bb29848e21e4e93e32 diff --git a/crates/astria-bridge-withdrawer/build.rs b/crates/astria-bridge-withdrawer/build.rs index 2bae3e565c..3540920d12 100644 --- a/crates/astria-bridge-withdrawer/build.rs +++ b/crates/astria-bridge-withdrawer/build.rs @@ -9,21 +9,21 @@ fn main() -> Result<(), Box> { Abigen::new( "IAstriaWithdrawer", - "./ethereum/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json", + "./astria-bridge-contracts/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json", )? .generate()? .write_to_file("./src/withdrawer/ethereum/generated/astria_withdrawer_interface.rs")?; Abigen::new( "AstriaWithdrawer", - "./ethereum/out/AstriaWithdrawer.sol/AstriaWithdrawer.json", + "./astria-bridge-contracts/out/AstriaWithdrawer.sol/AstriaWithdrawer.json", )? .generate()? .write_to_file("./src/withdrawer/ethereum/generated/astria_withdrawer.rs")?; Abigen::new( "AstriaBridgeableERC20", - "./ethereum/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json", + "./astria-bridge-contracts/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json", )? .generate()? .write_to_file("./src/withdrawer/ethereum/generated/astria_bridgeable_erc20.rs")?; diff --git a/crates/astria-bridge-withdrawer/ethereum/.gitignore b/crates/astria-bridge-withdrawer/ethereum/.gitignore deleted file mode 100644 index 85198aaa55..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -# Compiler files -cache/ -out/ - -# Ignores development broadcast logs -!/broadcast -/broadcast/*/31337/ -/broadcast/**/dry-run/ - -# Docs -docs/ - -# Dotenv file -.env diff --git a/crates/astria-bridge-withdrawer/ethereum/README.md b/crates/astria-bridge-withdrawer/ethereum/README.md deleted file mode 100644 index 6b847ae274..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/README.md +++ /dev/null @@ -1,38 +0,0 @@ -# astria-bridge-withdrawer - -Forge project for the bridge withdrawer contract. - -Requirements: - -- foundry - -Build: - -```sh -forge build -``` - -Copy the example .env: `cp local.example.env .env` - -Put your private key in `.env` and `source .env`. - -Deploy `AstriaWithdrawer.sol`: - -```sh -forge script script/AstriaWithdrawer.s.sol:AstriaWithdrawerScript \ - --rpc-url $RPC_URL --broadcast --sig "deploy()" -vvvv -``` - -Call `withdrawToSequencer` in `AstriaWithdrawer.sol`: - -```sh -forge script script/AstriaWithdrawer.s.sol:AstriaWithdrawerScript \ - --rpc-url $RPC_URL --broadcast --sig "withdrawToSequencer()" -vvvv -``` - -Call `withdrawToOriginChain` in `AstriaWithdrawer.sol`: - -```sh -forge script script/AstriaWithdrawer.s.sol:AstriaWithdrawerScript \ - --rpc-url $RPC_URL --broadcast --sig "withdrawToOriginChain()" -vvvv -``` diff --git a/crates/astria-bridge-withdrawer/ethereum/foundry.toml b/crates/astria-bridge-withdrawer/ethereum/foundry.toml deleted file mode 100644 index 25b918f9c9..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/foundry.toml +++ /dev/null @@ -1,6 +0,0 @@ -[profile.default] -src = "src" -out = "out" -libs = ["lib"] - -# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/crates/astria-bridge-withdrawer/ethereum/lib/forge-std b/crates/astria-bridge-withdrawer/ethereum/lib/forge-std deleted file mode 160000 index 978ac6fadb..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/lib/forge-std +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 978ac6fadb62f5f0b723c996f64be52eddba6801 diff --git a/crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts b/crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts deleted file mode 160000 index dbb6104ce8..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/lib/openzeppelin-contracts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit dbb6104ce834628e473d2173bbc9d47f81a9eec3 diff --git a/crates/astria-bridge-withdrawer/ethereum/local.env.example b/crates/astria-bridge-withdrawer/ethereum/local.env.example deleted file mode 100644 index 58567457f0..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/local.env.example +++ /dev/null @@ -1,26 +0,0 @@ -# private key to submit txs with -PRIVATE_KEY=0x - -# default local rpc url -RPC_URL="http://localhost:8545" - -### contract deployment values - -# divide withdrawn values by 10^(18-BASE_CHAIN_ASSET_PRECISION) -BASE_CHAIN_ASSET_PRECISION=9 - -### contract call values - -# contract address -ASTRIA_WITHDRAWER=0x5FbDB2315678afecb367f032d93F642f64180aa3 - -# if withdrawing to the sequencer, this must be set to -# the address to withdraw to on the sequencer -SEQUENCER_DESTINATION_CHAIN_ADDRESS=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - -# if withdrawing to another chain via IBC, this must be set to -# the destination chain address to withdraw to -ORIGIN_DESTINATION_CHAIN_ADDRESS="someaddress" - -# amount to withdraw, must be greater than 10^ASSET_WITHDRAWAL_DECIMALS -AMOUNT=1000000000 diff --git a/crates/astria-bridge-withdrawer/ethereum/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json b/crates/astria-bridge-withdrawer/ethereum/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json deleted file mode 100644 index 2281fe1dab..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/out/AstriaBridgeableERC20.sol/AstriaBridgeableERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_bridge","type":"address","internalType":"address"},{"name":"_baseChainAssetPrecision","type":"uint32","internalType":"uint32"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_CHAIN_ASSET_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"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":"value","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":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"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":"value","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":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToIbcChain","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_destinationChainAddress","type":"string","internalType":"string"},{"name":"_memo","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToSequencer","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_destinationChainAddress","type":"address","internalType":"address"}],"outputs":[],"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":"Ics20Withdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"string","indexed":false,"internalType":"string"},{"name":"memo","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SequencerWithdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"address","indexed":false,"internalType":"address"}],"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},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b50604051620012623803806200126283398101604081905262000034916200021d565b8181600362000044838262000354565b50600462000053828262000354565b5050506000620000686200015360201b60201c565b90508060ff168463ffffffff161115620001145760405162461bcd60e51b815260206004820152605e60248201527f41737472696142726964676561626c6545524332303a2062617365206368616960448201527f6e20617373657420707265636973696f6e206d757374206265206c657373207460648201527f68616e206f7220657175616c20746f20746f6b656e20646563696d616c730000608482015260a40160405180910390fd5b63ffffffff84166080526200012d8460ff831662000436565b6200013a90600a6200055c565b60c052505050506001600160a01b031660a05262000577565b601290565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018057600080fd5b81516001600160401b03808211156200019d576200019d62000158565b604051601f8301601f19908116603f01168101908282118183101715620001c857620001c862000158565b81604052838152602092508683858801011115620001e557600080fd5b600091505b83821015620002095785820183015181830184015290820190620001ea565b600093810190920192909252949350505050565b600080600080608085870312156200023457600080fd5b84516001600160a01b03811681146200024c57600080fd5b602086015190945063ffffffff811681146200026757600080fd5b60408601519093506001600160401b03808211156200028557600080fd5b62000293888389016200016e565b93506060870151915080821115620002aa57600080fd5b50620002b9878288016200016e565b91505092959194509250565b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b0381111562000370576200037062000158565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b63ffffffff82811682821603908082111562000456576200045662000420565b5092915050565b600181815b808511156200049e57816000190482111562000482576200048262000420565b808516156200049057918102915b93841c939080029062000462565b509250929050565b600082620004b75750600162000556565b81620004c65750600062000556565b8160018114620004df5760028114620004ea576200050a565b600191505062000556565b60ff841115620004fe57620004fe62000420565b50506001821b62000556565b5060208310610133831016604e8410600b84101617156200052f575081810a62000556565b6200053b83836200045d565b806000190482111562000552576200055262000420565b0290505b92915050565b60006200057063ffffffff841683620004a6565b9392505050565b60805160a05160c051610cad620005b56000396000818161045101526104f501526000818161025d0152610372015260006101cd0152610cad6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb1461020c578063dd62ed3e1461021f578063ee9a31a21461025857600080fd5b806370a082311461018c578063757e9874146101b55780637eb6dec7146101c857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806340c10f19146101645780635fe56b091461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610297565b60405161010491906108f5565b60405180910390f35b61012061011b36600461095f565b610329565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610989565b610343565b60405160128152602001610104565b61017761017236600461095f565b610367565b005b610177610187366004610a0e565b610449565b61013461019a366004610a88565b6001600160a01b031660009081526020819052604090205490565b6101776101c3366004610aaa565b6104ed565b6101ef7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610104565b6100f7610587565b61012061021a36600461095f565b610596565b61013461022d366004610ad6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6060600380546102a690610b00565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290610b00565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b6000336103378185856105a4565b60019150505b92915050565b6000336103518582856105b6565b61035c858585610634565b506001949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103f85760405162461bcd60e51b815260206004820152602b60248201527f41737472696142726964676561626c6545524332303a206f6e6c79206272696460448201526a19d94818d85b881b5a5b9d60aa1b60648201526084015b60405180910390fd5b6104028282610693565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161043d91815260200190565b60405180910390a25050565b8460006104767f000000000000000000000000000000000000000000000000000000000000000083610b3a565b116104935760405162461bcd60e51b81526004016103ef90610b5c565b61049d33876106cd565b85336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516104dd9493929190610c24565b60405180910390a3505050505050565b81600061051a7f000000000000000000000000000000000000000000000000000000000000000083610b3a565b116105375760405162461bcd60e51b81526004016103ef90610b5c565b61054133846106cd565b6040516001600160a01b0383168152839033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e3906020015b60405180910390a3505050565b6060600480546102a690610b00565b600033610337818585610634565b6105b18383836001610703565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461062e578181101561061f57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ef565b61062e84848484036000610703565b50505050565b6001600160a01b03831661065e57604051634b637e8f60e11b8152600060048201526024016103ef565b6001600160a01b0382166106885760405163ec442f0560e01b8152600060048201526024016103ef565b6105b18383836107d8565b6001600160a01b0382166106bd5760405163ec442f0560e01b8152600060048201526024016103ef565b6106c9600083836107d8565b5050565b6001600160a01b0382166106f757604051634b637e8f60e11b8152600060048201526024016103ef565b6106c9826000836107d8565b6001600160a01b03841661072d5760405163e602df0560e01b8152600060048201526024016103ef565b6001600160a01b03831661075757604051634a1406b160e11b8152600060048201526024016103ef565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561062e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107ca91815260200190565b60405180910390a350505050565b6001600160a01b0383166108035780600260008282546107f89190610c56565b909155506108759050565b6001600160a01b038316600090815260208190526040902054818110156108565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ef565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610891576002805482900390556108b0565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161057a91815260200190565b600060208083528351808285015260005b8181101561092257858101830151858201604001528201610906565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461095a57600080fd5b919050565b6000806040838503121561097257600080fd5b61097b83610943565b946020939093013593505050565b60008060006060848603121561099e57600080fd5b6109a784610943565b92506109b560208501610943565b9150604084013590509250925092565b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b602083019150836020828501011115610a0757600080fd5b9250929050565b600080600080600060608688031215610a2657600080fd5b85359450602086013567ffffffffffffffff80821115610a4557600080fd5b610a5189838a016109c5565b90965094506040880135915080821115610a6a57600080fd5b50610a77888289016109c5565b969995985093965092949392505050565b600060208284031215610a9a57600080fd5b610aa382610943565b9392505050565b60008060408385031215610abd57600080fd5b82359150610acd60208401610943565b90509250929050565b60008060408385031215610ae957600080fd5b610af283610943565b9150610acd60208401610943565b600181811c90821680610b1457607f821691505b602082108103610b3457634e487b7160e01b600052602260045260246000fd5b50919050565b600082610b5757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526073908201527f41737472696142726964676561626c6545524332303a20696e7375666669636960408201527f656e742076616c75652c206d7573742062652067726561746572207468616e2060608201527f3130202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841608082015272494e5f41535345545f505245434953494f4e2960681b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c38604083018688610bfb565b8281036020840152610c4b818587610bfb565b979650505050505050565b8082018082111561033d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220eb94aba74ed6a0814631b50af43b845dc4ae1c3067193283a3822e3fcce95edb64736f6c63430008150033","sourceMap":"214:2128:5:-:0;;;855:542;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1005:5;1012:7;1962:5:1;:13;1005:5:5;1962::1;:13;:::i;:::-;-1:-1:-1;1985:7:1;:17;1995:7;1985;:17;:::i;:::-;;1896:113;;1031:14:5::1;1048:10;:8;;;:10;;:::i;:::-;1031:27;;1099:8;1072:35;;:24;:35;;;1068:170;;;1123:104;::::0;-1:-1:-1;;;1123:104:5;;4682:2:7;1123:104:5::1;::::0;::::1;4664:21:7::0;4721:2;4701:18;;;4694:30;4760:34;4740:18;;;4733:62;4831:34;4811:18;;;4804:62;4903:32;4882:19;;;4875:61;4953:19;;1123:104:5::1;;;;;;;1068:170;1248:53;::::0;::::1;;::::0;1328:35:::1;1277:24:::0;1328:35:::1;::::0;::::1;;:::i;:::-;1321:43;::::0;:2:::1;:43;:::i;:::-;1311:53;::::0;-1:-1:-1;;;;;;;;;1374:16:5::1;;::::0;214:2128;;3002:82:1;3075:2;;3002:82::o;14:127:7:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:7;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:7;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:7:o;991:895::-;1107:6;1115;1123;1131;1184:3;1172:9;1163:7;1159:23;1155:33;1152:53;;;1201:1;1198;1191:12;1152:53;1227:16;;-1:-1:-1;;;;;1272:31:7;;1262:42;;1252:70;;1318:1;1315;1308:12;1252:70;1391:2;1376:18;;1370:25;1341:5;;-1:-1:-1;1439:10:7;1426:24;;1414:37;;1404:65;;1465:1;1462;1455:12;1404:65;1539:2;1524:18;;1518:25;1488:7;;-1:-1:-1;;;;;;1592:14:7;;;1589:34;;;1619:1;1616;1609:12;1589:34;1642:61;1695:7;1686:6;1675:9;1671:22;1642:61;:::i;:::-;1632:71;;1749:2;1738:9;1734:18;1728:25;1712:41;;1778:2;1768:8;1765:16;1762:36;;;1794:1;1791;1784:12;1762:36;;1817:63;1872:7;1861:8;1850:9;1846:24;1817:63;:::i;:::-;1807:73;;;991:895;;;;;;;:::o;1891:380::-;1970:1;1966:12;;;;2013;;;2034:61;;2088:4;2080:6;2076:17;2066:27;;2034:61;2141:2;2133:6;2130:14;2110:18;2107:38;2104:161;;2187:10;2182:3;2178:20;2175:1;2168:31;2222:4;2219:1;2212:15;2250:4;2247:1;2240:15;2104:161;;1891:380;;;:::o;2402:545::-;2504:2;2499:3;2496:11;2493:448;;;2540:1;2565:5;2561:2;2554:17;2610:4;2606:2;2596:19;2680:2;2668:10;2664:19;2661:1;2657:27;2651:4;2647:38;2716:4;2704:10;2701:20;2698:47;;;-1:-1:-1;2739:4:7;2698:47;2794:2;2789:3;2785:12;2782:1;2778:20;2772:4;2768:31;2758:41;;2849:82;2867:2;2860:5;2857:13;2849:82;;;2912:17;;;2893:1;2882:13;2849:82;;;2853:3;;;2493:448;2402:545;;;:::o;3123:1352::-;3243:10;;-1:-1:-1;;;;;3265:30:7;;3262:56;;;3298:18;;:::i;:::-;3327:97;3417:6;3377:38;3409:4;3403:11;3377:38;:::i;:::-;3371:4;3327:97;:::i;:::-;3479:4;;3543:2;3532:14;;3560:1;3555:663;;;;4262:1;4279:6;4276:89;;;-1:-1:-1;4331:19:7;;;4325:26;4276:89;-1:-1:-1;;3080:1:7;3076:11;;;3072:24;3068:29;3058:40;3104:1;3100:11;;;3055:57;4378:81;;3525:944;;3555:663;2349:1;2342:14;;;2386:4;2373:18;;-1:-1:-1;;3591:20:7;;;3709:236;3723:7;3720:1;3717:14;3709:236;;;3812:19;;;3806:26;3791:42;;3904:27;;;;3872:1;3860:14;;;;3739:19;;3709:236;;;3713:3;3973:6;3964:7;3961:19;3958:201;;;4034:19;;;4028:26;-1:-1:-1;;4117:1:7;4113:14;;;4129:3;4109:24;4105:37;4101:42;4086:58;4071:74;;3958:201;-1:-1:-1;;;;;4205:1:7;4189:14;;;4185:22;4172:36;;-1:-1:-1;3123:1352:7:o;4983:127::-;5044:10;5039:3;5035:20;5032:1;5025:31;5075:4;5072:1;5065:15;5099:4;5096:1;5089:15;5115:175;5183:10;5226;;;5214;;;5210:27;;5249:12;;;5246:38;;;5264:18;;:::i;:::-;5246:38;5115:175;;;;:::o;5295:422::-;5384:1;5427:5;5384:1;5441:270;5462:7;5452:8;5449:21;5441:270;;;5521:4;5517:1;5513:6;5509:17;5503:4;5500:27;5497:53;;;5530:18;;:::i;:::-;5580:7;5570:8;5566:22;5563:55;;;5600:16;;;;5563:55;5679:22;;;;5639:15;;;;5441:270;;;5445:3;5295:422;;;;;:::o;5722:806::-;5771:5;5801:8;5791:80;;-1:-1:-1;5842:1:7;5856:5;;5791:80;5890:4;5880:76;;-1:-1:-1;5927:1:7;5941:5;;5880:76;5972:4;5990:1;5985:59;;;;6058:1;6053:130;;;;5965:218;;5985:59;6015:1;6006:10;;6029:5;;;6053:130;6090:3;6080:8;6077:17;6074:43;;;6097:18;;:::i;:::-;-1:-1:-1;;6153:1:7;6139:16;;6168:5;;5965:218;;6267:2;6257:8;6254:16;6248:3;6242:4;6239:13;6235:36;6229:2;6219:8;6216:16;6211:2;6205:4;6202:12;6198:35;6195:77;6192:159;;;-1:-1:-1;6304:19:7;;;6336:5;;6192:159;6383:34;6408:8;6402:4;6383:34;:::i;:::-;6453:6;6449:1;6445:6;6441:19;6432:7;6429:32;6426:58;;;6464:18;;:::i;:::-;6502:20;;-1:-1:-1;5722:806:7;;;;;:::o;6533:147::-;6592:5;6621:53;6662:10;6652:8;6648:25;6642:4;6621:53;:::i;:::-;6612:62;6533:147;-1:-1:-1;;;6533:147:7:o;:::-;214:2128:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb1461020c578063dd62ed3e1461021f578063ee9a31a21461025857600080fd5b806370a082311461018c578063757e9874146101b55780637eb6dec7146101c857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806340c10f19146101645780635fe56b091461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610297565b60405161010491906108f5565b60405180910390f35b61012061011b36600461095f565b610329565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610989565b610343565b60405160128152602001610104565b61017761017236600461095f565b610367565b005b610177610187366004610a0e565b610449565b61013461019a366004610a88565b6001600160a01b031660009081526020819052604090205490565b6101776101c3366004610aaa565b6104ed565b6101ef7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610104565b6100f7610587565b61012061021a36600461095f565b610596565b61013461022d366004610ad6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6060600380546102a690610b00565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290610b00565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b6000336103378185856105a4565b60019150505b92915050565b6000336103518582856105b6565b61035c858585610634565b506001949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103f85760405162461bcd60e51b815260206004820152602b60248201527f41737472696142726964676561626c6545524332303a206f6e6c79206272696460448201526a19d94818d85b881b5a5b9d60aa1b60648201526084015b60405180910390fd5b6104028282610693565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161043d91815260200190565b60405180910390a25050565b8460006104767f000000000000000000000000000000000000000000000000000000000000000083610b3a565b116104935760405162461bcd60e51b81526004016103ef90610b5c565b61049d33876106cd565b85336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516104dd9493929190610c24565b60405180910390a3505050505050565b81600061051a7f000000000000000000000000000000000000000000000000000000000000000083610b3a565b116105375760405162461bcd60e51b81526004016103ef90610b5c565b61054133846106cd565b6040516001600160a01b0383168152839033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e3906020015b60405180910390a3505050565b6060600480546102a690610b00565b600033610337818585610634565b6105b18383836001610703565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461062e578181101561061f57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ef565b61062e84848484036000610703565b50505050565b6001600160a01b03831661065e57604051634b637e8f60e11b8152600060048201526024016103ef565b6001600160a01b0382166106885760405163ec442f0560e01b8152600060048201526024016103ef565b6105b18383836107d8565b6001600160a01b0382166106bd5760405163ec442f0560e01b8152600060048201526024016103ef565b6106c9600083836107d8565b5050565b6001600160a01b0382166106f757604051634b637e8f60e11b8152600060048201526024016103ef565b6106c9826000836107d8565b6001600160a01b03841661072d5760405163e602df0560e01b8152600060048201526024016103ef565b6001600160a01b03831661075757604051634a1406b160e11b8152600060048201526024016103ef565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561062e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107ca91815260200190565b60405180910390a350505050565b6001600160a01b0383166108035780600260008282546107f89190610c56565b909155506108759050565b6001600160a01b038316600090815260208190526040902054818110156108565760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ef565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216610891576002805482900390556108b0565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161057a91815260200190565b600060208083528351808285015260005b8181101561092257858101830151858201604001528201610906565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461095a57600080fd5b919050565b6000806040838503121561097257600080fd5b61097b83610943565b946020939093013593505050565b60008060006060848603121561099e57600080fd5b6109a784610943565b92506109b560208501610943565b9150604084013590509250925092565b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b602083019150836020828501011115610a0757600080fd5b9250929050565b600080600080600060608688031215610a2657600080fd5b85359450602086013567ffffffffffffffff80821115610a4557600080fd5b610a5189838a016109c5565b90965094506040880135915080821115610a6a57600080fd5b50610a77888289016109c5565b969995985093965092949392505050565b600060208284031215610a9a57600080fd5b610aa382610943565b9392505050565b60008060408385031215610abd57600080fd5b82359150610acd60208401610943565b90509250929050565b60008060408385031215610ae957600080fd5b610af283610943565b9150610acd60208401610943565b600181811c90821680610b1457607f821691505b602082108103610b3457634e487b7160e01b600052602260045260246000fd5b50919050565b600082610b5757634e487b7160e01b600052601260045260246000fd5b500490565b60208082526073908201527f41737472696142726964676561626c6545524332303a20696e7375666669636960408201527f656e742076616c75652c206d7573742062652067726561746572207468616e2060608201527f3130202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841608082015272494e5f41535345545f505245434953494f4e2960681b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c38604083018688610bfb565b8281036020840152610c4b818587610bfb565b979650505050505050565b8082018082111561033d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220eb94aba74ed6a0814631b50af43b845dc4ae1c3067193283a3822e3fcce95edb64736f6c63430008150033","sourceMap":"214:2128:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:7;;1162:22;1144:41;;1132:2;1117:18;4293:186:1;1004:187:7;3144:97:1;3222:12;;3144:97;;;1342:25:7;;;1330:2;1315:18;3144:97:1;1196:177:7;5039:244:1;;;;;;:::i;:::-;;:::i;3002:82::-;;;3075:2;1853:36:7;;1841:2;1826:18;3002:82:1;1711:184:7;1626:153:5;;;;;;:::i;:::-;;:::i;:::-;;2049:291;;;;;;:::i;:::-;;:::i;3299:116:1:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3390:18:1;3364:7;3390:18;;;;;;;;;;;;3299:116;1785:258:5;;;;;;:::i;:::-;;:::i;375:50:6:-;;;;;;;;3671:10:7;3659:23;;;3641:42;;3629:2;3614:18;375:50:6;3497:192:7;2276:93:1;;;:::i;3610:178::-;;;;;;:::i;:::-;;:::i;3846:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3952:18:1;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140;350:31:5;;;;;;;;-1:-1:-1;;;;;4123:32:7;;;4105:51;;4093:2;4078:18;350:31:5;3959:203:7;2074:89:1;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:4;4420:31:1;735:10:4;4436:7:1;4445:5;4420:8;:31::i;:::-;4468:4;4461:11;;;4293:186;;;;;:::o;5039:244::-;5126:4;735:10:4;5182:37:1;5198:4;735:10:4;5213:5:1;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:1;;5039:244;-1:-1:-1;;;;5039:244:1:o;1626:153:5:-;763:10;-1:-1:-1;;;;;777:6:5;763:20;;755:76;;;;-1:-1:-1;;;755:76:5;;4754:2:7;755:76:5;;;4736:21:7;4793:2;4773:18;;;4766:30;4832:34;4812:18;;;4805:62;-1:-1:-1;;;4883:18:7;;;4876:41;4934:19;;755:76:5;;;;;;;;;1720:19:::1;1726:3;1731:7;1720:5;:19::i;:::-;1759:3;-1:-1:-1::0;;;;;1754:18:5::1;;1764:7;1754:18;;;;1342:25:7::0;;1330:2;1315:18;;1196:177;1754:18:5::1;;;;;;;;1626:153:::0;;:::o;2049:291::-;2200:7;1481:1;1462:16;1471:7;2200;1462:16;:::i;:::-;:20;1454:148;;;;-1:-1:-1;;;1454:148:5;;;;;;;:::i;:::-;2223:26:::1;2229:10;2241:7;2223:5;:26::i;:::-;2292:7;2280:10;-1:-1:-1::0;;;;;2264:69:5::1;;2301:24;;2327:5;;2264:69;;;;;;;;;:::i;:::-;;;;;;;;2049:291:::0;;;;;;:::o;1785:258::-;1906:7;1481:1;1462:16;1471:7;1906;1462:16;:::i;:::-;:20;1454:148;;;;-1:-1:-1;;;1454:148:5;;;;;;;:::i;:::-;1929:26:::1;1935:10;1947:7;1929:5;:26::i;:::-;1970:66;::::0;-1:-1:-1;;;;;4123:32:7;;4105:51;;2002:7:5;;1990:10:::1;::::0;1970:66:::1;::::0;4093:2:7;4078:18;1970:66:5::1;;;;;;;;1785:258:::0;;;:::o;2276:93:1:-;2323:13;2355:7;2348:14;;;;;:::i;3610:178::-;3679:4;735:10:4;3733:27:1;735:10:4;3750:2:1;3754:5;3733:9;:27::i;8989:128::-;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;:::-;8989:128;;;:::o;10663:477::-;-1:-1:-1;;;;;3952:18:1;;;10762:24;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10828:37:1;;10824:310;;10904:5;10885:16;:24;10881:130;;;10936:60;;-1:-1:-1;;;10936:60:1;;-1:-1:-1;;;;;6685:32:7;;10936:60:1;;;6667:51:7;6734:18;;;6727:34;;;6777:18;;;6770:34;;;6640:18;;10936:60:1;6465:345:7;10881:130:1;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;:::-;10752:388;10663:477;;;:::o;5656:300::-;-1:-1:-1;;;;;5739:18:1;;5735:86;;5780:30;;-1:-1:-1;;;5780:30:1;;5807:1;5780:30;;;4105:51:7;4078:18;;5780:30:1;3959:203:7;5735:86:1;-1:-1:-1;;;;;5834:16:1;;5830:86;;5873:32;;-1:-1:-1;;;5873:32:1;;5902:1;5873:32;;;4105:51:7;4078:18;;5873:32:1;3959:203:7;5830:86:1;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;7721:208::-;-1:-1:-1;;;;;7791:21:1;;7787:91;;7835:32;;-1:-1:-1;;;7835:32:1;;7864:1;7835:32;;;4105:51:7;4078:18;;7835:32:1;3959:203:7;7787:91:1;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;8247:206::-;-1:-1:-1;;;;;8317:21:1;;8313:89;;8361:30;;-1:-1:-1;;;8361:30:1;;8388:1;8361:30;;;4105:51:7;4078:18;;8361:30:1;3959:203:7;8313:89:1;8411:35;8419:7;8436:1;8440:5;8411:7;:35::i;9949:432::-;-1:-1:-1;;;;;10061:19:1;;10057:89;;10103:32;;-1:-1:-1;;;10103:32:1;;10132:1;10103:32;;;4105:51:7;4078:18;;10103:32:1;3959:203:7;10057:89:1;-1:-1:-1;;;;;10159:21:1;;10155:90;;10203:31;;-1:-1:-1;;;10203:31:1;;10231:1;10203:31;;;4105:51:7;4078:18;;10203:31:1;3959:203:7;10155:90:1;-1:-1:-1;;;;;10254:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;-1:-1:-1;;;;;10333:31:1;10342:5;-1:-1:-1;;;;;10333:31:1;;10358:5;10333:31;;;;1342:25:7;;1330:2;1315:18;;1196:177;10333:31:1;;;;;;;;9949:432;;;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:1;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:1;;-1:-1:-1;6356:540:1;;-1:-1:-1;;;;;6570:15:1;;6548:19;6570:15;;;;;;;;;;;6603:19;;;6599:115;;;6649:50;;-1:-1:-1;;;6649:50:1;;-1:-1:-1;;;;;6685:32:7;;6649:50:1;;;6667:51:7;6734:18;;;6727:34;;;6777:18;;;6770:34;;;6640:18;;6649:50:1;6465:345:7;6599:115:1;-1:-1:-1;;;;;6834:15:1;;:9;:15;;;;;;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:1;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:1;;:9;:13;;;;;;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:1;7355:4;-1:-1:-1;;;;;7346:25:1;;7365:5;7346:25;;;;1342::7;;1330:2;1315:18;;1196:177;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:7;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:7:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:348::-;1952:8;1962:6;2016:3;2009:4;2001:6;1997:17;1993:27;1983:55;;2034:1;2031;2024:12;1983:55;-1:-1:-1;2057:20:7;;2100:18;2089:30;;2086:50;;;2132:1;2129;2122:12;2086:50;2169:4;2161:6;2157:17;2145:29;;2221:3;2214:4;2205:6;2197;2193:19;2189:30;2186:39;2183:59;;;2238:1;2235;2228:12;2183:59;1900:348;;;;;:::o;2253:789::-;2354:6;2362;2370;2378;2386;2439:2;2427:9;2418:7;2414:23;2410:32;2407:52;;;2455:1;2452;2445:12;2407:52;2491:9;2478:23;2468:33;;2552:2;2541:9;2537:18;2524:32;2575:18;2616:2;2608:6;2605:14;2602:34;;;2632:1;2629;2622:12;2602:34;2671:59;2722:7;2713:6;2702:9;2698:22;2671:59;:::i;:::-;2749:8;;-1:-1:-1;2645:85:7;-1:-1:-1;2837:2:7;2822:18;;2809:32;;-1:-1:-1;2853:16:7;;;2850:36;;;2882:1;2879;2872:12;2850:36;;2921:61;2974:7;2963:8;2952:9;2948:24;2921:61;:::i;:::-;2253:789;;;;-1:-1:-1;2253:789:7;;-1:-1:-1;3001:8:7;;2895:87;2253:789;-1:-1:-1;;;2253:789:7:o;3047:186::-;3106:6;3159:2;3147:9;3138:7;3134:23;3130:32;3127:52;;;3175:1;3172;3165:12;3127:52;3198:29;3217:9;3198:29;:::i;:::-;3188:39;3047:186;-1:-1:-1;;;3047:186:7:o;3238:254::-;3306:6;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3419:9;3406:23;3396:33;;3448:38;3482:2;3471:9;3467:18;3448:38;:::i;:::-;3438:48;;3238:254;;;;;:::o;3694:260::-;3762:6;3770;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;3862:29;3881:9;3862:29;:::i;:::-;3852:39;;3910:38;3944:2;3933:9;3929:18;3910:38;:::i;4167:380::-;4246:1;4242:12;;;;4289;;;4310:61;;4364:4;4356:6;4352:17;4342:27;;4310:61;4417:2;4409:6;4406:14;4386:18;4383:38;4380:161;;4463:10;4458:3;4454:20;4451:1;4444:31;4498:4;4495:1;4488:15;4526:4;4523:1;4516:15;4380:161;;4167:380;;;:::o;4964:217::-;5004:1;5030;5020:132;;5074:10;5069:3;5065:20;5062:1;5055:31;5109:4;5106:1;5099:15;5137:4;5134:1;5127:15;5020:132;-1:-1:-1;5166:9:7;;4964:217::o;5186:560::-;5388:2;5370:21;;;5427:3;5407:18;;;5400:31;5467:34;5462:2;5447:18;;5440:62;5538:34;5533:2;5518:18;;5511:62;5610:34;5604:3;5589:19;;5582:63;-1:-1:-1;;;5676:3:7;5661:19;;5654:50;5736:3;5721:19;;5186:560::o;5751:267::-;5840:6;5835:3;5828:19;5892:6;5885:5;5878:4;5873:3;5869:14;5856:43;-1:-1:-1;5944:1:7;5919:16;;;5937:4;5915:27;;;5908:38;;;;6000:2;5979:15;;;-1:-1:-1;;5975:29:7;5966:39;;;5962:50;;5751:267::o;6023:437::-;6240:2;6229:9;6222:21;6203:4;6266:62;6324:2;6313:9;6309:18;6301:6;6293;6266:62;:::i;:::-;6376:9;6368:6;6364:22;6359:2;6348:9;6344:18;6337:50;6404;6447:6;6439;6431;6404:50;:::i;:::-;6396:58;6023:437;-1:-1:-1;;;;;;;6023:437:7:o;6815:222::-;6880:9;;;6901:10;;;6898:133;;;6953:10;6948:3;6944:20;6941:1;6934:31;6988:4;6985:1;6978:15;7016:4;7013:1;7006:15","linkReferences":{},"immutableReferences":{"797":[{"start":605,"length":32},{"start":882,"length":32}],"799":[{"start":1105,"length":32},{"start":1269,"length":32}],"955":[{"start":461,"length":32}]}},"methodIdentifiers":{"BASE_CHAIN_ASSET_PRECISION()":"7eb6dec7","BRIDGE()":"ee9a31a2","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdrawToIbcChain(uint256,string,string)":"5fe56b09","withdrawToSequencer(uint256,address)":"757e9874"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_baseChainAssetPrecision\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"destinationChainAddress\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"name\":\"Ics20Withdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationChainAddress\",\"type\":\"address\"}],\"name\":\"SequencerWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_CHAIN_ASSET_PRECISION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_destinationChainAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"withdrawToIbcChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destinationChainAddress\",\"type\":\"address\"}],\"name\":\"withdrawToSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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 `value` 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 default value returned by this function, unless it's 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}.\"},\"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 `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AstriaBridgeableERC20.sol\":\"AstriaBridgeableERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/AstriaBridgeableERC20.sol\":{\"keccak256\":\"0xb14e27d808b77cabe7cd43c98df09b613605dd02058dd6186275f4c019d33a97\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://bb7f0732e471bc3aa9c3fea9cd0fc1e6cbfd76fba4503c87b618d442824138cf\",\"dweb:/ipfs/QmcVveF7yQW82cjgXPirDSCSjSMMqu63uEZqE2L8393aQv\"]},\"src/IAstriaWithdrawer.sol\":{\"keccak256\":\"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b\",\"dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge","type":"address"},{"internalType":"uint32","name":"_baseChainAssetPrecision","type":"uint32"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"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":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"string","name":"destinationChainAddress","type":"string","indexed":false},{"internalType":"string","name":"memo","type":"string","indexed":false}],"type":"event","name":"Ics20Withdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"address","name":"destinationChainAddress","type":"address","indexed":false}],"type":"event","name":"SequencerWithdrawal","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":[],"stateMutability":"view","type":"function","name":"BASE_CHAIN_ASSET_PRECISION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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":"value","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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"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":"value","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":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_destinationChainAddress","type":"string"},{"internalType":"string","name":"_memo","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"withdrawToIbcChain"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_destinationChainAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawToSequencer"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` 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 default value returned by this function, unless it's 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}."},"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 `value`."},"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AstriaBridgeableERC20.sol":"AstriaBridgeableERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/AstriaBridgeableERC20.sol":{"keccak256":"0xb14e27d808b77cabe7cd43c98df09b613605dd02058dd6186275f4c019d33a97","urls":["bzz-raw://bb7f0732e471bc3aa9c3fea9cd0fc1e6cbfd76fba4503c87b618d442824138cf","dweb:/ipfs/QmcVveF7yQW82cjgXPirDSCSjSMMqu63uEZqE2L8393aQv"],"license":"MIT or Apache-2.0"},"src/IAstriaWithdrawer.sol":{"keccak256":"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3","urls":["bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b","dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb"],"license":"MIT or Apache-2.0"}},"version":1},"ast":{"absolutePath":"src/AstriaBridgeableERC20.sol","id":952,"exportedSymbols":{"AstriaBridgeableERC20":[951],"ERC20":[651],"IAstriaWithdrawer":[974]},"nodeType":"SourceUnit","src":"46:2297:5","nodes":[{"id":787,"nodeType":"PragmaDirective","src":"46:24:5","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":789,"nodeType":"ImportDirective","src":"72:58:5","nodes":[],"absolutePath":"src/IAstriaWithdrawer.sol","file":"./IAstriaWithdrawer.sol","nameLocation":"-1:-1:-1","scope":952,"sourceUnit":975,"symbolAliases":[{"foreign":{"id":788,"name":"IAstriaWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"80:17:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":791,"nodeType":"ImportDirective","src":"131:81:5","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":952,"sourceUnit":652,"symbolAliases":[{"foreign":{"id":790,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"139:5:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":951,"nodeType":"ContractDefinition","src":"214:2128:5","nodes":[{"id":797,"nodeType":"VariableDeclaration","src":"350:31:5","nodes":[],"constant":false,"functionSelector":"ee9a31a2","mutability":"immutable","name":"BRIDGE","nameLocation":"375:6:5","scope":951,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"350:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":799,"nodeType":"VariableDeclaration","src":"572:33:5","nodes":[],"constant":false,"mutability":"immutable","name":"DIVISOR","nameLocation":"598:7:5","scope":951,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":798,"name":"uint256","nodeType":"ElementaryTypeName","src":"572:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":805,"nodeType":"EventDefinition","src":"665:52:5","nodes":[],"anonymous":false,"eventSelector":"0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885","name":"Mint","nameLocation":"671:4:5","parameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"692:7:5","nodeType":"VariableDeclaration","scope":805,"src":"676:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":800,"name":"address","nodeType":"ElementaryTypeName","src":"676:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":803,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"709:6:5","nodeType":"VariableDeclaration","scope":805,"src":"701:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":802,"name":"uint256","nodeType":"ElementaryTypeName","src":"701:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"675:41:5"}},{"id":817,"nodeType":"ModifierDefinition","src":"723:126:5","nodes":[],"body":{"id":816,"nodeType":"Block","src":"745:104:5","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"763:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"767:6:5","memberName":"sender","nodeType":"MemberAccess","src":"763:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":810,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"777:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"763:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41737472696142726964676561626c6545524332303a206f6e6c79206272696467652063616e206d696e74","id":812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"785:45:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_2b9146552dde8fc6a59af17b746f82c14750e632315943ad876e6b22dfde9fb5","typeString":"literal_string \"AstriaBridgeableERC20: only bridge can mint\""},"value":"AstriaBridgeableERC20: only bridge can mint"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2b9146552dde8fc6a59af17b746f82c14750e632315943ad876e6b22dfde9fb5","typeString":"literal_string \"AstriaBridgeableERC20: only bridge can mint\""}],"id":807,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"755:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"755:76:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":814,"nodeType":"ExpressionStatement","src":"755:76:5"},{"id":815,"nodeType":"PlaceholderStatement","src":"841:1:5"}]},"name":"onlyBridge","nameLocation":"732:10:5","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"742:2:5"},"virtual":false,"visibility":"internal"},{"id":864,"nodeType":"FunctionDefinition","src":"855:542:5","nodes":[],"body":{"id":863,"nodeType":"Block","src":"1021:376:5","nodes":[],"statements":[{"assignments":[833],"declarations":[{"constant":false,"id":833,"mutability":"mutable","name":"decimals","nameLocation":"1037:8:5","nodeType":"VariableDeclaration","scope":863,"src":"1031:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":832,"name":"uint8","nodeType":"ElementaryTypeName","src":"1031:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":836,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":834,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"1048:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1048:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1031:27:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":837,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1072:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":838,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"1099:8:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1072:35:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":845,"nodeType":"IfStatement","src":"1068:170:5","trueBody":{"id":844,"nodeType":"Block","src":"1109:129:5","statements":[{"expression":{"arguments":[{"hexValue":"41737472696142726964676561626c6545524332303a206261736520636861696e20617373657420707265636973696f6e206d757374206265206c657373207468616e206f7220657175616c20746f20746f6b656e20646563696d616c73","id":841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1130:96:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a6e66fc0c429e43ef50fa4d54d0412fe7db0b91983a6b3ea3fc331a5e2e65ca","typeString":"literal_string \"AstriaBridgeableERC20: base chain asset precision must be less than or equal to token decimals\""},"value":"AstriaBridgeableERC20: base chain asset precision must be less than or equal to token decimals"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2a6e66fc0c429e43ef50fa4d54d0412fe7db0b91983a6b3ea3fc331a5e2e65ca","typeString":"literal_string \"AstriaBridgeableERC20: base chain asset precision must be less than or equal to token decimals\""}],"id":840,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1123:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1123:104:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":843,"nodeType":"ExpressionStatement","src":"1123:104:5"}]}},{"expression":{"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":846,"name":"BASE_CHAIN_ASSET_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"1248:26:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":847,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1277:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1248:53:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":849,"nodeType":"ExpressionStatement","src":"1248:53:5"},{"expression":{"id":857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":850,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"1311:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:2:5","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":852,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"1328:8:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":853,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1339:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1328:35:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1327:37:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1321:43:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1311:53:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":858,"nodeType":"ExpressionStatement","src":"1311:53:5"},{"expression":{"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":859,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"1374:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":860,"name":"_bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"1383:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1374:16:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":862,"nodeType":"ExpressionStatement","src":"1374:16:5"}]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":828,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":823,"src":"1005:5:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":829,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"1012:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":830,"kind":"baseConstructorSpecifier","modifierName":{"id":827,"name":"ERC20","nameLocations":["999:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"999:5:5"},"nodeType":"ModifierInvocation","src":"999:21:5"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":819,"mutability":"mutable","name":"_bridge","nameLocation":"884:7:5","nodeType":"VariableDeclaration","scope":864,"src":"876:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":818,"name":"address","nodeType":"ElementaryTypeName","src":"876:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":821,"mutability":"mutable","name":"_baseChainAssetPrecision","nameLocation":"908:24:5","nodeType":"VariableDeclaration","scope":864,"src":"901:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":820,"name":"uint32","nodeType":"ElementaryTypeName","src":"901:6:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":823,"mutability":"mutable","name":"_name","nameLocation":"956:5:5","nodeType":"VariableDeclaration","scope":864,"src":"942:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":822,"name":"string","nodeType":"ElementaryTypeName","src":"942:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":825,"mutability":"mutable","name":"_symbol","nameLocation":"985:7:5","nodeType":"VariableDeclaration","scope":864,"src":"971:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":824,"name":"string","nodeType":"ElementaryTypeName","src":"971:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"866:132:5"},"returnParameters":{"id":831,"nodeType":"ParameterList","parameters":[],"src":"1021:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":879,"nodeType":"ModifierDefinition","src":"1403:217:5","nodes":[],"body":{"id":878,"nodeType":"Block","src":"1444:176:5","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":869,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"1462:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":870,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"1471:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1462:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1481:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1462:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41737472696142726964676561626c6545524332303a20696e73756666696369656e742076616c75652c206d7573742062652067726561746572207468616e203130202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841494e5f41535345545f505245434953494f4e29","id":874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1484:117:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_0a1fafcfe2814b9edaab69864f15ff933f223c5f8d9a056856d6cd9787c99eba","typeString":"literal_string \"AstriaBridgeableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)\""},"value":"AstriaBridgeableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0a1fafcfe2814b9edaab69864f15ff933f223c5f8d9a056856d6cd9787c99eba","typeString":"literal_string \"AstriaBridgeableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)\""}],"id":868,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1454:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1454:148:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":876,"nodeType":"ExpressionStatement","src":"1454:148:5"},{"id":877,"nodeType":"PlaceholderStatement","src":"1612:1:5"}]},"name":"sufficientValue","nameLocation":"1412:15:5","parameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"amount","nameLocation":"1436:6:5","nodeType":"VariableDeclaration","scope":879,"src":"1428:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1428:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1427:16:5"},"virtual":false,"visibility":"internal"},{"id":899,"nodeType":"FunctionDefinition","src":"1626:153:5","nodes":[],"body":{"id":898,"nodeType":"Block","src":"1710:69:5","nodes":[],"statements":[{"expression":{"arguments":[{"id":889,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"1726:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":890,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1731:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":888,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1720:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1720:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":892,"nodeType":"ExpressionStatement","src":"1720:19:5"},{"eventCall":{"arguments":[{"id":894,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"1759:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1764:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":893,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":805,"src":"1754:4:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1754:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"EmitStatement","src":"1749:23:5"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":886,"kind":"modifierInvocation","modifierName":{"id":885,"name":"onlyBridge","nameLocations":["1695:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":817,"src":"1695:10:5"},"nodeType":"ModifierInvocation","src":"1695:10:5"}],"name":"mint","nameLocation":"1635:4:5","parameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"_to","nameLocation":"1648:3:5","nodeType":"VariableDeclaration","scope":899,"src":"1640:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":880,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":883,"mutability":"mutable","name":"_amount","nameLocation":"1661:7:5","nodeType":"VariableDeclaration","scope":899,"src":"1653:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1653:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1639:30:5"},"returnParameters":{"id":887,"nodeType":"ParameterList","parameters":[],"src":"1710:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":923,"nodeType":"FunctionDefinition","src":"1785:258:5","nodes":[],"body":{"id":922,"nodeType":"Block","src":"1919:124:5","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1935:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1939:6:5","memberName":"sender","nodeType":"MemberAccess","src":"1935:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":912,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1947:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":909,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1929:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":914,"nodeType":"ExpressionStatement","src":"1929:26:5"},{"eventCall":{"arguments":[{"expression":{"id":916,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1990:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1994:6:5","memberName":"sender","nodeType":"MemberAccess","src":"1990:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"2002:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":919,"name":"_destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2011:24:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":915,"name":"SequencerWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"1970:19:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1970:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"EmitStatement","src":"1965:71:5"}]},"functionSelector":"757e9874","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":906,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1906:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":907,"kind":"modifierInvocation","modifierName":{"id":905,"name":"sufficientValue","nameLocations":["1890:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":879,"src":"1890:15:5"},"nodeType":"ModifierInvocation","src":"1890:24:5"}],"name":"withdrawToSequencer","nameLocation":"1794:19:5","parameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":901,"mutability":"mutable","name":"_amount","nameLocation":"1822:7:5","nodeType":"VariableDeclaration","scope":923,"src":"1814:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":900,"name":"uint256","nodeType":"ElementaryTypeName","src":"1814:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"_destinationChainAddress","nameLocation":"1839:24:5","nodeType":"VariableDeclaration","scope":923,"src":"1831:32:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"1831:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1813:51:5"},"returnParameters":{"id":908,"nodeType":"ParameterList","parameters":[],"src":"1919:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":950,"nodeType":"FunctionDefinition","src":"2049:291:5","nodes":[],"body":{"id":949,"nodeType":"Block","src":"2213:127:5","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":936,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2229:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2233:6:5","memberName":"sender","nodeType":"MemberAccess","src":"2229:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2241:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":935,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2223:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2223:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":940,"nodeType":"ExpressionStatement","src":"2223:26:5"},{"eventCall":{"arguments":[{"expression":{"id":942,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2280:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2284:6:5","memberName":"sender","nodeType":"MemberAccess","src":"2280:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":944,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2292:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":945,"name":"_destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"2301:24:5","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":946,"name":"_memo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"2327:5:5","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":941,"name":"Ics20Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"2264:15:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,string memory,string memory)"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2264:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":948,"nodeType":"EmitStatement","src":"2259:74:5"}]},"functionSelector":"5fe56b09","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":932,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2200:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":933,"kind":"modifierInvocation","modifierName":{"id":931,"name":"sufficientValue","nameLocations":["2184:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":879,"src":"2184:15:5"},"nodeType":"ModifierInvocation","src":"2184:24:5"}],"name":"withdrawToIbcChain","nameLocation":"2058:18:5","parameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"_amount","nameLocation":"2085:7:5","nodeType":"VariableDeclaration","scope":950,"src":"2077:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2077:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":927,"mutability":"mutable","name":"_destinationChainAddress","nameLocation":"2110:24:5","nodeType":"VariableDeclaration","scope":950,"src":"2094:40:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":926,"name":"string","nodeType":"ElementaryTypeName","src":"2094:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":929,"mutability":"mutable","name":"_memo","nameLocation":"2152:5:5","nodeType":"VariableDeclaration","scope":950,"src":"2136:21:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":928,"name":"string","nodeType":"ElementaryTypeName","src":"2136:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2076:82:5"},"returnParameters":{"id":934,"nodeType":"ParameterList","parameters":[],"src":"2213:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":792,"name":"IAstriaWithdrawer","nameLocations":["248:17:5"],"nodeType":"IdentifierPath","referencedDeclaration":974,"src":"248:17:5"},"id":793,"nodeType":"InheritanceSpecifier","src":"248:17:5"},{"baseName":{"id":794,"name":"ERC20","nameLocations":["267:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"267:5:5"},"id":795,"nodeType":"InheritanceSpecifier","src":"267:5:5"}],"canonicalName":"AstriaBridgeableERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[951,651,41,755,729,785,974],"name":"AstriaBridgeableERC20","nameLocation":"223:21:5","scope":952,"usedErrors":[11,16,21,30,35,40],"usedEvents":[663,672,805,963,973]}],"license":"MIT or Apache-2.0"},"id":5} \ No newline at end of file diff --git a/crates/astria-bridge-withdrawer/ethereum/out/AstriaMintableERC20.sol/AstriaMintableERC20.json b/crates/astria-bridge-withdrawer/ethereum/out/AstriaMintableERC20.sol/AstriaMintableERC20.json deleted file mode 100644 index 1455123a75..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/out/AstriaMintableERC20.sol/AstriaMintableERC20.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_bridge","type":"address","internalType":"address"},{"name":"_baseChainAssetPrecision","type":"uint32","internalType":"uint32"},{"name":"_name","type":"string","internalType":"string"},{"name":"_symbol","type":"string","internalType":"string"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_CHAIN_ASSET_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"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":"value","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":"mint","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"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":"value","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":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToIbcChain","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_destinationChainAddress","type":"string","internalType":"string"},{"name":"_memo","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToSequencer","inputs":[{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_destinationChainAddress","type":"address","internalType":"address"}],"outputs":[],"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":"Ics20Withdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"string","indexed":false,"internalType":"string"},{"name":"memo","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SequencerWithdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"address","indexed":false,"internalType":"address"}],"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},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60e06040523480156200001157600080fd5b506040516200125e3803806200125e83398101604081905262000034916200021d565b8181600362000044838262000354565b50600462000053828262000354565b5050506000620000686200015360201b60201c565b90508060ff168463ffffffff161115620001145760405162461bcd60e51b815260206004820152605c60248201527f4173747269614d696e7461626c6545524332303a206261736520636861696e2060448201527f617373657420707265636973696f6e206d757374206265206c6573732074686160648201527f6e206f7220657175616c20746f20746f6b656e20646563696d616c7300000000608482015260a40160405180910390fd5b63ffffffff84166080526200012d8460ff831662000436565b6200013a90600a6200055c565b60c052505050506001600160a01b031660a05262000577565b601290565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018057600080fd5b81516001600160401b03808211156200019d576200019d62000158565b604051601f8301601f19908116603f01168101908282118183101715620001c857620001c862000158565b81604052838152602092508683858801011115620001e557600080fd5b600091505b83821015620002095785820183015181830184015290820190620001ea565b600093810190920192909252949350505050565b600080600080608085870312156200023457600080fd5b84516001600160a01b03811681146200024c57600080fd5b602086015190945063ffffffff811681146200026757600080fd5b60408601519093506001600160401b03808211156200028557600080fd5b62000293888389016200016e565b93506060870151915080821115620002aa57600080fd5b50620002b9878288016200016e565b91505092959194509250565b600181811c90821680620002da57607f821691505b602082108103620002fb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200034f57600081815260208120601f850160051c810160208610156200032a5750805b601f850160051c820191505b818110156200034b5782815560010162000336565b5050505b505050565b81516001600160401b0381111562000370576200037062000158565b6200038881620003818454620002c5565b8462000301565b602080601f831160018114620003c05760008415620003a75750858301515b600019600386901b1c1916600185901b1785556200034b565b600085815260208120601f198616915b82811015620003f157888601518255948401946001909101908401620003d0565b5085821015620004105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b63ffffffff82811682821603908082111562000456576200045662000420565b5092915050565b600181815b808511156200049e57816000190482111562000482576200048262000420565b808516156200049057918102915b93841c939080029062000462565b509250929050565b600082620004b75750600162000556565b81620004c65750600062000556565b8160018114620004df5760028114620004ea576200050a565b600191505062000556565b60ff841115620004fe57620004fe62000420565b50506001821b62000556565b5060208310610133831016604e8410600b84101617156200052f575081810a62000556565b6200053b83836200045d565b806000190482111562000552576200055262000420565b0290505b92915050565b60006200057063ffffffff841683620004a6565b9392505050565b60805160a05160c051610ca9620005b56000396000818161044f01526104f301526000818161025d0152610372015260006101cd0152610ca96000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb1461020c578063dd62ed3e1461021f578063ee9a31a21461025857600080fd5b806370a082311461018c578063757e9874146101b55780637eb6dec7146101c857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806340c10f19146101645780635fe56b091461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610297565b60405161010491906108f3565b60405180910390f35b61012061011b36600461095d565b610329565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610987565b610343565b60405160128152602001610104565b61017761017236600461095d565b610367565b005b610177610187366004610a0c565b610447565b61013461019a366004610a86565b6001600160a01b031660009081526020819052604090205490565b6101776101c3366004610aa8565b6104eb565b6101ef7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610104565b6100f7610585565b61012061021a36600461095d565b610594565b61013461022d366004610ad4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6060600380546102a690610afe565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290610afe565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b6000336103378185856105a2565b60019150505b92915050565b6000336103518582856105b4565b61035c858585610632565b506001949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103f65760405162461bcd60e51b815260206004820152602960248201527f4173747269614d696e7461626c6545524332303a206f6e6c79206272696467656044820152680818d85b881b5a5b9d60ba1b60648201526084015b60405180910390fd5b6104008282610691565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161043b91815260200190565b60405180910390a25050565b8460006104747f000000000000000000000000000000000000000000000000000000000000000083610b38565b116104915760405162461bcd60e51b81526004016103ed90610b5a565b61049b33876106cb565b85336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516104db9493929190610c20565b60405180910390a3505050505050565b8160006105187f000000000000000000000000000000000000000000000000000000000000000083610b38565b116105355760405162461bcd60e51b81526004016103ed90610b5a565b61053f33846106cb565b6040516001600160a01b0383168152839033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e3906020015b60405180910390a3505050565b6060600480546102a690610afe565b600033610337818585610632565b6105af8383836001610701565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461062c578181101561061d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ed565b61062c84848484036000610701565b50505050565b6001600160a01b03831661065c57604051634b637e8f60e11b8152600060048201526024016103ed565b6001600160a01b0382166106865760405163ec442f0560e01b8152600060048201526024016103ed565b6105af8383836107d6565b6001600160a01b0382166106bb5760405163ec442f0560e01b8152600060048201526024016103ed565b6106c7600083836107d6565b5050565b6001600160a01b0382166106f557604051634b637e8f60e11b8152600060048201526024016103ed565b6106c7826000836107d6565b6001600160a01b03841661072b5760405163e602df0560e01b8152600060048201526024016103ed565b6001600160a01b03831661075557604051634a1406b160e11b8152600060048201526024016103ed565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561062c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107c891815260200190565b60405180910390a350505050565b6001600160a01b0383166108015780600260008282546107f69190610c52565b909155506108739050565b6001600160a01b038316600090815260208190526040902054818110156108545760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ed565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661088f576002805482900390556108ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161057891815260200190565b600060208083528351808285015260005b8181101561092057858101830151858201604001528201610904565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461095857600080fd5b919050565b6000806040838503121561097057600080fd5b61097983610941565b946020939093013593505050565b60008060006060848603121561099c57600080fd5b6109a584610941565b92506109b360208501610941565b9150604084013590509250925092565b60008083601f8401126109d557600080fd5b50813567ffffffffffffffff8111156109ed57600080fd5b602083019150836020828501011115610a0557600080fd5b9250929050565b600080600080600060608688031215610a2457600080fd5b85359450602086013567ffffffffffffffff80821115610a4357600080fd5b610a4f89838a016109c3565b90965094506040880135915080821115610a6857600080fd5b50610a75888289016109c3565b969995985093965092949392505050565b600060208284031215610a9857600080fd5b610aa182610941565b9392505050565b60008060408385031215610abb57600080fd5b82359150610acb60208401610941565b90509250929050565b60008060408385031215610ae757600080fd5b610af083610941565b9150610acb60208401610941565b600181811c90821680610b1257607f821691505b602082108103610b3257634e487b7160e01b600052602260045260246000fd5b50919050565b600082610b5557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526071908201527f4173747269614d696e7461626c6545524332303a20696e73756666696369656e60408201527f742076616c75652c206d7573742062652067726561746572207468616e20313060608201527f202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841494e6080820152705f41535345545f505245434953494f4e2960781b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c34604083018688610bf7565b8281036020840152610c47818587610bf7565b979650505050505050565b8082018082111561033d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220b21f724561b91219f22da803c0b2d4bd10b7ab9bbd03b249f351b2942ce0bb7864736f6c63430008150033","sourceMap":"214:2120:5:-:0;;;851:540;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1001:5;1008:7;1962:5:1;:13;1001:5:5;1962::1;:13;:::i;:::-;-1:-1:-1;1985:7:1;:17;1995:7;1985;:17;:::i;:::-;;1896:113;;1027:14:5::1;1044:10;:8;;;:10;;:::i;:::-;1027:27;;1095:8;1068:35;;:24;:35;;;1064:168;;;1119:102;::::0;-1:-1:-1;;;1119:102:5;;4682:2:7;1119:102:5::1;::::0;::::1;4664:21:7::0;4721:2;4701:18;;;4694:30;4760:34;4740:18;;;4733:62;4831:34;4811:18;;;4804:62;4903:30;4882:19;;;4875:59;4951:19;;1119:102:5::1;;;;;;;1064:168;1242:53;::::0;::::1;;::::0;1322:35:::1;1271:24:::0;1322:35:::1;::::0;::::1;;:::i;:::-;1315:43;::::0;:2:::1;:43;:::i;:::-;1305:53;::::0;-1:-1:-1;;;;;;;;;1368:16:5::1;;::::0;214:2120;;3002:82:1;3075:2;;3002:82::o;14:127:7:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:7;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:7;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:7:o;991:895::-;1107:6;1115;1123;1131;1184:3;1172:9;1163:7;1159:23;1155:33;1152:53;;;1201:1;1198;1191:12;1152:53;1227:16;;-1:-1:-1;;;;;1272:31:7;;1262:42;;1252:70;;1318:1;1315;1308:12;1252:70;1391:2;1376:18;;1370:25;1341:5;;-1:-1:-1;1439:10:7;1426:24;;1414:37;;1404:65;;1465:1;1462;1455:12;1404:65;1539:2;1524:18;;1518:25;1488:7;;-1:-1:-1;;;;;;1592:14:7;;;1589:34;;;1619:1;1616;1609:12;1589:34;1642:61;1695:7;1686:6;1675:9;1671:22;1642:61;:::i;:::-;1632:71;;1749:2;1738:9;1734:18;1728:25;1712:41;;1778:2;1768:8;1765:16;1762:36;;;1794:1;1791;1784:12;1762:36;;1817:63;1872:7;1861:8;1850:9;1846:24;1817:63;:::i;:::-;1807:73;;;991:895;;;;;;;:::o;1891:380::-;1970:1;1966:12;;;;2013;;;2034:61;;2088:4;2080:6;2076:17;2066:27;;2034:61;2141:2;2133:6;2130:14;2110:18;2107:38;2104:161;;2187:10;2182:3;2178:20;2175:1;2168:31;2222:4;2219:1;2212:15;2250:4;2247:1;2240:15;2104:161;;1891:380;;;:::o;2402:545::-;2504:2;2499:3;2496:11;2493:448;;;2540:1;2565:5;2561:2;2554:17;2610:4;2606:2;2596:19;2680:2;2668:10;2664:19;2661:1;2657:27;2651:4;2647:38;2716:4;2704:10;2701:20;2698:47;;;-1:-1:-1;2739:4:7;2698:47;2794:2;2789:3;2785:12;2782:1;2778:20;2772:4;2768:31;2758:41;;2849:82;2867:2;2860:5;2857:13;2849:82;;;2912:17;;;2893:1;2882:13;2849:82;;;2853:3;;;2493:448;2402:545;;;:::o;3123:1352::-;3243:10;;-1:-1:-1;;;;;3265:30:7;;3262:56;;;3298:18;;:::i;:::-;3327:97;3417:6;3377:38;3409:4;3403:11;3377:38;:::i;:::-;3371:4;3327:97;:::i;:::-;3479:4;;3543:2;3532:14;;3560:1;3555:663;;;;4262:1;4279:6;4276:89;;;-1:-1:-1;4331:19:7;;;4325:26;4276:89;-1:-1:-1;;3080:1:7;3076:11;;;3072:24;3068:29;3058:40;3104:1;3100:11;;;3055:57;4378:81;;3525:944;;3555:663;2349:1;2342:14;;;2386:4;2373:18;;-1:-1:-1;;3591:20:7;;;3709:236;3723:7;3720:1;3717:14;3709:236;;;3812:19;;;3806:26;3791:42;;3904:27;;;;3872:1;3860:14;;;;3739:19;;3709:236;;;3713:3;3973:6;3964:7;3961:19;3958:201;;;4034:19;;;4028:26;-1:-1:-1;;4117:1:7;4113:14;;;4129:3;4109:24;4105:37;4101:42;4086:58;4071:74;;3958:201;-1:-1:-1;;;;;4205:1:7;4189:14;;;4185:22;4172:36;;-1:-1:-1;3123:1352:7:o;4981:127::-;5042:10;5037:3;5033:20;5030:1;5023:31;5073:4;5070:1;5063:15;5097:4;5094:1;5087:15;5113:175;5181:10;5224;;;5212;;;5208:27;;5247:12;;;5244:38;;;5262:18;;:::i;:::-;5244:38;5113:175;;;;:::o;5293:422::-;5382:1;5425:5;5382:1;5439:270;5460:7;5450:8;5447:21;5439:270;;;5519:4;5515:1;5511:6;5507:17;5501:4;5498:27;5495:53;;;5528:18;;:::i;:::-;5578:7;5568:8;5564:22;5561:55;;;5598:16;;;;5561:55;5677:22;;;;5637:15;;;;5439:270;;;5443:3;5293:422;;;;;:::o;5720:806::-;5769:5;5799:8;5789:80;;-1:-1:-1;5840:1:7;5854:5;;5789:80;5888:4;5878:76;;-1:-1:-1;5925:1:7;5939:5;;5878:76;5970:4;5988:1;5983:59;;;;6056:1;6051:130;;;;5963:218;;5983:59;6013:1;6004:10;;6027:5;;;6051:130;6088:3;6078:8;6075:17;6072:43;;;6095:18;;:::i;:::-;-1:-1:-1;;6151:1:7;6137:16;;6166:5;;5963:218;;6265:2;6255:8;6252:16;6246:3;6240:4;6237:13;6233:36;6227:2;6217:8;6214:16;6209:2;6203:4;6200:12;6196:35;6193:77;6190:159;;;-1:-1:-1;6302:19:7;;;6334:5;;6190:159;6381:34;6406:8;6400:4;6381:34;:::i;:::-;6451:6;6447:1;6443:6;6439:19;6430:7;6427:32;6424:58;;;6462:18;;:::i;:::-;6500:20;;-1:-1:-1;5720:806:7;;;;;:::o;6531:147::-;6590:5;6619:53;6660:10;6650:8;6646:25;6640:4;6619:53;:::i;:::-;6610:62;6531:147;-1:-1:-1;;;6531:147:7:o;:::-;214:2120:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806370a082311161008c57806395d89b411161006657806395d89b4114610204578063a9059cbb1461020c578063dd62ed3e1461021f578063ee9a31a21461025857600080fd5b806370a082311461018c578063757e9874146101b55780637eb6dec7146101c857600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce5671461015557806340c10f19146101645780635fe56b091461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f7610297565b60405161010491906108f3565b60405180910390f35b61012061011b36600461095d565b610329565b6040519015158152602001610104565b6002545b604051908152602001610104565b610120610150366004610987565b610343565b60405160128152602001610104565b61017761017236600461095d565b610367565b005b610177610187366004610a0c565b610447565b61013461019a366004610a86565b6001600160a01b031660009081526020819052604090205490565b6101776101c3366004610aa8565b6104eb565b6101ef7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610104565b6100f7610585565b61012061021a36600461095d565b610594565b61013461022d366004610ad4565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61027f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610104565b6060600380546102a690610afe565b80601f01602080910402602001604051908101604052809291908181526020018280546102d290610afe565b801561031f5780601f106102f45761010080835404028352916020019161031f565b820191906000526020600020905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b6000336103378185856105a2565b60019150505b92915050565b6000336103518582856105b4565b61035c858585610632565b506001949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146103f65760405162461bcd60e51b815260206004820152602960248201527f4173747269614d696e7461626c6545524332303a206f6e6c79206272696467656044820152680818d85b881b5a5b9d60ba1b60648201526084015b60405180910390fd5b6104008282610691565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161043b91815260200190565b60405180910390a25050565b8460006104747f000000000000000000000000000000000000000000000000000000000000000083610b38565b116104915760405162461bcd60e51b81526004016103ed90610b5a565b61049b33876106cb565b85336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516104db9493929190610c20565b60405180910390a3505050505050565b8160006105187f000000000000000000000000000000000000000000000000000000000000000083610b38565b116105355760405162461bcd60e51b81526004016103ed90610b5a565b61053f33846106cb565b6040516001600160a01b0383168152839033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e3906020015b60405180910390a3505050565b6060600480546102a690610afe565b600033610337818585610632565b6105af8383836001610701565b505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461062c578181101561061d57604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016103ed565b61062c84848484036000610701565b50505050565b6001600160a01b03831661065c57604051634b637e8f60e11b8152600060048201526024016103ed565b6001600160a01b0382166106865760405163ec442f0560e01b8152600060048201526024016103ed565b6105af8383836107d6565b6001600160a01b0382166106bb5760405163ec442f0560e01b8152600060048201526024016103ed565b6106c7600083836107d6565b5050565b6001600160a01b0382166106f557604051634b637e8f60e11b8152600060048201526024016103ed565b6106c7826000836107d6565b6001600160a01b03841661072b5760405163e602df0560e01b8152600060048201526024016103ed565b6001600160a01b03831661075557604051634a1406b160e11b8152600060048201526024016103ed565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561062c57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107c891815260200190565b60405180910390a350505050565b6001600160a01b0383166108015780600260008282546107f69190610c52565b909155506108739050565b6001600160a01b038316600090815260208190526040902054818110156108545760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016103ed565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661088f576002805482900390556108ae565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161057891815260200190565b600060208083528351808285015260005b8181101561092057858101830151858201604001528201610904565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461095857600080fd5b919050565b6000806040838503121561097057600080fd5b61097983610941565b946020939093013593505050565b60008060006060848603121561099c57600080fd5b6109a584610941565b92506109b360208501610941565b9150604084013590509250925092565b60008083601f8401126109d557600080fd5b50813567ffffffffffffffff8111156109ed57600080fd5b602083019150836020828501011115610a0557600080fd5b9250929050565b600080600080600060608688031215610a2457600080fd5b85359450602086013567ffffffffffffffff80821115610a4357600080fd5b610a4f89838a016109c3565b90965094506040880135915080821115610a6857600080fd5b50610a75888289016109c3565b969995985093965092949392505050565b600060208284031215610a9857600080fd5b610aa182610941565b9392505050565b60008060408385031215610abb57600080fd5b82359150610acb60208401610941565b90509250929050565b60008060408385031215610ae757600080fd5b610af083610941565b9150610acb60208401610941565b600181811c90821680610b1257607f821691505b602082108103610b3257634e487b7160e01b600052602260045260246000fd5b50919050565b600082610b5557634e487b7160e01b600052601260045260246000fd5b500490565b60208082526071908201527f4173747269614d696e7461626c6545524332303a20696e73756666696369656e60408201527f742076616c75652c206d7573742062652067726561746572207468616e20313060608201527f202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841494e6080820152705f41535345545f505245434953494f4e2960781b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000610c34604083018688610bf7565b8281036020840152610c47818587610bf7565b979650505050505050565b8082018082111561033d57634e487b7160e01b600052601160045260246000fdfea2646970667358221220b21f724561b91219f22da803c0b2d4bd10b7ab9bbd03b249f351b2942ce0bb7864736f6c63430008150033","sourceMap":"214:2120:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89:1;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4293:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:7;;1162:22;1144:41;;1132:2;1117:18;4293:186:1;1004:187:7;3144:97:1;3222:12;;3144:97;;;1342:25:7;;;1330:2;1315:18;3144:97:1;1196:177:7;5039:244:1;;;;;;:::i;:::-;;:::i;3002:82::-;;;3075:2;1853:36:7;;1841:2;1826:18;3002:82:1;1711:184:7;1618:153:5;;;;;;:::i;:::-;;:::i;:::-;;2041:291;;;;;;:::i;:::-;;:::i;3299:116:1:-;;;;;;:::i;:::-;-1:-1:-1;;;;;3390:18:1;3364:7;3390:18;;;;;;;;;;;;3299:116;1777:258:5;;;;;;:::i;:::-;;:::i;375:50:6:-;;;;;;;;3671:10:7;3659:23;;;3641:42;;3629:2;3614:18;375:50:6;3497:192:7;2276:93:1;;;:::i;3610:178::-;;;;;;:::i;:::-;;:::i;3846:140::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3952:18:1;;;3926:7;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3846:140;348:31:5;;;;;;;;-1:-1:-1;;;;;4123:32:7;;;4105:51;;4093:2;4078:18;348:31:5;3959:203:7;2074:89:1;2119:13;2151:5;2144:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2074:89;:::o;4293:186::-;4366:4;735:10:4;4420:31:1;735:10:4;4436:7:1;4445:5;4420:8;:31::i;:::-;4468:4;4461:11;;;4293:186;;;;;:::o;5039:244::-;5126:4;735:10:4;5182:37:1;5198:4;735:10:4;5213:5:1;5182:15;:37::i;:::-;5229:26;5239:4;5245:2;5249:5;5229:9;:26::i;:::-;-1:-1:-1;5272:4:1;;5039:244;-1:-1:-1;;;;5039:244:1:o;1618:153:5:-;761:10;-1:-1:-1;;;;;775:6:5;761:20;;753:74;;;;-1:-1:-1;;;753:74:5;;4754:2:7;753:74:5;;;4736:21:7;4793:2;4773:18;;;4766:30;4832:34;4812:18;;;4805:62;-1:-1:-1;;;4883:18:7;;;4876:39;4932:19;;753:74:5;;;;;;;;;1712:19:::1;1718:3;1723:7;1712:5;:19::i;:::-;1751:3;-1:-1:-1::0;;;;;1746:18:5::1;;1756:7;1746:18;;;;1342:25:7::0;;1330:2;1315:18;;1196:177;1746:18:5::1;;;;;;;;1618:153:::0;;:::o;2041:291::-;2192:7;1475:1;1456:16;1465:7;2192;1456:16;:::i;:::-;:20;1448:146;;;;-1:-1:-1;;;1448:146:5;;;;;;;:::i;:::-;2215:26:::1;2221:10;2233:7;2215:5;:26::i;:::-;2284:7;2272:10;-1:-1:-1::0;;;;;2256:69:5::1;;2293:24;;2319:5;;2256:69;;;;;;;;;:::i;:::-;;;;;;;;2041:291:::0;;;;;;:::o;1777:258::-;1898:7;1475:1;1456:16;1465:7;1898;1456:16;:::i;:::-;:20;1448:146;;;;-1:-1:-1;;;1448:146:5;;;;;;;:::i;:::-;1921:26:::1;1927:10;1939:7;1921:5;:26::i;:::-;1962:66;::::0;-1:-1:-1;;;;;4123:32:7;;4105:51;;1994:7:5;;1982:10:::1;::::0;1962:66:::1;::::0;4093:2:7;4078:18;1962:66:5::1;;;;;;;;1777:258:::0;;;:::o;2276:93:1:-;2323:13;2355:7;2348:14;;;;;:::i;3610:178::-;3679:4;735:10:4;3733:27:1;735:10:4;3750:2:1;3754:5;3733:9;:27::i;8989:128::-;9073:37;9082:5;9089:7;9098:5;9105:4;9073:8;:37::i;:::-;8989:128;;;:::o;10663:477::-;-1:-1:-1;;;;;3952:18:1;;;10762:24;3952:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;10828:37:1;;10824:310;;10904:5;10885:16;:24;10881:130;;;10936:60;;-1:-1:-1;;;10936:60:1;;-1:-1:-1;;;;;6681:32:7;;10936:60:1;;;6663:51:7;6730:18;;;6723:34;;;6773:18;;;6766:34;;;6636:18;;10936:60:1;6461:345:7;10881:130:1;11052:57;11061:5;11068:7;11096:5;11077:16;:24;11103:5;11052:8;:57::i;:::-;10752:388;10663:477;;;:::o;5656:300::-;-1:-1:-1;;;;;5739:18:1;;5735:86;;5780:30;;-1:-1:-1;;;5780:30:1;;5807:1;5780:30;;;4105:51:7;4078:18;;5780:30:1;3959:203:7;5735:86:1;-1:-1:-1;;;;;5834:16:1;;5830:86;;5873:32;;-1:-1:-1;;;5873:32:1;;5902:1;5873:32;;;4105:51:7;4078:18;;5873:32:1;3959:203:7;5830:86:1;5925:24;5933:4;5939:2;5943:5;5925:7;:24::i;7721:208::-;-1:-1:-1;;;;;7791:21:1;;7787:91;;7835:32;;-1:-1:-1;;;7835:32:1;;7864:1;7835:32;;;4105:51:7;4078:18;;7835:32:1;3959:203:7;7787:91:1;7887:35;7903:1;7907:7;7916:5;7887:7;:35::i;:::-;7721:208;;:::o;8247:206::-;-1:-1:-1;;;;;8317:21:1;;8313:89;;8361:30;;-1:-1:-1;;;8361:30:1;;8388:1;8361:30;;;4105:51:7;4078:18;;8361:30:1;3959:203:7;8313:89:1;8411:35;8419:7;8436:1;8440:5;8411:7;:35::i;9949:432::-;-1:-1:-1;;;;;10061:19:1;;10057:89;;10103:32;;-1:-1:-1;;;10103:32:1;;10132:1;10103:32;;;4105:51:7;4078:18;;10103:32:1;3959:203:7;10057:89:1;-1:-1:-1;;;;;10159:21:1;;10155:90;;10203:31;;-1:-1:-1;;;10203:31:1;;10231:1;10203:31;;;4105:51:7;4078:18;;10203:31:1;3959:203:7;10155:90:1;-1:-1:-1;;;;;10254:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10299:76;;;;10349:7;-1:-1:-1;;;;;10333:31:1;10342:5;-1:-1:-1;;;;;10333:31:1;;10358:5;10333:31;;;;1342:25:7;;1330:2;1315:18;;1196:177;10333:31:1;;;;;;;;9949:432;;;;:::o;6271:1107::-;-1:-1:-1;;;;;6360:18:1;;6356:540;;6512:5;6496:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6356:540:1;;-1:-1:-1;6356:540:1;;-1:-1:-1;;;;;6570:15:1;;6548:19;6570:15;;;;;;;;;;;6603:19;;;6599:115;;;6649:50;;-1:-1:-1;;;6649:50:1;;-1:-1:-1;;;;;6681:32:7;;6649:50:1;;;6663:51:7;6730:18;;;6723:34;;;6773:18;;;6766:34;;;6636:18;;6649:50:1;6461:345:7;6599:115:1;-1:-1:-1;;;;;6834:15:1;;:9;:15;;;;;;;;;;6852:19;;;;6834:37;;6356:540;-1:-1:-1;;;;;6910:16:1;;6906:425;;7073:12;:21;;;;;;;6906:425;;;-1:-1:-1;;;;;7284:13:1;;:9;:13;;;;;;;;;;:22;;;;;;6906:425;7361:2;-1:-1:-1;;;;;7346:25:1;7355:4;-1:-1:-1;;;;;7346:25:1;;7365:5;7346:25;;;;1342::7;;1330:2;1315:18;;1196:177;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:7;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:7:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:348::-;1952:8;1962:6;2016:3;2009:4;2001:6;1997:17;1993:27;1983:55;;2034:1;2031;2024:12;1983:55;-1:-1:-1;2057:20:7;;2100:18;2089:30;;2086:50;;;2132:1;2129;2122:12;2086:50;2169:4;2161:6;2157:17;2145:29;;2221:3;2214:4;2205:6;2197;2193:19;2189:30;2186:39;2183:59;;;2238:1;2235;2228:12;2183:59;1900:348;;;;;:::o;2253:789::-;2354:6;2362;2370;2378;2386;2439:2;2427:9;2418:7;2414:23;2410:32;2407:52;;;2455:1;2452;2445:12;2407:52;2491:9;2478:23;2468:33;;2552:2;2541:9;2537:18;2524:32;2575:18;2616:2;2608:6;2605:14;2602:34;;;2632:1;2629;2622:12;2602:34;2671:59;2722:7;2713:6;2702:9;2698:22;2671:59;:::i;:::-;2749:8;;-1:-1:-1;2645:85:7;-1:-1:-1;2837:2:7;2822:18;;2809:32;;-1:-1:-1;2853:16:7;;;2850:36;;;2882:1;2879;2872:12;2850:36;;2921:61;2974:7;2963:8;2952:9;2948:24;2921:61;:::i;:::-;2253:789;;;;-1:-1:-1;2253:789:7;;-1:-1:-1;3001:8:7;;2895:87;2253:789;-1:-1:-1;;;2253:789:7:o;3047:186::-;3106:6;3159:2;3147:9;3138:7;3134:23;3130:32;3127:52;;;3175:1;3172;3165:12;3127:52;3198:29;3217:9;3198:29;:::i;:::-;3188:39;3047:186;-1:-1:-1;;;3047:186:7:o;3238:254::-;3306:6;3314;3367:2;3355:9;3346:7;3342:23;3338:32;3335:52;;;3383:1;3380;3373:12;3335:52;3419:9;3406:23;3396:33;;3448:38;3482:2;3471:9;3467:18;3448:38;:::i;:::-;3438:48;;3238:254;;;;;:::o;3694:260::-;3762:6;3770;3823:2;3811:9;3802:7;3798:23;3794:32;3791:52;;;3839:1;3836;3829:12;3791:52;3862:29;3881:9;3862:29;:::i;:::-;3852:39;;3910:38;3944:2;3933:9;3929:18;3910:38;:::i;4167:380::-;4246:1;4242:12;;;;4289;;;4310:61;;4364:4;4356:6;4352:17;4342:27;;4310:61;4417:2;4409:6;4406:14;4386:18;4383:38;4380:161;;4463:10;4458:3;4454:20;4451:1;4444:31;4498:4;4495:1;4488:15;4526:4;4523:1;4516:15;4380:161;;4167:380;;;:::o;4962:217::-;5002:1;5028;5018:132;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;5018:132;-1:-1:-1;5164:9:7;;4962:217::o;5184:558::-;5386:2;5368:21;;;5425:3;5405:18;;;5398:31;5465:34;5460:2;5445:18;;5438:62;5536:34;5531:2;5516:18;;5509:62;5608:34;5602:3;5587:19;;5580:63;-1:-1:-1;;;5674:3:7;5659:19;;5652:48;5732:3;5717:19;;5184:558::o;5747:267::-;5836:6;5831:3;5824:19;5888:6;5881:5;5874:4;5869:3;5865:14;5852:43;-1:-1:-1;5940:1:7;5915:16;;;5933:4;5911:27;;;5904:38;;;;5996:2;5975:15;;;-1:-1:-1;;5971:29:7;5962:39;;;5958:50;;5747:267::o;6019:437::-;6236:2;6225:9;6218:21;6199:4;6262:62;6320:2;6309:9;6305:18;6297:6;6289;6262:62;:::i;:::-;6372:9;6364:6;6360:22;6355:2;6344:9;6340:18;6333:50;6400;6443:6;6435;6427;6400:50;:::i;:::-;6392:58;6019:437;-1:-1:-1;;;;;;;6019:437:7:o;6811:222::-;6876:9;;;6897:10;;;6894:133;;;6949:10;6944:3;6940:20;6937:1;6930:31;6984:4;6981:1;6974:15;7012:4;7009:1;7002:15","linkReferences":{},"immutableReferences":{"797":[{"start":605,"length":32},{"start":882,"length":32}],"799":[{"start":1103,"length":32},{"start":1267,"length":32}],"955":[{"start":461,"length":32}]}},"methodIdentifiers":{"BASE_CHAIN_ASSET_PRECISION()":"7eb6dec7","BRIDGE()":"ee9a31a2","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","withdrawToIbcChain(uint256,string,string)":"5fe56b09","withdrawToSequencer(uint256,address)":"757e9874"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_bridge\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_baseChainAssetPrecision\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"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\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"destinationChainAddress\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"name\":\"Ics20Withdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationChainAddress\",\"type\":\"address\"}],\"name\":\"SequencerWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_CHAIN_ASSET_PRECISION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BRIDGE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"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\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"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\":\"value\",\"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\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_destinationChainAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_memo\",\"type\":\"string\"}],\"name\":\"withdrawToIbcChain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_destinationChainAddress\",\"type\":\"address\"}],\"name\":\"withdrawToSequencer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"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 `value` 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 default value returned by this function, unless it's 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}.\"},\"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 `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AstriaMintableERC20.sol\":\"AstriaMintableERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"src/AstriaMintableERC20.sol\":{\"keccak256\":\"0x266292997afc7072b3ccfb55d800bebd192bad42e2db6abace0447ada0ab4714\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://5a129e80c19f967bf135eca6fb0fd87f6220ad4030ce7e7dfced518098d12be1\",\"dweb:/ipfs/QmZAyEaPtzXXRNgEv55UFgXMn2t7T1hfPa2zvRndBxY9FZ\"]},\"src/IAstriaWithdrawer.sol\":{\"keccak256\":\"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b\",\"dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_bridge","type":"address"},{"internalType":"uint32","name":"_baseChainAssetPrecision","type":"uint32"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"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":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"string","name":"destinationChainAddress","type":"string","indexed":false},{"internalType":"string","name":"memo","type":"string","indexed":false}],"type":"event","name":"Ics20Withdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"address","name":"destinationChainAddress","type":"address","indexed":false}],"type":"event","name":"SequencerWithdrawal","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":[],"stateMutability":"view","type":"function","name":"BASE_CHAIN_ASSET_PRECISION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"BRIDGE","outputs":[{"internalType":"address","name":"","type":"address"}]},{"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":"value","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":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"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":"value","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":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"string","name":"_destinationChainAddress","type":"string"},{"internalType":"string","name":"_memo","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"withdrawToIbcChain"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_destinationChainAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"withdrawToSequencer"}],"devdoc":{"kind":"dev","methods":{"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` 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 default value returned by this function, unless it's 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}."},"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 `value`."},"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AstriaMintableERC20.sol":"AstriaMintableERC20"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80","urls":["bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229","dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"src/AstriaMintableERC20.sol":{"keccak256":"0x266292997afc7072b3ccfb55d800bebd192bad42e2db6abace0447ada0ab4714","urls":["bzz-raw://5a129e80c19f967bf135eca6fb0fd87f6220ad4030ce7e7dfced518098d12be1","dweb:/ipfs/QmZAyEaPtzXXRNgEv55UFgXMn2t7T1hfPa2zvRndBxY9FZ"],"license":"MIT or Apache-2.0"},"src/IAstriaWithdrawer.sol":{"keccak256":"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3","urls":["bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b","dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb"],"license":"MIT or Apache-2.0"}},"version":1},"ast":{"absolutePath":"src/AstriaMintableERC20.sol","id":952,"exportedSymbols":{"AstriaMintableERC20":[951],"ERC20":[651],"IAstriaWithdrawer":[974]},"nodeType":"SourceUnit","src":"46:2289:5","nodes":[{"id":787,"nodeType":"PragmaDirective","src":"46:24:5","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":789,"nodeType":"ImportDirective","src":"72:58:5","nodes":[],"absolutePath":"src/IAstriaWithdrawer.sol","file":"./IAstriaWithdrawer.sol","nameLocation":"-1:-1:-1","scope":952,"sourceUnit":975,"symbolAliases":[{"foreign":{"id":788,"name":"IAstriaWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":974,"src":"80:17:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":791,"nodeType":"ImportDirective","src":"131:81:5","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":952,"sourceUnit":652,"symbolAliases":[{"foreign":{"id":790,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":651,"src":"139:5:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":951,"nodeType":"ContractDefinition","src":"214:2120:5","nodes":[{"id":797,"nodeType":"VariableDeclaration","src":"348:31:5","nodes":[],"constant":false,"functionSelector":"ee9a31a2","mutability":"immutable","name":"BRIDGE","nameLocation":"373:6:5","scope":951,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"348:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":799,"nodeType":"VariableDeclaration","src":"570:33:5","nodes":[],"constant":false,"mutability":"immutable","name":"DIVISOR","nameLocation":"596:7:5","scope":951,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":798,"name":"uint256","nodeType":"ElementaryTypeName","src":"570:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":805,"nodeType":"EventDefinition","src":"663:52:5","nodes":[],"anonymous":false,"eventSelector":"0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885","name":"Mint","nameLocation":"669:4:5","parameters":{"id":804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":801,"indexed":true,"mutability":"mutable","name":"account","nameLocation":"690:7:5","nodeType":"VariableDeclaration","scope":805,"src":"674:23:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":800,"name":"address","nodeType":"ElementaryTypeName","src":"674:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":803,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"707:6:5","nodeType":"VariableDeclaration","scope":805,"src":"699:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":802,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"673:41:5"}},{"id":817,"nodeType":"ModifierDefinition","src":"721:124:5","nodes":[],"body":{"id":816,"nodeType":"Block","src":"743:102:5","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"761:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"765:6:5","memberName":"sender","nodeType":"MemberAccess","src":"761:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":810,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"775:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"761:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173747269614d696e7461626c6545524332303a206f6e6c79206272696467652063616e206d696e74","id":812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"783:43:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_7ce1e585f76b2df4de3e6c3c476877ee15bee51c0d9a234a6bdef0c0b86b1ef7","typeString":"literal_string \"AstriaMintableERC20: only bridge can mint\""},"value":"AstriaMintableERC20: only bridge can mint"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7ce1e585f76b2df4de3e6c3c476877ee15bee51c0d9a234a6bdef0c0b86b1ef7","typeString":"literal_string \"AstriaMintableERC20: only bridge can mint\""}],"id":807,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"753:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"753:74:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":814,"nodeType":"ExpressionStatement","src":"753:74:5"},{"id":815,"nodeType":"PlaceholderStatement","src":"837:1:5"}]},"name":"onlyBridge","nameLocation":"730:10:5","parameters":{"id":806,"nodeType":"ParameterList","parameters":[],"src":"740:2:5"},"virtual":false,"visibility":"internal"},{"id":864,"nodeType":"FunctionDefinition","src":"851:540:5","nodes":[],"body":{"id":863,"nodeType":"Block","src":"1017:374:5","nodes":[],"statements":[{"assignments":[833],"declarations":[{"constant":false,"id":833,"mutability":"mutable","name":"decimals","nameLocation":"1033:8:5","nodeType":"VariableDeclaration","scope":863,"src":"1027:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":832,"name":"uint8","nodeType":"ElementaryTypeName","src":"1027:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":836,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":834,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":215,"src":"1044:8:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":835,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1044:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"1027:27:5"},{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":837,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1068:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":838,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"1095:8:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1068:35:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":845,"nodeType":"IfStatement","src":"1064:168:5","trueBody":{"id":844,"nodeType":"Block","src":"1105:127:5","statements":[{"expression":{"arguments":[{"hexValue":"4173747269614d696e7461626c6545524332303a206261736520636861696e20617373657420707265636973696f6e206d757374206265206c657373207468616e206f7220657175616c20746f20746f6b656e20646563696d616c73","id":841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1126:94:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c0224f7ea945740b5dcef013d71861e10b4f0beb668943d2ede7407d191388d","typeString":"literal_string \"AstriaMintableERC20: base chain asset precision must be less than or equal to token decimals\""},"value":"AstriaMintableERC20: base chain asset precision must be less than or equal to token decimals"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c0224f7ea945740b5dcef013d71861e10b4f0beb668943d2ede7407d191388d","typeString":"literal_string \"AstriaMintableERC20: base chain asset precision must be less than or equal to token decimals\""}],"id":840,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"1119:6:5","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:102:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":843,"nodeType":"ExpressionStatement","src":"1119:102:5"}]}},{"expression":{"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":846,"name":"BASE_CHAIN_ASSET_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":955,"src":"1242:26:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":847,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1271:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1242:53:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":849,"nodeType":"ExpressionStatement","src":"1242:53:5"},{"expression":{"id":857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":850,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"1305:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:2:5","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":852,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":833,"src":"1322:8:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":853,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":821,"src":"1333:24:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1322:35:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":855,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1321:37:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1315:43:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1305:53:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":858,"nodeType":"ExpressionStatement","src":"1305:53:5"},{"expression":{"id":861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":859,"name":"BRIDGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"1368:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":860,"name":"_bridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":819,"src":"1377:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1368:16:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":862,"nodeType":"ExpressionStatement","src":"1368:16:5"}]},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":828,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":823,"src":"1001:5:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":829,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"1008:7:5","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"id":830,"kind":"baseConstructorSpecifier","modifierName":{"id":827,"name":"ERC20","nameLocations":["995:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"995:5:5"},"nodeType":"ModifierInvocation","src":"995:21:5"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":826,"nodeType":"ParameterList","parameters":[{"constant":false,"id":819,"mutability":"mutable","name":"_bridge","nameLocation":"880:7:5","nodeType":"VariableDeclaration","scope":864,"src":"872:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":818,"name":"address","nodeType":"ElementaryTypeName","src":"872:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":821,"mutability":"mutable","name":"_baseChainAssetPrecision","nameLocation":"904:24:5","nodeType":"VariableDeclaration","scope":864,"src":"897:31:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":820,"name":"uint32","nodeType":"ElementaryTypeName","src":"897:6:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":823,"mutability":"mutable","name":"_name","nameLocation":"952:5:5","nodeType":"VariableDeclaration","scope":864,"src":"938:19:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":822,"name":"string","nodeType":"ElementaryTypeName","src":"938:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":825,"mutability":"mutable","name":"_symbol","nameLocation":"981:7:5","nodeType":"VariableDeclaration","scope":864,"src":"967:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":824,"name":"string","nodeType":"ElementaryTypeName","src":"967:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"862:132:5"},"returnParameters":{"id":831,"nodeType":"ParameterList","parameters":[],"src":"1017:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":879,"nodeType":"ModifierDefinition","src":"1397:215:5","nodes":[],"body":{"id":878,"nodeType":"Block","src":"1438:174:5","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":869,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":866,"src":"1456:6:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":870,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":799,"src":"1465:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1456:16:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1475:1:5","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1456:20:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4173747269614d696e7461626c6545524332303a20696e73756666696369656e742076616c75652c206d7573742062652067726561746572207468616e203130202a2a2028544f4b454e5f444543494d414c53202d20424153455f434841494e5f41535345545f505245434953494f4e29","id":874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1478:115:5","typeDescriptions":{"typeIdentifier":"t_stringliteral_a806f7acfbb19eb15d377ed0d88a7f05e1168f6a754480af7e977601b97376fb","typeString":"literal_string \"AstriaMintableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)\""},"value":"AstriaMintableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a806f7acfbb19eb15d377ed0d88a7f05e1168f6a754480af7e977601b97376fb","typeString":"literal_string \"AstriaMintableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)\""}],"id":868,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1448:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1448:146:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":876,"nodeType":"ExpressionStatement","src":"1448:146:5"},{"id":877,"nodeType":"PlaceholderStatement","src":"1604:1:5"}]},"name":"sufficientValue","nameLocation":"1406:15:5","parameters":{"id":867,"nodeType":"ParameterList","parameters":[{"constant":false,"id":866,"mutability":"mutable","name":"amount","nameLocation":"1430:6:5","nodeType":"VariableDeclaration","scope":879,"src":"1422:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":865,"name":"uint256","nodeType":"ElementaryTypeName","src":"1422:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1421:16:5"},"virtual":false,"visibility":"internal"},{"id":899,"nodeType":"FunctionDefinition","src":"1618:153:5","nodes":[],"body":{"id":898,"nodeType":"Block","src":"1702:69:5","nodes":[],"statements":[{"expression":{"arguments":[{"id":889,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"1718:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":890,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1723:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":888,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":491,"src":"1712:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:19:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":892,"nodeType":"ExpressionStatement","src":"1712:19:5"},{"eventCall":{"arguments":[{"id":894,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":881,"src":"1751:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1756:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":893,"name":"Mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":805,"src":"1746:4:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1746:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":897,"nodeType":"EmitStatement","src":"1741:23:5"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":886,"kind":"modifierInvocation","modifierName":{"id":885,"name":"onlyBridge","nameLocations":["1687:10:5"],"nodeType":"IdentifierPath","referencedDeclaration":817,"src":"1687:10:5"},"nodeType":"ModifierInvocation","src":"1687:10:5"}],"name":"mint","nameLocation":"1627:4:5","parameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":881,"mutability":"mutable","name":"_to","nameLocation":"1640:3:5","nodeType":"VariableDeclaration","scope":899,"src":"1632:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":880,"name":"address","nodeType":"ElementaryTypeName","src":"1632:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":883,"mutability":"mutable","name":"_amount","nameLocation":"1653:7:5","nodeType":"VariableDeclaration","scope":899,"src":"1645:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":882,"name":"uint256","nodeType":"ElementaryTypeName","src":"1645:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1631:30:5"},"returnParameters":{"id":887,"nodeType":"ParameterList","parameters":[],"src":"1702:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":923,"nodeType":"FunctionDefinition","src":"1777:258:5","nodes":[],"body":{"id":922,"nodeType":"Block","src":"1911:124:5","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":910,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1927:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1931:6:5","memberName":"sender","nodeType":"MemberAccess","src":"1927:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":912,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1939:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":909,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"1921:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1921:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":914,"nodeType":"ExpressionStatement","src":"1921:26:5"},{"eventCall":{"arguments":[{"expression":{"id":916,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1982:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1986:6:5","memberName":"sender","nodeType":"MemberAccess","src":"1982:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":918,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1994:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":919,"name":"_destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2003:24:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":915,"name":"SequencerWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":963,"src":"1962:19:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":921,"nodeType":"EmitStatement","src":"1957:71:5"}]},"functionSelector":"757e9874","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":906,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":901,"src":"1898:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":907,"kind":"modifierInvocation","modifierName":{"id":905,"name":"sufficientValue","nameLocations":["1882:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":879,"src":"1882:15:5"},"nodeType":"ModifierInvocation","src":"1882:24:5"}],"name":"withdrawToSequencer","nameLocation":"1786:19:5","parameters":{"id":904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":901,"mutability":"mutable","name":"_amount","nameLocation":"1814:7:5","nodeType":"VariableDeclaration","scope":923,"src":"1806:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":900,"name":"uint256","nodeType":"ElementaryTypeName","src":"1806:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":903,"mutability":"mutable","name":"_destinationChainAddress","nameLocation":"1831:24:5","nodeType":"VariableDeclaration","scope":923,"src":"1823:32:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"1823:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1805:51:5"},"returnParameters":{"id":908,"nodeType":"ParameterList","parameters":[],"src":"1911:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":950,"nodeType":"FunctionDefinition","src":"2041:291:5","nodes":[],"body":{"id":949,"nodeType":"Block","src":"2205:127:5","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":936,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2221:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2225:6:5","memberName":"sender","nodeType":"MemberAccess","src":"2221:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":938,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2233:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":935,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":524,"src":"2215:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2215:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":940,"nodeType":"ExpressionStatement","src":"2215:26:5"},{"eventCall":{"arguments":[{"expression":{"id":942,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2272:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2276:6:5","memberName":"sender","nodeType":"MemberAccess","src":"2272:10:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":944,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2284:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":945,"name":"_destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":927,"src":"2293:24:5","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":946,"name":"_memo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":929,"src":"2319:5:5","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":941,"name":"Ics20Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"2256:15:5","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,string memory,string memory)"}},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2256:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":948,"nodeType":"EmitStatement","src":"2251:74:5"}]},"functionSelector":"5fe56b09","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":932,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":925,"src":"2192:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":933,"kind":"modifierInvocation","modifierName":{"id":931,"name":"sufficientValue","nameLocations":["2176:15:5"],"nodeType":"IdentifierPath","referencedDeclaration":879,"src":"2176:15:5"},"nodeType":"ModifierInvocation","src":"2176:24:5"}],"name":"withdrawToIbcChain","nameLocation":"2050:18:5","parameters":{"id":930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"_amount","nameLocation":"2077:7:5","nodeType":"VariableDeclaration","scope":950,"src":"2069:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":924,"name":"uint256","nodeType":"ElementaryTypeName","src":"2069:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":927,"mutability":"mutable","name":"_destinationChainAddress","nameLocation":"2102:24:5","nodeType":"VariableDeclaration","scope":950,"src":"2086:40:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":926,"name":"string","nodeType":"ElementaryTypeName","src":"2086:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":929,"mutability":"mutable","name":"_memo","nameLocation":"2144:5:5","nodeType":"VariableDeclaration","scope":950,"src":"2128:21:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":928,"name":"string","nodeType":"ElementaryTypeName","src":"2128:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2068:82:5"},"returnParameters":{"id":934,"nodeType":"ParameterList","parameters":[],"src":"2205:0:5"},"scope":951,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":792,"name":"IAstriaWithdrawer","nameLocations":["246:17:5"],"nodeType":"IdentifierPath","referencedDeclaration":974,"src":"246:17:5"},"id":793,"nodeType":"InheritanceSpecifier","src":"246:17:5"},{"baseName":{"id":794,"name":"ERC20","nameLocations":["265:5:5"],"nodeType":"IdentifierPath","referencedDeclaration":651,"src":"265:5:5"},"id":795,"nodeType":"InheritanceSpecifier","src":"265:5:5"}],"canonicalName":"AstriaMintableERC20","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[951,651,41,755,729,785,974],"name":"AstriaMintableERC20","nameLocation":"223:19:5","scope":952,"usedErrors":[11,16,21,30,35,40],"usedEvents":[663,672,805,963,973]}],"license":"MIT or Apache-2.0"},"id":5} \ No newline at end of file diff --git a/crates/astria-bridge-withdrawer/ethereum/out/AstriaWithdrawer.sol/AstriaWithdrawer.json b/crates/astria-bridge-withdrawer/ethereum/out/AstriaWithdrawer.sol/AstriaWithdrawer.json deleted file mode 100644 index 9b55aaded8..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/out/AstriaWithdrawer.sol/AstriaWithdrawer.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_baseChainAssetPrecision","type":"uint32","internalType":"uint32"}],"stateMutability":"nonpayable"},{"type":"function","name":"BASE_CHAIN_ASSET_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"withdrawToIbcChain","inputs":[{"name":"destinationChainAddress","type":"string","internalType":"string"},{"name":"memo","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawToSequencer","inputs":[{"name":"destinationChainAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Ics20Withdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"string","indexed":false,"internalType":"string"},{"name":"memo","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SequencerWithdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60c060405234801561001057600080fd5b5060405161067c38038061067c83398101604081905261002f916100ef565b60128163ffffffff1611156100c65760405162461bcd60e51b815260206004820152604d60248201527f417374726961576974686472617765723a206261736520636861696e2061737360448201527f657420707265636973696f6e206d757374206265206c657373207468616e206f60648201526c0e440cae2eac2d840e8de40627609b1b608482015260a40160405180910390fd5b63ffffffff81166080526100db816012610132565b6100e690600a61023c565b60a0525061024e565b60006020828403121561010157600080fd5b815163ffffffff8116811461011557600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff82811682821603908082111561014f5761014f61011c565b5092915050565b600181815b808511156101915781600019048211156101775761017761011c565b8085161561018457918102915b93841c939080029061015b565b509250929050565b6000826101a857506001610236565b816101b557506000610236565b81600181146101cb57600281146101d5576101f1565b6001915050610236565b60ff8411156101e6576101e661011c565b50506001821b610236565b5060208310610133831016604e8410600b8410161715610214575081810a610236565b61021e8383610156565b80600019048211156102325761023261011c565b0290505b92915050565b600061011563ffffffff841683610199565b60805160a0516104046102786000396000818160b6015261014d01526000604b01526104046000f3fe6080604052600436106100345760003560e01c80637eb6dec7146100395780639a977afe14610086578063a996e0201461009b575b600080fd5b34801561004557600080fd5b5061006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200160405180910390f35b6100996100943660046101de565b6100ae565b005b6100996100a9366004610257565b610145565b3460006100db7f0000000000000000000000000000000000000000000000000000000000000000836102c3565b116101015760405162461bcd60e51b81526004016100f8906102e5565b60405180910390fd5b6040516001600160a01b0383168152349033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e39060200160405180910390a35050565b3460006101727f0000000000000000000000000000000000000000000000000000000000000000836102c3565b1161018f5760405162461bcd60e51b81526004016100f8906102e5565b34336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516101cf949392919061039c565b60405180910390a35050505050565b6000602082840312156101f057600080fd5b81356001600160a01b038116811461020757600080fd5b9392505050565b60008083601f84011261022057600080fd5b50813567ffffffffffffffff81111561023857600080fd5b60208301915083602082850101111561025057600080fd5b9250929050565b6000806000806040858703121561026d57600080fd5b843567ffffffffffffffff8082111561028557600080fd5b6102918883890161020e565b909650945060208701359150808211156102aa57600080fd5b506102b78782880161020e565b95989497509550505050565b6000826102e057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526062908201527f417374726961576974686472617765723a20696e73756666696369656e74207660408201527f616c75652c206d7573742062652067726561746572207468616e203130202a2a60608201527f20283138202d20424153455f434841494e5f41535345545f505245434953494f6080820152614e2960f01b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006103b0604083018688610373565b82810360208401526103c3818587610373565b97965050505050505056fea2646970667358221220bf485bdef8bb5e3e0c9764ad32532d90b978a3c3b0b2f5478ce8e5db3e85d3a064736f6c63430008150033","sourceMap":"311:1238:26:-:0;;;576:328;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;662:2;635:24;:29;;;631:147;;;680:87;;-1:-1:-1;;;680:87:26;;501:2:28;680:87:26;;;483:21:28;540:2;520:18;;;513:30;579:34;559:18;;;552:62;650:34;630:18;;;623:62;-1:-1:-1;;;701:19:28;;;694:44;755:19;;680:87:26;;;;;;;631:147;787:53;;;;;867:29;816:24;867:2;:29;:::i;:::-;860:37;;:2;:37;:::i;:::-;850:47;;-1:-1:-1;311:1238:26;;14:280:28;83:6;136:2;124:9;115:7;111:23;107:32;104:52;;;152:1;149;142:12;104:52;184:9;178:16;234:10;227:5;223:22;216:5;213:33;203:61;;260:1;257;250:12;203:61;283:5;14:280;-1:-1:-1;;;14:280:28:o;785:127::-;846:10;841:3;837:20;834:1;827:31;877:4;874:1;867:15;901:4;898:1;891:15;917:175;985:10;1028;;;1016;;;1012:27;;1051:12;;;1048:38;;;1066:18;;:::i;:::-;1048:38;917:175;;;;:::o;1097:422::-;1186:1;1229:5;1186:1;1243:270;1264:7;1254:8;1251:21;1243:270;;;1323:4;1319:1;1315:6;1311:17;1305:4;1302:27;1299:53;;;1332:18;;:::i;:::-;1382:7;1372:8;1368:22;1365:55;;;1402:16;;;;1365:55;1481:22;;;;1441:15;;;;1243:270;;;1247:3;1097:422;;;;;:::o;1524:806::-;1573:5;1603:8;1593:80;;-1:-1:-1;1644:1:28;1658:5;;1593:80;1692:4;1682:76;;-1:-1:-1;1729:1:28;1743:5;;1682:76;1774:4;1792:1;1787:59;;;;1860:1;1855:130;;;;1767:218;;1787:59;1817:1;1808:10;;1831:5;;;1855:130;1892:3;1882:8;1879:17;1876:43;;;1899:18;;:::i;:::-;-1:-1:-1;;1955:1:28;1941:16;;1970:5;;1767:218;;2069:2;2059:8;2056:16;2050:3;2044:4;2041:13;2037:36;2031:2;2021:8;2018:16;2013:2;2007:4;2004:12;2000:35;1997:77;1994:159;;;-1:-1:-1;2106:19:28;;;2138:5;;1994:159;2185:34;2210:8;2204:4;2185:34;:::i;:::-;2255:6;2251:1;2247:6;2243:19;2234:7;2231:32;2228:58;;;2266:18;;:::i;:::-;2304:20;;-1:-1:-1;1524:806:28;;;;;:::o;2335:147::-;2394:5;2423:53;2464:10;2454:8;2450:25;2444:4;2423:53;:::i;2335:147::-;311:1238:26;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100345760003560e01c80637eb6dec7146100395780639a977afe14610086578063a996e0201461009b575b600080fd5b34801561004557600080fd5b5061006d7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200160405180910390f35b6100996100943660046101de565b6100ae565b005b6100996100a9366004610257565b610145565b3460006100db7f0000000000000000000000000000000000000000000000000000000000000000836102c3565b116101015760405162461bcd60e51b81526004016100f8906102e5565b60405180910390fd5b6040516001600160a01b0383168152349033907fae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e39060200160405180910390a35050565b3460006101727f0000000000000000000000000000000000000000000000000000000000000000836102c3565b1161018f5760405162461bcd60e51b81526004016100f8906102e5565b34336001600160a01b03167f0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb878787876040516101cf949392919061039c565b60405180910390a35050505050565b6000602082840312156101f057600080fd5b81356001600160a01b038116811461020757600080fd5b9392505050565b60008083601f84011261022057600080fd5b50813567ffffffffffffffff81111561023857600080fd5b60208301915083602082850101111561025057600080fd5b9250929050565b6000806000806040858703121561026d57600080fd5b843567ffffffffffffffff8082111561028557600080fd5b6102918883890161020e565b909650945060208701359150808211156102aa57600080fd5b506102b78782880161020e565b95989497509550505050565b6000826102e057634e487b7160e01b600052601260045260246000fd5b500490565b60208082526062908201527f417374726961576974686472617765723a20696e73756666696369656e74207660408201527f616c75652c206d7573742062652067726561746572207468616e203130202a2a60608201527f20283138202d20424153455f434841494e5f41535345545f505245434953494f6080820152614e2960f01b60a082015260c00190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6040815260006103b0604083018688610373565b82810360208401526103c3818587610373565b97965050505050505056fea2646970667358221220bf485bdef8bb5e3e0c9764ad32532d90b978a3c3b0b2f5478ce8e5db3e85d3a064736f6c63430008150033","sourceMap":"311:1238:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;375:50:27;;;;;;;;;;;;;;;;;;188:10:28;176:23;;;158:42;;146:2;131:18;375:50:27;;;;;;;1120:195:26;;;;;;:::i;:::-;;:::i;:::-;;1321:226;;;;;;:::i;:::-;;:::i;1120:195::-;1215:9;988:1;969:16;978:7;1215:9;969:16;:::i;:::-;:20;961:131;;;;-1:-1:-1;;;961:131:26;;;;;;;:::i;:::-;;;;;;;;;1241:67:::1;::::0;-1:-1:-1;;;;;2514:32:28;;2496:51;;1273:9:26::1;::::0;1261:10:::1;::::0;1241:67:::1;::::0;2484:2:28;2469:18;1241:67:26::1;;;;;;;1120:195:::0;;:::o;1321:226::-;1445:9;988:1;969:16;978:7;1445:9;969:16;:::i;:::-;:20;961:131;;;;-1:-1:-1;;;961:131:26;;;;;;;:::i;:::-;1499:9:::1;1487:10;-1:-1:-1::0;;;;;1471:69:26::1;;1510:23;;1535:4;;1471:69;;;;;;;;;:::i;:::-;;;;;;;;1321:226:::0;;;;;:::o;211:286:28:-;270:6;323:2;311:9;302:7;298:23;294:32;291:52;;;339:1;336;329:12;291:52;365:23;;-1:-1:-1;;;;;417:31:28;;407:42;;397:70;;463:1;460;453:12;397:70;486:5;211:286;-1:-1:-1;;;211:286:28:o;502:348::-;554:8;564:6;618:3;611:4;603:6;599:17;595:27;585:55;;636:1;633;626:12;585:55;-1:-1:-1;659:20:28;;702:18;691:30;;688:50;;;734:1;731;724:12;688:50;771:4;763:6;759:17;747:29;;823:3;816:4;807:6;799;795:19;791:30;788:39;785:59;;;840:1;837;830:12;785:59;502:348;;;;;:::o;855:721::-;947:6;955;963;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1080:9;1067:23;1109:18;1150:2;1142:6;1139:14;1136:34;;;1166:1;1163;1156:12;1136:34;1205:59;1256:7;1247:6;1236:9;1232:22;1205:59;:::i;:::-;1283:8;;-1:-1:-1;1179:85:28;-1:-1:-1;1371:2:28;1356:18;;1343:32;;-1:-1:-1;1387:16:28;;;1384:36;;;1416:1;1413;1406:12;1384:36;;1455:61;1508:7;1497:8;1486:9;1482:24;1455:61;:::i;:::-;855:721;;;;-1:-1:-1;1535:8:28;-1:-1:-1;;;;855:721:28:o;1581:217::-;1621:1;1647;1637:132;;1691:10;1686:3;1682:20;1679:1;1672:31;1726:4;1723:1;1716:15;1754:4;1751:1;1744:15;1637:132;-1:-1:-1;1783:9:28;;1581:217::o;1803:542::-;2005:2;1987:21;;;2044:2;2024:18;;;2017:30;2083:34;2078:2;2063:18;;2056:62;2154:34;2149:2;2134:18;;2127:62;2226:34;2220:3;2205:19;;2198:63;-1:-1:-1;;;2292:3:28;2277:19;;2270:33;2335:3;2320:19;;1803:542::o;2558:267::-;2647:6;2642:3;2635:19;2699:6;2692:5;2685:4;2680:3;2676:14;2663:43;-1:-1:-1;2751:1:28;2726:16;;;2744:4;2722:27;;;2715:38;;;;2807:2;2786:15;;;-1:-1:-1;;2782:29:28;2773:39;;;2769:50;;2558:267::o;2830:437::-;3047:2;3036:9;3029:21;3010:4;3073:62;3131:2;3120:9;3116:18;3108:6;3100;3073:62;:::i;:::-;3183:9;3175:6;3171:22;3166:2;3155:9;3151:18;3144:50;3211;3254:6;3246;3238;3211:50;:::i;:::-;3203:58;2830:437;-1:-1:-1;;;;;;;2830:437:28:o","linkReferences":{},"immutableReferences":{"44332":[{"start":182,"length":32},{"start":333,"length":32}],"44419":[{"start":75,"length":32}]}},"methodIdentifiers":{"BASE_CHAIN_ASSET_PRECISION()":"7eb6dec7","withdrawToIbcChain(string,string)":"a996e020","withdrawToSequencer(address)":"9a977afe"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_baseChainAssetPrecision\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"destinationChainAddress\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"name\":\"Ics20Withdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationChainAddress\",\"type\":\"address\"}],\"name\":\"SequencerWithdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_CHAIN_ASSET_PRECISION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"destinationChainAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"name\":\"withdrawToIbcChain\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationChainAddress\",\"type\":\"address\"}],\"name\":\"withdrawToSequencer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/AstriaWithdrawer.sol\":\"AstriaWithdrawer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/AstriaWithdrawer.sol\":{\"keccak256\":\"0x5ba56927e6502aeb10f16e77e0c07a4a61c021f8a0e36a4c49fba19536ba0ec1\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://67451e1cacdabb4e81b692e699ead44ffd67453444f92c89f4634aff97dc33a6\",\"dweb:/ipfs/QmPvdnqZJAkNhbAgNo55rjzkc2VqqV397rifPAvv7NxBaQ\"]},\"src/IAstriaWithdrawer.sol\":{\"keccak256\":\"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b\",\"dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint32","name":"_baseChainAssetPrecision","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"string","name":"destinationChainAddress","type":"string","indexed":false},{"internalType":"string","name":"memo","type":"string","indexed":false}],"type":"event","name":"Ics20Withdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"address","name":"destinationChainAddress","type":"address","indexed":false}],"type":"event","name":"SequencerWithdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_CHAIN_ASSET_PRECISION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]},{"inputs":[{"internalType":"string","name":"destinationChainAddress","type":"string"},{"internalType":"string","name":"memo","type":"string"}],"stateMutability":"payable","type":"function","name":"withdrawToIbcChain"},{"inputs":[{"internalType":"address","name":"destinationChainAddress","type":"address"}],"stateMutability":"payable","type":"function","name":"withdrawToSequencer"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/AstriaWithdrawer.sol":"AstriaWithdrawer"},"evmVersion":"paris","libraries":{}},"sources":{"src/AstriaWithdrawer.sol":{"keccak256":"0x5ba56927e6502aeb10f16e77e0c07a4a61c021f8a0e36a4c49fba19536ba0ec1","urls":["bzz-raw://67451e1cacdabb4e81b692e699ead44ffd67453444f92c89f4634aff97dc33a6","dweb:/ipfs/QmPvdnqZJAkNhbAgNo55rjzkc2VqqV397rifPAvv7NxBaQ"],"license":"MIT or Apache-2.0"},"src/IAstriaWithdrawer.sol":{"keccak256":"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3","urls":["bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b","dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb"],"license":"MIT or Apache-2.0"}},"version":1},"ast":{"absolutePath":"src/AstriaWithdrawer.sol","id":44416,"exportedSymbols":{"AstriaWithdrawer":[44415],"IAstriaWithdrawer":[44438]},"nodeType":"SourceUnit","src":"46:1504:26","nodes":[{"id":44326,"nodeType":"PragmaDirective","src":"46:24:26","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":44328,"nodeType":"ImportDirective","src":"72:58:26","nodes":[],"absolutePath":"src/IAstriaWithdrawer.sol","file":"./IAstriaWithdrawer.sol","nameLocation":"-1:-1:-1","scope":44416,"sourceUnit":44439,"symbolAliases":[{"foreign":{"id":44327,"name":"IAstriaWithdrawer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44438,"src":"80:17:26","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":44415,"nodeType":"ContractDefinition","src":"311:1238:26","nodes":[{"id":44332,"nodeType":"VariableDeclaration","src":"536:33:26","nodes":[],"constant":false,"mutability":"immutable","name":"DIVISOR","nameLocation":"562:7:26","scope":44415,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44331,"name":"uint256","nodeType":"ElementaryTypeName","src":"536:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":44360,"nodeType":"FunctionDefinition","src":"576:328:26","nodes":[],"body":{"id":44359,"nodeType":"Block","src":"621:283:26","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":44339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44337,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44334,"src":"635:24:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3138","id":44338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"662:2:26","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"src":"635:29:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":44345,"nodeType":"IfStatement","src":"631:147:26","trueBody":{"id":44344,"nodeType":"Block","src":"666:112:26","statements":[{"expression":{"arguments":[{"hexValue":"417374726961576974686472617765723a206261736520636861696e20617373657420707265636973696f6e206d757374206265206c657373207468616e206f7220657175616c20746f203138","id":44341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"687:79:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_083adf3a7ddc8bddd208fc804ff77804938532d0290b2338dff5c575303e498b","typeString":"literal_string \"AstriaWithdrawer: base chain asset precision must be less than or equal to 18\""},"value":"AstriaWithdrawer: base chain asset precision must be less than or equal to 18"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_083adf3a7ddc8bddd208fc804ff77804938532d0290b2338dff5c575303e498b","typeString":"literal_string \"AstriaWithdrawer: base chain asset precision must be less than or equal to 18\""}],"id":44340,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"680:6:26","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":44342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"680:87:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44343,"nodeType":"ExpressionStatement","src":"680:87:26"}]}},{"expression":{"id":44348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44346,"name":"BASE_CHAIN_ASSET_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44419,"src":"787:26:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":44347,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44334,"src":"816:24:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"787:53:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":44349,"nodeType":"ExpressionStatement","src":"787:53:26"},{"expression":{"id":44357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":44350,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44332,"src":"850:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":44351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"860:2:26","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":44354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3138","id":44352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"867:2:26","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":44353,"name":"_baseChainAssetPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44334,"src":"872:24:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"867:29:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":44355,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"866:31:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"860:37:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"850:47:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":44358,"nodeType":"ExpressionStatement","src":"850:47:26"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":44335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44334,"mutability":"mutable","name":"_baseChainAssetPrecision","nameLocation":"595:24:26","nodeType":"VariableDeclaration","scope":44360,"src":"588:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":44333,"name":"uint32","nodeType":"ElementaryTypeName","src":"588:6:26","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"587:33:26"},"returnParameters":{"id":44336,"nodeType":"ParameterList","parameters":[],"src":"621:0:26"},"scope":44415,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":44375,"nodeType":"ModifierDefinition","src":"910:200:26","nodes":[],"body":{"id":44374,"nodeType":"Block","src":"951:159:26","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":44367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":44365,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44362,"src":"969:6:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":44366,"name":"DIVISOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44332,"src":"978:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"969:16:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":44368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"988:1:26","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"969:20:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"417374726961576974686472617765723a20696e73756666696369656e742076616c75652c206d7573742062652067726561746572207468616e203130202a2a20283138202d20424153455f434841494e5f41535345545f505245434953494f4e29","id":44370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"991:100:26","typeDescriptions":{"typeIdentifier":"t_stringliteral_87395c1887b61acba4d118e59e0436e32cecdc5b14d96254028b3b49acc85aa8","typeString":"literal_string \"AstriaWithdrawer: insufficient value, must be greater than 10 ** (18 - BASE_CHAIN_ASSET_PRECISION)\""},"value":"AstriaWithdrawer: insufficient value, must be greater than 10 ** (18 - BASE_CHAIN_ASSET_PRECISION)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_87395c1887b61acba4d118e59e0436e32cecdc5b14d96254028b3b49acc85aa8","typeString":"literal_string \"AstriaWithdrawer: insufficient value, must be greater than 10 ** (18 - BASE_CHAIN_ASSET_PRECISION)\""}],"id":44364,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"961:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":44371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"961:131:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44372,"nodeType":"ExpressionStatement","src":"961:131:26"},{"id":44373,"nodeType":"PlaceholderStatement","src":"1102:1:26"}]},"name":"sufficientValue","nameLocation":"919:15:26","parameters":{"id":44363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44362,"mutability":"mutable","name":"amount","nameLocation":"943:6:26","nodeType":"VariableDeclaration","scope":44375,"src":"935:14:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44361,"name":"uint256","nodeType":"ElementaryTypeName","src":"935:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"934:16:26"},"virtual":false,"visibility":"internal"},{"id":44393,"nodeType":"FunctionDefinition","src":"1120:195:26","nodes":[],"body":{"id":44392,"nodeType":"Block","src":"1226:89:26","nodes":[],"statements":[{"eventCall":{"arguments":[{"expression":{"id":44385,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1261:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1265:6:26","memberName":"sender","nodeType":"MemberAccess","src":"1261:10:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":44387,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1273:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1277:5:26","memberName":"value","nodeType":"MemberAccess","src":"1273:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":44389,"name":"destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44377,"src":"1284:23:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":44384,"name":"SequencerWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44427,"src":"1241:19:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address)"}},"id":44390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1241:67:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44391,"nodeType":"EmitStatement","src":"1236:72:26"}]},"functionSelector":"9a977afe","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":44380,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1215:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1219:5:26","memberName":"value","nodeType":"MemberAccess","src":"1215:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":44382,"kind":"modifierInvocation","modifierName":{"id":44379,"name":"sufficientValue","nameLocations":["1199:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":44375,"src":"1199:15:26"},"nodeType":"ModifierInvocation","src":"1199:26:26"}],"name":"withdrawToSequencer","nameLocation":"1129:19:26","parameters":{"id":44378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44377,"mutability":"mutable","name":"destinationChainAddress","nameLocation":"1157:23:26","nodeType":"VariableDeclaration","scope":44393,"src":"1149:31:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44376,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1148:33:26"},"returnParameters":{"id":44383,"nodeType":"ParameterList","parameters":[],"src":"1226:0:26"},"scope":44415,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":44414,"nodeType":"FunctionDefinition","src":"1321:226:26","nodes":[],"body":{"id":44413,"nodeType":"Block","src":"1456:91:26","nodes":[],"statements":[{"eventCall":{"arguments":[{"expression":{"id":44405,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1487:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1491:6:26","memberName":"sender","nodeType":"MemberAccess","src":"1487:10:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":44407,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1499:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1503:5:26","memberName":"value","nodeType":"MemberAccess","src":"1499:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":44409,"name":"destinationChainAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44395,"src":"1510:23:26","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"id":44410,"name":"memo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44397,"src":"1535:4:26","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":44404,"name":"Ics20Withdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44437,"src":"1471:15:26","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (address,uint256,string memory,string memory)"}},"id":44411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1471:69:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":44412,"nodeType":"EmitStatement","src":"1466:74:26"}]},"functionSelector":"a996e020","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":44400,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1445:3:26","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":44401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1449:5:26","memberName":"value","nodeType":"MemberAccess","src":"1445:9:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":44402,"kind":"modifierInvocation","modifierName":{"id":44399,"name":"sufficientValue","nameLocations":["1429:15:26"],"nodeType":"IdentifierPath","referencedDeclaration":44375,"src":"1429:15:26"},"nodeType":"ModifierInvocation","src":"1429:26:26"}],"name":"withdrawToIbcChain","nameLocation":"1330:18:26","parameters":{"id":44398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44395,"mutability":"mutable","name":"destinationChainAddress","nameLocation":"1365:23:26","nodeType":"VariableDeclaration","scope":44414,"src":"1349:39:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":44394,"name":"string","nodeType":"ElementaryTypeName","src":"1349:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":44397,"mutability":"mutable","name":"memo","nameLocation":"1406:4:26","nodeType":"VariableDeclaration","scope":44414,"src":"1390:20:26","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string"},"typeName":{"id":44396,"name":"string","nodeType":"ElementaryTypeName","src":"1390:6:26","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1348:63:26"},"returnParameters":{"id":44403,"nodeType":"ParameterList","parameters":[],"src":"1456:0:26"},"scope":44415,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":44329,"name":"IAstriaWithdrawer","nameLocations":["340:17:26"],"nodeType":"IdentifierPath","referencedDeclaration":44438,"src":"340:17:26"},"id":44330,"nodeType":"InheritanceSpecifier","src":"340:17:26"}],"canonicalName":"AstriaWithdrawer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[44415,44438],"name":"AstriaWithdrawer","nameLocation":"320:16:26","scope":44416,"usedErrors":[],"usedEvents":[44427,44437]}],"license":"MIT or Apache-2.0"},"id":26} \ No newline at end of file diff --git a/crates/astria-bridge-withdrawer/ethereum/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json b/crates/astria-bridge-withdrawer/ethereum/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json deleted file mode 100644 index 517d1d576f..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/out/IAstriaWithdrawer.sol/IAstriaWithdrawer.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"function","name":"BASE_CHAIN_ASSET_PRECISION","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"event","name":"Ics20Withdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"string","indexed":false,"internalType":"string"},{"name":"memo","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"SequencerWithdrawal","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"destinationChainAddress","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"BASE_CHAIN_ASSET_PRECISION()":"7eb6dec7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"destinationChainAddress\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"name\":\"Ics20Withdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationChainAddress\",\"type\":\"address\"}],\"name\":\"SequencerWithdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BASE_CHAIN_ASSET_PRECISION\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/IAstriaWithdrawer.sol\":\"IAstriaWithdrawer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"]},\"sources\":{\"src/IAstriaWithdrawer.sol\":{\"keccak256\":\"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3\",\"license\":\"MIT or Apache-2.0\",\"urls\":[\"bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b\",\"dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.21+commit.d9974bed"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"string","name":"destinationChainAddress","type":"string","indexed":false},{"internalType":"string","name":"memo","type":"string","indexed":false}],"type":"event","name":"Ics20Withdrawal","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":true},{"internalType":"address","name":"destinationChainAddress","type":"address","indexed":false}],"type":"event","name":"SequencerWithdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"BASE_CHAIN_ASSET_PRECISION","outputs":[{"internalType":"uint32","name":"","type":"uint32"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/IAstriaWithdrawer.sol":"IAstriaWithdrawer"},"evmVersion":"paris","libraries":{}},"sources":{"src/IAstriaWithdrawer.sol":{"keccak256":"0x295686ee47b1773604ef7950e11414255138b729d51b9083418c3f33f54915e3","urls":["bzz-raw://70246fa4531669128896bc1da40e16c0ab991cc6afb7bbb1ec1804c278cc3b9b","dweb:/ipfs/QmaxsmxN9PnBhizMeE3rKhWAnTkKgamPcXvUNsjb5Ed4Cb"],"license":"MIT or Apache-2.0"}},"version":1},"ast":{"absolutePath":"src/IAstriaWithdrawer.sol","id":44393,"exportedSymbols":{"IAstriaWithdrawer":[44392]},"nodeType":"SourceUnit","src":"46:1285:27","nodes":[{"id":44371,"nodeType":"PragmaDirective","src":"46:24:27","nodes":[],"literals":["solidity","^","0.8",".21"]},{"id":44392,"nodeType":"ContractDefinition","src":"72:1258:27","nodes":[{"id":44373,"nodeType":"VariableDeclaration","src":"375:50:27","nodes":[],"constant":false,"functionSelector":"7eb6dec7","mutability":"immutable","name":"BASE_CHAIN_ASSET_PRECISION","nameLocation":"399:26:27","scope":44392,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":44372,"name":"uint32","nodeType":"ElementaryTypeName","src":"375:6:27","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"public"},{"id":44381,"nodeType":"EventDefinition","src":"666:107:27","nodes":[],"anonymous":false,"eventSelector":"ae8e66664d108544509c9a5b6a9f33c3b5fef3f88e5d3fa680706a6feb1360e3","name":"SequencerWithdrawal","nameLocation":"672:19:27","parameters":{"id":44380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44375,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"708:6:27","nodeType":"VariableDeclaration","scope":44381,"src":"692:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44374,"name":"address","nodeType":"ElementaryTypeName","src":"692:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":44377,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"732:6:27","nodeType":"VariableDeclaration","scope":44381,"src":"716:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44376,"name":"uint256","nodeType":"ElementaryTypeName","src":"716:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44379,"indexed":false,"mutability":"mutable","name":"destinationChainAddress","nameLocation":"748:23:27","nodeType":"VariableDeclaration","scope":44381,"src":"740:31:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44378,"name":"address","nodeType":"ElementaryTypeName","src":"740:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"691:81:27"}},{"id":44391,"nodeType":"EventDefinition","src":"1213:115:27","nodes":[],"anonymous":false,"eventSelector":"0c64e29a5254a71c7f4e52b3d2d236348c80e00a00ba2e1961962bd2827c03fb","name":"Ics20Withdrawal","nameLocation":"1219:15:27","parameters":{"id":44390,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44383,"indexed":true,"mutability":"mutable","name":"sender","nameLocation":"1251:6:27","nodeType":"VariableDeclaration","scope":44391,"src":"1235:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":44382,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":44385,"indexed":true,"mutability":"mutable","name":"amount","nameLocation":"1275:6:27","nodeType":"VariableDeclaration","scope":44391,"src":"1259:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":44384,"name":"uint256","nodeType":"ElementaryTypeName","src":"1259:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":44387,"indexed":false,"mutability":"mutable","name":"destinationChainAddress","nameLocation":"1290:23:27","nodeType":"VariableDeclaration","scope":44391,"src":"1283:30:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":44386,"name":"string","nodeType":"ElementaryTypeName","src":"1283:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":44389,"indexed":false,"mutability":"mutable","name":"memo","nameLocation":"1322:4:27","nodeType":"VariableDeclaration","scope":44391,"src":"1315:11:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":44388,"name":"string","nodeType":"ElementaryTypeName","src":"1315:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1234:93:27"}}],"abstract":true,"baseContracts":[],"canonicalName":"IAstriaWithdrawer","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[44392],"name":"IAstriaWithdrawer","nameLocation":"90:17:27","scope":44393,"usedErrors":[],"usedEvents":[44381,44391]}],"license":"MIT or Apache-2.0"},"id":27} \ No newline at end of file diff --git a/crates/astria-bridge-withdrawer/ethereum/script/AstriaWithdrawer.s.sol b/crates/astria-bridge-withdrawer/ethereum/script/AstriaWithdrawer.s.sol deleted file mode 100644 index db7cc0a7c8..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/script/AstriaWithdrawer.s.sol +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.13; - -import {Script, console} from "forge-std/Script.sol"; -import {AstriaWithdrawer} from "../src/AstriaWithdrawer.sol"; - -contract AstriaWithdrawerScript is Script { - function setUp() public {} - - function deploy() public { - uint32 baseChainAssetPrecision = uint32(vm.envUint("BASE_CHAIN_ASSET_PRECISION")); - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); - new AstriaWithdrawer(baseChainAssetPrecision); - vm.stopBroadcast(); - } - - function withdrawToSequencer() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); - - address contractAddress = vm.envAddress("ASTRIA_WITHDRAWER"); - AstriaWithdrawer astriaWithdrawer = AstriaWithdrawer(contractAddress); - - address destinationChainAddress = vm.envAddress("SEQUENCER_DESTINATION_CHAIN_ADDRESS"); - uint256 amount = vm.envUint("AMOUNT"); - astriaWithdrawer.withdrawToSequencer{value: amount}(destinationChainAddress); - - vm.stopBroadcast(); - } - - function withdrawToIbcChain() public { - uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY"); - vm.startBroadcast(deployerPrivateKey); - - address contractAddress = vm.envAddress("ASTRIA_WITHDRAWER"); - AstriaWithdrawer astriaWithdrawer = AstriaWithdrawer(contractAddress); - - string memory destinationChainAddress = vm.envString("ORIGIN_DESTINATION_CHAIN_ADDRESS"); - uint256 amount = vm.envUint("AMOUNT"); - astriaWithdrawer.withdrawToIbcChain{value: amount}(destinationChainAddress, ""); - - vm.stopBroadcast(); - } -} diff --git a/crates/astria-bridge-withdrawer/ethereum/src/AstriaBridgeableERC20.sol b/crates/astria-bridge-withdrawer/ethereum/src/AstriaBridgeableERC20.sol deleted file mode 100644 index 17d4978194..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/src/AstriaBridgeableERC20.sol +++ /dev/null @@ -1,68 +0,0 @@ -// SPDX-License-Identifier: MIT or Apache-2.0 -pragma solidity ^0.8.21; - -import {IAstriaWithdrawer} from "./IAstriaWithdrawer.sol"; -import {ERC20} from "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; - -contract AstriaBridgeableERC20 is IAstriaWithdrawer, ERC20 { - // the `astriaBridgeSenderAddress` built into the astria-geth node - address public immutable BRIDGE; - - // the divisor used to convert the rollup asset amount to the base chain denomination - // - // set to 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION) on contract creation - uint256 private immutable DIVISOR; - - // emitted when tokens are minted from a deposit - event Mint(address indexed account, uint256 amount); - - modifier onlyBridge() { - require(msg.sender == BRIDGE, "AstriaBridgeableERC20: only bridge can mint"); - _; - } - - constructor( - address _bridge, - uint32 _baseChainAssetPrecision, - string memory _name, - string memory _symbol - ) ERC20(_name, _symbol) { - uint8 decimals = decimals(); - if (_baseChainAssetPrecision > decimals) { - revert("AstriaBridgeableERC20: base chain asset precision must be less than or equal to token decimals"); - } - - BASE_CHAIN_ASSET_PRECISION = _baseChainAssetPrecision; - DIVISOR = 10 ** (decimals - _baseChainAssetPrecision); - BRIDGE = _bridge; - } - - modifier sufficientValue(uint256 amount) { - require(amount / DIVISOR > 0, "AstriaBridgeableERC20: insufficient value, must be greater than 10 ** (TOKEN_DECIMALS - BASE_CHAIN_ASSET_PRECISION)"); - _; - } - - function mint(address _to, uint256 _amount) - external - onlyBridge - { - _mint(_to, _amount); - emit Mint(_to, _amount); - } - - function withdrawToSequencer(uint256 _amount, address _destinationChainAddress) - external - sufficientValue(_amount) - { - _burn(msg.sender, _amount); - emit SequencerWithdrawal(msg.sender, _amount, _destinationChainAddress); - } - - function withdrawToIbcChain(uint256 _amount, string calldata _destinationChainAddress, string calldata _memo) - external - sufficientValue(_amount) - { - _burn(msg.sender, _amount); - emit Ics20Withdrawal(msg.sender, _amount, _destinationChainAddress, _memo); - } -} diff --git a/crates/astria-bridge-withdrawer/ethereum/src/AstriaWithdrawer.sol b/crates/astria-bridge-withdrawer/ethereum/src/AstriaWithdrawer.sol deleted file mode 100644 index e310c19951..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/src/AstriaWithdrawer.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: MIT or Apache-2.0 -pragma solidity ^0.8.21; - -import {IAstriaWithdrawer} from "./IAstriaWithdrawer.sol"; - -// This contract facilitates withdrawals of the native asset from the rollup to the base chain. -// -// Funds can be withdrawn to either the sequencer or the origin chain via IBC. -contract AstriaWithdrawer is IAstriaWithdrawer { - // the divisor used to convert the rollup asset amount to the base chain denomination - // - // set to 10 ** (18 - BASE_CHAIN_ASSET_PRECISION) on contract creation - uint256 private immutable DIVISOR; - - constructor(uint32 _baseChainAssetPrecision) { - if (_baseChainAssetPrecision > 18) { - revert("AstriaWithdrawer: base chain asset precision must be less than or equal to 18"); - } - BASE_CHAIN_ASSET_PRECISION = _baseChainAssetPrecision; - DIVISOR = 10 ** (18 - _baseChainAssetPrecision); - } - - modifier sufficientValue(uint256 amount) { - require(amount / DIVISOR > 0, "AstriaWithdrawer: insufficient value, must be greater than 10 ** (18 - BASE_CHAIN_ASSET_PRECISION)"); - _; - } - - function withdrawToSequencer(address destinationChainAddress) external payable sufficientValue(msg.value) { - emit SequencerWithdrawal(msg.sender, msg.value, destinationChainAddress); - } - - function withdrawToIbcChain(string calldata destinationChainAddress, string calldata memo) external payable sufficientValue(msg.value) { - emit Ics20Withdrawal(msg.sender, msg.value, destinationChainAddress, memo); - } -} diff --git a/crates/astria-bridge-withdrawer/ethereum/src/IAstriaWithdrawer.sol b/crates/astria-bridge-withdrawer/ethereum/src/IAstriaWithdrawer.sol deleted file mode 100644 index c53d8e60c7..0000000000 --- a/crates/astria-bridge-withdrawer/ethereum/src/IAstriaWithdrawer.sol +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-License-Identifier: MIT or Apache-2.0 -pragma solidity ^0.8.21; - -abstract contract IAstriaWithdrawer { - // the precision of the asset on the base chain. - // - // the amount transferred on the base chain will be divided by 10 ^ (18 - BASE_CHAIN_ASSET_PRECISION). - // - // for example, if base chain asset is precision is 6, the divisor would be 10^12. - uint32 public immutable BASE_CHAIN_ASSET_PRECISION; - - // emitted when a withdrawal to the sequencer is initiated - // - // the `sender` is the evm address that initiated the withdrawal - // the `destinationChainAddress` is the address on the sequencer the funds will be sent to - event SequencerWithdrawal(address indexed sender, uint256 indexed amount, address destinationChainAddress); - - // emitted when a withdrawal to the IBC origin chain is initiated. - // the withdrawal is sent to the origin chain via IBC from the sequencer using the denomination trace. - // - // the `sender` is the evm address that initiated the withdrawal - // the `destinationChainAddress` is the address on the origin chain the funds will be sent to - // the `memo` is an optional field that will be used as the ICS20 packet memo - event Ics20Withdrawal(address indexed sender, uint256 indexed amount, string destinationChainAddress, string memo); -} diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/convert.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/convert.rs index d1ee055b17..441e745ba2 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/convert.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/convert.rs @@ -99,11 +99,8 @@ fn event_to_bridge_unlock( transaction_hash, }; let action = BridgeUnlockAction { - to: Address::builder() - .array(event.destination_chain_address.to_fixed_bytes()) - .prefix(ASTRIA_ADDRESS_PREFIX) - .try_build() - .wrap_err("failed to construct destination address")?, + to: Address::try_from_bech32m(&event.destination_chain_address) + .wrap_err("failed to parse destination chain address as bech32m")?, amount: event .amount .as_u128() @@ -202,7 +199,12 @@ mod tests { event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter { sender: [0u8; 20].into(), amount: 99.into(), - destination_chain_address: [1u8; 20].into(), + destination_chain_address: Address::builder() + .array([1u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap() + .to_string(), }), block_number: 1.into(), transaction_hash: [2u8; 32].into(), @@ -241,7 +243,12 @@ mod tests { event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter { sender: [0u8; 20].into(), amount: 990.into(), - destination_chain_address: [1u8; 20].into(), + destination_chain_address: Address::builder() + .array([1u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap() + .to_string(), }), block_number: 1.into(), transaction_hash: [2u8; 32].into(), diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_bridgeable_erc20.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_bridgeable_erc20.rs index 29dd31f71b..b3be4b5886 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_bridgeable_erc20.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_bridgeable_erc20.rs @@ -29,6 +29,20 @@ pub mod astria_bridgeable_erc20 { ::std::borrow::ToOwned::to_owned("uint32"), ), }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_baseChainBridgeAddress",), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_baseChainAssetDenomination",), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("_name"), kind: ::ethers::core::abi::ethabi::ParamType::String, @@ -46,6 +60,22 @@ pub mod astria_bridgeable_erc20 { ], }), functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), ( ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION"), ::std::vec![::ethers::core::abi::ethabi::Function { @@ -62,6 +92,22 @@ pub mod astria_bridgeable_erc20 { state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, },], ), + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), ( ::std::borrow::ToOwned::to_owned("BRIDGE"), ::std::vec![::ethers::core::abi::ethabi::Function { @@ -366,9 +412,9 @@ pub mod astria_bridgeable_erc20 { }, ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("_destinationChainAddress",), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + kind: ::ethers::core::abi::ethabi::ParamType::String, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("string"), ), }, ], @@ -468,7 +514,7 @@ pub mod astria_bridgeable_erc20 { }, ::ethers::core::abi::ethabi::EventParam { name: ::std::borrow::ToOwned::to_owned("destinationChainAddress",), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + kind: ::ethers::core::abi::ethabi::ParamType::String, indexed: false, }, ], @@ -620,12 +666,12 @@ pub mod astria_bridgeable_erc20 { pub static ASTRIABRIDGEABLEERC20_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x12b8\x03\x80b\0\x12b\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02\x1DV[\x81\x81`\x03b\0\0D\x83\x82b\0\x03TV[P`\x04b\0\0S\x82\x82b\0\x03TV[PPP`\0b\0\0hb\0\x01S` \x1B` \x1CV[\x90P\x80`\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x11\x15b\0\x01\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`^`$\x82\x01R\x7FAstriaBridgeableERC20: base chai`D\x82\x01R\x7Fn asset precision must be less t`d\x82\x01R\x7Fhan or equal to token decimals\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[c\xFF\xFF\xFF\xFF\x84\x16`\x80Rb\0\x01-\x84`\xFF\x83\x16b\0\x046V[b\0\x01:\x90`\nb\0\x05\\V[`\xC0RPPPP`\x01`\x01`\xA0\x1B\x03\x16`\xA0Rb\0\x05wV[`\x12\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\x80W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\x9DWb\0\x01\x9Db\0\x01XV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\xC8Wb\0\x01\xC8b\0\x01XV[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xE5W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02\tW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xEAV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\x80\x85\x87\x03\x12\x15b\0\x024W`\0\x80\xFD[\x84Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02LW`\0\x80\xFD[` \x86\x01Q\x90\x94Pc\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x02gW`\0\x80\xFD[`@\x86\x01Q\x90\x93P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02\x85W`\0\x80\xFD[b\0\x02\x93\x88\x83\x89\x01b\0\x01nV[\x93P``\x87\x01Q\x91P\x80\x82\x11\x15b\0\x02\xAAW`\0\x80\xFD[Pb\0\x02\xB9\x87\x82\x88\x01b\0\x01nV[\x91PP\x92\x95\x91\x94P\x92PV[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02\xDAW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\xFBWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x03OW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03*WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03KW\x82\x81U`\x01\x01b\0\x036V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03pWb\0\x03pb\0\x01XV[b\0\x03\x88\x81b\0\x03\x81\x84Tb\0\x02\xC5V[\x84b\0\x03\x01V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03\xC0W`\0\x84\x15b\0\x03\xA7WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03KV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\xF1W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03\xD0V[P\x85\x82\x10\x15b\0\x04\x10W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15b\0\x04VWb\0\x04Vb\0\x04 V[P\x92\x91PPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x04\x9EW\x81`\0\x19\x04\x82\x11\x15b\0\x04\x82Wb\0\x04\x82b\0\x04 V[\x80\x85\x16\x15b\0\x04\x90W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x04bV[P\x92P\x92\x90PV[`\0\x82b\0\x04\xB7WP`\x01b\0\x05VV[\x81b\0\x04\xC6WP`\0b\0\x05VV[\x81`\x01\x81\x14b\0\x04\xDFW`\x02\x81\x14b\0\x04\xEAWb\0\x05\nV[`\x01\x91PPb\0\x05VV[`\xFF\x84\x11\x15b\0\x04\xFEWb\0\x04\xFEb\0\x04 V[PP`\x01\x82\x1Bb\0\x05VV[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x05/WP\x81\x81\nb\0\x05VV[b\0\x05;\x83\x83b\0\x04]V[\x80`\0\x19\x04\x82\x11\x15b\0\x05RWb\0\x05Rb\0\x04 V[\x02\x90P[\x92\x91PPV[`\0b\0\x05pc\xFF\xFF\xFF\xFF\x84\x16\x83b\0\x04\xA6V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Qa\x0C\xADb\0\x05\xB5`\09`\0\x81\x81a\x04Q\x01Ra\x04\xF5\x01R`\0\x81\x81a\x02]\x01Ra\x03r\x01R`\0a\x01\xCD\x01Ra\x0C\xAD`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x04W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0CW\x80c\xDDb\xED>\x14a\x02\x1FW\x80c\xEE\x9A1\xA2\x14a\x02XW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\x8CW\x80cu~\x98t\x14a\x01\xB5W\x80c~\xB6\xDE\xC7\x14a\x01\xC8W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c1<\xE5g\x14a\x01UW\x80c@\xC1\x0F\x19\x14a\x01dW\x80c_\xE5k\t\x14a\x01yW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x97V[`@Qa\x01\x04\x91\x90a\x08\xF5V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\t_V[a\x03)V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\t\x89V[a\x03CV[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01wa\x01r6`\x04a\t_V[a\x03gV[\0[a\x01wa\x01\x876`\x04a\n\x0EV[a\x04IV[a\x014a\x01\x9A6`\x04a\n\x88V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01wa\x01\xC36`\x04a\n\xAAV[a\x04\xEDV[a\x01\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\0\xF7a\x05\x87V[a\x01 a\x02\x1A6`\x04a\t_V[a\x05\x96V[a\x014a\x02-6`\x04a\n\xD6V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x02\x7F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[```\x03\x80Ta\x02\xA6\x90a\x0B\0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xD2\x90a\x0B\0V[\x80\x15a\x03\x1FW\x80`\x1F\x10a\x02\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x1FV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x037\x81\x85\x85a\x05\xA4V[`\x01\x91PP[\x92\x91PPV[`\x003a\x03Q\x85\x82\x85a\x05\xB6V[a\x03\\\x85\x85\x85a\x064V[P`\x01\x94\x93PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x03\xF8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FAstriaBridgeableERC20: only brid`D\x82\x01Rj\x19\xD9H\x18\xD8[\x88\x1BZ[\x9D`\xAA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x04\x02\x82\x82a\x06\x93V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Fg\x98\xA5`y:T\xC3\xBC\xFE\x86\xA9<\xDE\x1Es\x08}\x94L\x0E\xA2\x05D\x13}A!9h\x85\x82`@Qa\x04=\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPV[\x84`\0a\x04v\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0B:V[\x11a\x04\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xEF\x90a\x0B\\V[a\x04\x9D3\x87a\x06\xCDV[\x853`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x04\xDD\x94\x93\x92\x91\x90a\x0C$V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[\x81`\0a\x05\x1A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0B:V[\x11a\x057W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xEF\x90a\x0B\\V[a\x05A3\x84a\x06\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R\x83\x903\x90\x7F\xAE\x8EffM\x10\x85DP\x9C\x9A[j\x9F3\xC3\xB5\xFE\xF3\xF8\x8E]?\xA6\x80pjo\xEB\x13`\xE3\x90` \x01[`@Q\x80\x91\x03\x90\xA3PPPV[```\x04\x80Ta\x02\xA6\x90a\x0B\0V[`\x003a\x037\x81\x85\x85a\x064V[a\x05\xB1\x83\x83\x83`\x01a\x07\x03V[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T`\0\x19\x81\x14a\x06.W\x81\x81\x10\x15a\x06\x1FW`@Qc}\xC7\xA0\xD9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x03\xEFV[a\x06.\x84\x84\x84\x84\x03`\0a\x07\x03V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06^W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\x88W`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x05\xB1\x83\x83\x83a\x07\xD8V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xBDW`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x06\xC9`\0\x83\x83a\x07\xD8V[PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xF7W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x06\xC9\x82`\0\x83a\x07\xD8V[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x07-W`@Qc\xE6\x02\xDF\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07WW`@QcJ\x14\x06\xB1`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R \x82\x90U\x80\x15a\x06.W\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x84`@Qa\x07\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\x03W\x80`\x02`\0\x82\x82Ta\x07\xF8\x91\x90a\x0CVV[\x90\x91UPa\x08u\x90PV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08VW`@Qc9\x144\xE3`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x81\x90R`@\x90 \x90\x82\x90\x03\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\x91W`\x02\x80T\x82\x90\x03\x90Ua\x08\xB0V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T\x82\x01\x90U[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x83`@Qa\x05z\x91\x81R` \x01\x90V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\"W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x06V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\tZW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\trW`\0\x80\xFD[a\t{\x83a\tCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\x9EW`\0\x80\xFD[a\t\xA7\x84a\tCV[\x92Pa\t\xB5` \x85\x01a\tCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a\t\xD7W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xEFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\n\x07W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\n&W`\0\x80\xFD[\x855\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nEW`\0\x80\xFD[a\nQ\x89\x83\x8A\x01a\t\xC5V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\njW`\0\x80\xFD[Pa\nw\x88\x82\x89\x01a\t\xC5V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\n\x9AW`\0\x80\xFD[a\n\xA3\x82a\tCV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xBDW`\0\x80\xFD[\x825\x91Pa\n\xCD` \x84\x01a\tCV[\x90P\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xE9W`\0\x80\xFD[a\n\xF2\x83a\tCV[\x91Pa\n\xCD` \x84\x01a\tCV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B\x14W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0B4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82a\x0BWWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`s\x90\x82\x01R\x7FAstriaBridgeableERC20: insuffici`@\x82\x01R\x7Fent value, must be greater than ``\x82\x01R\x7F10 ** (TOKEN_DECIMALS - BASE_CHA`\x80\x82\x01RrIN_ASSET_PRECISION)`h\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\x0C8`@\x83\x01\x86\x88a\x0B\xFBV[\x82\x81\x03` \x84\x01Ra\x0CK\x81\x85\x87a\x0B\xFBV[\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03=WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEB\x94\xAB\xA7N\xD6\xA0\x81F1\xB5\n\xF4;\x84]\xC4\xAE\x1C0g\x192\x83\xA3\x82.?\xCC\xE9^\xDBdsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\xE0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\x13\xF68\x03\x80b\0\x13\xF6\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x02rV[\x81\x81`\x05b\0\0D\x83\x82b\0\x03\xDFV[P`\x06b\0\0S\x82\x82b\0\x03\xDFV[PPP`\0b\0\0hb\0\x01v` \x1B` \x1CV[\x90P\x80`\xFF\x16\x86c\xFF\xFF\xFF\xFF\x16\x11\x15b\0\x01\x14W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`^`$\x82\x01R\x7FAstriaBridgeableERC20: base chai`D\x82\x01R\x7Fn asset precision must be less t`d\x82\x01R\x7Fhan or equal to token decimals\0\0`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[c\xFF\xFF\xFF\xFF\x86\x16`\x80R`\0b\0\x01,\x86\x82b\0\x03\xDFV[P`\x01b\0\x01;\x85\x82b\0\x03\xDFV[Pb\0\x01K\x86`\xFF\x83\x16b\0\x04\xC1V[b\0\x01X\x90`\nb\0\x05\xE7V[`\xC0RPPP`\x01`\x01`\xA0\x1B\x03\x90\x93\x16`\xA0RPb\0\x06\x02\x91PPV[`\x12\x90V[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x01\x93W`\0\x80\xFD[\x91\x90PV[\x80Qc\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x01\x93W`\0\x80\xFD[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01\xD5W`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01\xF2Wb\0\x01\xF2b\0\x01\xADV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x02\x1DWb\0\x02\x1Db\0\x01\xADV[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x02:W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x02^W\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x02?V[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0\x80`\0\x80`\xC0\x87\x89\x03\x12\x15b\0\x02\x8CW`\0\x80\xFD[b\0\x02\x97\x87b\0\x01{V[\x95Pb\0\x02\xA7` \x88\x01b\0\x01\x98V[`@\x88\x01Q\x90\x95P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02\xC5W`\0\x80\xFD[b\0\x02\xD3\x8A\x83\x8B\x01b\0\x01\xC3V[\x95P``\x89\x01Q\x91P\x80\x82\x11\x15b\0\x02\xEAW`\0\x80\xFD[b\0\x02\xF8\x8A\x83\x8B\x01b\0\x01\xC3V[\x94P`\x80\x89\x01Q\x91P\x80\x82\x11\x15b\0\x03\x0FW`\0\x80\xFD[b\0\x03\x1D\x8A\x83\x8B\x01b\0\x01\xC3V[\x93P`\xA0\x89\x01Q\x91P\x80\x82\x11\x15b\0\x034W`\0\x80\xFD[Pb\0\x03C\x89\x82\x8A\x01b\0\x01\xC3V[\x91PP\x92\x95P\x92\x95P\x92\x95V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x03eW`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x03\x86WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x03\xDAW`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x03\xB5WP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x03\xD6W\x82\x81U`\x01\x01b\0\x03\xC1V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\xFBWb\0\x03\xFBb\0\x01\xADV[b\0\x04\x13\x81b\0\x04\x0C\x84Tb\0\x03PV[\x84b\0\x03\x8CV[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x04KW`\0\x84\x15b\0\x042WP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x03\xD6V[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x04|W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x04[V[P\x85\x82\x10\x15b\0\x04\x9BW\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15b\0\x04\xE1Wb\0\x04\xE1b\0\x04\xABV[P\x92\x91PPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x05)W\x81`\0\x19\x04\x82\x11\x15b\0\x05\rWb\0\x05\rb\0\x04\xABV[\x80\x85\x16\x15b\0\x05\x1BW\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x04\xEDV[P\x92P\x92\x90PV[`\0\x82b\0\x05BWP`\x01b\0\x05\xE1V[\x81b\0\x05QWP`\0b\0\x05\xE1V[\x81`\x01\x81\x14b\0\x05jW`\x02\x81\x14b\0\x05uWb\0\x05\x95V[`\x01\x91PPb\0\x05\xE1V[`\xFF\x84\x11\x15b\0\x05\x89Wb\0\x05\x89b\0\x04\xABV[PP`\x01\x82\x1Bb\0\x05\xE1V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x05\xBAWP\x81\x81\nb\0\x05\xE1V[b\0\x05\xC6\x83\x83b\0\x04\xE8V[\x80`\0\x19\x04\x82\x11\x15b\0\x05\xDDWb\0\x05\xDDb\0\x04\xABV[\x02\x90P[\x92\x91PPV[`\0b\0\x05\xFBc\xFF\xFF\xFF\xFF\x84\x16\x83b\0\x051V[\x93\x92PPPV[`\x80Q`\xA0Q`\xC0Qa\r\xB6b\0\x06@`\09`\0\x81\x81a\x04w\x01Ra\x05\xC6\x01R`\0\x81\x81a\x02\x83\x01Ra\x03\x98\x01R`\0a\x01\xD0\x01Ra\r\xB6`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\0W`\x005`\xE0\x1C\x80c~\xB6\xDE\xC7\x11a\0\x97W\x80c\xD3\x8F\xE9\xA7\x11a\0fW\x80c\xD3\x8F\xE9\xA7\x14a\x02*W\x80c\xDB\x97\xDC\x98\x14a\x02=W\x80c\xDDb\xED>\x14a\x02EW\x80c\xEE\x9A1\xA2\x14a\x02~W`\0\x80\xFD[\x80c~\xB6\xDE\xC7\x14a\x01\xCBW\x80c\x95\xD8\x9BA\x14a\x02\x07W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0FW\x80c\xB6Gl~\x14a\x02\"W`\0\x80\xFD[\x80c1<\xE5g\x11a\0\xD3W\x80c1<\xE5g\x14a\x01kW\x80c@\xC1\x0F\x19\x14a\x01zW\x80c_\xE5k\t\x14a\x01\x8FW\x80cp\xA0\x821\x14a\x01\xA2W`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x05W\x80c\t^\xA7\xB3\x14a\x01#W\x80c\x18\x16\r\xDD\x14a\x01FW\x80c#\xB8r\xDD\x14a\x01XW[`\0\x80\xFD[a\x01\ra\x02\xBDV[`@Qa\x01\x1A\x91\x90a\t\xB9V[`@Q\x80\x91\x03\x90\xF3[a\x016a\x0116`\x04a\n#V[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[`\x04T[`@Q\x90\x81R` \x01a\x01\x1AV[a\x016a\x01f6`\x04a\nMV[a\x03iV[`@Q`\x12\x81R` \x01a\x01\x1AV[a\x01\x8Da\x01\x886`\x04a\n#V[a\x03\x8DV[\0[a\x01\x8Da\x01\x9D6`\x04a\n\xD2V[a\x04oV[a\x01Ja\x01\xB06`\x04a\x0BLV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 T\x90V[a\x01\xF2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x1AV[a\x01\ra\x05\x13V[a\x016a\x02\x1D6`\x04a\n#V[a\x05\"V[a\x01\ra\x050V[a\x01\x8Da\x0286`\x04a\x0BnV[a\x05\xBEV[a\x01\ra\x06\\V[a\x01Ja\x02S6`\x04a\x0B\xBAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x02\xA5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x1AV[```\x05\x80Ta\x02\xCC\x90a\x0B\xEDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0B\xEDV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x06iV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x06{V[a\x03\x82\x85\x85\x85a\x06\xF9V[P`\x01\x94\x93PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x04\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FAstriaBridgeableERC20: only brid`D\x82\x01Rj\x19\xD9H\x18\xD8[\x88\x1BZ[\x9D`\xAA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x04(\x82\x82a\x07XV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Fg\x98\xA5`y:T\xC3\xBC\xFE\x86\xA9<\xDE\x1Es\x08}\x94L\x0E\xA2\x05D\x13}A!9h\x85\x82`@Qa\x04c\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPV[\x84`\0a\x04\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0C'V[\x11a\x04\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x15\x90a\x0CIV[a\x04\xC33\x87a\x07\x92V[\x853`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x05\x03\x94\x93\x92\x91\x90a\r\x11V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[```\x06\x80Ta\x02\xCC\x90a\x0B\xEDV[`\x003a\x03]\x81\x85\x85a\x06\xF9V[`\x01\x80Ta\x05=\x90a\x0B\xEDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05i\x90a\x0B\xEDV[\x80\x15a\x05\xB6W\x80`\x1F\x10a\x05\x8BWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xB6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\x99W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x82`\0a\x05\xEB\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0C'V[\x11a\x06\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x15\x90a\x0CIV[a\x06\x123\x85a\x07\x92V[\x833`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0FIa\xCA\xB7S\x08\x04\x89\x84\x99\xAA\x89\xF5\xEC\x81\xD1\xA71\x02\xE2\xE4\xA1\xF3\x0F\x88\xE5\xAE5\x13\xBA*\x85\x85`@Qa\x06N\x92\x91\x90a\rCV[`@Q\x80\x91\x03\x90\xA3PPPPV[`\0\x80Ta\x05=\x90a\x0B\xEDV[a\x06v\x83\x83\x83`\x01a\x07\xC8V[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T`\0\x19\x81\x14a\x06\xF3W\x81\x81\x10\x15a\x06\xE4W`@Qc}\xC7\xA0\xD9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x04\x15V[a\x06\xF3\x84\x84\x84\x84\x03`\0a\x07\xC8V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07#W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07MW`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x06v\x83\x83\x83a\x08\x8FV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x82W`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x07\x8E`\0\x83\x83a\x08\x8FV[PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\xBCW`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x07\x8E\x82`\0\x83a\x08\x8FV[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x07\xF2W`@Qc\xE6\x02\xDF\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\x1CW`@QcJ\x14\x06\xB1`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R \x82\x90U\x80\x15a\x06\xF3W\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x84`@Qa\x06N\x91\x81R` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\xBAW\x80`\x04`\0\x82\x82Ta\x08\xAF\x91\x90a\r_V[\x90\x91UPa\t,\x90PV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x02` R`@\x90 T\x81\x81\x10\x15a\t\rW`@Qc9\x144\xE3`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\x02` R`@\x90 \x90\x82\x90\x03\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\tHW`\x04\x80T\x82\x90\x03\x90Ua\tgV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x02` R`@\x90 \x80T\x82\x01\x90U[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x83`@Qa\t\xAC\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\xE6W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\xCAV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\n\x1EW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n6W`\0\x80\xFD[a\n?\x83a\n\x07V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nbW`\0\x80\xFD[a\nk\x84a\n\x07V[\x92Pa\ny` \x85\x01a\n\x07V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a\n\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\n\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\n\xEAW`\0\x80\xFD[\x855\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\tW`\0\x80\xFD[a\x0B\x15\x89\x83\x8A\x01a\n\x89V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x0B.W`\0\x80\xFD[Pa\x0B;\x88\x82\x89\x01a\n\x89V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B^W`\0\x80\xFD[a\x0Bg\x82a\n\x07V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0B\x83W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xA1W`\0\x80\xFD[a\x0B\xAD\x86\x82\x87\x01a\n\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xCDW`\0\x80\xFD[a\x0B\xD6\x83a\n\x07V[\x91Pa\x0B\xE4` \x84\x01a\n\x07V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\x01W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C!WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82a\x0CDWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`s\x90\x82\x01R\x7FAstriaBridgeableERC20: insuffici`@\x82\x01R\x7Fent value, must be greater than ``\x82\x01R\x7F10 ** (TOKEN_DECIMALS - BASE_CHA`\x80\x82\x01RrIN_ASSET_PRECISION)`h\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\r%`@\x83\x01\x86\x88a\x0C\xE8V[\x82\x81\x03` \x84\x01Ra\r8\x81\x85\x87a\x0C\xE8V[\x97\x96PPPPPPPV[` \x81R`\0a\rW` \x83\x01\x84\x86a\x0C\xE8V[\x94\x93PPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 z\x0Bo\xC7\n\x8B$\t|\xDE4\x12\xC1\xAE\xBD[\x92[J\x8B\xAE\xDA\x81#An8^D\x1F\x80\x94dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static ASTRIABRIDGEABLEERC20_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\0\xEAW`\x005`\xE0\x1C\x80cp\xA0\x821\x11a\0\x8CW\x80c\x95\xD8\x9BA\x11a\0fW\x80c\x95\xD8\x9BA\x14a\x02\x04W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0CW\x80c\xDDb\xED>\x14a\x02\x1FW\x80c\xEE\x9A1\xA2\x14a\x02XW`\0\x80\xFD[\x80cp\xA0\x821\x14a\x01\x8CW\x80cu~\x98t\x14a\x01\xB5W\x80c~\xB6\xDE\xC7\x14a\x01\xC8W`\0\x80\xFD[\x80c#\xB8r\xDD\x11a\0\xC8W\x80c#\xB8r\xDD\x14a\x01BW\x80c1<\xE5g\x14a\x01UW\x80c@\xC1\x0F\x19\x14a\x01dW\x80c_\xE5k\t\x14a\x01yW`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\0\xEFW\x80c\t^\xA7\xB3\x14a\x01\rW\x80c\x18\x16\r\xDD\x14a\x010W[`\0\x80\xFD[a\0\xF7a\x02\x97V[`@Qa\x01\x04\x91\x90a\x08\xF5V[`@Q\x80\x91\x03\x90\xF3[a\x01 a\x01\x1B6`\x04a\t_V[a\x03)V[`@Q\x90\x15\x15\x81R` \x01a\x01\x04V[`\x02T[`@Q\x90\x81R` \x01a\x01\x04V[a\x01 a\x01P6`\x04a\t\x89V[a\x03CV[`@Q`\x12\x81R` \x01a\x01\x04V[a\x01wa\x01r6`\x04a\t_V[a\x03gV[\0[a\x01wa\x01\x876`\x04a\n\x0EV[a\x04IV[a\x014a\x01\x9A6`\x04a\n\x88V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x90V[a\x01wa\x01\xC36`\x04a\n\xAAV[a\x04\xEDV[a\x01\xEF\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x04V[a\0\xF7a\x05\x87V[a\x01 a\x02\x1A6`\x04a\t_V[a\x05\x96V[a\x014a\x02-6`\x04a\n\xD6V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x02\x7F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x04V[```\x03\x80Ta\x02\xA6\x90a\x0B\0V[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xD2\x90a\x0B\0V[\x80\x15a\x03\x1FW\x80`\x1F\x10a\x02\xF4Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03\x1FV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03\x02W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x037\x81\x85\x85a\x05\xA4V[`\x01\x91PP[\x92\x91PPV[`\x003a\x03Q\x85\x82\x85a\x05\xB6V[a\x03\\\x85\x85\x85a\x064V[P`\x01\x94\x93PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x03\xF8W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FAstriaBridgeableERC20: only brid`D\x82\x01Rj\x19\xD9H\x18\xD8[\x88\x1BZ[\x9D`\xAA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x04\x02\x82\x82a\x06\x93V[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Fg\x98\xA5`y:T\xC3\xBC\xFE\x86\xA9<\xDE\x1Es\x08}\x94L\x0E\xA2\x05D\x13}A!9h\x85\x82`@Qa\x04=\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPV[\x84`\0a\x04v\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0B:V[\x11a\x04\x93W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xEF\x90a\x0B\\V[a\x04\x9D3\x87a\x06\xCDV[\x853`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x04\xDD\x94\x93\x92\x91\x90a\x0C$V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[\x81`\0a\x05\x1A\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0B:V[\x11a\x057W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x03\xEF\x90a\x0B\\V[a\x05A3\x84a\x06\xCDV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R\x83\x903\x90\x7F\xAE\x8EffM\x10\x85DP\x9C\x9A[j\x9F3\xC3\xB5\xFE\xF3\xF8\x8E]?\xA6\x80pjo\xEB\x13`\xE3\x90` \x01[`@Q\x80\x91\x03\x90\xA3PPPV[```\x04\x80Ta\x02\xA6\x90a\x0B\0V[`\x003a\x037\x81\x85\x85a\x064V[a\x05\xB1\x83\x83\x83`\x01a\x07\x03V[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T`\0\x19\x81\x14a\x06.W\x81\x81\x10\x15a\x06\x1FW`@Qc}\xC7\xA0\xD9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x03\xEFV[a\x06.\x84\x84\x84\x84\x03`\0a\x07\x03V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x06^W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\x88W`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x05\xB1\x83\x83\x83a\x07\xD8V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xBDW`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x06\xC9`\0\x83\x83a\x07\xD8V[PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x06\xF7W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[a\x06\xC9\x82`\0\x83a\x07\xD8V[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x07-W`@Qc\xE6\x02\xDF\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07WW`@QcJ\x14\x06\xB1`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x01` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R \x82\x90U\x80\x15a\x06.W\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x84`@Qa\x07\xCA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\x03W\x80`\x02`\0\x82\x82Ta\x07\xF8\x91\x90a\x0CVV[\x90\x91UPa\x08u\x90PV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R` \x81\x90R`@\x90 T\x81\x81\x10\x15a\x08VW`@Qc9\x144\xE3`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x03\xEFV[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R` \x81\x90R`@\x90 \x90\x82\x90\x03\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x08\x91W`\x02\x80T\x82\x90\x03\x90Ua\x08\xB0V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R` \x81\x90R`@\x90 \x80T\x82\x01\x90U[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x83`@Qa\x05z\x91\x81R` \x01\x90V[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\"W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\x06V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\tZW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\trW`\0\x80\xFD[a\t{\x83a\tCV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\t\x9EW`\0\x80\xFD[a\t\xA7\x84a\tCV[\x92Pa\t\xB5` \x85\x01a\tCV[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a\t\xD7W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\t\xEFW`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\n\x07W`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\n&W`\0\x80\xFD[\x855\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\nEW`\0\x80\xFD[a\nQ\x89\x83\x8A\x01a\t\xC5V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\njW`\0\x80\xFD[Pa\nw\x88\x82\x89\x01a\t\xC5V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\n\x9AW`\0\x80\xFD[a\n\xA3\x82a\tCV[\x93\x92PPPV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xBDW`\0\x80\xFD[\x825\x91Pa\n\xCD` \x84\x01a\tCV[\x90P\x92P\x92\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n\xE9W`\0\x80\xFD[a\n\xF2\x83a\tCV[\x91Pa\n\xCD` \x84\x01a\tCV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0B\x14W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0B4WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82a\x0BWWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`s\x90\x82\x01R\x7FAstriaBridgeableERC20: insuffici`@\x82\x01R\x7Fent value, must be greater than ``\x82\x01R\x7F10 ** (TOKEN_DECIMALS - BASE_CHA`\x80\x82\x01RrIN_ASSET_PRECISION)`h\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\x0C8`@\x83\x01\x86\x88a\x0B\xFBV[\x82\x81\x03` \x84\x01Ra\x0CK\x81\x85\x87a\x0B\xFBV[\x97\x96PPPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03=WcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 \xEB\x94\xAB\xA7N\xD6\xA0\x81F1\xB5\n\xF4;\x84]\xC4\xAE\x1C0g\x192\x83\xA3\x82.?\xCC\xE9^\xDBdsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x01\0W`\x005`\xE0\x1C\x80c~\xB6\xDE\xC7\x11a\0\x97W\x80c\xD3\x8F\xE9\xA7\x11a\0fW\x80c\xD3\x8F\xE9\xA7\x14a\x02*W\x80c\xDB\x97\xDC\x98\x14a\x02=W\x80c\xDDb\xED>\x14a\x02EW\x80c\xEE\x9A1\xA2\x14a\x02~W`\0\x80\xFD[\x80c~\xB6\xDE\xC7\x14a\x01\xCBW\x80c\x95\xD8\x9BA\x14a\x02\x07W\x80c\xA9\x05\x9C\xBB\x14a\x02\x0FW\x80c\xB6Gl~\x14a\x02\"W`\0\x80\xFD[\x80c1<\xE5g\x11a\0\xD3W\x80c1<\xE5g\x14a\x01kW\x80c@\xC1\x0F\x19\x14a\x01zW\x80c_\xE5k\t\x14a\x01\x8FW\x80cp\xA0\x821\x14a\x01\xA2W`\0\x80\xFD[\x80c\x06\xFD\xDE\x03\x14a\x01\x05W\x80c\t^\xA7\xB3\x14a\x01#W\x80c\x18\x16\r\xDD\x14a\x01FW\x80c#\xB8r\xDD\x14a\x01XW[`\0\x80\xFD[a\x01\ra\x02\xBDV[`@Qa\x01\x1A\x91\x90a\t\xB9V[`@Q\x80\x91\x03\x90\xF3[a\x016a\x0116`\x04a\n#V[a\x03OV[`@Q\x90\x15\x15\x81R` \x01a\x01\x1AV[`\x04T[`@Q\x90\x81R` \x01a\x01\x1AV[a\x016a\x01f6`\x04a\nMV[a\x03iV[`@Q`\x12\x81R` \x01a\x01\x1AV[a\x01\x8Da\x01\x886`\x04a\n#V[a\x03\x8DV[\0[a\x01\x8Da\x01\x9D6`\x04a\n\xD2V[a\x04oV[a\x01Ja\x01\xB06`\x04a\x0BLV[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\x02` R`@\x90 T\x90V[a\x01\xF2\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\x1AV[a\x01\ra\x05\x13V[a\x016a\x02\x1D6`\x04a\n#V[a\x05\"V[a\x01\ra\x050V[a\x01\x8Da\x0286`\x04a\x0BnV[a\x05\xBEV[a\x01\ra\x06\\V[a\x01Ja\x02S6`\x04a\x0B\xBAV[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x90\x94\x16\x82R\x91\x90\x91R T\x90V[a\x02\xA5\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x1AV[```\x05\x80Ta\x02\xCC\x90a\x0B\xEDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x02\xF8\x90a\x0B\xEDV[\x80\x15a\x03EW\x80`\x1F\x10a\x03\x1AWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x03EV[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x03(W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x90P\x90V[`\x003a\x03]\x81\x85\x85a\x06iV[`\x01\x91PP[\x92\x91PPV[`\x003a\x03w\x85\x82\x85a\x06{V[a\x03\x82\x85\x85\x85a\x06\xF9V[P`\x01\x94\x93PPPPV[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x04\x1EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`+`$\x82\x01R\x7FAstriaBridgeableERC20: only brid`D\x82\x01Rj\x19\xD9H\x18\xD8[\x88\x1BZ[\x9D`\xAA\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x04(\x82\x82a\x07XV[\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Fg\x98\xA5`y:T\xC3\xBC\xFE\x86\xA9<\xDE\x1Es\x08}\x94L\x0E\xA2\x05D\x13}A!9h\x85\x82`@Qa\x04c\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPV[\x84`\0a\x04\x9C\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0C'V[\x11a\x04\xB9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x15\x90a\x0CIV[a\x04\xC33\x87a\x07\x92V[\x853`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x05\x03\x94\x93\x92\x91\x90a\r\x11V[`@Q\x80\x91\x03\x90\xA3PPPPPPV[```\x06\x80Ta\x02\xCC\x90a\x0B\xEDV[`\x003a\x03]\x81\x85\x85a\x06\xF9V[`\x01\x80Ta\x05=\x90a\x0B\xEDV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x05i\x90a\x0B\xEDV[\x80\x15a\x05\xB6W\x80`\x1F\x10a\x05\x8BWa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x05\xB6V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x05\x99W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[\x82`\0a\x05\xEB\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x0C'V[\x11a\x06\x08W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x04\x15\x90a\x0CIV[a\x06\x123\x85a\x07\x92V[\x833`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0FIa\xCA\xB7S\x08\x04\x89\x84\x99\xAA\x89\xF5\xEC\x81\xD1\xA71\x02\xE2\xE4\xA1\xF3\x0F\x88\xE5\xAE5\x13\xBA*\x85\x85`@Qa\x06N\x92\x91\x90a\rCV[`@Q\x80\x91\x03\x90\xA3PPPPV[`\0\x80Ta\x05=\x90a\x0B\xEDV[a\x06v\x83\x83\x83`\x01a\x07\xC8V[PPPV[`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x86\x16\x83R\x92\x90R T`\0\x19\x81\x14a\x06\xF3W\x81\x81\x10\x15a\x06\xE4W`@Qc}\xC7\xA0\xD9`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x84\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x04\x15V[a\x06\xF3\x84\x84\x84\x84\x03`\0a\x07\xC8V[PPPPV[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x07#W`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07MW`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x06v\x83\x83\x83a\x08\x8FV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\x82W`@Qc\xECD/\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x07\x8E`\0\x83\x83a\x08\x8FV[PPV[`\x01`\x01`\xA0\x1B\x03\x82\x16a\x07\xBCW`@QcKc~\x8F`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[a\x07\x8E\x82`\0\x83a\x08\x8FV[`\x01`\x01`\xA0\x1B\x03\x84\x16a\x07\xF2W`@Qc\xE6\x02\xDF\x05`\xE0\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\x1CW`@QcJ\x14\x06\xB1`\xE1\x1B\x81R`\0`\x04\x82\x01R`$\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x80\x85\x16`\0\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x93\x87\x16\x83R\x92\x90R \x82\x90U\x80\x15a\x06\xF3W\x82`\x01`\x01`\xA0\x1B\x03\x16\x84`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8C[\xE1\xE5\xEB\xEC}[\xD1OqB}\x1E\x84\xF3\xDD\x03\x14\xC0\xF7\xB2)\x1E[ \n\xC8\xC7\xC3\xB9%\x84`@Qa\x06N\x91\x81R` \x01\x90V[`\x01`\x01`\xA0\x1B\x03\x83\x16a\x08\xBAW\x80`\x04`\0\x82\x82Ta\x08\xAF\x91\x90a\r_V[\x90\x91UPa\t,\x90PV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x02` R`@\x90 T\x81\x81\x10\x15a\t\rW`@Qc9\x144\xE3`\xE2\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x81\x01\x82\x90R`D\x81\x01\x83\x90R`d\x01a\x04\x15V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\x02` R`@\x90 \x90\x82\x90\x03\x90U[`\x01`\x01`\xA0\x1B\x03\x82\x16a\tHW`\x04\x80T\x82\x90\x03\x90Ua\tgV[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\x02` R`@\x90 \x80T\x82\x01\x90U[\x81`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x7F\xDD\xF2R\xAD\x1B\xE2\xC8\x9Bi\xC2\xB0h\xFC7\x8D\xAA\x95+\xA7\xF1c\xC4\xA1\x16(\xF5ZM\xF5#\xB3\xEF\x83`@Qa\t\xAC\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\t\xE6W\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\t\xCAV[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\n\x1EW`\0\x80\xFD[\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a\n6W`\0\x80\xFD[a\n?\x83a\n\x07V[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0``\x84\x86\x03\x12\x15a\nbW`\0\x80\xFD[a\nk\x84a\n\x07V[\x92Pa\ny` \x85\x01a\n\x07V[\x91P`@\x84\x015\x90P\x92P\x92P\x92V[`\0\x80\x83`\x1F\x84\x01\x12a\n\x9BW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\n\xB3W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\n\xCBW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0``\x86\x88\x03\x12\x15a\n\xEAW`\0\x80\xFD[\x855\x94P` \x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x0B\tW`\0\x80\xFD[a\x0B\x15\x89\x83\x8A\x01a\n\x89V[\x90\x96P\x94P`@\x88\x015\x91P\x80\x82\x11\x15a\x0B.W`\0\x80\xFD[Pa\x0B;\x88\x82\x89\x01a\n\x89V[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a\x0B^W`\0\x80\xFD[a\x0Bg\x82a\n\x07V[\x93\x92PPPV[`\0\x80`\0`@\x84\x86\x03\x12\x15a\x0B\x83W`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0B\xA1W`\0\x80\xFD[a\x0B\xAD\x86\x82\x87\x01a\n\x89V[\x94\x97\x90\x96P\x93\x94PPPPV[`\0\x80`@\x83\x85\x03\x12\x15a\x0B\xCDW`\0\x80\xFD[a\x0B\xD6\x83a\n\x07V[\x91Pa\x0B\xE4` \x84\x01a\n\x07V[\x90P\x92P\x92\x90PV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x0C\x01W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x0C!WcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\0\x82a\x0CDWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`s\x90\x82\x01R\x7FAstriaBridgeableERC20: insuffici`@\x82\x01R\x7Fent value, must be greater than ``\x82\x01R\x7F10 ** (TOKEN_DECIMALS - BASE_CHA`\x80\x82\x01RrIN_ASSET_PRECISION)`h\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\r%`@\x83\x01\x86\x88a\x0C\xE8V[\x82\x81\x03` \x84\x01Ra\r8\x81\x85\x87a\x0C\xE8V[\x97\x96PPPPPPPV[` \x81R`\0a\rW` \x83\x01\x84\x86a\x0C\xE8V[\x94\x93PPPPV[\x80\x82\x01\x80\x82\x11\x15a\x03cWcNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD\xFE\xA2dipfsX\"\x12 z\x0Bo\xC7\n\x8B$\t|\xDE4\x12\xC1\xAE\xBD[\x92[J\x8B\xAE\xDA\x81#An8^D\x1F\x80\x94dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static ASTRIABRIDGEABLEERC20_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); @@ -709,6 +755,15 @@ pub mod astria_bridgeable_erc20 { Ok(deployer) } + /// Calls the contract's `BASE_CHAIN_ASSET_DENOMINATION` (0xb6476c7e) function + pub fn base_chain_asset_denomination( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 71, 108, 126], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `BASE_CHAIN_ASSET_PRECISION` (0x7eb6dec7) function pub fn base_chain_asset_precision( &self, @@ -718,6 +773,15 @@ pub mod astria_bridgeable_erc20 { .expect("method not found (this should never happen)") } + /// Calls the contract's `BASE_CHAIN_BRIDGE_ADDRESS` (0xdb97dc98) function + pub fn base_chain_bridge_address( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 151, 220, 152], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `BRIDGE` (0xee9a31a2) function pub fn bridge( &self, @@ -837,14 +901,14 @@ pub mod astria_bridgeable_erc20 { .expect("method not found (this should never happen)") } - /// Calls the contract's `withdrawToSequencer` (0x757e9874) function + /// Calls the contract's `withdrawToSequencer` (0xd38fe9a7) function pub fn withdraw_to_sequencer( &self, amount: ::ethers::core::types::U256, - destination_chain_address: ::ethers::core::types::Address, + destination_chain_address: ::std::string::String, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([117, 126, 152, 116], (amount, destination_chain_address)) + .method_hash([211, 143, 233, 167], (amount, destination_chain_address)) .expect("method not found (this should never happen)") } @@ -1242,14 +1306,14 @@ pub mod astria_bridgeable_erc20 { )] #[ethevent( name = "SequencerWithdrawal", - abi = "SequencerWithdrawal(address,uint256,address)" + abi = "SequencerWithdrawal(address,uint256,string)" )] pub struct SequencerWithdrawalFilter { #[ethevent(indexed)] pub sender: ::ethers::core::types::Address, #[ethevent(indexed)] pub amount: ::ethers::core::types::U256, - pub destination_chain_address: ::ethers::core::types::Address, + pub destination_chain_address: ::std::string::String, } #[derive( Clone, @@ -1338,6 +1402,23 @@ pub mod astria_bridgeable_erc20 { Self::TransferFilter(value) } } + /// Container type for all input parameters for the `BASE_CHAIN_ASSET_DENOMINATION` function + /// with signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_ASSET_DENOMINATION", + abi = "BASE_CHAIN_ASSET_DENOMINATION()" + )] + pub struct BaseChainAssetDenominationCall; /// Container type for all input parameters for the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -1355,6 +1436,23 @@ pub mod astria_bridgeable_erc20 { abi = "BASE_CHAIN_ASSET_PRECISION()" )] pub struct BaseChainAssetPrecisionCall; + /// Container type for all input parameters for the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_BRIDGE_ADDRESS", + abi = "BASE_CHAIN_BRIDGE_ADDRESS()" + )] + pub struct BaseChainBridgeAddressCall; /// Container type for all input parameters for the `BRIDGE` function with signature `BRIDGE()` /// and selector `0xee9a31a2` #[derive( @@ -1549,7 +1647,7 @@ pub mod astria_bridgeable_erc20 { pub memo: ::std::string::String, } /// Container type for all input parameters for the `withdrawToSequencer` function with - /// signature `withdrawToSequencer(uint256,address)` and selector `0x757e9874` + /// signature `withdrawToSequencer(uint256,string)` and selector `0xd38fe9a7` #[derive( Clone, ::ethers::contract::EthCall, @@ -1562,16 +1660,18 @@ pub mod astria_bridgeable_erc20 { )] #[ethcall( name = "withdrawToSequencer", - abi = "withdrawToSequencer(uint256,address)" + abi = "withdrawToSequencer(uint256,string)" )] pub struct WithdrawToSequencerCall { pub amount: ::ethers::core::types::U256, - pub destination_chain_address: ::ethers::core::types::Address, + pub destination_chain_address: ::std::string::String, } /// Container type for all of the contract's call #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum AstriaBridgeableERC20Calls { + BaseChainAssetDenomination(BaseChainAssetDenominationCall), BaseChainAssetPrecision(BaseChainAssetPrecisionCall), + BaseChainBridgeAddress(BaseChainBridgeAddressCall), Bridge(BridgeCall), Allowance(AllowanceCall), Approve(ApproveCall), @@ -1591,11 +1691,21 @@ pub mod astria_bridgeable_erc20 { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainAssetDenomination(decoded)); + } if let Ok(decoded) = ::decode(data) { return Ok(Self::BaseChainAssetPrecision(decoded)); } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainBridgeAddress(decoded)); + } if let Ok(decoded) = ::decode(data) { return Ok(Self::Bridge(decoded)); } @@ -1646,9 +1756,15 @@ pub mod astria_bridgeable_erc20 { impl ::ethers::core::abi::AbiEncode for AstriaBridgeableERC20Calls { fn encode(self) -> Vec { match self { + Self::BaseChainAssetDenomination(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::BaseChainAssetPrecision(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::BaseChainBridgeAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::Bridge(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Allowance(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), @@ -1672,7 +1788,9 @@ pub mod astria_bridgeable_erc20 { impl ::core::fmt::Display for AstriaBridgeableERC20Calls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { + Self::BaseChainAssetDenomination(element) => ::core::fmt::Display::fmt(element, f), Self::BaseChainAssetPrecision(element) => ::core::fmt::Display::fmt(element, f), + Self::BaseChainBridgeAddress(element) => ::core::fmt::Display::fmt(element, f), Self::Bridge(element) => ::core::fmt::Display::fmt(element, f), Self::Allowance(element) => ::core::fmt::Display::fmt(element, f), Self::Approve(element) => ::core::fmt::Display::fmt(element, f), @@ -1689,11 +1807,21 @@ pub mod astria_bridgeable_erc20 { } } } + impl ::core::convert::From for AstriaBridgeableERC20Calls { + fn from(value: BaseChainAssetDenominationCall) -> Self { + Self::BaseChainAssetDenomination(value) + } + } impl ::core::convert::From for AstriaBridgeableERC20Calls { fn from(value: BaseChainAssetPrecisionCall) -> Self { Self::BaseChainAssetPrecision(value) } } + impl ::core::convert::From for AstriaBridgeableERC20Calls { + fn from(value: BaseChainBridgeAddressCall) -> Self { + Self::BaseChainBridgeAddress(value) + } + } impl ::core::convert::From for AstriaBridgeableERC20Calls { fn from(value: BridgeCall) -> Self { Self::Bridge(value) @@ -1759,6 +1887,19 @@ pub mod astria_bridgeable_erc20 { Self::WithdrawToSequencer(value) } } + /// Container type for all return fields from the `BASE_CHAIN_ASSET_DENOMINATION` function with + /// signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainAssetDenominationReturn(pub ::std::string::String); /// Container type for all return fields from the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -1772,6 +1913,19 @@ pub mod astria_bridgeable_erc20 { Hash, )] pub struct BaseChainAssetPrecisionReturn(pub u32); + /// Container type for all return fields from the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainBridgeAddressReturn(pub ::std::string::String); /// Container type for all return fields from the `BRIDGE` function with signature `BRIDGE()` /// and selector `0xee9a31a2` #[derive( diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer.rs index 0ab771e47c..93778b5958 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer.rs @@ -14,15 +14,47 @@ pub mod astria_withdrawer { fn __abi() -> ::ethers::core::abi::Abi { ::ethers::core::abi::ethabi::Contract { constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor { - inputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_baseChainAssetPrecision",), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - internal_type: ::core::option::Option::Some(::std::borrow::ToOwned::to_owned( - "uint32" - ),), - },], + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_baseChainAssetPrecision",), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_baseChainBridgeAddress",), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_baseChainAssetDenomination",), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ], }), functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), ( ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION"), ::std::vec![::ethers::core::abi::ethabi::Function { @@ -39,6 +71,22 @@ pub mod astria_withdrawer { state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, },], ), + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), ( ::std::borrow::ToOwned::to_owned("withdrawToIbcChain"), ::std::vec![::ethers::core::abi::ethabi::Function { @@ -70,9 +118,9 @@ pub mod astria_withdrawer { name: ::std::borrow::ToOwned::to_owned("withdrawToSequencer",), inputs: ::std::vec![::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("destinationChainAddress",), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + kind: ::ethers::core::abi::ethabi::ParamType::String, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("string"), ), },], outputs: ::std::vec![], @@ -128,7 +176,7 @@ pub mod astria_withdrawer { }, ::ethers::core::abi::ethabi::EventParam { name: ::std::borrow::ToOwned::to_owned("destinationChainAddress",), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + kind: ::ethers::core::abi::ethabi::ParamType::String, indexed: false, }, ], @@ -145,12 +193,12 @@ pub mod astria_withdrawer { pub static ASTRIAWITHDRAWER_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(__abi); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\xC0`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa\x06|8\x03\x80a\x06|\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xEFV[`\x12\x81c\xFF\xFF\xFF\xFF\x16\x11\x15a\0\xC6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FAstriaWithdrawer: base chain ass`D\x82\x01R\x7Fet precision must be less than o`d\x82\x01Rl\x0ED\x0C\xAE.\xAC-\x84\x0E\x8D\xE4\x06'`\x9B\x1B`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[c\xFF\xFF\xFF\xFF\x81\x16`\x80Ra\0\xDB\x81`\x12a\x012V[a\0\xE6\x90`\na\x02\x0C\x97d\xAD2S-\x90\xB9x\xA3\xC3\xB0\xB2\xF5G\x8C\xE8\xE5\xDB>\x85\xD3\xA0dsolcC\0\x08\x15\x003"; + const __BYTECODE: &[u8] = b"`\xC0`@R4\x80\x15b\0\0\x11W`\0\x80\xFD[P`@Qb\0\n\xED8\x03\x80b\0\n\xED\x839\x81\x01`@\x81\x90Rb\0\x004\x91b\0\x01\xE0V[`\x12\x83c\xFF\xFF\xFF\xFF\x16\x11\x15b\0\0\xCCW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`M`$\x82\x01R\x7FAstriaWithdrawer: base chain ass`D\x82\x01R\x7Fet precision must be less than o`d\x82\x01Rl\x0ED\x0C\xAE.\xAC-\x84\x0E\x8D\xE4\x06'`\x9B\x1B`\x84\x82\x01R`\xA4\x01`@Q\x80\x91\x03\x90\xFD[c\xFF\xFF\xFF\xFF\x83\x16`\x80R`\0b\0\0\xE4\x83\x82b\0\x02\xF6V[P`\x01b\0\0\xF3\x82\x82b\0\x02\xF6V[Pb\0\x01\x01\x83`\x12b\0\x03\xD8V[b\0\x01\x0E\x90`\nb\0\x04\xFEV[`\xA0RPb\0\x05\x19\x91PPV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`\0\x82`\x1F\x83\x01\x12b\0\x01CW`\0\x80\xFD[\x81Q`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x01`Wb\0\x01`b\0\x01\x1BV[`@Q`\x1F\x83\x01`\x1F\x19\x90\x81\x16`?\x01\x16\x81\x01\x90\x82\x82\x11\x81\x83\x10\x17\x15b\0\x01\x8BWb\0\x01\x8Bb\0\x01\x1BV[\x81`@R\x83\x81R` \x92P\x86\x83\x85\x88\x01\x01\x11\x15b\0\x01\xA8W`\0\x80\xFD[`\0\x91P[\x83\x82\x10\x15b\0\x01\xCCW\x85\x82\x01\x83\x01Q\x81\x83\x01\x84\x01R\x90\x82\x01\x90b\0\x01\xADV[`\0\x93\x81\x01\x90\x92\x01\x92\x90\x92R\x94\x93PPPPV[`\0\x80`\0``\x84\x86\x03\x12\x15b\0\x01\xF6W`\0\x80\xFD[\x83Qc\xFF\xFF\xFF\xFF\x81\x16\x81\x14b\0\x02\x0BW`\0\x80\xFD[` \x85\x01Q\x90\x93P`\x01`\x01`@\x1B\x03\x80\x82\x11\x15b\0\x02)W`\0\x80\xFD[b\0\x027\x87\x83\x88\x01b\0\x011V[\x93P`@\x86\x01Q\x91P\x80\x82\x11\x15b\0\x02NW`\0\x80\xFD[Pb\0\x02]\x86\x82\x87\x01b\0\x011V[\x91PP\x92P\x92P\x92V[`\x01\x81\x81\x1C\x90\x82\x16\x80b\0\x02|W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03b\0\x02\x9DWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[`\x1F\x82\x11\x15b\0\x02\xF1W`\0\x81\x81R` \x81 `\x1F\x85\x01`\x05\x1C\x81\x01` \x86\x10\x15b\0\x02\xCCWP\x80[`\x1F\x85\x01`\x05\x1C\x82\x01\x91P[\x81\x81\x10\x15b\0\x02\xEDW\x82\x81U`\x01\x01b\0\x02\xD8V[PPP[PPPV[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15b\0\x03\x12Wb\0\x03\x12b\0\x01\x1BV[b\0\x03*\x81b\0\x03#\x84Tb\0\x02gV[\x84b\0\x02\xA3V[` \x80`\x1F\x83\x11`\x01\x81\x14b\0\x03bW`\0\x84\x15b\0\x03IWP\x85\x83\x01Q[`\0\x19`\x03\x86\x90\x1B\x1C\x19\x16`\x01\x85\x90\x1B\x17\x85Ub\0\x02\xEDV[`\0\x85\x81R` \x81 `\x1F\x19\x86\x16\x91[\x82\x81\x10\x15b\0\x03\x93W\x88\x86\x01Q\x82U\x94\x84\x01\x94`\x01\x90\x91\x01\x90\x84\x01b\0\x03rV[P\x85\x82\x10\x15b\0\x03\xB2W\x87\x85\x01Q`\0\x19`\x03\x88\x90\x1B`\xF8\x16\x1C\x19\x16\x81U[PPPPP`\x01\x90\x81\x1B\x01\x90UPV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[c\xFF\xFF\xFF\xFF\x82\x81\x16\x82\x82\x16\x03\x90\x80\x82\x11\x15b\0\x03\xF8Wb\0\x03\xF8b\0\x03\xC2V[P\x92\x91PPV[`\x01\x81\x81[\x80\x85\x11\x15b\0\x04@W\x81`\0\x19\x04\x82\x11\x15b\0\x04$Wb\0\x04$b\0\x03\xC2V[\x80\x85\x16\x15b\0\x042W\x91\x81\x02\x91[\x93\x84\x1C\x93\x90\x80\x02\x90b\0\x04\x04V[P\x92P\x92\x90PV[`\0\x82b\0\x04YWP`\x01b\0\x04\xF8V[\x81b\0\x04hWP`\0b\0\x04\xF8V[\x81`\x01\x81\x14b\0\x04\x81W`\x02\x81\x14b\0\x04\x8CWb\0\x04\xACV[`\x01\x91PPb\0\x04\xF8V[`\xFF\x84\x11\x15b\0\x04\xA0Wb\0\x04\xA0b\0\x03\xC2V[PP`\x01\x82\x1Bb\0\x04\xF8V[P` \x83\x10a\x013\x83\x10\x16`N\x84\x10`\x0B\x84\x10\x16\x17\x15b\0\x04\xD1WP\x81\x81\nb\0\x04\xF8V[b\0\x04\xDD\x83\x83b\0\x03\xFFV[\x80`\0\x19\x04\x82\x11\x15b\0\x04\xF4Wb\0\x04\xF4b\0\x03\xC2V[\x02\x90P[\x92\x91PPV[`\0b\0\x05\x12c\xFF\xFF\xFF\xFF\x84\x16\x83b\0\x04HV[\x93\x92PPPV[`\x80Q`\xA0Qa\x05\xA8b\0\x05E`\09`\0\x81\x81a\x01\x04\x01Ra\x024\x01R`\0`a\x01Ra\x05\xA8`\0\xF3\xFE`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c~\xB6\xDE\xC7\x14a\0OW\x80c\xA9\x96\xE0 \x14a\0\x9DW\x80c\xB6Gl~\x14a\0\xB2W\x80c\xBA\xB9\x16\xD0\x14a\0\xD4W\x80c\xDB\x97\xDC\x98\x14a\0\xE7W[`\0\x80\xFD[4\x80\x15a\0[W`\0\x80\xFD[Pa\0\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB0a\0\xAB6`\x04a\x03\x15V[a\0\xFCV[\0[4\x80\x15a\0\xBEW`\0\x80\xFD[Pa\0\xC7a\x01\x9EV[`@Qa\0\x94\x91\x90a\x03\x81V[a\0\xB0a\0\xE26`\x04a\x03\xCFV[a\x02,V[4\x80\x15a\0\xF3W`\0\x80\xFD[Pa\0\xC7a\x02\xBFV[4`\0a\x01)\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x04\x11V[\x11a\x01OW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01F\x90a\x043V[`@Q\x80\x91\x03\x90\xFD[43`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x01\x8F\x94\x93\x92\x91\x90a\x04\xEAV[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x01\x80Ta\x01\xAB\x90a\x05\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD7\x90a\x05\x1CV[\x80\x15a\x02$W\x80`\x1F\x10a\x01\xF9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02$V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x07W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[4`\0a\x02Y\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x04\x11V[\x11a\x02vW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01F\x90a\x043V[43`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0FIa\xCA\xB7S\x08\x04\x89\x84\x99\xAA\x89\xF5\xEC\x81\xD1\xA71\x02\xE2\xE4\xA1\xF3\x0F\x88\xE5\xAE5\x13\xBA*\x85\x85`@Qa\x02\xB2\x92\x91\x90a\x05VV[`@Q\x80\x91\x03\x90\xA3PPPV[`\0\x80Ta\x01\xAB\x90a\x05\x1CV[`\0\x80\x83`\x1F\x84\x01\x12a\x02\xDEW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xF6W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x03\x0EW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x03+W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03CW`\0\x80\xFD[a\x03O\x88\x83\x89\x01a\x02\xCCV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x03hW`\0\x80\xFD[Pa\x03u\x87\x82\x88\x01a\x02\xCCV[\x95\x98\x94\x97P\x95PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x03\xAEW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x03\x92V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80` \x83\x85\x03\x12\x15a\x03\xE2W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xF9W`\0\x80\xFD[a\x04\x05\x85\x82\x86\x01a\x02\xCCV[\x90\x96\x90\x95P\x93PPPPV[`\0\x82a\x04.WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`b\x90\x82\x01R\x7FAstriaWithdrawer: insufficient v`@\x82\x01R\x7Falue, must be greater than 10 **``\x82\x01R\x7F (18 - BASE_CHAIN_ASSET_PRECISIO`\x80\x82\x01RaN)`\xF0\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\x04\xFE`@\x83\x01\x86\x88a\x04\xC1V[\x82\x81\x03` \x84\x01Ra\x05\x11\x81\x85\x87a\x04\xC1V[\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x050W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x05PWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[` \x81R`\0a\x05j` \x83\x01\x84\x86a\x04\xC1V[\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \t \xD0n0\xAB\xBF\xC4\xFB\xEC\xCAZ\x19\x17 \xDB\xA8\xDEE\x9E\x1B\xD5\x85O\xB2\xAAq\x80HU\x05\xC4dsolcC\0\x08\x15\x003"; /// The bytecode of the contract. pub static ASTRIAWITHDRAWER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__BYTECODE); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x004W`\x005`\xE0\x1C\x80c~\xB6\xDE\xC7\x14a\09W\x80c\x9A\x97z\xFE\x14a\0\x86W\x80c\xA9\x96\xE0 \x14a\0\x9BW[`\0\x80\xFD[4\x80\x15a\0EW`\0\x80\xFD[Pa\0m\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0\x99a\0\x946`\x04a\x01\xDEV[a\0\xAEV[\0[a\0\x99a\0\xA96`\x04a\x02WV[a\x01EV[4`\0a\0\xDB\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x02\xC3V[\x11a\x01\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\0\xF8\x90a\x02\xE5V[`@Q\x80\x91\x03\x90\xFD[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x81R4\x903\x90\x7F\xAE\x8EffM\x10\x85DP\x9C\x9A[j\x9F3\xC3\xB5\xFE\xF3\xF8\x8E]?\xA6\x80pjo\xEB\x13`\xE3\x90` \x01`@Q\x80\x91\x03\x90\xA3PPV[4`\0a\x01r\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x02\xC3V[\x11a\x01\x8FW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\0\xF8\x90a\x02\xE5V[43`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x01\xCF\x94\x93\x92\x91\x90a\x03\x9CV[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\0` \x82\x84\x03\x12\x15a\x01\xF0W`\0\x80\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\x07W`\0\x80\xFD[\x93\x92PPPV[`\0\x80\x83`\x1F\x84\x01\x12a\x02 W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x028W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x02PW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x02mW`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x02\x85W`\0\x80\xFD[a\x02\x91\x88\x83\x89\x01a\x02\x0EV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x02\xAAW`\0\x80\xFD[Pa\x02\xB7\x87\x82\x88\x01a\x02\x0EV[\x95\x98\x94\x97P\x95PPPPV[`\0\x82a\x02\xE0WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`b\x90\x82\x01R\x7FAstriaWithdrawer: insufficient v`@\x82\x01R\x7Falue, must be greater than 10 **``\x82\x01R\x7F (18 - BASE_CHAIN_ASSET_PRECISIO`\x80\x82\x01RaN)`\xF0\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\x03\xB0`@\x83\x01\x86\x88a\x03sV[\x82\x81\x03` \x84\x01Ra\x03\xC3\x81\x85\x87a\x03sV[\x97\x96PPPPPPPV\xFE\xA2dipfsX\"\x12 \xBFH[\xDE\xF8\xBB^>\x0C\x97d\xAD2S-\x90\xB9x\xA3\xC3\xB0\xB2\xF5G\x8C\xE8\xE5\xDB>\x85\xD3\xA0dsolcC\0\x08\x15\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\0JW`\x005`\xE0\x1C\x80c~\xB6\xDE\xC7\x14a\0OW\x80c\xA9\x96\xE0 \x14a\0\x9DW\x80c\xB6Gl~\x14a\0\xB2W\x80c\xBA\xB9\x16\xD0\x14a\0\xD4W\x80c\xDB\x97\xDC\x98\x14a\0\xE7W[`\0\x80\xFD[4\x80\x15a\0[W`\0\x80\xFD[Pa\0\x83\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\0\xB0a\0\xAB6`\x04a\x03\x15V[a\0\xFCV[\0[4\x80\x15a\0\xBEW`\0\x80\xFD[Pa\0\xC7a\x01\x9EV[`@Qa\0\x94\x91\x90a\x03\x81V[a\0\xB0a\0\xE26`\x04a\x03\xCFV[a\x02,V[4\x80\x15a\0\xF3W`\0\x80\xFD[Pa\0\xC7a\x02\xBFV[4`\0a\x01)\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x04\x11V[\x11a\x01OW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01F\x90a\x043V[`@Q\x80\x91\x03\x90\xFD[43`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0Cd\xE2\x9ART\xA7\x1C\x7FNR\xB3\xD2\xD264\x8C\x80\xE0\n\0\xBA.\x19a\x96+\xD2\x82|\x03\xFB\x87\x87\x87\x87`@Qa\x01\x8F\x94\x93\x92\x91\x90a\x04\xEAV[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x01\x80Ta\x01\xAB\x90a\x05\x1CV[\x80`\x1F\x01` \x80\x91\x04\x02` \x01`@Q\x90\x81\x01`@R\x80\x92\x91\x90\x81\x81R` \x01\x82\x80Ta\x01\xD7\x90a\x05\x1CV[\x80\x15a\x02$W\x80`\x1F\x10a\x01\xF9Wa\x01\0\x80\x83T\x04\x02\x83R\x91` \x01\x91a\x02$V[\x82\x01\x91\x90`\0R` `\0 \x90[\x81T\x81R\x90`\x01\x01\x90` \x01\x80\x83\x11a\x02\x07W\x82\x90\x03`\x1F\x16\x82\x01\x91[PPPPP\x81V[4`\0a\x02Y\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83a\x04\x11V[\x11a\x02vW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x01F\x90a\x043V[43`\x01`\x01`\xA0\x1B\x03\x16\x7F\x0FIa\xCA\xB7S\x08\x04\x89\x84\x99\xAA\x89\xF5\xEC\x81\xD1\xA71\x02\xE2\xE4\xA1\xF3\x0F\x88\xE5\xAE5\x13\xBA*\x85\x85`@Qa\x02\xB2\x92\x91\x90a\x05VV[`@Q\x80\x91\x03\x90\xA3PPPV[`\0\x80Ta\x01\xAB\x90a\x05\x1CV[`\0\x80\x83`\x1F\x84\x01\x12a\x02\xDEW`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x02\xF6W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x03\x0EW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`@\x85\x87\x03\x12\x15a\x03+W`\0\x80\xFD[\x845g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a\x03CW`\0\x80\xFD[a\x03O\x88\x83\x89\x01a\x02\xCCV[\x90\x96P\x94P` \x87\x015\x91P\x80\x82\x11\x15a\x03hW`\0\x80\xFD[Pa\x03u\x87\x82\x88\x01a\x02\xCCV[\x95\x98\x94\x97P\x95PPPPV[`\0` \x80\x83R\x83Q\x80\x82\x85\x01R`\0[\x81\x81\x10\x15a\x03\xAEW\x85\x81\x01\x83\x01Q\x85\x82\x01`@\x01R\x82\x01a\x03\x92V[P`\0`@\x82\x86\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x85\x01\x01\x92PPP\x92\x91PPV[`\0\x80` \x83\x85\x03\x12\x15a\x03\xE2W`\0\x80\xFD[\x825g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x03\xF9W`\0\x80\xFD[a\x04\x05\x85\x82\x86\x01a\x02\xCCV[\x90\x96\x90\x95P\x93PPPPV[`\0\x82a\x04.WcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[` \x80\x82R`b\x90\x82\x01R\x7FAstriaWithdrawer: insufficient v`@\x82\x01R\x7Falue, must be greater than 10 **``\x82\x01R\x7F (18 - BASE_CHAIN_ASSET_PRECISIO`\x80\x82\x01RaN)`\xF0\x1B`\xA0\x82\x01R`\xC0\x01\x90V[\x81\x83R\x81\x81` \x85\x017P`\0\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`@\x81R`\0a\x04\xFE`@\x83\x01\x86\x88a\x04\xC1V[\x82\x81\x03` \x84\x01Ra\x05\x11\x81\x85\x87a\x04\xC1V[\x97\x96PPPPPPPV[`\x01\x81\x81\x1C\x90\x82\x16\x80a\x050W`\x7F\x82\x16\x91P[` \x82\x10\x81\x03a\x05PWcNH{q`\xE0\x1B`\0R`\"`\x04R`$`\0\xFD[P\x91\x90PV[` \x81R`\0a\x05j` \x83\x01\x84\x86a\x04\xC1V[\x94\x93PPPPV\xFE\xA2dipfsX\"\x12 \t \xD0n0\xAB\xBF\xC4\xFB\xEC\xCAZ\x19\x17 \xDB\xA8\xDEE\x9E\x1B\xD5\x85O\xB2\xAAq\x80HU\x05\xC4dsolcC\0\x08\x15\x003"; /// The deployed bytecode of the contract. pub static ASTRIAWITHDRAWER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(__DEPLOYED_BYTECODE); @@ -234,6 +282,15 @@ pub mod astria_withdrawer { Ok(deployer) } + /// Calls the contract's `BASE_CHAIN_ASSET_DENOMINATION` (0xb6476c7e) function + pub fn base_chain_asset_denomination( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 71, 108, 126], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `BASE_CHAIN_ASSET_PRECISION` (0x7eb6dec7) function pub fn base_chain_asset_precision( &self, @@ -243,6 +300,15 @@ pub mod astria_withdrawer { .expect("method not found (this should never happen)") } + /// Calls the contract's `BASE_CHAIN_BRIDGE_ADDRESS` (0xdb97dc98) function + pub fn base_chain_bridge_address( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 151, 220, 152], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `withdrawToIbcChain` (0xa996e020) function pub fn withdraw_to_ibc_chain( &self, @@ -254,13 +320,13 @@ pub mod astria_withdrawer { .expect("method not found (this should never happen)") } - /// Calls the contract's `withdrawToSequencer` (0x9a977afe) function + /// Calls the contract's `withdrawToSequencer` (0xbab916d0) function pub fn withdraw_to_sequencer( &self, - destination_chain_address: ::ethers::core::types::Address, + destination_chain_address: ::std::string::String, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([154, 151, 122, 254], destination_chain_address) + .method_hash([186, 185, 22, 208], destination_chain_address) .expect("method not found (this should never happen)") } @@ -330,14 +396,14 @@ pub mod astria_withdrawer { )] #[ethevent( name = "SequencerWithdrawal", - abi = "SequencerWithdrawal(address,uint256,address)" + abi = "SequencerWithdrawal(address,uint256,string)" )] pub struct SequencerWithdrawalFilter { #[ethevent(indexed)] pub sender: ::ethers::core::types::Address, #[ethevent(indexed)] pub amount: ::ethers::core::types::U256, - pub destination_chain_address: ::ethers::core::types::Address, + pub destination_chain_address: ::std::string::String, } /// Container type for all of the contract's events #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] @@ -376,6 +442,23 @@ pub mod astria_withdrawer { Self::SequencerWithdrawalFilter(value) } } + /// Container type for all input parameters for the `BASE_CHAIN_ASSET_DENOMINATION` function + /// with signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_ASSET_DENOMINATION", + abi = "BASE_CHAIN_ASSET_DENOMINATION()" + )] + pub struct BaseChainAssetDenominationCall; /// Container type for all input parameters for the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -393,6 +476,23 @@ pub mod astria_withdrawer { abi = "BASE_CHAIN_ASSET_PRECISION()" )] pub struct BaseChainAssetPrecisionCall; + /// Container type for all input parameters for the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_BRIDGE_ADDRESS", + abi = "BASE_CHAIN_BRIDGE_ADDRESS()" + )] + pub struct BaseChainBridgeAddressCall; /// Container type for all input parameters for the `withdrawToIbcChain` function with signature /// `withdrawToIbcChain(string,string)` and selector `0xa996e020` #[derive( @@ -411,7 +511,7 @@ pub mod astria_withdrawer { pub memo: ::std::string::String, } /// Container type for all input parameters for the `withdrawToSequencer` function with - /// signature `withdrawToSequencer(address)` and selector `0x9a977afe` + /// signature `withdrawToSequencer(string)` and selector `0xbab916d0` #[derive( Clone, ::ethers::contract::EthCall, @@ -422,14 +522,16 @@ pub mod astria_withdrawer { Eq, Hash, )] - #[ethcall(name = "withdrawToSequencer", abi = "withdrawToSequencer(address)")] + #[ethcall(name = "withdrawToSequencer", abi = "withdrawToSequencer(string)")] pub struct WithdrawToSequencerCall { - pub destination_chain_address: ::ethers::core::types::Address, + pub destination_chain_address: ::std::string::String, } /// Container type for all of the contract's call #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum AstriaWithdrawerCalls { + BaseChainAssetDenomination(BaseChainAssetDenominationCall), BaseChainAssetPrecision(BaseChainAssetPrecisionCall), + BaseChainBridgeAddress(BaseChainBridgeAddressCall), WithdrawToIbcChain(WithdrawToIbcChainCall), WithdrawToSequencer(WithdrawToSequencerCall), } @@ -438,11 +540,21 @@ pub mod astria_withdrawer { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainAssetDenomination(decoded)); + } if let Ok(decoded) = ::decode(data) { return Ok(Self::BaseChainAssetPrecision(decoded)); } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainBridgeAddress(decoded)); + } if let Ok(decoded) = ::decode(data) { @@ -459,9 +571,15 @@ pub mod astria_withdrawer { impl ::ethers::core::abi::AbiEncode for AstriaWithdrawerCalls { fn encode(self) -> Vec { match self { + Self::BaseChainAssetDenomination(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::BaseChainAssetPrecision(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::BaseChainBridgeAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::WithdrawToIbcChain(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -474,17 +592,29 @@ pub mod astria_withdrawer { impl ::core::fmt::Display for AstriaWithdrawerCalls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { + Self::BaseChainAssetDenomination(element) => ::core::fmt::Display::fmt(element, f), Self::BaseChainAssetPrecision(element) => ::core::fmt::Display::fmt(element, f), + Self::BaseChainBridgeAddress(element) => ::core::fmt::Display::fmt(element, f), Self::WithdrawToIbcChain(element) => ::core::fmt::Display::fmt(element, f), Self::WithdrawToSequencer(element) => ::core::fmt::Display::fmt(element, f), } } } + impl ::core::convert::From for AstriaWithdrawerCalls { + fn from(value: BaseChainAssetDenominationCall) -> Self { + Self::BaseChainAssetDenomination(value) + } + } impl ::core::convert::From for AstriaWithdrawerCalls { fn from(value: BaseChainAssetPrecisionCall) -> Self { Self::BaseChainAssetPrecision(value) } } + impl ::core::convert::From for AstriaWithdrawerCalls { + fn from(value: BaseChainBridgeAddressCall) -> Self { + Self::BaseChainBridgeAddress(value) + } + } impl ::core::convert::From for AstriaWithdrawerCalls { fn from(value: WithdrawToIbcChainCall) -> Self { Self::WithdrawToIbcChain(value) @@ -495,6 +625,19 @@ pub mod astria_withdrawer { Self::WithdrawToSequencer(value) } } + /// Container type for all return fields from the `BASE_CHAIN_ASSET_DENOMINATION` function with + /// signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainAssetDenominationReturn(pub ::std::string::String); /// Container type for all return fields from the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -508,4 +651,17 @@ pub mod astria_withdrawer { Hash, )] pub struct BaseChainAssetPrecisionReturn(pub u32); + /// Container type for all return fields from the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainBridgeAddressReturn(pub ::std::string::String); } diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer_interface.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer_interface.rs index d65d12b241..06cb30c5d7 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer_interface.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/generated/astria_withdrawer_interface.rs @@ -14,22 +14,56 @@ pub mod i_astria_withdrawer { fn __abi() -> ::ethers::core::abi::Abi { ::ethers::core::abi::ethabi::Contract { constructor: ::core::option::Option::None, - functions: ::core::convert::From::from([( - ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION"), - ::std::vec![::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION",), - inputs: ::std::vec![], - outputs: ::std::vec![::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint32"), - ), + functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_DENOMINATION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_ASSET_PRECISION",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint32"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, },], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - },], - )]), + ), + ( + ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS"), + ::std::vec![::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("BASE_CHAIN_BRIDGE_ADDRESS",), + inputs: ::std::vec![], + outputs: ::std::vec![::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + },], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + },], + ), + ]), events: ::core::convert::From::from([ ( ::std::borrow::ToOwned::to_owned("Ics20Withdrawal"), @@ -77,7 +111,7 @@ pub mod i_astria_withdrawer { }, ::ethers::core::abi::ethabi::EventParam { name: ::std::borrow::ToOwned::to_owned("destinationChainAddress",), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + kind: ::ethers::core::abi::ethabi::ParamType::String, indexed: false, }, ], @@ -132,6 +166,15 @@ pub mod i_astria_withdrawer { )) } + /// Calls the contract's `BASE_CHAIN_ASSET_DENOMINATION` (0xb6476c7e) function + pub fn base_chain_asset_denomination( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([182, 71, 108, 126], ()) + .expect("method not found (this should never happen)") + } + /// Calls the contract's `BASE_CHAIN_ASSET_PRECISION` (0x7eb6dec7) function pub fn base_chain_asset_precision( &self, @@ -141,6 +184,15 @@ pub mod i_astria_withdrawer { .expect("method not found (this should never happen)") } + /// Calls the contract's `BASE_CHAIN_BRIDGE_ADDRESS` (0xdb97dc98) function + pub fn base_chain_bridge_address( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 151, 220, 152], ()) + .expect("method not found (this should never happen)") + } + /// Gets the contract's `Ics20Withdrawal` event pub fn ics_20_withdrawal_filter( &self, @@ -207,14 +259,14 @@ pub mod i_astria_withdrawer { )] #[ethevent( name = "SequencerWithdrawal", - abi = "SequencerWithdrawal(address,uint256,address)" + abi = "SequencerWithdrawal(address,uint256,string)" )] pub struct SequencerWithdrawalFilter { #[ethevent(indexed)] pub sender: ::ethers::core::types::Address, #[ethevent(indexed)] pub amount: ::ethers::core::types::U256, - pub destination_chain_address: ::ethers::core::types::Address, + pub destination_chain_address: ::std::string::String, } /// Container type for all of the contract's events #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] @@ -253,6 +305,23 @@ pub mod i_astria_withdrawer { Self::SequencerWithdrawalFilter(value) } } + /// Container type for all input parameters for the `BASE_CHAIN_ASSET_DENOMINATION` function + /// with signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_ASSET_DENOMINATION", + abi = "BASE_CHAIN_ASSET_DENOMINATION()" + )] + pub struct BaseChainAssetDenominationCall; /// Container type for all input parameters for the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -270,6 +339,105 @@ pub mod i_astria_withdrawer { abi = "BASE_CHAIN_ASSET_PRECISION()" )] pub struct BaseChainAssetPrecisionCall; + /// Container type for all input parameters for the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + #[ethcall( + name = "BASE_CHAIN_BRIDGE_ADDRESS", + abi = "BASE_CHAIN_BRIDGE_ADDRESS()" + )] + pub struct BaseChainBridgeAddressCall; + /// Container type for all of the contract's call + #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] + pub enum IAstriaWithdrawerCalls { + BaseChainAssetDenomination(BaseChainAssetDenominationCall), + BaseChainAssetPrecision(BaseChainAssetPrecisionCall), + BaseChainBridgeAddress(BaseChainBridgeAddressCall), + } + impl ::ethers::core::abi::AbiDecode for IAstriaWithdrawerCalls { + fn decode( + data: impl AsRef<[u8]>, + ) -> ::core::result::Result { + let data = data.as_ref(); + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainAssetDenomination(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainAssetPrecision(decoded)); + } + if let Ok(decoded) = + ::decode(data) + { + return Ok(Self::BaseChainBridgeAddress(decoded)); + } + Err(::ethers::core::abi::Error::InvalidData.into()) + } + } + impl ::ethers::core::abi::AbiEncode for IAstriaWithdrawerCalls { + fn encode(self) -> Vec { + match self { + Self::BaseChainAssetDenomination(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BaseChainAssetPrecision(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::BaseChainBridgeAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + } + } + } + impl ::core::fmt::Display for IAstriaWithdrawerCalls { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Self::BaseChainAssetDenomination(element) => ::core::fmt::Display::fmt(element, f), + Self::BaseChainAssetPrecision(element) => ::core::fmt::Display::fmt(element, f), + Self::BaseChainBridgeAddress(element) => ::core::fmt::Display::fmt(element, f), + } + } + } + impl ::core::convert::From for IAstriaWithdrawerCalls { + fn from(value: BaseChainAssetDenominationCall) -> Self { + Self::BaseChainAssetDenomination(value) + } + } + impl ::core::convert::From for IAstriaWithdrawerCalls { + fn from(value: BaseChainAssetPrecisionCall) -> Self { + Self::BaseChainAssetPrecision(value) + } + } + impl ::core::convert::From for IAstriaWithdrawerCalls { + fn from(value: BaseChainBridgeAddressCall) -> Self { + Self::BaseChainBridgeAddress(value) + } + } + /// Container type for all return fields from the `BASE_CHAIN_ASSET_DENOMINATION` function with + /// signature `BASE_CHAIN_ASSET_DENOMINATION()` and selector `0xb6476c7e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainAssetDenominationReturn(pub ::std::string::String); /// Container type for all return fields from the `BASE_CHAIN_ASSET_PRECISION` function with /// signature `BASE_CHAIN_ASSET_PRECISION()` and selector `0x7eb6dec7` #[derive( @@ -283,4 +451,17 @@ pub mod i_astria_withdrawer { Hash, )] pub struct BaseChainAssetPrecisionReturn(pub u32); + /// Container type for all return fields from the `BASE_CHAIN_BRIDGE_ADDRESS` function with + /// signature `BASE_CHAIN_BRIDGE_ADDRESS()` and selector `0xdb97dc98` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash, + )] + pub struct BaseChainBridgeAddressReturn(pub ::std::string::String); } diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/test_utils.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/test_utils.rs index 0761dd51d6..b98bcfbb2a 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/test_utils.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/test_utils.rs @@ -3,6 +3,7 @@ use std::{ time::Duration, }; +use astria_core::primitive::v1::ASTRIA_ADDRESS_PREFIX; use ethers::{ abi::Tokenizable, core::utils::Anvil, @@ -21,19 +22,41 @@ use crate::withdrawer::ethereum::{ }, }; -#[derive(Default)] +#[allow(clippy::struct_field_names)] pub(crate) struct ConfigureAstriaWithdrawerDeployer { pub(crate) base_chain_asset_precision: u32, + pub(crate) base_chain_bridge_address: astria_core::primitive::v1::Address, + pub(crate) base_chain_asset_denomination: String, } -impl ConfigureAstriaWithdrawerDeployer { - pub(crate) async fn deploy( - &mut self, - ) -> (Address, Arc>, LocalWallet, AnvilInstance) { - if self.base_chain_asset_precision == 0 { - self.base_chain_asset_precision = 18; +impl Default for ConfigureAstriaWithdrawerDeployer { + fn default() -> Self { + Self { + base_chain_asset_precision: 18, + base_chain_bridge_address: astria_core::primitive::v1::Address::builder() + .array([0u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap(), + base_chain_asset_denomination: "test-denom".to_string(), } - deploy_astria_withdrawer(self.base_chain_asset_precision.into()).await + } +} + +impl ConfigureAstriaWithdrawerDeployer { + pub(crate) async fn deploy(self) -> (Address, Arc>, LocalWallet, AnvilInstance) { + let Self { + base_chain_asset_precision, + base_chain_bridge_address, + base_chain_asset_denomination, + } = self; + + deploy_astria_withdrawer( + base_chain_asset_precision.into(), + base_chain_bridge_address, + base_chain_asset_denomination, + ) + .await } } @@ -47,6 +70,8 @@ impl ConfigureAstriaWithdrawerDeployer { /// - if the contract fails to deploy pub(crate) async fn deploy_astria_withdrawer( base_chain_asset_precision: U256, + base_chain_bridge_address: astria_core::primitive::v1::Address, + base_chain_asset_denomination: String, ) -> (Address, Arc>, LocalWallet, AnvilInstance) { // setup anvil and signing wallet let anvil = Anvil::new().spawn(); @@ -65,14 +90,14 @@ pub(crate) async fn deploy_astria_withdrawer( let abi = ASTRIAWITHDRAWER_ABI.clone(); let bytecode = ASTRIAWITHDRAWER_BYTECODE.to_vec(); - // deploy contract with ASSET_WITHDRAWAL_DECIMALS as 0 + let args = vec![ + base_chain_asset_precision.into_token(), + base_chain_bridge_address.to_string().into_token(), + base_chain_asset_denomination.into_token(), + ]; + let factory = ContractFactory::new(abi.clone(), bytecode.into(), signer.into()); - let contract = factory - .deploy(base_chain_asset_precision) - .unwrap() - .send() - .await - .unwrap(); + let contract = factory.deploy_tokens(args).unwrap().send().await.unwrap(); let contract_address = contract.address(); ( @@ -83,34 +108,48 @@ pub(crate) async fn deploy_astria_withdrawer( ) } -#[derive(Default)] pub(crate) struct ConfigureAstriaBridgeableERC20Deployer { pub(crate) bridge_address: Address, pub(crate) base_chain_asset_precision: u32, + pub(crate) base_chain_bridge_address: astria_core::primitive::v1::Address, + pub(crate) base_chain_asset_denomination: String, pub(crate) name: String, pub(crate) symbol: String, } +impl Default for ConfigureAstriaBridgeableERC20Deployer { + fn default() -> Self { + Self { + bridge_address: Address::zero(), + base_chain_asset_precision: 18, + base_chain_bridge_address: astria_core::primitive::v1::Address::builder() + .array([0u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap(), + base_chain_asset_denomination: "testdenom".to_string(), + name: "test-token".to_string(), + symbol: "TT".to_string(), + } + } +} + impl ConfigureAstriaBridgeableERC20Deployer { pub(crate) async fn deploy(self) -> (Address, Arc>, LocalWallet, AnvilInstance) { let Self { bridge_address, base_chain_asset_precision, - mut name, - mut symbol, + base_chain_bridge_address, + base_chain_asset_denomination, + name, + symbol, } = self; - if name.is_empty() { - name = "test-token".to_string(); - } - - if symbol.is_empty() { - symbol = "TT".to_string(); - } - deploy_astria_bridgeable_erc20( bridge_address, base_chain_asset_precision.into(), + base_chain_bridge_address, + base_chain_asset_denomination, name, symbol, ) @@ -129,6 +168,8 @@ impl ConfigureAstriaBridgeableERC20Deployer { pub(crate) async fn deploy_astria_bridgeable_erc20( mut bridge_address: Address, base_chain_asset_precision: ethers::abi::Uint, + base_chain_bridge_address: astria_core::primitive::v1::Address, + base_chain_asset_denomination: String, name: String, symbol: String, ) -> (Address, Arc>, LocalWallet, AnvilInstance) { @@ -157,6 +198,8 @@ pub(crate) async fn deploy_astria_bridgeable_erc20( let args = vec![ bridge_address.into_token(), base_chain_asset_precision.into_token(), + base_chain_bridge_address.to_string().into_token(), + base_chain_asset_denomination.into_token(), name.into_token(), symbol.into_token(), ]; diff --git a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/watcher.rs b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/watcher.rs index a01da700ba..1e384a08f9 100644 --- a/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/watcher.rs +++ b/crates/astria-bridge-withdrawer/src/withdrawer/ethereum/watcher.rs @@ -414,7 +414,13 @@ fn address_from_string(s: &str) -> Result { #[cfg(test)] mod tests { - use astria_core::protocol::transaction::v1alpha1::Action; + use astria_core::{ + primitive::v1::{ + Address, + ASTRIA_ADDRESS_PREFIX, + }, + protocol::transaction::v1alpha1::Action, + }; use ethers::{ prelude::SignerMiddleware, providers::Middleware, @@ -465,9 +471,11 @@ mod tests { async fn send_sequencer_withdraw_transaction( contract: &AstriaWithdrawer, value: U256, - recipient: ethers::types::Address, + recipient: Address, ) -> TransactionReceipt { - let tx = contract.withdraw_to_sequencer(recipient).value(value); + let tx = contract + .withdraw_to_sequencer(recipient.to_string()) + .value(value); let receipt = tx .send() .await @@ -489,6 +497,7 @@ mod tests { async fn astria_withdrawer_invalid_value_fails() { let (contract_address, provider, wallet, _anvil) = ConfigureAstriaWithdrawerDeployer { base_chain_asset_precision: 15, + ..Default::default() } .deploy() .await; @@ -496,8 +505,14 @@ mod tests { let contract = AstriaWithdrawer::new(contract_address, signer.clone()); let value: U256 = 999.into(); // 10^3 - 1 - let recipient = [0u8; 20].into(); - let tx = contract.withdraw_to_sequencer(recipient).value(value); + let recipient = Address::builder() + .array([1u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap(); + let tx = contract + .withdraw_to_sequencer(recipient.to_string()) + .value(value); tx.send() .await .expect_err("`withdraw` transaction should have failed due to value < 10^3"); @@ -512,12 +527,16 @@ mod tests { let contract = AstriaWithdrawer::new(contract_address, signer.clone()); let value = 1_000_000_000.into(); - let recipient = [0u8; 20].into(); + let recipient = Address::builder() + .array([1u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap(); let receipt = send_sequencer_withdraw_transaction(&contract, value, recipient).await; let expected_event = EventWithMetadata { event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter { sender: wallet.address(), - destination_chain_address: recipient, + destination_chain_address: recipient.to_string(), amount: value, }), block_number: receipt.block_number.unwrap(), @@ -685,9 +704,9 @@ mod tests { async fn send_sequencer_withdraw_transaction_erc20( contract: &AstriaBridgeableERC20, value: U256, - recipient: ethers::types::Address, + recipient: Address, ) -> TransactionReceipt { - let tx = contract.withdraw_to_sequencer(value, recipient); + let tx = contract.withdraw_to_sequencer(value, recipient.to_string()); let receipt = tx .send() .await @@ -720,12 +739,16 @@ mod tests { mint_tokens(&contract, 2_000_000_000.into(), wallet.address()).await; let value = 1_000_000_000.into(); - let recipient = [0u8; 20].into(); + let recipient = Address::builder() + .array([1u8; 20]) + .prefix(ASTRIA_ADDRESS_PREFIX) + .try_build() + .unwrap(); let receipt = send_sequencer_withdraw_transaction_erc20(&contract, value, recipient).await; let expected_event = EventWithMetadata { event: WithdrawalEvent::Sequencer(SequencerWithdrawalFilter { sender: wallet.address(), - destination_chain_address: recipient, + destination_chain_address: recipient.to_string(), amount: value, }), block_number: receipt.block_number.unwrap(),