Skip to content

Comments

Inomurko/v1.7.7#160

Merged
InoMurko merged 323 commits intov1.7.6from
inomurko/v1.7.7
Jul 21, 2024
Merged

Inomurko/v1.7.7#160
InoMurko merged 323 commits intov1.7.6from
inomurko/v1.7.7

Conversation

@InoMurko
Copy link
Collaborator

No description provided.

tynes and others added 30 commits May 2, 2024 22:23
* contracts-bedrock: simplify L1 state dump

Removes the need to specify the L1 chainid via CLI.
Follows similar patterns to L2 genesis generation that
were done recently.

Follow up PRs can potentially use the same sort of deployer pattern
as in ethereum-optimism/optimism#10343
for when doing the L1 genesis dump to remove the need to specify the
private key.

* contracts-bedrock: explicit deploy config

Remove the concept of implicit deploy config for explicit deploy config.
This removes confusing implicit behavior as well as makes it much
more straight forward for deploying multiple superchain targets
to the same L1. This is a breaking change but the error message
makes it very obvious and the docs are being updated in a way
that should include this information.

* contracts-bedrock: fix possible error

* config: cleanup

* deploy-config: fixup

* contracts-bedrock: delete name function

The `name()` function existed due to legacy
purposes when dealing with hardhat artifacts
and no longer is necessary. This commit removes
it in favor of a simpler approach of just using
the chainid instead of the name. The files that
are written are not committed into the repo.

* contracts: delete dead code

* lint: fix

* kontrol: fixup

* contracts-bedrock: prevent error

* kontrol: fixup

* kontrol: fix script

* gitignore: update

* devnet: simplify

* Update packages/contracts-bedrock/scripts/Config.sol

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

---------

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>
Custom config options were being applied before the defaults, causing them to be overwritten.
In particular this meant there was a small sequencer window and safe head progressed rapidly.
* ctb: Add deploySecurityCouncilSafe

* ctb: Allow _callViaSafe to use an arbitrary safe address

* ctb: Refactor Security Council deploy

Adds console.log calls

Uses the new _callViaSafe to reduce a lot of boilerplate

* ctb: Add livenessModuleInterval to deploy config

* ctb: Add livenessModuleThresholdPercentage to deploy config

* ctb: Add LivenessModuleMinOwners to deploy config

* ctb: Add council safe config and satisfy liveness module constructor

* ctb: Make liveness deploy funcs public

* Add DeployOwnership.sol

* Use deploySafe(name) to deploy SC and Foundation

* ctb: just use addr_ on all named returns

* ctb: Fix create2 collision in deploySafe

* ctb: Add example foundation config

* ctb: Add example council config and set it up

* ctb: Remove unused imports

* ctb: Address feedback on deploy ownership

* Add override for deploySafe with custom owners and threshold

ctb: Use the deploySafe override where applicable

* ctb: cleanup keepDeployer logic

* fixup! Add override for deploySafe with custom owners and threshold

* snapshots
Skip check for codesize on gov token address if governance is
not enabled.
It requires env vars that aren't set for external PRs.
Promotes the fault proof contracts that are semantically versioned to
`1.0.0`, in preparation for the upcoming deployment.
* cannon: Adjust initial heap start

This gives the program more memory to work with; minimizing the chance
of heap/stack corruption.

* Update cannon/mipsevm/patch.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: clabby <ben@clab.by>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* ctb: Deploy DeputyGuardianModule

WIP: need to fix superchainconfig address issue

* ctb: Expand security council config
* op-chain-ops: Add unclaimed game credits script

`unclaimed-credits` computes the unclaimed credits across all games and
who is eligible to claim them.

Useful for superchain-ops actions.

* account for step creditors
Now that the fault proof contracts release has happened, we
can merge in the custom gas token changes.

This reverts commit 2b1c99b.
Previous implementation didn't correctly serialize as string
so it came out as unreadable, now we make sure to abi encode
and decode correctly. Enables us to know which commit the code
runs on to help with debugging.
slither is currently erroring in CI with a strange error.
This bumps `slither` to the latest release in an attempt to
fix that issue.

The issue is described here: ethereum-optimism/optimism#10410

The release can be found here: https://github.com/crytic/slither/releases

This needs a release of `ci-builder` followed up to get the new version
of slither running in CI.
Bumps [github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) from 1.13.14 to 1.13.15.
- [Release notes](https://github.com/ethereum/go-ethereum/releases)
- [Commits](ethereum/go-ethereum@v1.13.14...v1.13.15)

---
updated-dependencies:
- dependency-name: github.com/ethereum/go-ethereum
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Overview

Updates the sepola devnet 0 deploy config's absolute prestate value to
match that of `op-program/v1.0.0`'s tag.

### Verification

1. `git checkout op-program/v1.0.0`
1. In the monorepo root, run `make reproducible-prestsate`
1. Compare the resulting prestate hash with the one in this PR.
* ci: `ci-builder:0.49.0`

Includes a bump of slither

ethereum-optimism/optimism#10411

* ci: slither github action bump version
* op-chain-ops: delete memdb

The simple in memory statedb implementation that was
backed by a genesis has served us well but is no longer
required since we build the genesis files using foundry.
This was originally used to enable simple execution to
deploy contracts and then dump into a `genesis.json`.
Keeping this memdb around will only bloat PRs that update
the geth version as they may change the interface to the
statedb. Instead of using the memdb interface, the genesis
is modified directly.

* lint: fix

* style: way better

Co-authored-by: protolambda <proto@protolambda.com>

* build: fix

* build: fix

---------

Co-authored-by: protolambda <proto@protolambda.com>
* Revert "Revert "Merge pull request #8242 from ethereum-optimism/go-docker-targets""

This reverts commit d972c46.

It also fixes up some conflicts / inconsistencies,
 since op-conductor was added after the original revert.

* ops: experimental cross-build fixes

* Retrieve git tag in Circle CI and use to set op version within docker image

* Update dispute-mon and da-server to use new docker build flow

* Fix GIT_VERSION script in Circle CI config.yml

* Update ops-bedrock docker-compose to use new docker build flow

* Load pre-built op-challenger image in devnet tests

* Save op-challenger.tar to avoid docker rebuild in devnet tests

* Add Circle CI job for check-cross-platform

* Allow env var to override VERSION in Makefiles

* Pass version to op-program components except op-program-client

* Wrap all docker-bake variable names in quotes

---------

Co-authored-by: protolambda <proto@protolambda.com>
Since slither seems to be failing consistently in CI, try bumping the
versions of the tooling.

Bumps to latest slither github action release: https://github.com/crytic/slither-action/releases/tag/v0.4.0

Meant to fix the slither issue seen in ethereum-optimism/optimism#10408

```
[-] SARIF output enabled, writing to results.sarif.
[-] Slither config provided: packages/contracts-bedrock/slither.config.json
[-] SLITHERARGS provided. Running slither with extra arguments
'forge clean' running (wd: /github/workspace/packages/contracts-bedrock)
'forge config --json' running
'forge build --build-info --skip */test/** */scripts/** --force' running (wd: /github/workspace/packages/contracts-bedrock)
Traceback (most recent call last):
  File "/opt/slither/bin/slither", line 8, in <module>
    sys.exit(main())
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 753, in main
    main_impl(all_detector_classes=detectors, all_printer_classes=printers)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 859, in main_impl
    ) = process_all(filename, args, detector_classes, printer_classes)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 107, in process_all
    ) = process_single(compilation, args, detector_classes, printer_classes)
  File "/opt/slither/lib/python3.9/site-packages/slither/__main__.py", line 80, in process_single
    slither = Slither(target, ast_format=ast, **vars(args))
  File "/opt/slither/lib/python3.9/site-packages/slither/slither.py", line 156, in __init__
    sol_parser.parse_top_level_items(ast, path)
  File "/opt/slither/lib/python3.9/site-packages/slither/solc_parsing/slither_compilation_unit_solc.py", line 326, in parse_top_level_items
    get_imported_scope = self.compilation_unit.get_scope(import_directive.filename)
  File "/opt/slither/lib/python3.9/site-packages/slither/core/compilation_unit.py", line 282, in get_scope
    filename = self._crytic_compile_compilation_unit.crytic_compile.filename_lookup(
  File "/opt/slither/lib/python3.9/site-packages/crytic_compile/crytic_compile.py", line 283, in filename_lookup
    raise ValueError(f"{filename} does not exist")
ValueError: lib/openzeppelin-contracts/contracts/utils/Context.sol does not exist
```
* fix(op-dispute-mon): log the claim id to validate the claim during investigation

* fix(op-dispute-mon): log the clock value as well
* adding  fault-wd-mon

* adding faultproof wd-mon

* adding faultproof wd-mon

* fixing docker file

* fixing how we get disputegame given a withdrawal log

* code review fix

* fix type
@socket-security
Copy link

socket-security bot commented Jun 20, 2024

🚨 Potential security issues detected. Learn more about Socket for GitHub ↗︎

To accept the risk, merge this PR and you will not be notified again.

Alert Package NoteSourceCI
Install scripts npm/esbuild@0.19.7
  • orphan: npm/esbuild@0.19.7
🚫
Install scripts npm/esbuild@0.19.10
  • orphan: npm/esbuild@0.19.10
🚫
Install scripts npm/@swc/core@1.4.13
  • Install script: postinstall
  • Source: node postinstall.js
  • orphan: npm/@swc/core@1.4.13
🚫

View full report↗︎

Next steps

What is an install script?

Install scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.

Packages should not be running non-essential scripts during install and there are often solutions to problems people solve with install scripts that can be run at publish time instead.

Take a deeper look at the dependency

Take a moment to review the security alert above. Review the linked package source code to understand the potential risk. Ensure the package is not malicious before proceeding. If you're unsure how to proceed, reach out to your security team or ask the Socket team for help at support [AT] socket [DOT] dev.

Remove the package

If you happen to install a dependency that Socket reports as Known Malware you should immediately remove it and select a different dependency. For other alert types, you may may wish to investigate alternative packages or consider if there are other ways to mitigate the specific risk posed by the dependency.

Mark a package as acceptable risk

To ignore an alert, reply with a comment starting with @SocketSecurity ignore followed by a space separated list of ecosystem/package-name@version specifiers. e.g. @SocketSecurity ignore npm/foo@1.0.0 or ignore all packages with @SocketSecurity ignore-all

  • @SocketSecurity ignore npm/esbuild@0.19.7
  • @SocketSecurity ignore npm/esbuild@0.19.10
  • @SocketSecurity ignore npm/@swc/core@1.4.13

@socket-security
Copy link

socket-security bot commented Jul 12, 2024

New and removed dependencies detected. Learn more about Socket for GitHub ↗︎

Package New capabilities Transitives Size Publisher

View full report↗︎

@@ -1 +1 @@
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeBridgeETH","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"finalizeDeposit","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initialize","inputs":[{"name":"_otherBridge","type":"address","internalType":"contract StandardBridge"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1TokenBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawTo","inputs":[{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"DepositFinalized","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"WithdrawalInitiated","inputs":[{"name":"l1Token","type":"address","indexed":true,"internalType":"address"},{"name":"l2Token","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001e600062000024565b62000217565b600054610100900460ff1615808015620000455750600054600160ff909116105b8062000075575062000062306200016d60201b620004811760201c565b15801562000075575060005460ff166001145b620000de5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000102576000805461ff0019166101001790555b62000122734200000000000000000000000000000000000007836200017c565b801562000169576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001e95760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d5565b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055565b612a8380620002276000396000f3fe60806040526004361061012d5760003560e01c8063662a633a116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de814610421578063c89701a214610441578063e11013dd1461046e57600080fd5b8063927ede2d146103e3578063a3a795481461040e57600080fd5b8063662a633a1461036a5780637f46ddb21461025a578063870876231461037d5780638f601f661461039d57600080fd5b806336c717c1116100fc578063540abf73116100e1578063540abf73146102d857806354fd4d50146102f85780635c975abb1461034e57600080fd5b806336c717c11461025a5780633cb747bf146102ab57600080fd5b80630166a07a1461020157806309fc8843146102215780631635f5fd1461023457806332b7006d1461024757600080fd5b366101fc57333b156101c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101fa73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d406040518060200160405280600081525061049d565b005b600080fd5b34801561020d57600080fd5b506101fa61021c366004612476565b610578565b6101fa61022f366004612527565b61091a565b6101fa61024236600461257a565b6109f1565b6101fa6102553660046125ed565b610e43565b34801561026657600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102b757600080fd5b506003546102819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e457600080fd5b506101fa6102f3366004612641565b610f1d565b34801561030457600080fd5b506103416040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516102a2919061272e565b34801561035a57600080fd5b50604051600081526020016102a2565b6101fa610378366004612476565b610f62565b34801561038957600080fd5b506101fa610398366004612741565b610fd5565b3480156103a957600080fd5b506103d56103b83660046127c4565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102a2565b3480156103ef57600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610281565b6101fa61041c366004612741565b6110a9565b34801561042d57600080fd5b506101fa61043c3660046127fd565b6110ed565b34801561044d57600080fd5b506004546102819073ffffffffffffffffffffffffffffffffffffffff1681565b6101fa61047c36600461281a565b611296565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104ec576104e785858585856112df565b610570565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d919061287d565b905061056e878288888888886114a9565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314801561064b575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610633919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b610706876117d4565b15610854576107158787611836565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050506108d6565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a16835292905220546108929084906128c9565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c16835293905291909120919091556108d6908585611956565b61056e878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2a92505050565b333b156109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b6109ec3333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610ac4575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b823414610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101bd565b3073ffffffffffffffffffffffffffffffffffffffff851603610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101bd565b610d9785858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ab892505050565b6000610db4855a8660405180602001604052806000815250611b59565b905080610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b333b15610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b610f16853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050505050565b61056e87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b73ffffffffffffffffffffffffffffffffffffffff8716158015610faf575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b15610fc657610fc185858585856109f1565b61056e565b61056e86888787878787610578565b333b15611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b61057086863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b610570863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b600054610100900460ff161580801561110d5750600054600160ff909116105b806111275750303b158015611127575060005460ff166001145b6111b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561121157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61122f73420000000000000000000000000000000000000783611b73565b801561129257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6112d93385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b50505050565b82341461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101bd565b61137a85858584611c5d565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd00000000000000000000000000000000000000000000000000000000906113dd908b908b9086908a906024016128e0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261147092918890600401612929565b6000604051808303818588803b15801561148957600080fd5b505af115801561149d573d6000803e3d6000fd5b50505050505050505050565b6114b2876117d4565b15611600576114c18787611836565b611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156115e357600080fd5b505af11580156115f7573d6000803e3d6000fd5b50505050611694565b61162273ffffffffffffffffffffffffffffffffffffffff8816863086611cfe565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461166090849061296e565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6116a2878787878786611d5c565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611706908b908d908c908c908c908b90602401612986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825261179992918790600401612929565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b5050505050505050505050565b6000611800827f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b806118305750611830827fec4fc8e300000000000000000000000000000000000000000000000000000000611dea565b92915050565b6000611862837f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b1561190b578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d6919061287d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611830565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109ec9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e0d565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611aa2939291906129e1565b60405180910390a4610570868686868686611f19565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611b45939291906129e1565b60405180910390a46112d984848484611fa1565b600080600080845160208601878a8af19695505050505050565b600054610100900460ff16611c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101bd565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611cea939291906129e1565b60405180910390a46112d98484848461200e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112d99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016119a8565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611dd4939291906129e1565b60405180910390a461057086868686868661206d565b6000611df5836120e5565b8015611e065750611e068383612149565b9392505050565b6000611e6f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166122189092919063ffffffff16565b8051909150156109ec5780806020019051810190611e8d9190612a1f565b6109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101bd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f91939291906129e1565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612000929190612a41565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612000929190612a41565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f91939291906129e1565b6000612111827f01ffc9a700000000000000000000000000000000000000000000000000000000612149565b80156118305750612142827fffffffff00000000000000000000000000000000000000000000000000000000612149565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612201575060208210155b801561220d5750600081115b979650505050505050565b6060612227848460008561222f565b949350505050565b6060824710156122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101bd565b73ffffffffffffffffffffffffffffffffffffffff85163b61233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bd565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516123689190612a5a565b60006040518083038185875af1925050503d80600081146123a5576040519150601f19603f3d011682016040523d82523d6000602084013e6123aa565b606091505b509150915061220d828286606083156123c4575081611e06565b8251156123d45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bd919061272e565b73ffffffffffffffffffffffffffffffffffffffff8116811461242a57600080fd5b50565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b600080600080600080600060c0888a03121561249157600080fd5b873561249c81612408565b965060208801356124ac81612408565b955060408801356124bc81612408565b945060608801356124cc81612408565b93506080880135925060a088013567ffffffffffffffff8111156124ef57600080fd5b6124fb8a828b0161242d565b989b979a50959850939692959293505050565b803563ffffffff8116811461252257600080fd5b919050565b60008060006040848603121561253c57600080fd5b6125458461250e565b9250602084013567ffffffffffffffff81111561256157600080fd5b61256d8682870161242d565b9497909650939450505050565b60008060008060006080868803121561259257600080fd5b853561259d81612408565b945060208601356125ad81612408565b935060408601359250606086013567ffffffffffffffff8111156125d057600080fd5b6125dc8882890161242d565b969995985093965092949392505050565b60008060008060006080868803121561260557600080fd5b853561261081612408565b9450602086013593506126256040870161250e565b9250606086013567ffffffffffffffff8111156125d057600080fd5b600080600080600080600060c0888a03121561265c57600080fd5b873561266781612408565b9650602088013561267781612408565b9550604088013561268781612408565b94506060880135935061269c6080890161250e565b925060a088013567ffffffffffffffff8111156124ef57600080fd5b60005b838110156126d35781810151838201526020016126bb565b838111156112d95750506000910152565b600081518084526126fc8160208601602086016126b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e0660208301846126e4565b60008060008060008060a0878903121561275a57600080fd5b863561276581612408565b9550602087013561277581612408565b94506040870135935061278a6060880161250e565b9250608087013567ffffffffffffffff8111156127a657600080fd5b6127b289828a0161242d565b979a9699509497509295939492505050565b600080604083850312156127d757600080fd5b82356127e281612408565b915060208301356127f281612408565b809150509250929050565b60006020828403121561280f57600080fd5b8135611e0681612408565b6000806000806060858703121561283057600080fd5b843561283b81612408565b93506128496020860161250e565b9250604085013567ffffffffffffffff81111561286557600080fd5b6128718782880161242d565b95989497509550505050565b60006020828403121561288f57600080fd5b8151611e0681612408565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128db576128db61289a565b500390565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261291f60808301846126e4565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061295860608301856126e4565b905063ffffffff83166040830152949350505050565b600082198211156129815761298161289a565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526129d560c08301846126e4565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612a1660608301846126e4565b95945050505050565b600060208284031215612a3157600080fd5b81518015158114611e0657600080fd5b82815260406020820152600061222760408301846126e4565b60008251612a6c8184602087016126b8565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1141:9307:149:-:0;;;2615:113;;;;;;;;;-1:-1:-1;2656:65:149::1;2714:1;2656:10;:65::i;:::-;1141:9307:::0;;2849:242;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;;3209:33;3236:4;3209:18;;;;;:33;;:::i;:::-;3208:34;:55;;;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;-1:-1:-1;;;3146:190:43;;216:2:357;3146:190:43;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:357;;;338:44;399:19;;3146:190:43;;;;;;;;;3346:12;:16;;-1:-1:-1;;3346:16:43;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;-1:-1:-1;;3406:20:43;;;;;3372:65;2927:157:149::1;480:42:199;3061:12:149::0;2927:21:::1;:157::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;-1:-1:-1;;3491:21:43;;;3531:14;;-1:-1:-1;581:36:357;;3531:14:43;;569:2:357;554:18;3531:14:43;;;;;;;3457:99;3090:472;2849:242:149;:::o;1175:320:59:-;-1:-1:-1;;;;;1465:19:59;;:23;;;1175:320::o;5373:236:235:-;4888:13:43;;;;;;;4880:69;;;;-1:-1:-1;;;4880:69:43;;830:2:357;4880:69:43;;;812:21:357;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:357;;;952:41;1010:19;;4880:69:43;628:407:357;4880:69:43;5544:9:235::1;:22:::0;;-1:-1:-1;;;;;5544:22:235;;::::1;-1:-1:-1::0;;;;;;5544:22:235;;::::1;;::::0;;;5576:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5373:236::o;628:407:357:-;1141:9307:149;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061012d5760003560e01c8063662a633a116100a5578063927ede2d11610074578063c4d66de811610059578063c4d66de814610421578063c89701a214610441578063e11013dd1461046e57600080fd5b8063927ede2d146103e3578063a3a795481461040e57600080fd5b8063662a633a1461036a5780637f46ddb21461025a578063870876231461037d5780638f601f661461039d57600080fd5b806336c717c1116100fc578063540abf73116100e1578063540abf73146102d857806354fd4d50146102f85780635c975abb1461034e57600080fd5b806336c717c11461025a5780633cb747bf146102ab57600080fd5b80630166a07a1461020157806309fc8843146102215780631635f5fd1461023457806332b7006d1461024757600080fd5b366101fc57333b156101c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084015b60405180910390fd5b6101fa73deaddeaddeaddeaddeaddeaddeaddeaddead000033333462030d406040518060200160405280600081525061049d565b005b600080fd5b34801561020d57600080fd5b506101fa61021c366004612476565b610578565b6101fa61022f366004612527565b61091a565b6101fa61024236600461257a565b6109f1565b6101fa6102553660046125ed565b610e43565b34801561026657600080fd5b5060045473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156102b757600080fd5b506003546102819073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102e457600080fd5b506101fa6102f3366004612641565b610f1d565b34801561030457600080fd5b506103416040518060400160405280600581526020017f312e382e3000000000000000000000000000000000000000000000000000000081525081565b6040516102a2919061272e565b34801561035a57600080fd5b50604051600081526020016102a2565b6101fa610378366004612476565b610f62565b34801561038957600080fd5b506101fa610398366004612741565b610fd5565b3480156103a957600080fd5b506103d56103b83660046127c4565b600260209081526000928352604080842090915290825290205481565b6040519081526020016102a2565b3480156103ef57600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610281565b6101fa61041c366004612741565b6110a9565b34801561042d57600080fd5b506101fa61043c3660046127fd565b6110ed565b34801561044d57600080fd5b506004546102819073ffffffffffffffffffffffffffffffffffffffff1681565b6101fa61047c36600461281a565b611296565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b7fffffffffffffffffffffffff215221522152215221522152215221522153000073ffffffffffffffffffffffffffffffffffffffff8716016104ec576104e785858585856112df565b610570565b60008673ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa158015610539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055d919061287d565b905061056e878288888888886114a9565b505b505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314801561064b575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa15801561060f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610633919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b6106fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b610706876117d4565b15610854576107158787611836565b6107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590528816906340c10f1990604401600060405180830381600087803b15801561083757600080fd5b505af115801561084b573d6000803e3d6000fd5b505050506108d6565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a16835292905220546108929084906128c9565b73ffffffffffffffffffffffffffffffffffffffff8089166000818152600260209081526040808320948c16835293905291909120919091556108d6908585611956565b61056e878787878787878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a2a92505050565b333b156109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b6109ec3333348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b505050565b60035473ffffffffffffffffffffffffffffffffffffffff1633148015610ac4575060048054600354604080517f6e296e45000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff938416949390921692636e296e459282820192602092908290030181865afa158015610a88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aac919061287d565b73ffffffffffffffffffffffffffffffffffffffff16145b610b76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604160248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20746865206f7468657220627269646760648201527f6500000000000000000000000000000000000000000000000000000000000000608482015260a4016101bd565b823414610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f5374616e646172644272696467653a20616d6f756e742073656e7420646f657360448201527f206e6f74206d6174636820616d6f756e7420726571756972656400000000000060648201526084016101bd565b3073ffffffffffffffffffffffffffffffffffffffff851603610caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f207360448201527f656c66000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b60035473ffffffffffffffffffffffffffffffffffffffff90811690851603610d55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d60448201527f657373656e67657200000000000000000000000000000000000000000000000060648201526084016101bd565b610d9785858585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ab892505050565b6000610db4855a8660405180602001604052806000815250611b59565b905080610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f5374616e646172644272696467653a20455448207472616e736665722066616960448201527f6c6564000000000000000000000000000000000000000000000000000000000060648201526084016101bd565b333b15610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b610f16853333878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b5050505050565b61056e87873388888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b73ffffffffffffffffffffffffffffffffffffffff8716158015610faf575073ffffffffffffffffffffffffffffffffffffffff861673deaddeaddeaddeaddeaddeaddeaddeaddead0000145b15610fc657610fc185858585856109f1565b61056e565b61056e86888787878787610578565b333b15611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c60448201527f792062652063616c6c65642066726f6d20616e20454f4100000000000000000060648201526084016101bd565b61057086863333888888888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114a992505050565b610570863387878787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061049d92505050565b600054610100900460ff161580801561110d5750600054600160ff909116105b806111275750303b158015611127575060005460ff166001145b6111b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101bd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561121157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61122f73420000000000000000000000000000000000000783611b73565b801561129257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6112d93385348686868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112df92505050565b50505050565b82341461136e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5374616e646172644272696467653a206272696467696e6720455448206d757360448201527f7420696e636c7564652073756666696369656e74204554482076616c7565000060648201526084016101bd565b61137a85858584611c5d565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9287929116907f1635f5fd00000000000000000000000000000000000000000000000000000000906113dd908b908b9086908a906024016128e0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e086901b909216825261147092918890600401612929565b6000604051808303818588803b15801561148957600080fd5b505af115801561149d573d6000803e3d6000fd5b50505050505050505050565b6114b2876117d4565b15611600576114c18787611836565b611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b60448201527f656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c60648201527f6f63616c20746f6b656e00000000000000000000000000000000000000000000608482015260a4016101bd565b6040517f9dc29fac00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015260248201859052881690639dc29fac90604401600060405180830381600087803b1580156115e357600080fd5b505af11580156115f7573d6000803e3d6000fd5b50505050611694565b61162273ffffffffffffffffffffffffffffffffffffffff8816863086611cfe565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600260209081526040808320938a168352929052205461166090849061296e565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600260209081526040808320938b16835292905220555b6116a2878787878786611d5c565b60035460045460405173ffffffffffffffffffffffffffffffffffffffff92831692633dbb202b9216907f0166a07a0000000000000000000000000000000000000000000000000000000090611706908b908d908c908c908c908b90602401612986565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009485161790525160e085901b909216825261179992918790600401612929565b600060405180830381600087803b1580156117b357600080fd5b505af11580156117c7573d6000803e3d6000fd5b5050505050505050505050565b6000611800827f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b806118305750611830827fec4fc8e300000000000000000000000000000000000000000000000000000000611dea565b92915050565b6000611862837f1d1d8b6300000000000000000000000000000000000000000000000000000000611dea565b1561190b578273ffffffffffffffffffffffffffffffffffffffff1663c01e1bd66040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118d6919061287d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050611830565b8273ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118b2573d6000803e3d6000fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109ec9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e0d565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611aa2939291906129e1565b60405180910390a4610570868686868686611f19565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fb0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89868686604051611b45939291906129e1565b60405180910390a46112d984848484611fa1565b600080600080845160208601878a8af19695505050505050565b600054610100900460ff16611c0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101bd565b6003805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560048054929093169116179055565b8373ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611cea939291906129e1565b60405180910390a46112d98484848461200e565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526112d99085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016119a8565b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e868686604051611dd4939291906129e1565b60405180910390a461057086868686868661206d565b6000611df5836120e5565b8015611e065750611e068383612149565b9392505050565b6000611e6f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166122189092919063ffffffff16565b8051909150156109ec5780806020019051810190611e8d9190612a1f565b6109ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101bd565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fd59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd868686604051611f91939291906129e1565b60405180910390a4505050505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d8484604051612000929190612a41565b60405180910390a350505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af58484604051612000929190612a41565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf868686604051611f91939291906129e1565b6000612111827f01ffc9a700000000000000000000000000000000000000000000000000000000612149565b80156118305750612142827fffffffff00000000000000000000000000000000000000000000000000000000612149565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015612201575060208210155b801561220d5750600081115b979650505050505050565b6060612227848460008561222f565b949350505050565b6060824710156122c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101bd565b73ffffffffffffffffffffffffffffffffffffffff85163b61233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bd565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516123689190612a5a565b60006040518083038185875af1925050503d80600081146123a5576040519150601f19603f3d011682016040523d82523d6000602084013e6123aa565b606091505b509150915061220d828286606083156123c4575081611e06565b8251156123d45782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bd919061272e565b73ffffffffffffffffffffffffffffffffffffffff8116811461242a57600080fd5b50565b60008083601f84011261243f57600080fd5b50813567ffffffffffffffff81111561245757600080fd5b60208301915083602082850101111561246f57600080fd5b9250929050565b600080600080600080600060c0888a03121561249157600080fd5b873561249c81612408565b965060208801356124ac81612408565b955060408801356124bc81612408565b945060608801356124cc81612408565b93506080880135925060a088013567ffffffffffffffff8111156124ef57600080fd5b6124fb8a828b0161242d565b989b979a50959850939692959293505050565b803563ffffffff8116811461252257600080fd5b919050565b60008060006040848603121561253c57600080fd5b6125458461250e565b9250602084013567ffffffffffffffff81111561256157600080fd5b61256d8682870161242d565b9497909650939450505050565b60008060008060006080868803121561259257600080fd5b853561259d81612408565b945060208601356125ad81612408565b935060408601359250606086013567ffffffffffffffff8111156125d057600080fd5b6125dc8882890161242d565b969995985093965092949392505050565b60008060008060006080868803121561260557600080fd5b853561261081612408565b9450602086013593506126256040870161250e565b9250606086013567ffffffffffffffff8111156125d057600080fd5b600080600080600080600060c0888a03121561265c57600080fd5b873561266781612408565b9650602088013561267781612408565b9550604088013561268781612408565b94506060880135935061269c6080890161250e565b925060a088013567ffffffffffffffff8111156124ef57600080fd5b60005b838110156126d35781810151838201526020016126bb565b838111156112d95750506000910152565b600081518084526126fc8160208601602086016126b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611e0660208301846126e4565b60008060008060008060a0878903121561275a57600080fd5b863561276581612408565b9550602087013561277581612408565b94506040870135935061278a6060880161250e565b9250608087013567ffffffffffffffff8111156127a657600080fd5b6127b289828a0161242d565b979a9699509497509295939492505050565b600080604083850312156127d757600080fd5b82356127e281612408565b915060208301356127f281612408565b809150509250929050565b60006020828403121561280f57600080fd5b8135611e0681612408565b6000806000806060858703121561283057600080fd5b843561283b81612408565b93506128496020860161250e565b9250604085013567ffffffffffffffff81111561286557600080fd5b6128718782880161242d565b95989497509550505050565b60006020828403121561288f57600080fd5b8151611e0681612408565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156128db576128db61289a565b500390565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261291f60808301846126e4565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600061295860608301856126e4565b905063ffffffff83166040830152949350505050565b600082198211156129815761298161289a565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80891683528088166020840152808716604084015280861660608401525083608083015260c060a08301526129d560c08301846126e4565b98975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612a1660608301846126e4565b95945050505050565b600060208284031215612a3157600080fd5b81518015158114611e0657600080fd5b82815260406020820152600061222760408301846126e4565b60008251612a6c8184602087016126b8565b919091019291505056fea164736f6c634300080f000a","sourceMap":"1141:9307:149:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4741:10:235;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;;;;;;;;;3228:143:149::1;2708:42:199;3290:10:149;3302;3314:9;1343:7:235;3352:9:149;;;;;;;;;;;::::0;3228:19:::1;:143::i;:::-;1141:9307:::0;;;;;12867:1084:235;;;;;;;;;;-1:-1:-1;12867:1084:235;;;;;:::i;:::-;;:::i;7253:186::-;;;;;;:::i;:::-;;:::i;11233:902::-;;;;;;:::i;:::-;;:::i;3897:313:149:-;;;;;;:::i;:::-;;:::i;6764:101::-;;;;;;;;;;-1:-1:-1;6846:11:149;;;;6764:101;;;4271:42:357;4259:55;;;4241:74;;4229:2;4214:18;6764:101:149;;;;;;;;1893:37:235;;;;;;;;;;-1:-1:-1;1893:37:235;;;;;;;;10320:349;;;;;;;;;;-1:-1:-1;10320:349:235;;;;;:::i;:::-;;:::i;2510:40:149:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6750:82:235:-;;;;;;;;;;-1:-1:-1;6750:82:235;;6797:4;6512:41:357;;6500:2;6485:18;6750:82:235;6372:187:357;6087:505:149;;;;;;:::i;:::-;;:::i;9277:349:235:-;;;;;;;;;;-1:-1:-1;9277:349:235;;;;;:::i;:::-;;:::i;1739:63::-;;;;;;;;;;-1:-1:-1;1739:63:235;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:25:357;;;8187:2;8172:18;1739:63:235;8053:177:357;6024:99:235;;;;;;;;;;-1:-1:-1;6107:9:235;;;;6024:99;;5197:313:149;;;;;;:::i;:::-;;:::i;2849:242::-;;;;;;;;;;-1:-1:-1;2849:242:149;;;;;:::i;:::-;;:::i;2028:33:235:-;;;;;;;;;;-1:-1:-1;2028:33:235;;;;;;;;8450:186;;;;;;:::i;:::-;;:::i;1175:320:59:-;1465:19;;;:23;;;1175:320::o;7372:554:149:-;7599:39;;;;;7595:325;;7654:65;7673:5;7680:3;7685:7;7694:12;7708:10;7654:18;:65::i;:::-;7595:325;;;7750:15;7790:8;7768:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7750:59;;7823:86;7844:8;7854:7;7863:5;7870:3;7875:7;7884:12;7898:10;7823:20;:86::i;:::-;7736:184;7595:325;7372:554;;;;;;:::o;12867:1084:235:-;5004:9;;;;4982:10;:32;:92;;;;-1:-1:-1;5062:11:235;;;5018:9;;:32;;;;;;;;5062:11;;;;;5018:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;4982:92;4961:204;;;;;;;9591:2:357;4961:204:235;;;9573:21:357;9630:2;9610:18;;;9603:30;9669:34;9649:18;;;9642:62;9740:34;9720:18;;;9713:62;9812:3;9791:19;;;9784:32;9833:19;;4961:204:235;9389:469:357;4961:204:235;13184:37:::1;13209:11;13184:24;:37::i;:::-;13180:489;;;13262:46;13282:11;13295:12;13262:19;:46::i;:::-;13237:179;;;::::0;::::1;::::0;;10416:2:357;13237:179:235::1;::::0;::::1;10398:21:357::0;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;10565:34;10545:18;;;10538:62;10637:12;10616:19;;;10609:41;10667:19;;13237:179:235::1;10214:478:357::0;13237:179:235::1;13431:53;::::0;;;;:39:::1;10889:55:357::0;;;13431:53:235::1;::::0;::::1;10871:74:357::0;10961:18;;;10954:34;;;13431:39:235;::::1;::::0;::::1;::::0;10844:18:357;;13431:53:235::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13180:489;;;13553:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;:45:::1;::::0;13591:7;;13553:45:::1;:::i;:::-;13515:21;::::0;;::::1;;::::0;;;:8:::1;:21;::::0;;;;;;;:35;;::::1;::::0;;;;;;;;;:83;;;;13612:46:::1;::::0;13645:3;13650:7;13612:32:::1;:46::i;:::-;13859:85;13885:11;13898:12;13912:5;13919:3;13924:7;13933:10;;13859:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13859:25:235::1;::::0;-1:-1:-1;;;13859:85:235:i:1;7253:186::-:0;4741:10;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;7353:79:::1;7372:10;7384;7396:9;7407:12;7421:10;;7353:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;7353:18:235::1;::::0;-1:-1:-1;;;7353:79:235:i:1;:::-;7253:186:::0;;;:::o;11233:902::-;5004:9;;;;4982:10;:32;:92;;;;-1:-1:-1;5062:11:235;;;5018:9;;:32;;;;;;;;5062:11;;;;;5018:9;;;;;:30;;:32;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;;;4982:92;4961:204;;;;;;;9591:2:357;4961:204:235;;;9573:21:357;9630:2;9610:18;;;9603:30;9669:34;9649:18;;;9642:62;9740:34;9720:18;;;9713:62;9812:3;9791:19;;;9784:32;9833:19;;4961:204:235;9389:469:357;4961:204:235;11522:7:::1;11509:9;:20;11501:91;;;::::0;::::1;::::0;;11520:2:357;11501:91:235::1;::::0;::::1;11502:21:357::0;11559:2;11539:18;;;11532:30;11598:34;11578:18;;;11571:62;11669:28;11649:18;;;11642:56;11715:19;;11501:91:235::1;11318:422:357::0;11501:91:235::1;11625:4;11610:20;::::0;::::1;::::0;11602:68:::1;;;::::0;::::1;::::0;;11947:2:357;11602:68:235::1;::::0;::::1;11929:21:357::0;11986:2;11966:18;;;11959:30;12025:34;12005:18;;;11998:62;12096:5;12076:18;;;12069:33;12119:19;;11602:68:235::1;11745:399:357::0;11602:68:235::1;11703:9;::::0;::::1;::::0;;::::1;11688:25:::0;;::::1;::::0;11680:78:::1;;;::::0;::::1;::::0;;12351:2:357;11680:78:235::1;::::0;::::1;12333:21:357::0;12390:2;12370:18;;;12363:30;12429:34;12409:18;;;12402:62;12500:10;12480:18;;;12473:38;12528:19;;11680:78:235::1;12149:404:357::0;11680:78:235::1;11936:56;11960:5;11967:3;11972:7;11981:10;;11936:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;11936:23:235::1;::::0;-1:-1:-1;;;11936:56:235:i:1;:::-;12003:12;12018:45;12032:3;12037:9;12048:7;12018:45;;;;;;;;;;;::::0;:13:::1;:45::i;:::-;12003:60;;12081:7;12073:55;;;::::0;::::1;::::0;;12760:2:357;12073:55:235::1;::::0;::::1;12742:21:357::0;12799:2;12779:18;;;12772:30;12838:34;12818:18;;;12811:62;12909:5;12889:18;;;12882:33;12932:19;;12073:55:235::1;12558:399:357::0;3897:313:149;4741:10:235;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;4115:88:149::1;4135:8;4145:10;4157;4169:7;4178:12;4192:10;;4115:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4115:19:149::1;::::0;-1:-1:-1;;;4115:88:149:i:1;:::-;3897:313:::0;;;;;:::o;10320:349:235:-;10563:99;10584:11;10597:12;10611:10;10623:3;10628:7;10637:12;10651:10;;10563:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10563:20:235;;-1:-1:-1;;;10563:99:235:i;6087:505:149:-;6341:22;;;;:65;;;;-1:-1:-1;6367:39:149;;;2708:42:199;6367:39:149;6341:65;6337:249;;;6422:50;6440:5;6447:3;6452:7;6461:10;;6422:17;:50::i;:::-;6337:249;;;6503:72;6523:8;6533;6543:5;6550:3;6555:7;6564:10;;6503:19;:72::i;9277:349:235:-;4741:10;1465:19:59;:23;4713:99:235;;;;;;;216:2:357;4713:99:235;;;198:21:357;255:2;235:18;;;228:30;294:34;274:18;;;267:62;365:25;345:18;;;338:53;408:19;;4713:99:235;14:419:357;4713:99:235;9513:106:::1;9534:11;9547:12;9561:10;9573;9585:7;9594:12;9608:10;;9513:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;9513:20:235::1;::::0;-1:-1:-1;;;9513:106:235:i:1;5197:313:149:-:0;5422:81;5442:8;5452:10;5464:3;5469:7;5478:12;5492:10;;5422:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5422:19:149;;-1:-1:-1;;;5422:81:149:i;2849:242::-;3100:19:43;3123:13;;;;;;3122:14;;3168:34;;;;-1:-1:-1;3186:12:43;;3201:1;3186:12;;;;:16;3168:34;3167:97;;;-1:-1:-1;3236:4:43;1465:19:59;:23;;;3208:55:43;;-1:-1:-1;3246:12:43;;;;;:17;3208:55;3146:190;;;;;;;13164:2:357;3146:190:43;;;13146:21:357;13203:2;13183:18;;;13176:30;13242:34;13222:18;;;13215:62;13313:16;13293:18;;;13286:44;13347:19;;3146:190:43;12962:410:357;3146:190:43;3346:12;:16;;;;3361:1;3346:16;;;3372:65;;;;3406:13;:20;;;;;;;;3372:65;2927:157:149::1;480:42:199;3061:12:149;2927:21;:157::i;:::-;3461:14:43::0;3457:99;;;3507:5;3491:21;;;;;;3531:14;;-1:-1:-1;13529:36:357;;3531:14:43;;13517:2:357;13502:18;3531:14:43;;;;;;;3457:99;3090:472;2849:242:149;:::o;8450:186:235:-;8557:72;8576:10;8588:3;8593:9;8604:12;8618:10;;8557:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8557:18:235;;-1:-1:-1;;;8557:72:235:i;:::-;8450:186;;;;:::o;14539:789::-;14756:7;14743:9;:20;14735:95;;;;;;;13778:2:357;14735:95:235;;;13760:21:357;13817:2;13797:18;;;13790:30;13856:34;13836:18;;;13829:62;13927:32;13907:18;;;13900:60;13977:19;;14735:95:235;13576:426:357;14735:95:235;15008:56;15032:5;15039:3;15044:7;15053:10;15008:23;:56::i;:::-;15075:9;;15146:11;;15182:88;;15075:9;;;;;:21;;15105:7;;15146:11;;;15205:31;;15182:88;;15238:5;;15245:3;;15105:7;;15259:10;;15182:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;15075:246;;;;;;;;;;;;;15298:12;;15075:246;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14539:789;;;;;:::o;16022:1680::-;16283:37;16308:11;16283:24;:37::i;:::-;16279:512;;;16361:46;16381:11;16394:12;16361:19;:46::i;:::-;16336:179;;;;;;;10416:2:357;16336:179:235;;;10398:21:357;10455:2;10435:18;;;10428:30;10494:34;10474:18;;;10467:62;10565:34;10545:18;;;10538:62;10637:12;10616:19;;;10609:41;10667:19;;16336:179:235;10214:478:357;16336:179:235;16530:55;;;;;:39;10889:55:357;;;16530::235;;;10871:74:357;10961:18;;;10954:34;;;16530:39:235;;;;;10844:18:357;;16530:55:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16279:512;;;16616:67;:36;;;16653:5;16668:4;16675:7;16616:36;:67::i;:::-;16735:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;;:45;;16773:7;;16735:45;:::i;:::-;16697:21;;;;;;;;:8;:21;;;;;;;;:35;;;;;;;;;:83;16279:512;16981:85;17007:11;17020:12;17034:5;17041:3;17046:7;17055:10;16981:25;:85::i;:::-;17077:9;;17130:11;;17166:478;;17077:9;;;;;:21;;17130:11;;17206:33;;17166:478;;17492:12;;17522:11;;17551:5;;17574:3;;17595:7;;17620:10;;17166:478;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;17077:618;;;;;;;;;;;;;17672:12;;17077:618;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16022:1680;;;;;;;:::o;17966:279::-;18039:4;18062:79;18094:6;18102:38;18062:31;:79::i;:::-;:176;;;;18157:81;18189:6;18197:40;18157:31;:81::i;:::-;18055:183;17966:279;-1:-1:-1;;17966:279:235:o;18692:410::-;18789:4;18809:87;18841:14;18857:38;18809:31;:87::i;:::-;18805:291;;;18955:14;18934:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18919:61;;:11;:61;;;18912:68;;;;18805:291;19056:14;19033:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;763:205:52;902:58;;10901:42:357;10889:55;;902:58:52;;;10871:74:357;10961:18;;;10954:34;;;875:86:52;;895:5;;925:23;;10844:18:357;;902:58:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;875:19;:86::i;10007:439:149:-;10306:5;10262:76;;10293:11;10262:76;;10279:12;10262:76;;;10313:3;10318:7;10327:10;10262:76;;;;;;;;:::i;:::-;;;;;;;;10348:91;10380:11;10393:12;10407:5;10414:3;10419:7;10428:10;10348:31;:91::i;8745:363::-;8997:5;8939:90;;2708:42:199;8939:90:149;;8964:1;8939:90;;;9004:3;9009:7;9018:10;8939:90;;;;;;;;:::i;:::-;;;;;;;;9039:62;9069:5;9076:3;9081:7;9090:10;9039:29;:62::i;1202:536:200:-;1305:4;1321:13;1668:1;1635;1594:9;1588:16;1554:2;1543:9;1539:18;1496:6;1454:7;1421:4;1395:302;1367:330;1202:536;-1:-1:-1;;;;;;1202:536:200:o;5373:236:235:-;4888:13:43;;;;;;;4880:69;;;;;;;16381:2:357;4880:69:43;;;16363:21:357;16420:2;16400:18;;;16393:30;16459:34;16439:18;;;16432:62;16530:13;16510:18;;;16503:41;16561:19;;4880:69:43;16179:407:357;4880:69:43;5544:9:235::1;:22:::0;;::::1;::::0;;::::1;::::0;;;::::1;;::::0;;;5576:11:::1;:26:::0;;;;;::::1;::::0;::::1;;::::0;;5373:236::o;8154:366:149:-;8409:5;8348:93;;2708:42:199;8348:93:149;;8376:1;8348:93;;;8416:3;8421:7;8430:10;8348:93;;;;;;;;:::i;:::-;;;;;;;;8451:62;8481:5;8488:3;8493:7;8502:10;8451:29;:62::i;974:241:52:-;1139:68;;16803:42:357;16872:15;;;1139:68:52;;;16854:34:357;16924:15;;16904:18;;;16897:43;16956:18;;;16949:34;;;1112:96:52;;1132:5;;1162:27;;16766:18:357;;1139:68:52;16591:398:357;9338:442:149;9640:5;9593:79;;9627:11;9593:79;;9613:12;9593:79;;;9647:3;9652:7;9661:10;9593:79;;;;;;;;:::i;:::-;;;;;;;;9682:91;9714:11;9727:12;9741:5;9748:3;9753:7;9762:10;9682:31;:91::i;1333:274:67:-;1420:4;1527:23;1542:7;1527:14;:23::i;:::-;:73;;;;;1554:46;1579:7;1588:11;1554:24;:46::i;:::-;1520:80;1333:274;-1:-1:-1;;;1333:274:67:o;3747:706:52:-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;4192:27;;;;:69;;;;;:::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:52;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;;;;17478:2:357;4351:85:52;;;17460:21:357;17517:2;17497:18;;;17490:30;17556:34;17536:18;;;17529:62;17627:12;17607:18;;;17600:40;17657:19;;4351:85:52;17276:406:357;21757:341:235;22059:5;22011:80;;22045:12;22011:80;;22032:11;22011:80;;;22066:3;22071:7;22080:10;22011:80;;;;;;;;:::i;:::-;;;;;;;;21757:341;;;;;;:::o;20099:251::-;20318:3;20292:51;;20311:5;20292:51;;;20323:7;20332:10;20292:51;;;;;;;:::i;:::-;;;;;;;;20099:251;;;;:::o;19478:::-;19697:3;19671:51;;19690:5;19671:51;;;19702:7;19711:10;19671:51;;;;;;;:::i;20883:341::-;21185:5;21137:80;;21171:12;21137:80;;21158:11;21137:80;;;21192:3;21197:7;21206:10;21137:80;;;;;;;;:::i;704:411:67:-;768:4;975:60;1000:7;1009:25;975:24;:60::i;:::-;:133;;;;-1:-1:-1;1052:56:67;1077:7;1086:21;1052:24;:56::i;:::-;1051:57;956:152;704:411;-1:-1:-1;;704:411:67:o;4223:638::-;4385:71;;;18155:66:357;18143:79;;4385:71:67;;;;18125:98:357;;;;4385:71:67;;;;;;;;;;18098:18:357;;;;4385:71:67;;;;;;;;;;;4408:34;4385:71;;;4664:20;;4316:4;;4385:71;4316:4;;;;;;4385:71;4316:4;;4664:20;4629:7;4622:5;4611:86;4600:97;;4724:16;4710:30;;4774:4;4768:11;4753:26;;4806:7;:29;;;;;4831:4;4817:10;:18;;4806:29;:48;;;;;4853:1;4839:11;:15;4806:48;4799:55;4223:638;-1:-1:-1;;;;;;;4223:638:67:o;3861:223:59:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;3861:223;-1:-1:-1;;;;3861:223:59:o;4948:499::-;5113:12;5170:5;5145:21;:30;;5137:81;;;;;;;18436:2:357;5137:81:59;;;18418:21:357;18475:2;18455:18;;;18448:30;18514:34;18494:18;;;18487:62;18585:8;18565:18;;;18558:36;18611:19;;5137:81:59;18234:402:357;5137:81:59;1465:19;;;;5228:60;;;;;;;18843:2:357;5228:60:59;;;18825:21:357;18882:2;18862:18;;;18855:30;18921:31;18901:18;;;18894:59;18970:18;;5228:60:59;18641:353:357;5228:60:59;5300:12;5314:23;5341:6;:11;;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;7707;7735:7;7731:566;;;-1:-1:-1;7765:10:59;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;;;;;;;;;;:::i;438:154:357:-;524:42;517:5;513:54;506:5;503:65;493:93;;582:1;579;572:12;493:93;438:154;:::o;597:347::-;648:8;658:6;712:3;705:4;697:6;693:17;689:27;679:55;;730:1;727;720:12;679:55;-1:-1:-1;753:20:357;;796:18;785:30;;782:50;;;828:1;825;818:12;782:50;865:4;857:6;853:17;841:29;;917:3;910:4;901:6;893;889:19;885:30;882:39;879:59;;;934:1;931;924:12;879:59;597:347;;;;;:::o;949:1038::-;1064:6;1072;1080;1088;1096;1104;1112;1165:3;1153:9;1144:7;1140:23;1136:33;1133:53;;;1182:1;1179;1172:12;1133:53;1221:9;1208:23;1240:31;1265:5;1240:31;:::i;:::-;1290:5;-1:-1:-1;1347:2:357;1332:18;;1319:32;1360:33;1319:32;1360:33;:::i;:::-;1412:7;-1:-1:-1;1471:2:357;1456:18;;1443:32;1484:33;1443:32;1484:33;:::i;:::-;1536:7;-1:-1:-1;1595:2:357;1580:18;;1567:32;1608:33;1567:32;1608:33;:::i;:::-;1660:7;-1:-1:-1;1714:3:357;1699:19;;1686:33;;-1:-1:-1;1770:3:357;1755:19;;1742:33;1798:18;1787:30;;1784:50;;;1830:1;1827;1820:12;1784:50;1869:58;1919:7;1910:6;1899:9;1895:22;1869:58;:::i;:::-;949:1038;;;;-1:-1:-1;949:1038:357;;-1:-1:-1;949:1038:357;;;;1843:84;;-1:-1:-1;;;949:1038:357:o;1992:163::-;2059:20;;2119:10;2108:22;;2098:33;;2088:61;;2145:1;2142;2135:12;2088:61;1992:163;;;:::o;2160:481::-;2238:6;2246;2254;2307:2;2295:9;2286:7;2282:23;2278:32;2275:52;;;2323:1;2320;2313:12;2275:52;2346:28;2364:9;2346:28;:::i;:::-;2336:38;;2425:2;2414:9;2410:18;2397:32;2452:18;2444:6;2441:30;2438:50;;;2484:1;2481;2474:12;2438:50;2523:58;2573:7;2564:6;2553:9;2549:22;2523:58;:::i;:::-;2160:481;;2600:8;;-1:-1:-1;2497:84:357;;-1:-1:-1;;;;2160:481:357:o;2646:754::-;2743:6;2751;2759;2767;2775;2828:3;2816:9;2807:7;2803:23;2799:33;2796:53;;;2845:1;2842;2835:12;2796:53;2884:9;2871:23;2903:31;2928:5;2903:31;:::i;:::-;2953:5;-1:-1:-1;3010:2:357;2995:18;;2982:32;3023:33;2982:32;3023:33;:::i;:::-;3075:7;-1:-1:-1;3129:2:357;3114:18;;3101:32;;-1:-1:-1;3184:2:357;3169:18;;3156:32;3211:18;3200:30;;3197:50;;;3243:1;3240;3233:12;3197:50;3282:58;3332:7;3323:6;3312:9;3308:22;3282:58;:::i;:::-;2646:754;;;;-1:-1:-1;2646:754:357;;-1:-1:-1;3359:8:357;;3256:84;2646:754;-1:-1:-1;;;2646:754:357:o;3405:685::-;3501:6;3509;3517;3525;3533;3586:3;3574:9;3565:7;3561:23;3557:33;3554:53;;;3603:1;3600;3593:12;3554:53;3642:9;3629:23;3661:31;3686:5;3661:31;:::i;:::-;3711:5;-1:-1:-1;3763:2:357;3748:18;;3735:32;;-1:-1:-1;3786:37:357;3819:2;3804:18;;3786:37;:::i;:::-;3776:47;;3874:2;3863:9;3859:18;3846:32;3901:18;3893:6;3890:30;3887:50;;;3933:1;3930;3923:12;4588:969;4702:6;4710;4718;4726;4734;4742;4750;4803:3;4791:9;4782:7;4778:23;4774:33;4771:53;;;4820:1;4817;4810:12;4771:53;4859:9;4846:23;4878:31;4903:5;4878:31;:::i;:::-;4928:5;-1:-1:-1;4985:2:357;4970:18;;4957:32;4998:33;4957:32;4998:33;:::i;:::-;5050:7;-1:-1:-1;5109:2:357;5094:18;;5081:32;5122:33;5081:32;5122:33;:::i;:::-;5174:7;-1:-1:-1;5228:2:357;5213:18;;5200:32;;-1:-1:-1;5251:38:357;5284:3;5269:19;;5251:38;:::i;:::-;5241:48;;5340:3;5329:9;5325:19;5312:33;5368:18;5360:6;5357:30;5354:50;;;5400:1;5397;5390:12;5562:258;5634:1;5644:113;5658:6;5655:1;5652:13;5644:113;;;5734:11;;;5728:18;5715:11;;;5708:39;5680:2;5673:10;5644:113;;;5775:6;5772:1;5769:13;5766:48;;;-1:-1:-1;;5810:1:357;5792:16;;5785:27;5562:258::o;5825:317::-;5867:3;5905:5;5899:12;5932:6;5927:3;5920:19;5948:63;6004:6;5997:4;5992:3;5988:14;5981:4;5974:5;5970:16;5948:63;:::i;:::-;6056:2;6044:15;6061:66;6040:88;6031:98;;;;6131:4;6027:109;;5825:317;-1:-1:-1;;5825:317:357:o;6147:220::-;6296:2;6285:9;6278:21;6259:4;6316:45;6357:2;6346:9;6342:18;6334:6;6316:45;:::i;6828:827::-;6933:6;6941;6949;6957;6965;6973;7026:3;7014:9;7005:7;7001:23;6997:33;6994:53;;;7043:1;7040;7033:12;6994:53;7082:9;7069:23;7101:31;7126:5;7101:31;:::i;:::-;7151:5;-1:-1:-1;7208:2:357;7193:18;;7180:32;7221:33;7180:32;7221:33;:::i;:::-;7273:7;-1:-1:-1;7327:2:357;7312:18;;7299:32;;-1:-1:-1;7350:37:357;7383:2;7368:18;;7350:37;:::i;:::-;7340:47;;7438:3;7427:9;7423:19;7410:33;7466:18;7458:6;7455:30;7452:50;;;7498:1;7495;7488:12;7452:50;7537:58;7587:7;7578:6;7567:9;7563:22;7537:58;:::i;:::-;6828:827;;;;-1:-1:-1;6828:827:357;;-1:-1:-1;6828:827:357;;7614:8;;6828:827;-1:-1:-1;;;6828:827:357:o;7660:388::-;7728:6;7736;7789:2;7777:9;7768:7;7764:23;7760:32;7757:52;;;7805:1;7802;7795:12;7757:52;7844:9;7831:23;7863:31;7888:5;7863:31;:::i;:::-;7913:5;-1:-1:-1;7970:2:357;7955:18;;7942:32;7983:33;7942:32;7983:33;:::i;:::-;8035:7;8025:17;;;7660:388;;;;;:::o;8235:272::-;8319:6;8372:2;8360:9;8351:7;8347:23;8343:32;8340:52;;;8388:1;8385;8378:12;8340:52;8427:9;8414:23;8446:31;8471:5;8446:31;:::i;8512:616::-;8599:6;8607;8615;8623;8676:2;8664:9;8655:7;8651:23;8647:32;8644:52;;;8692:1;8689;8682:12;8644:52;8731:9;8718:23;8750:31;8775:5;8750:31;:::i;:::-;8800:5;-1:-1:-1;8824:37:357;8857:2;8842:18;;8824:37;:::i;:::-;8814:47;;8912:2;8901:9;8897:18;8884:32;8939:18;8931:6;8928:30;8925:50;;;8971:1;8968;8961:12;8925:50;9010:58;9060:7;9051:6;9040:9;9036:22;9010:58;:::i;:::-;8512:616;;;;-1:-1:-1;9087:8:357;-1:-1:-1;;;;8512:616:357:o;9133:251::-;9203:6;9256:2;9244:9;9235:7;9231:23;9227:32;9224:52;;;9272:1;9269;9262:12;9224:52;9304:9;9298:16;9323:31;9348:5;9323:31;:::i;10999:184::-;11051:77;11048:1;11041:88;11148:4;11145:1;11138:15;11172:4;11169:1;11162:15;11188:125;11228:4;11256:1;11253;11250:8;11247:34;;;11261:18;;:::i;:::-;-1:-1:-1;11298:9:357;;11188:125::o;14007:512::-;14201:4;14230:42;14311:2;14303:6;14299:15;14288:9;14281:34;14363:2;14355:6;14351:15;14346:2;14335:9;14331:18;14324:43;;14403:6;14398:2;14387:9;14383:18;14376:34;14446:3;14441:2;14430:9;14426:18;14419:31;14467:46;14508:3;14497:9;14493:19;14485:6;14467:46;:::i;:::-;14459:54;14007:512;-1:-1:-1;;;;;;14007:512:357:o;14524:424::-;14737:42;14729:6;14725:55;14714:9;14707:74;14817:2;14812;14801:9;14797:18;14790:30;14688:4;14837:45;14878:2;14867:9;14863:18;14855:6;14837:45;:::i;:::-;14829:53;;14930:10;14922:6;14918:23;14913:2;14902:9;14898:18;14891:51;14524:424;;;;;;:::o;14953:128::-;14993:3;15024:1;15020:6;15017:1;15014:13;15011:39;;;15030:18;;:::i;:::-;-1:-1:-1;15066:9:357;;14953:128::o;15086:674::-;15336:4;15365:42;15446:2;15438:6;15434:15;15423:9;15416:34;15498:2;15490:6;15486:15;15481:2;15470:9;15466:18;15459:43;15550:2;15542:6;15538:15;15533:2;15522:9;15518:18;15511:43;15602:2;15594:6;15590:15;15585:2;15574:9;15570:18;15563:43;;15643:6;15637:3;15626:9;15622:19;15615:35;15687:3;15681;15670:9;15666:19;15659:32;15708:46;15749:3;15738:9;15734:19;15726:6;15708:46;:::i;:::-;15700:54;15086:674;-1:-1:-1;;;;;;;;15086:674:357:o;15765:409::-;15980:42;15972:6;15968:55;15957:9;15950:74;16060:6;16055:2;16044:9;16040:18;16033:34;16103:2;16098;16087:9;16083:18;16076:30;15931:4;16123:45;16164:2;16153:9;16149:18;16141:6;16123:45;:::i;:::-;16115:53;15765:409;-1:-1:-1;;;;;15765:409:357:o;16994:277::-;17061:6;17114:2;17102:9;17093:7;17089:23;17085:32;17082:52;;;17130:1;17127;17120:12;17082:52;17162:9;17156:16;17215:5;17208:13;17201:21;17194:5;17191:32;17181:60;;17237:1;17234;17227:12;17687:289;17862:6;17851:9;17844:25;17905:2;17900;17889:9;17885:18;17878:30;17825:4;17925:45;17966:2;17955:9;17951:18;17943:6;17925:45;:::i;18999:274::-;19128:3;19166:6;19160:13;19182:53;19228:6;19223:3;19216:4;19208:6;19204:17;19182:53;:::i;:::-;19251:16;;;;;18999:274;-1:-1:-1;;18999:274:357:o","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","finalizeDeposit(address,address,address,address,uint256,bytes)":"662a633a","initialize(address)":"c4d66de8","l1TokenBridge()":"36c717c1","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb","version()":"54fd4d50","withdraw(address,uint256,uint32,bytes)":"32b7006d","withdrawTo(address,address,uint256,uint32,bytes)":"a3a79548"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"DepositFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"WithdrawalInitiated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"_otherBridge\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1TokenBridge\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"withdrawTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:proxied\":\"@custom:predeploy 0x4200000000000000000000000000000000000010\",\"events\":{\"DepositFinalized(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever an ERC20 deposit is finalized.\",\"params\":{\"amount\":\"Amount of the ERC20 deposited.\",\"extraData\":\"Extra data attached to the deposit.\",\"from\":\"Address of the depositor.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L2.\"}},\"WithdrawalInitiated(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Emitted whenever a withdrawal from L2 to L1 is initiated.\",\"params\":{\"amount\":\"Amount of the ERC20 withdrawn.\",\"extraData\":\"Extra data attached to the withdrawal.\",\"from\":\"Address of the withdrawer.\",\"l1Token\":\"Address of the token on L1.\",\"l2Token\":\"Address of the corresponding token on L2.\",\"to\":\"Address of the recipient on L1.\"}}},\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"finalizeDeposit(address,address,address,address,uint256,bytes)\":{\"custom:legacy\":\"@notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0) and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.\",\"params\":{\"_amount\":\"Amount of the tokens being deposited.\",\"_extraData\":\"Extra data attached to the deposit.\",\"_from\":\"Address of the depositor.\",\"_l1Token\":\"Address of the L1 token to deposit.\",\"_l2Token\":\"Address of the corresponding L2 token.\",\"_to\":\"Address of the recipient.\"}},\"initialize(address)\":{\"params\":{\"_otherBridge\":\"Contract for the corresponding bridge on the other chain.\"}},\"l1TokenBridge()\":{\"custom:legacy\":\"@notice Retrieves the access of the corresponding L1 bridge contract.\",\"returns\":{\"_0\":\"Address of the corresponding L1 bridge contract.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"withdraw(address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20` function to bridge native L2 tokens to L1.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\"}},\"withdrawTo(address,address,uint256,uint32,bytes)\":{\"custom:legacy\":\"@notice Initiates a withdrawal from L2 to L1 to a target account on L1. Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will be locked in the L1StandardBridge. ETH may be recoverable if the call can be successfully replayed by increasing the amount of gas supplied to the call. If the call will fail for any amount of gas, then the ETH will be locked permanently. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20To` function to bridge native L2 tokens to L1.\",\"params\":{\"_amount\":\"Amount of the L2 token to withdraw.\",\"_extraData\":\"Extra data attached to the withdrawal.\",\"_l2Token\":\"Address of the L2 token to withdraw.\",\"_minGasLimit\":\"Minimum gas limit to use for the transaction.\",\"_to\":\"Recipient account on L1.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"1.8.0\"}},\"title\":\"L2StandardBridge\",\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case.\"},\"constructor\":{\"notice\":\"Constructs the L2StandardBridge contract.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"initialize(address)\":{\"notice\":\"Initializer.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op.\"}},\"notice\":\"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and L2. In the case that an ERC20 token is native to L2, it will be escrowed within this contract. If the ERC20 token is native to L1, it will be burnt. NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples of some token types that may not be properly supported by this contract include, but are not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/L2StandardBridge.sol\":\"L2StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0\",\"dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409\",\"dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM\"]},\"src/L2/L2StandardBridge.sol\":{\"keccak256\":\"0x9f17720ac0b3b44723b02385a19063cf22704cd0bd253fce3e6d24b9f76bd629\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1575cf22553428baf7abb23059cb97c29e534ab5214f13d54a1810349166c570\",\"dweb:/ipfs/Qme2oVH1pd1rBe1AyxUjHrofDgHXdHaUiqSgBVsSSLbKN5\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f\",\"dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b\",\"dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff\",\"dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663\",\"dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1\",\"dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n\"]},\"src/universal/IOptimismMintableERC20.sol\":{\"keccak256\":\"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf\",\"dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7\",\"dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8\",\"dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"DepositFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"l1Token","type":"address","indexed":true},{"internalType":"address","name":"l2Token","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"WithdrawalInitiated","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeBridgeERC20"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeBridgeETH"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeDeposit"},{"inputs":[{"internalType":"contract StandardBridge","name":"_otherBridge","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1TokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"withdrawTo"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"finalizeDeposit(address,address,address,address,uint256,bytes)":{"custom:legacy":"@notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0) and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.","params":{"_amount":"Amount of the tokens being deposited.","_extraData":"Extra data attached to the deposit.","_from":"Address of the depositor.","_l1Token":"Address of the L1 token to deposit.","_l2Token":"Address of the corresponding L2 token.","_to":"Address of the recipient."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"custom:legacy":"@notice Retrieves the access of the corresponding L1 bridge contract.","returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"withdraw(address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20` function to bridge native L2 tokens to L1.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"custom:legacy":"@notice Initiates a withdrawal from L2 to L1 to a target account on L1. Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will be locked in the L1StandardBridge. ETH may be recoverable if the call can be successfully replayed by increasing the amount of gas supplied to the call. If the call will fail for any amount of gas, then the ETH will be locked permanently. This function only works with OptimismMintableERC20 tokens or ether. Use the `bridgeERC20To` function to bridge native L2 tokens to L1.","params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L2/L2StandardBridge.sol":"L2StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x24b04b8aacaaf1a4a0719117b29c9c3647b1f479c5ac2a60f5ff1bb6d839c238","urls":["bzz-raw://43e46da9d9f49741ecd876a269e71bc7494058d7a8e9478429998adb5bc3eaa0","dweb:/ipfs/QmUtp4cqzf22C5rJ76AabKADquGWcjsc33yjYXxXC4sDvy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0xde3ac62c60f27a3f1ba06eec94f4eda45e7ec5544c6a5d6b79543a7184e44408","urls":["bzz-raw://265a2845c4ff0d9076dd0505755cf2bdf799f4fdc09ef016865a26b51f5c3409","dweb:/ipfs/QmRzSdBD8jmQf3U9u2ATRAzzuyo6c5ugz8VA5ZM4vzoGiM"],"license":"MIT"},"src/L2/L2StandardBridge.sol":{"keccak256":"0x9f17720ac0b3b44723b02385a19063cf22704cd0bd253fce3e6d24b9f76bd629","urls":["bzz-raw://1575cf22553428baf7abb23059cb97c29e534ab5214f13d54a1810349166c570","dweb:/ipfs/Qme2oVH1pd1rBe1AyxUjHrofDgHXdHaUiqSgBVsSSLbKN5"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db","urls":["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72","dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x90a795bcea3ef06d6d5011256c4bd63d1a4271f519246dbf1ee3e8f1c0e21010","urls":["bzz-raw://9f60c3aa77cf0c484ddda4754157cff4dc0e2eace4bea67990daff4c0612ab5f","dweb:/ipfs/QmSYGanMFve9uBC17X7hFneSFnwnJxz86Jgh6MX9BRMweb"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0xe0aeec7d6e5d1e44a11405d3b5bfc384ea092c39bea0b763ab937a26fd427132","urls":["bzz-raw://11aa3bff9da26ca2545132ec7994866690446a5321023811c254410d9593bd9b","dweb:/ipfs/QmVxWqadxvdfkqdrhfWisDqeAthibn4HEE1P6o9aFxXLhp"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0x1dafabcbd4877c7abe9698957b0a44b7e911cb8b11c1437a4ed897135669fa87","urls":["bzz-raw://6addfacefa26fdb44f56d73fa0172b97740de75629a962905ec2a20a28d40fff","dweb:/ipfs/QmboHMouqU19Rnbqrfo1gkfnuDBFcPiC9wsKgGtF2W1cNA"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8","urls":["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12","dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0x7b48b32b75e9ba0cd7f83b3304c6c1676dd8de20a5d40e8846bf7018ae9aff02","urls":["bzz-raw://7574fcc79c0d545b90071023aa81ee7880ab50b3057df598fa693bc4cf303663","dweb:/ipfs/QmWLxHzgfaTJ7thfb7khXkTY5UtSBZ5VTUB4DaAXVw7DRe"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/universal/CrossDomainMessenger.sol":{"keccak256":"0x330ae1479e88fc8a8b5b27a84df935a092a47ad13e59d9b9ea4982ad31bbe7b0","urls":["bzz-raw://66bf5fb4e78a03dcad4b9a8e2d5ed135f8e989aa02090747386843383fa6b7d1","dweb:/ipfs/QmTp66RoF6EaKeBrrZBuYAu3dsMfKo8de2XY9iHHnqfN3n"],"license":"MIT"},"src/universal/IOptimismMintableERC20.sol":{"keccak256":"0x6f8133b39efcbcbd5088f195dfacf1bedc3146508429c3865443909af735a04c","urls":["bzz-raw://adc36971e2e120458769f050428d9d2b0504516660345020c2521ee46e6d8abf","dweb:/ipfs/QmPbFusQkZgGKpU8Fv5JoqL4oVeJtM3yqnhRGLY9eZT5zZ"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x18721f41a831ec39d47002e73ecc2aa3e6624f8d1ab7b9f25b53348e8b0765df","urls":["bzz-raw://2162fa7529a77b199a07f37fca26c778542f6c8805f0365f1ceef90c5cd3a3a7","dweb:/ipfs/QmaMmHJS52Bp95AGnrjh1zV7fLLqV3uAbFzkVLziMnPJYa"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0x1a2f6afd7f14430ae2b797e09497c3dc860ed5db752e1847e30649668060c01d","urls":["bzz-raw://fefe1356cdeb5b324e4e63e1c723c08f9e244ef2ef133b9f5df0cc0d180eeaa8","dweb:/ipfs/QmZzR3zWKodwdwrdWwXUyh7G3qcFn2cjUQLrE45gRyQMn3"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":49534,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":49537,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":110944,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":110947,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":110954,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":110958,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(CrossDomainMessenger)108888"},{"astId":110962,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)111675"},{"astId":110967,"contract":"src/L2/L2StandardBridge.sol:L2StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(CrossDomainMessenger)108888":{"encoding":"inplace","label":"contract CrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)111675":{"encoding":"inplace","label":"contract StandardBridge","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"constructor":{"notice":"Constructs the L2StandardBridge contract."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"initialize(address)":{"notice":"Initializer."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and L2. In the case that an ERC20 token is native to L2, it will be escrowed within this contract. If the ERC20 token is native to L1, it will be burnt. NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples of some token types that may not be properly supported by this contract include, but are not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"finalizeDeposit(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the tokens being deposited.","_extraData":"Extra data attached to the deposit.","_from":"Address of the depositor.","_l1Token":"Address of the L1 token to deposit.","_l2Token":"Address of the corresponding L2 token.","_to":"Address of the recipient."}},"initialize(address)":{"params":{"_otherBridge":"Contract for the corresponding bridge on the other chain."}},"l1TokenBridge()":{"returns":{"_0":"Address of the corresponding L1 bridge contract."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"withdraw(address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction."}},"withdrawTo(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of the L2 token to withdraw.","_extraData":"Extra data attached to the withdrawal.","_l2Token":"Address of the L2 token to withdraw.","_minGasLimit":"Minimum gas limit to use for the transaction.","_to":"Recipient account on L1."}}},"events":{"DepositFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 deposited.","extraData":"Extra data attached to the deposit.","from":"Address of the depositor.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L2."}},"WithdrawalInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 withdrawn.","extraData":"Extra data attached to the withdrawal.","from":"Address of the withdrawer.","l1Token":"Address of the token on L1.","l2Token":"Address of the corresponding token on L2.","to":"Address of the recipient on L1."}}},"title":"L2StandardBridge"},"ast":{"absolutePath":"src/L2/L2StandardBridge.sol","id":91147,"exportedSymbols":{"Constants":[103096],"CrossDomainMessenger":[108888],"ISemver":[109417],"L2StandardBridge":[91146],"OptimismMintableERC20":[109645],"Predeploys":[104124],"StandardBridge":[111675]},"nodeType":"SourceUnit","src":"32:10417:149","nodes":[{"id":90725,"nodeType":"PragmaDirective","src":"32:23:149","nodes":[],"literals":["solidity","0.8",".15"]},{"id":90727,"nodeType":"ImportDirective","src":"57:58:149","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":104125,"symbolAliases":[{"foreign":{"id":90726,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"66:10:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90729,"nodeType":"ImportDirective","src":"116:66:149","nodes":[],"absolutePath":"src/universal/StandardBridge.sol","file":"src/universal/StandardBridge.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":111676,"symbolAliases":[{"foreign":{"id":90728,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111675,"src":"125:14:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90731,"nodeType":"ImportDirective","src":"183:52:149","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":109418,"symbolAliases":[{"foreign":{"id":90730,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109417,"src":"192:7:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90733,"nodeType":"ImportDirective","src":"236:80:149","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":109646,"symbolAliases":[{"foreign":{"id":90732,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109645,"src":"245:21:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90735,"nodeType":"ImportDirective","src":"317:78:149","nodes":[],"absolutePath":"src/universal/CrossDomainMessenger.sol","file":"src/universal/CrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":108889,"symbolAliases":[{"foreign":{"id":90734,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108888,"src":"326:20:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":90737,"nodeType":"ImportDirective","src":"396:56:149","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":91147,"sourceUnit":103097,"symbolAliases":[{"foreign":{"id":90736,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":103096,"src":"405:9:149","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":91146,"nodeType":"ContractDefinition","src":"1141:9307:149","nodes":[{"id":90757,"nodeType":"EventDefinition","src":"1646:197:149","nodes":[],"anonymous":false,"documentation":{"id":90743,"nodeType":"StructuredDocumentation","src":"1200:441:149","text":"@custom:legacy\n @notice Emitted whenever a withdrawal from L2 to L1 is initiated.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the withdrawer.\n @param to Address of the recipient on L1.\n @param amount Amount of the ERC20 withdrawn.\n @param extraData Extra data attached to the withdrawal."},"eventSelector":"73d170910aba9e6d50b102db522b1dbcd796216f5128b445aa2135272886497e","name":"WithdrawalInitiated","nameLocation":"1652:19:149","parameters":{"id":90756,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90745,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"1697:7:149","nodeType":"VariableDeclaration","scope":90757,"src":"1681:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90744,"name":"address","nodeType":"ElementaryTypeName","src":"1681:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90747,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"1730:7:149","nodeType":"VariableDeclaration","scope":90757,"src":"1714:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90746,"name":"address","nodeType":"ElementaryTypeName","src":"1714:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90749,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"1763:4:149","nodeType":"VariableDeclaration","scope":90757,"src":"1747:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90748,"name":"address","nodeType":"ElementaryTypeName","src":"1747:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90751,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"1785:2:149","nodeType":"VariableDeclaration","scope":90757,"src":"1777:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90750,"name":"address","nodeType":"ElementaryTypeName","src":"1777:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90753,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"1805:6:149","nodeType":"VariableDeclaration","scope":90757,"src":"1797:14:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90752,"name":"uint256","nodeType":"ElementaryTypeName","src":"1797:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90755,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1827:9:149","nodeType":"VariableDeclaration","scope":90757,"src":"1821:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90754,"name":"bytes","nodeType":"ElementaryTypeName","src":"1821:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1671:171:149"}},{"id":90772,"nodeType":"EventDefinition","src":"2281:194:149","nodes":[],"anonymous":false,"documentation":{"id":90758,"nodeType":"StructuredDocumentation","src":"1849:427:149","text":"@custom:legacy\n @notice Emitted whenever an ERC20 deposit is finalized.\n @param l1Token Address of the token on L1.\n @param l2Token Address of the corresponding token on L2.\n @param from Address of the depositor.\n @param to Address of the recipient on L2.\n @param amount Amount of the ERC20 deposited.\n @param extraData Extra data attached to the deposit."},"eventSelector":"b0444523268717a02698be47d0803aa7468c00acbed2f8bd93a0459cde61dd89","name":"DepositFinalized","nameLocation":"2287:16:149","parameters":{"id":90771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90760,"indexed":true,"mutability":"mutable","name":"l1Token","nameLocation":"2329:7:149","nodeType":"VariableDeclaration","scope":90772,"src":"2313:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90759,"name":"address","nodeType":"ElementaryTypeName","src":"2313:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90762,"indexed":true,"mutability":"mutable","name":"l2Token","nameLocation":"2362:7:149","nodeType":"VariableDeclaration","scope":90772,"src":"2346:23:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90761,"name":"address","nodeType":"ElementaryTypeName","src":"2346:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90764,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2395:4:149","nodeType":"VariableDeclaration","scope":90772,"src":"2379:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90763,"name":"address","nodeType":"ElementaryTypeName","src":"2379:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90766,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"2417:2:149","nodeType":"VariableDeclaration","scope":90772,"src":"2409:10:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90765,"name":"address","nodeType":"ElementaryTypeName","src":"2409:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90768,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2437:6:149","nodeType":"VariableDeclaration","scope":90772,"src":"2429:14:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90767,"name":"uint256","nodeType":"ElementaryTypeName","src":"2429:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90770,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2459:9:149","nodeType":"VariableDeclaration","scope":90772,"src":"2453:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90769,"name":"bytes","nodeType":"ElementaryTypeName","src":"2453:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2303:171:149"}},{"id":90776,"nodeType":"VariableDeclaration","src":"2510:40:149","nodes":[],"baseFunctions":[109416],"constant":true,"documentation":{"id":90773,"nodeType":"StructuredDocumentation","src":"2481:24:149","text":"@custom:semver 1.8.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"2533:7:149","scope":91146,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":90774,"name":"string","nodeType":"ElementaryTypeName","src":"2510:6:149","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e382e30","id":90775,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2543:7:149","typeDescriptions":{"typeIdentifier":"t_stringliteral_cd02a4b5da981b4c403351c949b2ca4bdb2fb4b72b50891f7eb106d3eb7049e9","typeString":"literal_string \"1.8.0\""},"value":"1.8.0"},"visibility":"public"},{"id":90795,"nodeType":"FunctionDefinition","src":"2615:113:149","nodes":[],"body":{"id":90794,"nodeType":"Block","src":"2646:82:149","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":90788,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2714:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2706:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90786,"name":"address","nodeType":"ElementaryTypeName","src":"2706:7:149","typeDescriptions":{}}},"id":90789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2706:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90785,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2698:8:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":90784,"name":"address","nodeType":"ElementaryTypeName","src":"2698:8:149","stateMutability":"payable","typeDescriptions":{}}},"id":90790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2698:19:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":90783,"name":"StandardBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111675,"src":"2683:14:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StandardBridge_$111675_$","typeString":"type(contract StandardBridge)"}},"id":90791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2683:35:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90782,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90813,"src":"2656:10:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_StandardBridge_$111675_$returns$__$","typeString":"function (contract StandardBridge)"}},"id":90792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_otherBridge"],"nodeType":"FunctionCall","src":"2656:65:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90793,"nodeType":"ExpressionStatement","src":"2656:65:149"}]},"documentation":{"id":90777,"nodeType":"StructuredDocumentation","src":"2557:53:149","text":"@notice Constructs the L2StandardBridge contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":90780,"kind":"baseConstructorSpecifier","modifierName":{"id":90779,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"2629:14:149"},"nodeType":"ModifierInvocation","src":"2629:16:149"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":90778,"nodeType":"ParameterList","parameters":[],"src":"2626:2:149"},"returnParameters":{"id":90781,"nodeType":"ParameterList","parameters":[],"src":"2646:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90813,"nodeType":"FunctionDefinition","src":"2849:242:149","nodes":[],"body":{"id":90812,"nodeType":"Block","src":"2917:174:149","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":90806,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"2996:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_CROSS_DOMAIN_MESSENGER","nodeType":"MemberAccess","referencedDeclaration":104004,"src":"2996:36:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90805,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":108888,"src":"2975:20:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CrossDomainMessenger_$108888_$","typeString":"type(contract CrossDomainMessenger)"}},"id":90808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2975:58:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$108888","typeString":"contract CrossDomainMessenger"}},{"id":90809,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90799,"src":"3061:12:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$108888","typeString":"contract CrossDomainMessenger"},{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90804,"name":"__StandardBridge_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111080,"src":"2927:21:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$108888_$_t_contract$_StandardBridge_$111675_$returns$__$","typeString":"function (contract CrossDomainMessenger,contract StandardBridge)"}},"id":90810,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_messenger","_otherBridge"],"nodeType":"FunctionCall","src":"2927:157:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90811,"nodeType":"ExpressionStatement","src":"2927:157:149"}]},"documentation":{"id":90796,"nodeType":"StructuredDocumentation","src":"2734:110:149","text":"@notice Initializer.\n @param _otherBridge Contract for the corresponding bridge on the other chain."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":90802,"kind":"modifierInvocation","modifierName":{"id":90801,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":49598,"src":"2905:11:149"},"nodeType":"ModifierInvocation","src":"2905:11:149"}],"name":"initialize","nameLocation":"2858:10:149","parameters":{"id":90800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90799,"mutability":"mutable","name":"_otherBridge","nameLocation":"2884:12:149","nodeType":"VariableDeclaration","scope":90813,"src":"2869:27:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"},"typeName":{"id":90798,"nodeType":"UserDefinedTypeName","pathNode":{"id":90797,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"2869:14:149"},"referencedDeclaration":111675,"src":"2869:14:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"2868:29:149"},"returnParameters":{"id":90803,"nodeType":"ParameterList","parameters":[],"src":"2917:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":90837,"nodeType":"FunctionDefinition","src":"3174:204:149","nodes":[],"body":{"id":90836,"nodeType":"Block","src":"3218:160:149","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":90821,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"3261:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"3261:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90823,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3290:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3290:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90825,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3302:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"3302:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90827,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3314:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"3314:9:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90829,"name":"RECEIVE_DEFAULT_GAS_LIMIT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110941,"src":"3325:25:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"arguments":[{"hexValue":"","id":90832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3358:2:149","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":90831,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3352:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":90830,"name":"bytes","nodeType":"ElementaryTypeName","src":"3352:5:149","typeDescriptions":{}}},"id":90833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3352:9:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90820,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"3228:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3228:143:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90835,"nodeType":"ExpressionStatement","src":"3228:143:149"}]},"baseFunctions":[111084],"documentation":{"id":90814,"nodeType":"StructuredDocumentation","src":"3097:72:149","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge."},"implemented":true,"kind":"receive","modifiers":[{"id":90818,"kind":"modifierInvocation","modifierName":{"id":90817,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":111034,"src":"3210:7:149"},"nodeType":"ModifierInvocation","src":"3210:7:149"}],"name":"","nameLocation":"-1:-1:-1","overrides":{"id":90816,"nodeType":"OverrideSpecifier","overrides":[],"src":"3201:8:149"},"parameters":{"id":90815,"nodeType":"ParameterList","parameters":[],"src":"3181:2:149"},"returnParameters":{"id":90819,"nodeType":"ParameterList","parameters":[],"src":"3218:0:149"},"scope":91146,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":90863,"nodeType":"FunctionDefinition","src":"3897:313:149","nodes":[],"body":{"id":90862,"nodeType":"Block","src":"4105:105:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90852,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90840,"src":"4135:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90853,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4145:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4145:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90855,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4157:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4157:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90857,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90842,"src":"4169:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90858,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90844,"src":"4178:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90859,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90846,"src":"4192:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90851,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"4115:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4115:88:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90861,"nodeType":"ExpressionStatement","src":"4115:88:149"}]},"documentation":{"id":90838,"nodeType":"StructuredDocumentation","src":"3384:508:149","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1.\n This function only works with OptimismMintableERC20 tokens or ether. Use the\n `bridgeERC20` function to bridge native L2 tokens to L1.\n @param _l2Token Address of the L2 token to withdraw.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"functionSelector":"32b7006d","implemented":true,"kind":"function","modifiers":[{"id":90849,"kind":"modifierInvocation","modifierName":{"id":90848,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":111034,"src":"4093:7:149"},"nodeType":"ModifierInvocation","src":"4093:7:149"}],"name":"withdraw","nameLocation":"3906:8:149","parameters":{"id":90847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90840,"mutability":"mutable","name":"_l2Token","nameLocation":"3932:8:149","nodeType":"VariableDeclaration","scope":90863,"src":"3924:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90839,"name":"address","nodeType":"ElementaryTypeName","src":"3924:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90842,"mutability":"mutable","name":"_amount","nameLocation":"3958:7:149","nodeType":"VariableDeclaration","scope":90863,"src":"3950:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90841,"name":"uint256","nodeType":"ElementaryTypeName","src":"3950:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90844,"mutability":"mutable","name":"_minGasLimit","nameLocation":"3982:12:149","nodeType":"VariableDeclaration","scope":90863,"src":"3975:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90843,"name":"uint32","nodeType":"ElementaryTypeName","src":"3975:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90846,"mutability":"mutable","name":"_extraData","nameLocation":"4019:10:149","nodeType":"VariableDeclaration","scope":90863,"src":"4004:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90845,"name":"bytes","nodeType":"ElementaryTypeName","src":"4004:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3914:121:149"},"returnParameters":{"id":90850,"nodeType":"ParameterList","parameters":[],"src":"4105:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90888,"nodeType":"FunctionDefinition","src":"5197:313:149","nodes":[],"body":{"id":90887,"nodeType":"Block","src":"5412:98:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90878,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90866,"src":"5442:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":90879,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5452:3:149","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":90880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5452:10:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90881,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90868,"src":"5464:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90882,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90870,"src":"5469:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90883,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90872,"src":"5478:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90884,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90874,"src":"5492:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90877,"name":"_initiateWithdrawal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90997,"src":"5422:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,uint256,uint32,bytes memory)"}},"id":90885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5422:81:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90886,"nodeType":"ExpressionStatement","src":"5422:81:149"}]},"documentation":{"id":90864,"nodeType":"StructuredDocumentation","src":"4216:976:149","text":"@custom:legacy\n @notice Initiates a withdrawal from L2 to L1 to a target account on L1.\n Note that if ETH is sent to a contract on L1 and the call fails, then that ETH will\n be locked in the L1StandardBridge. ETH may be recoverable if the call can be\n successfully replayed by increasing the amount of gas supplied to the call. If the\n call will fail for any amount of gas, then the ETH will be locked permanently.\n This function only works with OptimismMintableERC20 tokens or ether. Use the\n `bridgeERC20To` function to bridge native L2 tokens to L1.\n @param _l2Token Address of the L2 token to withdraw.\n @param _to Recipient account on L1.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"functionSelector":"a3a79548","implemented":true,"kind":"function","modifiers":[],"name":"withdrawTo","nameLocation":"5206:10:149","parameters":{"id":90875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90866,"mutability":"mutable","name":"_l2Token","nameLocation":"5234:8:149","nodeType":"VariableDeclaration","scope":90888,"src":"5226:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90865,"name":"address","nodeType":"ElementaryTypeName","src":"5226:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90868,"mutability":"mutable","name":"_to","nameLocation":"5260:3:149","nodeType":"VariableDeclaration","scope":90888,"src":"5252:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90867,"name":"address","nodeType":"ElementaryTypeName","src":"5252:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90870,"mutability":"mutable","name":"_amount","nameLocation":"5281:7:149","nodeType":"VariableDeclaration","scope":90888,"src":"5273:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90869,"name":"uint256","nodeType":"ElementaryTypeName","src":"5273:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90872,"mutability":"mutable","name":"_minGasLimit","nameLocation":"5305:12:149","nodeType":"VariableDeclaration","scope":90888,"src":"5298:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90871,"name":"uint32","nodeType":"ElementaryTypeName","src":"5298:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90874,"mutability":"mutable","name":"_extraData","nameLocation":"5342:10:149","nodeType":"VariableDeclaration","scope":90888,"src":"5327:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90873,"name":"bytes","nodeType":"ElementaryTypeName","src":"5327:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5216:142:149"},"returnParameters":{"id":90876,"nodeType":"ParameterList","parameters":[],"src":"5412:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90935,"nodeType":"FunctionDefinition","src":"6087:505:149","nodes":[],"body":{"id":90934,"nodeType":"Block","src":"6327:265:149","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90904,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90891,"src":"6341:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":90907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":90906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6353:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90905,"name":"address","nodeType":"ElementaryTypeName","src":"6353:7:149","typeDescriptions":{}}},"id":90908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6353:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6341:22:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90910,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90893,"src":"6367:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":90911,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"6379:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"6379:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6367:39:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6341:65:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":90932,"nodeType":"Block","src":"6489:97:149","statements":[{"expression":{"arguments":[{"id":90924,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90893,"src":"6523:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90925,"name":"_l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90891,"src":"6533:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90926,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90895,"src":"6543:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90927,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90897,"src":"6550:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90928,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90899,"src":"6555:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90929,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90901,"src":"6564:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90923,"name":"finalizeBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111367,"src":"6503:19:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes calldata)"}},"id":90930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6503:72:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90931,"nodeType":"ExpressionStatement","src":"6503:72:149"}]},"id":90933,"nodeType":"IfStatement","src":"6337:249:149","trueBody":{"id":90922,"nodeType":"Block","src":"6408:75:149","statements":[{"expression":{"arguments":[{"id":90916,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90895,"src":"6440:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90917,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90897,"src":"6447:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90918,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90899,"src":"6452:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90919,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90901,"src":"6461:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":90915,"name":"finalizeBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111287,"src":"6422:17:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes calldata)"}},"id":90920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6422:50:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90921,"nodeType":"ExpressionStatement","src":"6422:50:149"}]}}]},"documentation":{"id":90889,"nodeType":"StructuredDocumentation","src":"5516:566:149","text":"@custom:legacy\n @notice Finalizes a deposit from L1 to L2. To finalize a deposit of ether, use address(0)\n and the l1Token and the Legacy ERC20 ether predeploy address as the l2Token.\n @param _l1Token Address of the L1 token to deposit.\n @param _l2Token Address of the corresponding L2 token.\n @param _from Address of the depositor.\n @param _to Address of the recipient.\n @param _amount Amount of the tokens being deposited.\n @param _extraData Extra data attached to the deposit."},"functionSelector":"662a633a","implemented":true,"kind":"function","modifiers":[],"name":"finalizeDeposit","nameLocation":"6096:15:149","parameters":{"id":90902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90891,"mutability":"mutable","name":"_l1Token","nameLocation":"6129:8:149","nodeType":"VariableDeclaration","scope":90935,"src":"6121:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90890,"name":"address","nodeType":"ElementaryTypeName","src":"6121:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90893,"mutability":"mutable","name":"_l2Token","nameLocation":"6155:8:149","nodeType":"VariableDeclaration","scope":90935,"src":"6147:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90892,"name":"address","nodeType":"ElementaryTypeName","src":"6147:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90895,"mutability":"mutable","name":"_from","nameLocation":"6181:5:149","nodeType":"VariableDeclaration","scope":90935,"src":"6173:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90894,"name":"address","nodeType":"ElementaryTypeName","src":"6173:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90897,"mutability":"mutable","name":"_to","nameLocation":"6204:3:149","nodeType":"VariableDeclaration","scope":90935,"src":"6196:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90896,"name":"address","nodeType":"ElementaryTypeName","src":"6196:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90899,"mutability":"mutable","name":"_amount","nameLocation":"6225:7:149","nodeType":"VariableDeclaration","scope":90935,"src":"6217:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90898,"name":"uint256","nodeType":"ElementaryTypeName","src":"6217:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90901,"mutability":"mutable","name":"_extraData","nameLocation":"6257:10:149","nodeType":"VariableDeclaration","scope":90935,"src":"6242:25:149","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":90900,"name":"bytes","nodeType":"ElementaryTypeName","src":"6242:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6111:162:149"},"returnParameters":{"id":90903,"nodeType":"ParameterList","parameters":[],"src":"6327:0:149"},"scope":91146,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":90947,"nodeType":"FunctionDefinition","src":"6764:101:149","nodes":[],"body":{"id":90946,"nodeType":"Block","src":"6821:44:149","nodes":[],"statements":[{"expression":{"arguments":[{"id":90943,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":110962,"src":"6846:11:149","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$111675","typeString":"contract StandardBridge"}],"id":90942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6838:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":90941,"name":"address","nodeType":"ElementaryTypeName","src":"6838:7:149","typeDescriptions":{}}},"id":90944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6838:20:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":90940,"id":90945,"nodeType":"Return","src":"6831:27:149"}]},"documentation":{"id":90936,"nodeType":"StructuredDocumentation","src":"6598:161:149","text":"@custom:legacy\n @notice Retrieves the access of the corresponding L1 bridge contract.\n @return Address of the corresponding L1 bridge contract."},"functionSelector":"36c717c1","implemented":true,"kind":"function","modifiers":[],"name":"l1TokenBridge","nameLocation":"6773:13:149","parameters":{"id":90937,"nodeType":"ParameterList","parameters":[],"src":"6786:2:149"},"returnParameters":{"id":90940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90939,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":90947,"src":"6812:7:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90938,"name":"address","nodeType":"ElementaryTypeName","src":"6812:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6811:9:149"},"scope":91146,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":90997,"nodeType":"FunctionDefinition","src":"7372:554:149","nodes":[],"body":{"id":90996,"nodeType":"Block","src":"7585:341:149","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":90966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":90963,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7599:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":90964,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"7611:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":90965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"7611:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7599:39:149","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":90994,"nodeType":"Block","src":"7736:184:149","statements":[{"assignments":[90977],"declarations":[{"constant":false,"id":90977,"mutability":"mutable","name":"l1Token","nameLocation":"7758:7:149","nodeType":"VariableDeclaration","scope":90994,"src":"7750:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90976,"name":"address","nodeType":"ElementaryTypeName","src":"7750:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":90983,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":90979,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7790:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":90978,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":109645,"src":"7768:21:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$109645_$","typeString":"type(contract OptimismMintableERC20)"}},"id":90980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7768:31:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$109645","typeString":"contract OptimismMintableERC20"}},"id":90981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":109607,"src":"7768:39:149","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":90982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7768:41:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7750:59:149"},{"expression":{"arguments":[{"id":90985,"name":"_l2Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90950,"src":"7844:8:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90986,"name":"l1Token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90977,"src":"7854:7:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90987,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90952,"src":"7863:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90988,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90954,"src":"7870:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90989,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90956,"src":"7875:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90990,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90958,"src":"7884:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90991,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90960,"src":"7898:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90984,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111517,"src":"7823:20:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":90992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7823:86:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90993,"nodeType":"ExpressionStatement","src":"7823:86:149"}]},"id":90995,"nodeType":"IfStatement","src":"7595:325:149","trueBody":{"id":90975,"nodeType":"Block","src":"7640:90:149","statements":[{"expression":{"arguments":[{"id":90968,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90952,"src":"7673:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90969,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90954,"src":"7680:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":90970,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90956,"src":"7685:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":90971,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90958,"src":"7694:12:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":90972,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90960,"src":"7708:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":90967,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":111419,"src":"7654:18:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":90973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7654:65:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":90974,"nodeType":"ExpressionStatement","src":"7654:65:149"}]}}]},"documentation":{"id":90948,"nodeType":"StructuredDocumentation","src":"6871:496:149","text":"@custom:legacy\n @notice Internal function to initiate a withdrawal from L2 to L1 to a target account on L1.\n @param _l2Token Address of the L2 token to withdraw.\n @param _from Address of the withdrawer.\n @param _to Recipient account on L1.\n @param _amount Amount of the L2 token to withdraw.\n @param _minGasLimit Minimum gas limit to use for the transaction.\n @param _extraData Extra data attached to the withdrawal."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateWithdrawal","nameLocation":"7381:19:149","parameters":{"id":90961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":90950,"mutability":"mutable","name":"_l2Token","nameLocation":"7418:8:149","nodeType":"VariableDeclaration","scope":90997,"src":"7410:16:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90949,"name":"address","nodeType":"ElementaryTypeName","src":"7410:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90952,"mutability":"mutable","name":"_from","nameLocation":"7444:5:149","nodeType":"VariableDeclaration","scope":90997,"src":"7436:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90951,"name":"address","nodeType":"ElementaryTypeName","src":"7436:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90954,"mutability":"mutable","name":"_to","nameLocation":"7467:3:149","nodeType":"VariableDeclaration","scope":90997,"src":"7459:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90953,"name":"address","nodeType":"ElementaryTypeName","src":"7459:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":90956,"mutability":"mutable","name":"_amount","nameLocation":"7488:7:149","nodeType":"VariableDeclaration","scope":90997,"src":"7480:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":90955,"name":"uint256","nodeType":"ElementaryTypeName","src":"7480:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":90958,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7512:12:149","nodeType":"VariableDeclaration","scope":90997,"src":"7505:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":90957,"name":"uint32","nodeType":"ElementaryTypeName","src":"7505:6:149","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":90960,"mutability":"mutable","name":"_extraData","nameLocation":"7547:10:149","nodeType":"VariableDeclaration","scope":90997,"src":"7534:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90959,"name":"bytes","nodeType":"ElementaryTypeName","src":"7534:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7400:163:149"},"returnParameters":{"id":90962,"nodeType":"ParameterList","parameters":[],"src":"7585:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91033,"nodeType":"FunctionDefinition","src":"8154:366:149","nodes":[],"body":{"id":91032,"nodeType":"Block","src":"8333:187:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":91013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8376:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8368:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91011,"name":"address","nodeType":"ElementaryTypeName","src":"8368:7:149","typeDescriptions":{}}},"id":91014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8368:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":91015,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"8380:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":91016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"8380:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91017,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91000,"src":"8409:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91018,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91002,"src":"8416:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91019,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91004,"src":"8421:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91020,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91006,"src":"8430:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":91010,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90757,"src":"8348:19:149","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8348:93:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91022,"nodeType":"EmitStatement","src":"8343:98:149"},{"expression":{"arguments":[{"id":91026,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91000,"src":"8481:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91027,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91002,"src":"8488:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91028,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91004,"src":"8493:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91029,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91006,"src":"8502:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91023,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"8451:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":111602,"src":"8451:29:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":91030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8451:62:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91031,"nodeType":"ExpressionStatement","src":"8451:62:149"}]},"baseFunctions":[111602],"documentation":{"id":90998,"nodeType":"StructuredDocumentation","src":"7932:217:149","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ETHBridgeInitiated event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"8163:23:149","overrides":{"id":91008,"nodeType":"OverrideSpecifier","overrides":[],"src":"8320:8:149"},"parameters":{"id":91007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91000,"mutability":"mutable","name":"_from","nameLocation":"8204:5:149","nodeType":"VariableDeclaration","scope":91033,"src":"8196:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":90999,"name":"address","nodeType":"ElementaryTypeName","src":"8196:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91002,"mutability":"mutable","name":"_to","nameLocation":"8227:3:149","nodeType":"VariableDeclaration","scope":91033,"src":"8219:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91001,"name":"address","nodeType":"ElementaryTypeName","src":"8219:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91004,"mutability":"mutable","name":"_amount","nameLocation":"8248:7:149","nodeType":"VariableDeclaration","scope":91033,"src":"8240:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91003,"name":"uint256","nodeType":"ElementaryTypeName","src":"8240:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91006,"mutability":"mutable","name":"_extraData","nameLocation":"8278:10:149","nodeType":"VariableDeclaration","scope":91033,"src":"8265:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91005,"name":"bytes","nodeType":"ElementaryTypeName","src":"8265:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8186:108:149"},"returnParameters":{"id":91009,"nodeType":"ParameterList","parameters":[],"src":"8333:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91069,"nodeType":"FunctionDefinition","src":"8745:363:149","nodes":[],"body":{"id":91068,"nodeType":"Block","src":"8924:184:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":91049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8964:1:149","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":91048,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8956:7:149","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":91047,"name":"address","nodeType":"ElementaryTypeName","src":"8956:7:149","typeDescriptions":{}}},"id":91050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8956:10:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":91051,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":104124,"src":"8968:10:149","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$104124_$","typeString":"type(library Predeploys)"}},"id":91052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LEGACY_ERC20_ETH","nodeType":"MemberAccess","referencedDeclaration":104047,"src":"8968:27:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91053,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91036,"src":"8997:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91054,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91038,"src":"9004:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91055,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91040,"src":"9009:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91056,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91042,"src":"9018:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":91046,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90772,"src":"8939:16:149","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8939:90:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91058,"nodeType":"EmitStatement","src":"8934:95:149"},{"expression":{"arguments":[{"id":91062,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91036,"src":"9069:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91063,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91038,"src":"9076:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91064,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91040,"src":"9081:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91065,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91042,"src":"9090:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91059,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9039:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitETHBridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":111622,"src":"9039:29:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":91066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9039:62:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91067,"nodeType":"ExpressionStatement","src":"9039:62:149"}]},"baseFunctions":[111622],"documentation":{"id":91034,"nodeType":"StructuredDocumentation","src":"8526:214:149","text":"@notice Emits the legacy DepositFinalized event followed by the ETHBridgeFinalized event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"8754:23:149","overrides":{"id":91044,"nodeType":"OverrideSpecifier","overrides":[],"src":"8911:8:149"},"parameters":{"id":91043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91036,"mutability":"mutable","name":"_from","nameLocation":"8795:5:149","nodeType":"VariableDeclaration","scope":91069,"src":"8787:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91035,"name":"address","nodeType":"ElementaryTypeName","src":"8787:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91038,"mutability":"mutable","name":"_to","nameLocation":"8818:3:149","nodeType":"VariableDeclaration","scope":91069,"src":"8810:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91037,"name":"address","nodeType":"ElementaryTypeName","src":"8810:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91040,"mutability":"mutable","name":"_amount","nameLocation":"8839:7:149","nodeType":"VariableDeclaration","scope":91069,"src":"8831:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91039,"name":"uint256","nodeType":"ElementaryTypeName","src":"8831:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91042,"mutability":"mutable","name":"_extraData","nameLocation":"8869:10:149","nodeType":"VariableDeclaration","scope":91069,"src":"8856:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91041,"name":"bytes","nodeType":"ElementaryTypeName","src":"8856:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8777:108:149"},"returnParameters":{"id":91045,"nodeType":"ParameterList","parameters":[],"src":"8924:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91107,"nodeType":"FunctionDefinition","src":"9338:442:149","nodes":[],"body":{"id":91106,"nodeType":"Block","src":"9578:202:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":91087,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91074,"src":"9613:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91088,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91072,"src":"9627:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91089,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91076,"src":"9640:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91090,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91078,"src":"9647:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91091,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91080,"src":"9652:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91092,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"9661:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":91086,"name":"WithdrawalInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90757,"src":"9593:19:149","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9593:79:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91094,"nodeType":"EmitStatement","src":"9588:84:149"},{"expression":{"arguments":[{"id":91098,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91072,"src":"9714:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91099,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91074,"src":"9727:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91100,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91076,"src":"9741:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91101,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91078,"src":"9748:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91102,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91080,"src":"9753:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91103,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91082,"src":"9762:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91095,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"9682:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeInitiated","nodeType":"MemberAccess","referencedDeclaration":111648,"src":"9682:31:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9682:91:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91105,"nodeType":"ExpressionStatement","src":"9682:91:149"}]},"baseFunctions":[111648],"documentation":{"id":91070,"nodeType":"StructuredDocumentation","src":"9114:219:149","text":"@notice Emits the legacy WithdrawalInitiated event followed by the ERC20BridgeInitiated\n event. This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"9347:25:149","overrides":{"id":91084,"nodeType":"OverrideSpecifier","overrides":[],"src":"9565:8:149"},"parameters":{"id":91083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91072,"mutability":"mutable","name":"_localToken","nameLocation":"9390:11:149","nodeType":"VariableDeclaration","scope":91107,"src":"9382:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91071,"name":"address","nodeType":"ElementaryTypeName","src":"9382:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91074,"mutability":"mutable","name":"_remoteToken","nameLocation":"9419:12:149","nodeType":"VariableDeclaration","scope":91107,"src":"9411:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91073,"name":"address","nodeType":"ElementaryTypeName","src":"9411:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91076,"mutability":"mutable","name":"_from","nameLocation":"9449:5:149","nodeType":"VariableDeclaration","scope":91107,"src":"9441:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91075,"name":"address","nodeType":"ElementaryTypeName","src":"9441:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91078,"mutability":"mutable","name":"_to","nameLocation":"9472:3:149","nodeType":"VariableDeclaration","scope":91107,"src":"9464:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91077,"name":"address","nodeType":"ElementaryTypeName","src":"9464:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91080,"mutability":"mutable","name":"_amount","nameLocation":"9493:7:149","nodeType":"VariableDeclaration","scope":91107,"src":"9485:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91079,"name":"uint256","nodeType":"ElementaryTypeName","src":"9485:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91082,"mutability":"mutable","name":"_extraData","nameLocation":"9523:10:149","nodeType":"VariableDeclaration","scope":91107,"src":"9510:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91081,"name":"bytes","nodeType":"ElementaryTypeName","src":"9510:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9372:167:149"},"returnParameters":{"id":91085,"nodeType":"ParameterList","parameters":[],"src":"9578:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":91145,"nodeType":"FunctionDefinition","src":"10007:439:149","nodes":[],"body":{"id":91144,"nodeType":"Block","src":"10247:199:149","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":91125,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91112,"src":"10279:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91126,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91110,"src":"10293:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91127,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91114,"src":"10306:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91128,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91116,"src":"10313:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91129,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91118,"src":"10318:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91130,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91120,"src":"10327:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":91124,"name":"DepositFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":90772,"src":"10262:16:149","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10262:76:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91132,"nodeType":"EmitStatement","src":"10257:81:149"},{"expression":{"arguments":[{"id":91136,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91110,"src":"10380:11:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91137,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91112,"src":"10393:12:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91138,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91114,"src":"10407:5:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91139,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91116,"src":"10414:3:149","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":91140,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91118,"src":"10419:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":91141,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91120,"src":"10428:10:149","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":91133,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"10348:5:149","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_L2StandardBridge_$91146_$","typeString":"type(contract super L2StandardBridge)"}},"id":91135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"_emitERC20BridgeFinalized","nodeType":"MemberAccess","referencedDeclaration":111674,"src":"10348:31:149","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":91142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10348:91:149","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":91143,"nodeType":"ExpressionStatement","src":"10348:91:149"}]},"baseFunctions":[111674],"documentation":{"id":91108,"nodeType":"StructuredDocumentation","src":"9786:216:149","text":"@notice Emits the legacy DepositFinalized event followed by the ERC20BridgeFinalized event.\n This is necessary for backwards compatibility with the legacy bridge.\n @inheritdoc StandardBridge"},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"10016:25:149","overrides":{"id":91122,"nodeType":"OverrideSpecifier","overrides":[],"src":"10234:8:149"},"parameters":{"id":91121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":91110,"mutability":"mutable","name":"_localToken","nameLocation":"10059:11:149","nodeType":"VariableDeclaration","scope":91145,"src":"10051:19:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91109,"name":"address","nodeType":"ElementaryTypeName","src":"10051:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91112,"mutability":"mutable","name":"_remoteToken","nameLocation":"10088:12:149","nodeType":"VariableDeclaration","scope":91145,"src":"10080:20:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91111,"name":"address","nodeType":"ElementaryTypeName","src":"10080:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91114,"mutability":"mutable","name":"_from","nameLocation":"10118:5:149","nodeType":"VariableDeclaration","scope":91145,"src":"10110:13:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91113,"name":"address","nodeType":"ElementaryTypeName","src":"10110:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91116,"mutability":"mutable","name":"_to","nameLocation":"10141:3:149","nodeType":"VariableDeclaration","scope":91145,"src":"10133:11:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":91115,"name":"address","nodeType":"ElementaryTypeName","src":"10133:7:149","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":91118,"mutability":"mutable","name":"_amount","nameLocation":"10162:7:149","nodeType":"VariableDeclaration","scope":91145,"src":"10154:15:149","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91117,"name":"uint256","nodeType":"ElementaryTypeName","src":"10154:7:149","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":91120,"mutability":"mutable","name":"_extraData","nameLocation":"10192:10:149","nodeType":"VariableDeclaration","scope":91145,"src":"10179:23:149","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":91119,"name":"bytes","nodeType":"ElementaryTypeName","src":"10179:5:149","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10041:167:149"},"returnParameters":{"id":91123,"nodeType":"ParameterList","parameters":[],"src":"10247:0:149"},"scope":91146,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":90739,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":111675,"src":"1170:14:149"},"id":90740,"nodeType":"InheritanceSpecifier","src":"1170:14:149"},{"baseName":{"id":90741,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":109417,"src":"1186:7:149"},"id":90742,"nodeType":"InheritanceSpecifier","src":"1186:7:149"}],"canonicalName":"L2StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":90738,"nodeType":"StructuredDocumentation","src":"454:687:149","text":"@custom:proxied\n @custom:predeploy 0x4200000000000000000000000000000000000010\n @title L2StandardBridge\n @notice The L2StandardBridge is responsible for transfering ETH and ERC20 tokens between L1 and\n L2. In the case that an ERC20 token is native to L2, it will be escrowed within this\n contract. If the ERC20 token is native to L1, it will be burnt.\n NOTE: this contract is not intended to support all variations of ERC20 tokens. Examples\n of some token types that may not be properly supported by this contract include, but are\n not limited to: tokens with transfer fees, rebasing tokens, and tokens with blocklists."},"fullyImplemented":true,"linearizedBaseContracts":[91146,109417,111675,49678],"name":"L2StandardBridge","nameLocation":"1150:16:149","scope":91147,"usedErrors":[]}],"license":"MIT"},"id":149}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{"type":"function","name":"finalizeDeposit","inputs":[{"name":"_l1Token","type":"address","internalType":"address"},{"name":"_l2Token","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"}

finalizeDeposit was removed, that isn't used!

return minGasLimit
}

export function opaqueDataToDepositData(opaqueData: Hex): Object {
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OptimismPortal emits opaque data for future compatibility and this was extracted from viem

@InoMurko InoMurko marked this pull request as ready for review July 15, 2024 14:05
@InoMurko
Copy link
Collaborator Author

This PR also builds OP stack with tag 5.1.1 (with support for custom token as fee in the deployer).

@InoMurko
Copy link
Collaborator Author

SDK changes that need to be reviewed: 291b6e0

everything else is pulled from upstream 1.7.7 release.

@tsite
Copy link

tsite commented Jul 18, 2024

I recommend removing IMPL_SALT from deploy.ts and modifying Deploy.s.sol to reuse existing implementation contracts if they are already deployed - it's more gas efficient that way (as well as faster deployment times).

Copy link

@tsite tsite left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend merging ethereum-optimism/optimism#9949 into the sdk as well if it isn't already merged

throw new Error(`token pair not supported by bridge`)
}

return this.l1Bridge.populateTransaction.depositERC20Transaction(
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@InoMurko
Copy link
Collaborator Author

I recommend removing IMPL_SALT from deploy.ts and modifying Deploy.s.sol to reuse existing implementation contracts if they are already deployed - it's more gas efficient that way (as well as faster deployment times).

I certainly agree there could be improvements, but would differ that to another time when there's wiggle room.

@InoMurko InoMurko requested a review from tsite July 20, 2024 18:39
@InoMurko InoMurko merged commit f166929 into v1.7.6 Jul 21, 2024
@InoMurko InoMurko deleted the inomurko/v1.7.7 branch July 21, 2024 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.