From 84d414825541ebb56c1d4958b8bd3f56cbdf9d11 Mon Sep 17 00:00:00 2001 From: Vadim Smirnov Date: Fri, 16 Aug 2024 16:19:43 +0200 Subject: [PATCH 1/4] feat(ethexe-network): Add memory transport for local testing (#4150) --- Cargo.lock | 2 + ethexe/cli/src/params/network_params.rs | 1 + ethexe/network/Cargo.toml | 4 +- ethexe/network/src/lib.rs | 129 ++++++++++++++++++++++-- 4 files changed, 123 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 508f0786bb9..84640755b3d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8774,10 +8774,12 @@ dependencies = [ "libp2p-mdns 0.45.2", "libp2p-metrics 0.14.2", "libp2p-ping 0.44.2", + "libp2p-plaintext", "libp2p-quic 0.10.3", "libp2p-swarm 0.45.0", "libp2p-tcp 0.42.0", "libp2p-upnp", + "libp2p-yamux 0.45.2", "multiaddr 0.18.1", "pin-project", "rw-stream-sink 0.4.0", diff --git a/ethexe/cli/src/params/network_params.rs b/ethexe/cli/src/params/network_params.rs index 0e01584514a..577aca83c5f 100644 --- a/ethexe/cli/src/params/network_params.rs +++ b/ethexe/cli/src/params/network_params.rs @@ -101,6 +101,7 @@ impl NetworkParams { external_addresses, bootstrap_addresses, listen_addresses, + transport_type: Default::default(), }) } } diff --git a/ethexe/network/Cargo.toml b/ethexe/network/Cargo.toml index 19a868b0fef..9b9c4259139 100644 --- a/ethexe/network/Cargo.toml +++ b/ethexe/network/Cargo.toml @@ -11,9 +11,7 @@ repository.workspace = true [dependencies] ethexe-signer.workspace = true - -libp2p = { git = "https://github.com/gear-tech/rust-libp2p", branch = "al/tokio-swarm-test", features = ["mdns", "gossipsub", "kad", "identify", "ping", "secp256k1", "quic", "tokio", "macros"] } - +libp2p = { git = "https://github.com/gear-tech/rust-libp2p", branch = "al/tokio-swarm-test", features = ["mdns", "gossipsub", "kad", "identify", "ping", "secp256k1", "quic", "tokio", "macros", "plaintext", "yamux"] } tokio = { workspace = true, features = ["sync"] } anyhow.workspace = true log.workspace = true diff --git a/ethexe/network/src/lib.rs b/ethexe/network/src/lib.rs index 5398d378a3c..622aa35b368 100644 --- a/ethexe/network/src/lib.rs +++ b/ethexe/network/src/lib.rs @@ -26,15 +26,16 @@ use anyhow::Context; use ethexe_signer::{PublicKey, Signer}; use libp2p::{ connection_limits, + core::upgrade, futures::{Stream, StreamExt}, gossipsub, identify, identity, kad, mdns, multiaddr::Protocol, ping, swarm::{ dial_opts::{DialOpts, PeerCondition}, - NetworkBehaviour, SwarmEvent, + Config as SwarmConfig, NetworkBehaviour, SwarmEvent, }, - Multiaddr, PeerId, Swarm, SwarmBuilder, + Multiaddr, PeerId, Swarm, SwarmBuilder, Transport, }; use std::{ collections::HashSet, @@ -69,7 +70,7 @@ impl NetworkService { let keypair = NetworkEventLoop::generate_keypair(signer, &config.config_dir, config.public_key)?; - let mut swarm = NetworkEventLoop::create_swarm(keypair)?; + let mut swarm = NetworkEventLoop::create_swarm(keypair, config.transport_type)?; for multiaddr in config.external_addresses { swarm.add_external_address(multiaddr); @@ -150,6 +151,13 @@ impl Stream for GossipsubMessageStream { } } +#[derive(Default, Debug, Clone)] +pub enum TransportType { + #[default] + Quic, + Memory, +} + #[derive(Debug, Clone)] pub struct NetworkEventLoopConfig { pub config_dir: PathBuf, @@ -157,6 +165,7 @@ pub struct NetworkEventLoopConfig { pub external_addresses: HashSet, pub bootstrap_addresses: HashSet, pub listen_addresses: HashSet, + pub transport_type: TransportType, } impl NetworkEventLoopConfig { @@ -167,6 +176,19 @@ impl NetworkEventLoopConfig { external_addresses: Default::default(), bootstrap_addresses: Default::default(), listen_addresses: ["/ip4/127.0.0.1/udp/0/quic-v1".parse().unwrap()].into(), + transport_type: TransportType::Quic, + } + } + + #[cfg(test)] + pub fn new_memory(config_path: PathBuf, addr: &str) -> Self { + Self { + config_dir: config_path, + public_key: None, + external_addresses: Default::default(), + bootstrap_addresses: Default::default(), + listen_addresses: [addr.parse().unwrap()].into(), + transport_type: TransportType::Memory, } } } @@ -209,13 +231,40 @@ impl NetworkEventLoop { Ok(identity::Keypair::from(pair)) } - fn create_swarm(keypair: identity::Keypair) -> anyhow::Result> { - let swarm = SwarmBuilder::with_existing_identity(keypair) - .with_tokio() - .with_quic() - .with_behaviour(Behaviour::from_keypair)? - .build(); - Ok(swarm) + pub fn local_peer_id(&self) -> &PeerId { + self.swarm.local_peer_id() + } + + fn create_swarm( + keypair: identity::Keypair, + transport_type: TransportType, + ) -> anyhow::Result> { + match transport_type { + TransportType::Quic => Ok(SwarmBuilder::with_existing_identity(keypair) + .with_tokio() + .with_quic() + .with_behaviour(Behaviour::from_keypair)? + .build()), + + TransportType::Memory => { + let transport = libp2p::core::transport::MemoryTransport::default() + .upgrade(upgrade::Version::V1) + .authenticate(libp2p::plaintext::Config::new(&keypair)) + .multiplex(libp2p::yamux::Config::default()) + .boxed(); + let behaivour = + Behaviour::from_keypair(&keypair).map_err(|err| anyhow::anyhow!(err))?; + let config = SwarmConfig::with_tokio_executor() + .with_substream_upgrade_protocol_override(upgrade::Version::V1); + + Ok(Swarm::new( + transport, + behaivour, + keypair.public().to_peer_id(), + config, + )) + } + } } pub async fn run(mut self) { @@ -437,3 +486,63 @@ fn gpu_commitments_topic() -> gossipsub::IdentTopic { // TODO: use router address in topic name to avoid obsolete router gossipsub::IdentTopic::new("gpu-commitments") } + +#[cfg(test)] +mod tests { + use super::*; + use tokio::time::{timeout, Duration}; + + #[tokio::test] + async fn test_memory_transport() { + let _ = env_logger::builder().is_test(true).try_init(); + + let tmp_dir1 = tempfile::tempdir().unwrap(); + let config = NetworkEventLoopConfig::new_memory(tmp_dir1.path().to_path_buf(), "/memory/1"); + let signer1 = ethexe_signer::Signer::new(tmp_dir1.path().join("key")).unwrap(); + let service1 = NetworkService::new(config.clone(), &signer1).unwrap(); + + let peer_id = service1.event_loop.local_peer_id().to_string(); + + let multiaddr: Multiaddr = format!("/memory/1/p2p/{}", peer_id).parse().unwrap(); + + let (sender, mut _service1_handle) = + (service1.sender, tokio::spawn(service1.event_loop.run())); + + // second service + let tmp_dir2 = tempfile::tempdir().unwrap(); + let signer2 = ethexe_signer::Signer::new(tmp_dir2.path().join("key")).unwrap(); + let mut config2 = + NetworkEventLoopConfig::new_memory(tmp_dir2.path().to_path_buf(), "/memory/2"); + + config2.bootstrap_addresses = [multiaddr].into(); + + let service2 = NetworkService::new(config2.clone(), &signer2).unwrap(); + + tokio::spawn(service2.event_loop.run()); + + // Wait for the connection to be established + tokio::time::sleep(Duration::from_secs(1)).await; + + // Send a commitment from service1 + let commitment_data = b"test commitment".to_vec(); + + sender.publish_commitments(commitment_data.clone()); + + let mut gossip_stream = service2.gossip_stream; + + // Wait for the commitment to be received by service2 + let received_commitment = timeout(Duration::from_secs(5), async { + while let Some(message) = gossip_stream.next().await { + if message.data == commitment_data { + return Some(message); + } + } + + None + }) + .await + .expect("Timeout while waiting for commitment"); + + assert!(received_commitment.is_some(), "Commitment was not received"); + } +} From ab080d41dfd30417e4b4e8dce28532a4d6e3e9ca Mon Sep 17 00:00:00 2001 From: Arsenii Lyashenko Date: Sat, 17 Aug 2024 19:11:51 +0300 Subject: [PATCH 2/4] feat(ethexe): Add script to boot local ethereum node (#4106) --- Cargo.toml | 2 +- ethexe/contracts/.gitignore | 4 ++ ethexe/scripts/local-ethereum-node.sh | 64 +++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100755 ethexe/scripts/local-ethereum-node.sh diff --git a/Cargo.toml b/Cargo.toml index d6437ac0cb1..733af5c20ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ resolver = "2" default-members = ["node/cli"] -exclude = ["ethexe/contracts", "ethexe/docker"] +exclude = ["ethexe/contracts", "ethexe/docker", "ethexe/scripts"] members = [ "common", diff --git a/ethexe/contracts/.gitignore b/ethexe/contracts/.gitignore index 48000cdedca..49cd09ddf75 100644 --- a/ethexe/contracts/.gitignore +++ b/ethexe/contracts/.gitignore @@ -15,3 +15,7 @@ docs/ # Remappings remappings.txt + +# npm +package-lock.json +package.json diff --git a/ethexe/scripts/local-ethereum-node.sh b/ethexe/scripts/local-ethereum-node.sh new file mode 100755 index 00000000000..974ab798d37 --- /dev/null +++ b/ethexe/scripts/local-ethereum-node.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# +# This file is part of Gear. +# +# Copyright (C) 2024 Gear Technologies Inc. +# SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +set -eu + +# never used +export ETHERSCAN_API_KEY="" +# anvil account (0) with balance +export PRIVATE_KEY="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" +# not yet used +export ROUTER_VALIDATORS_LIST="" + +ANVIL_LOG_FILE="/tmp/ethexe-anvil.log" +nohup anvil --block-time 2 > $ANVIL_LOG_FILE 2>&1 & +ANVIL_PID=$! + +(cd ethexe/contracts && forge clean && forge script script/Router.s.sol:RouterScript --rpc-url "ws://localhost:8545" --broadcast) + +BROADCAST_PATH="ethexe/contracts/broadcast/Router.s.sol/31337/run-latest.json" +ROUTER_ADDRESS=`cat $BROADCAST_PATH | jq '.transactions[] | select(.contractName == "Router") | .contractAddress' | tr -d '"'` +PROXY_ADDRESS=`cat $BROADCAST_PATH | + jq ".transactions[] | \ + select(.contractName == \"TransparentUpgradeableProxy\") | \ + select(.transactionType == \"CREATE\") | \ + select(.arguments[] | ascii_downcase | contains(\"${ROUTER_ADDRESS}\")) | \ + .contractAddress" | + tr -d '"'` + +if [[ -e .ethexe.toml ]]; then + SED_FROM="ethereum_router_address = \"[a-zA-Z0-9]*\"" + SED_TO="ethereum_router_address = \"${PROXY_ADDRESS}\"" + sed -i.bak "s/$SED_FROM/$SED_TO/g" .ethexe.toml + rm .ethexe.toml.bak + + echo "Router address has been updated in .ethexe.toml" +fi + +echo "Router address: ${ROUTER_ADDRESS}" +echo "Proxy address: ${PROXY_ADDRESS}" +echo +echo "Anvil is running via nohup. PID: ${ANVIL_PID}. Logs at $ANVIL_LOG_FILE" +echo +read -p "Press enter to see node logs in real time" + +tail -f $ANVIL_LOG_FILE From b4e1d6c1da409e8ae09769c6320f29acbe5f414a Mon Sep 17 00:00:00 2001 From: StackOverflowExcept1on <109800286+StackOverflowExcept1on@users.noreply.github.com> Date: Sat, 17 Aug 2024 23:29:01 +0300 Subject: [PATCH 3/4] feat(ethexe-contracts): add scripts for upgrades (#4078) Co-authored-by: Dmitrii Novikov --- Makefile | 18 ++++++------- ethexe/contracts/.env.example | 12 +++++++++ ethexe/contracts/README.md | 22 ++++++++++++++-- ethexe/contracts/foundry.toml | 9 +++++-- .../script/{Router.s.sol => Deployment.s.sol} | 0 ethexe/contracts/script/upgrades/Mirror.s.sol | 22 ++++++++++++++++ ethexe/contracts/script/upgrades/Router.s.sol | 24 ++++++++++++++++++ .../script/upgrades/WrappedVara.s.sol | 25 +++++++++++++++++++ ethexe/contracts/src/Mirror.sol | 4 +-- ethexe/contracts/src/Router.sol | 24 +++++++++++++++--- ethexe/contracts/src/WrappedVara.sol | 2 ++ ethexe/contracts/test/Router.t.sol | 3 ++- ethexe/ethereum/Mirror.json | 2 +- ethexe/ethereum/MirrorProxy.json | 2 +- ethexe/ethereum/Router.json | 2 +- .../ethereum/TransparentUpgradeableProxy.json | 2 +- ethexe/ethereum/WrappedVara.json | 2 +- ethexe/ethereum/src/lib.rs | 2 +- 18 files changed, 152 insertions(+), 25 deletions(-) rename ethexe/contracts/script/{Router.s.sol => Deployment.s.sol} (100%) create mode 100644 ethexe/contracts/script/upgrades/Mirror.s.sol create mode 100644 ethexe/contracts/script/upgrades/Router.s.sol create mode 100644 ethexe/contracts/script/upgrades/WrappedVara.s.sol diff --git a/Makefile b/Makefile index 731738232bf..d7626ada924 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ -# Temporary section for eGPU. -.PHONY: gpu-pre-commit -gpu-pre-commit: - @ echo " > Formatting eGPU" && cargo +nightly fmt --all -- --config imports_granularity=Crate,edition=2021 - @ echo " >> Clippy checking eGPU" && cargo clippy -p "ethexe-*" --all-targets --all-features -- --no-deps -D warnings - -# Building contracts -.PHONY: gpu-contracts-pre-commit -gpu-contracts-pre-commit: +# Ethexe section +.PHONY: ethexe-pre-commit +ethexe-pre-commit: ethexe-contracts-pre-commit + @ echo " > Formatting ethexe" && cargo +nightly fmt --all -- --config imports_granularity=Crate,edition=2021 + @ echo " >> Clippy checking ethexe" && cargo clippy -p "ethexe-*" --all-targets --all-features -- --no-deps -D warnings + +# Building ethexe contracts +.PHONY: ethexe-contracts-pre-commit +ethexe-contracts-pre-commit: @ echo " > Cleaning contracts" && forge clean --root ethexe/contracts @ echo " > Formatting contracts" && forge fmt --root ethexe/contracts @ echo " > Building contracts" && forge build --root ethexe/contracts diff --git a/ethexe/contracts/.env.example b/ethexe/contracts/.env.example index fd95742baf1..0df1fdc6573 100644 --- a/ethexe/contracts/.env.example +++ b/ethexe/contracts/.env.example @@ -1,5 +1,17 @@ +# script/Deployment.s.sol SEPOLIA_RPC_URL="https://ethereum-sepolia-rpc.publicnode.com" HOLESKY_RPC_URL="https://ethereum-holesky-rpc.publicnode.com" PRIVATE_KEY="0x0000000000000000000000000000000000000000000000000000000000000000" ETHERSCAN_API_KEY="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" ROUTER_VALIDATORS_LIST="0x0000000000000000000000000000000000000000,0x0000000000000000000000000000000000000001" + +# script/upgrades/Mirror.s.sol +ROUTER_ADDRESS="0x0000000000000000000000000000000000000000" + +# script/upgrades/Router.s.sol +REINITIALIZE="false" +ROUTER_ADDRESS="0x0000000000000000000000000000000000000000" + +# script/upgrades/WrappedVara.s.sol +REINITIALIZE="false" +WRAPPED_VARA_ADDRESS="0x0000000000000000000000000000000000000000" diff --git a/ethexe/contracts/README.md b/ethexe/contracts/README.md index 128f80201c2..c8e6faf27f2 100644 --- a/ethexe/contracts/README.md +++ b/ethexe/contracts/README.md @@ -49,8 +49,26 @@ $ anvil ```shell $ source .env -$ forge script script/Router.s.sol:RouterScript --rpc-url $SEPOLIA_RPC_URL --broadcast --verify -vvvv -$ forge script script/Router.s.sol:RouterScript --rpc-url $HOLESKY_RPC_URL --broadcast --verify -vvvv +$ forge script script/Deployment.s.sol:DeploymentScript --rpc-url $SEPOLIA_RPC_URL --broadcast --verify -vvvv +$ forge script script/Deployment.s.sol:DeploymentScript --rpc-url $HOLESKY_RPC_URL --broadcast --verify -vvvv +``` + +### Upgrade + +> [!WARNING] +> Before you run upgrade scripts, edit `reinitialize` method depending on how you want to perform upgrade! + +```shell +$ source .env + +$ forge script upgrades/Mirror.s.sol:MirrorScript --rpc-url $SEPOLIA_RPC_URL --broadcast --verify -vvvv +$ forge script upgrades/Mirror.s.sol:MirrorScript --rpc-url $HOLESKY_RPC_URL --broadcast --verify -vvvv + +$ forge script upgrades/Router.s.sol:RouterScript --rpc-url $SEPOLIA_RPC_URL --broadcast --verify -vvvv +$ forge script upgrades/Router.s.sol:RouterScript --rpc-url $HOLESKY_RPC_URL --broadcast --verify -vvvv + +$ forge script upgrades/WrappedVara.s.sol:WrappedVaraScript --rpc-url $SEPOLIA_RPC_URL --broadcast --verify -vvvv +$ forge script upgrades/WrappedVara.s.sol:WrappedVaraScript --rpc-url $HOLESKY_RPC_URL --broadcast --verify -vvvv ``` ### Cast diff --git a/ethexe/contracts/foundry.toml b/ethexe/contracts/foundry.toml index 61421d1d522..bb0029c8438 100644 --- a/ethexe/contracts/foundry.toml +++ b/ethexe/contracts/foundry.toml @@ -8,8 +8,13 @@ ffi = true ast = true build_info = true extra_output = ["storageLayout"] -# Warning (3628): This contract has a payable fallback function, but no receive ether function. -ignored_warnings_from = ["src/MirrorProxy.sol"] +# Some warnings should be omitted +ignored_warnings_from = [ + # Warning (3628): This contract has a payable fallback function, but no receive ether function + "src/MirrorProxy.sol", +] +# Enable new EVM codegen +via_ir = true [rpc_endpoints] sepolia = "${SEPOLIA_RPC_URL}" diff --git a/ethexe/contracts/script/Router.s.sol b/ethexe/contracts/script/Deployment.s.sol similarity index 100% rename from ethexe/contracts/script/Router.s.sol rename to ethexe/contracts/script/Deployment.s.sol diff --git a/ethexe/contracts/script/upgrades/Mirror.s.sol b/ethexe/contracts/script/upgrades/Mirror.s.sol new file mode 100644 index 00000000000..c77204ce9e3 --- /dev/null +++ b/ethexe/contracts/script/upgrades/Mirror.s.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.26; + +import {Script, console} from "forge-std/Script.sol"; +import {Mirror} from "../../src/Mirror.sol"; +import {Router} from "../../src/Router.sol"; + +contract MirrorScript is Script { + function setUp() public {} + + function run() public { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + address routerAddress = vm.envAddress("ROUTER_ADDRESS"); + + vm.startBroadcast(privateKey); + + Mirror mirror = new Mirror(); + Router(routerAddress).setMirror(address(mirror)); + + vm.stopBroadcast(); + } +} diff --git a/ethexe/contracts/script/upgrades/Router.s.sol b/ethexe/contracts/script/upgrades/Router.s.sol new file mode 100644 index 00000000000..0b9540179a0 --- /dev/null +++ b/ethexe/contracts/script/upgrades/Router.s.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.26; + +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {Script, console} from "forge-std/Script.sol"; +import {Router} from "../../src/Router.sol"; + +contract RouterScript is Script { + function setUp() public {} + + function run() public { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + bool reinitialize = vm.envBool("REINITIALIZE"); + address routerAddress = vm.envAddress("ROUTER_ADDRESS"); + + vm.startBroadcast(privateKey); + + bytes memory data = + reinitialize ? abi.encodeCall(Router.reinitialize, () /*Router.reinitialize arguments*/ ) : new bytes(0); + Upgrades.upgradeProxy(routerAddress, "Router.sol", data); + + vm.stopBroadcast(); + } +} diff --git a/ethexe/contracts/script/upgrades/WrappedVara.s.sol b/ethexe/contracts/script/upgrades/WrappedVara.s.sol new file mode 100644 index 00000000000..c399d86ad94 --- /dev/null +++ b/ethexe/contracts/script/upgrades/WrappedVara.s.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.26; + +import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {Script, console} from "forge-std/Script.sol"; +import {WrappedVara} from "../../src/WrappedVara.sol"; + +contract WrappedVaraScript is Script { + function setUp() public {} + + function run() public { + uint256 privateKey = vm.envUint("PRIVATE_KEY"); + bool reinitialize = vm.envBool("REINITIALIZE"); + address wrappedVaraAddress = vm.envAddress("WRAPPED_VARA_ADDRESS"); + + vm.startBroadcast(privateKey); + + bytes memory data = reinitialize + ? abi.encodeCall(WrappedVara.reinitialize, () /*WrappedVara.reinitialize arguments*/ ) + : new bytes(0); + Upgrades.upgradeProxy(wrappedVaraAddress, "WrappedVara.sol", data); + + vm.stopBroadcast(); + } +} diff --git a/ethexe/contracts/src/Mirror.sol b/ethexe/contracts/src/Mirror.sol index 7cedd888677..0283e3829c9 100644 --- a/ethexe/contracts/src/Mirror.sol +++ b/ethexe/contracts/src/Mirror.sol @@ -10,7 +10,7 @@ import {IWrappedVara} from "./IWrappedVara.sol"; contract Mirror is IMirror { bytes32 public stateHash; // NOTE: Nonce 0 is used for init message in current implementation - uint256 public nonce = 1; + uint256 public nonce; /* = 1*/ /* Operational functions */ @@ -88,7 +88,7 @@ contract Mirror is IMirror { onlyRouter { // @dev: charging at this point already made on router side. - uint256 initNonce = 0; + uint256 initNonce = nonce++; bytes32 id = keccak256(abi.encodePacked(address(this), initNonce)); emit ExecutableBalanceTopUpRequested(executableBalance); diff --git a/ethexe/contracts/src/Router.sol b/ethexe/contracts/src/Router.sol index 31fa58dc918..decccdd1021 100644 --- a/ethexe/contracts/src/Router.sol +++ b/ethexe/contracts/src/Router.sol @@ -29,11 +29,11 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { address _mirror, address _mirrorProxy, address _wrappedVara, - address[] memory _validatorAddressArray + address[] memory _validatorsKeys ) public initializer { __Ownable_init(initialOwner); - setStorageSlot("router.storage.Router"); + setStorageSlot("router.storage.RouterV1"); Storage storage router = _getStorage(); router.genesisBlockHash = blockhash(block.number - 1); @@ -43,7 +43,25 @@ contract Router is IRouter, OwnableUpgradeable, ReentrancyGuardTransient { router.signingThresholdPercentage = 6666; // 2/3 percentage (66.66%). router.baseWeight = 2_500_000_000; router.valuePerWeight = 10; - _setValidators(_validatorAddressArray); + _setValidators(_validatorsKeys); + } + + function reinitialize() public onlyOwner reinitializer(2) { + Storage storage oldRouter = _getStorage(); + + address _mirror = oldRouter.mirror; + address _mirrorProxy = oldRouter.mirrorProxy; + address _wrappedVara = oldRouter.wrappedVara; + address[] memory _validatorsKeys = oldRouter.validatorsKeys; + + setStorageSlot("router.storage.RouterV2"); + Storage storage router = _getStorage(); + + router.genesisBlockHash = blockhash(block.number - 1); + router.mirror = _mirror; + router.mirrorProxy = _mirrorProxy; + router.wrappedVara = _wrappedVara; + _setValidators(_validatorsKeys); } /* Operational functions */ diff --git a/ethexe/contracts/src/WrappedVara.sol b/ethexe/contracts/src/WrappedVara.sol index 891892733f1..ce3e72d0240 100644 --- a/ethexe/contracts/src/WrappedVara.sol +++ b/ethexe/contracts/src/WrappedVara.sol @@ -34,6 +34,8 @@ contract WrappedVara is _mint(initialOwner, TOKEN_INITIAL_SUPPLY * 10 ** decimals()); } + function reinitialize() public onlyOwner reinitializer(2) {} + function mint(address to, uint256 amount) public onlyOwner { _mint(to, amount); } diff --git a/ethexe/contracts/test/Router.t.sol b/ethexe/contracts/test/Router.t.sol index dc638ed85ff..6450908a515 100644 --- a/ethexe/contracts/test/Router.t.sol +++ b/ethexe/contracts/test/Router.t.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.25; +pragma solidity ^0.8.26; import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; import {Test, console} from "forge-std/Test.sol"; @@ -101,6 +101,7 @@ contract RouterTest is Test { commitBlocks(blockCommitmentsArray); assertEq(deployedProgram.stateHash(), bytes32(uint256(1))); + assertEq(deployedProgram.nonce(), 1); } /* helper functions */ diff --git a/ethexe/ethereum/Mirror.json b/ethexe/ethereum/Mirror.json index 3453f63c7c4..21f9aadf07d 100644 --- a/ethexe/ethereum/Mirror.json +++ b/ethexe/ethereum/Mirror.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceBurned","inputs":[{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initMessage","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"executableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"messageSent","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"replySent","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyTo","type":"bytes32","internalType":"bytes32"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"updateState","inputs":[{"name":"newStateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"valueClaimed","inputs":[{"name":"claimedId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x6080604052600180553480156012575f80fd5b50610f89806100205f395ff3fe6080604052600436106100bf575f3560e01c8063affed0e01161007c578063d562422211610057578063d5624222146101c2578063dca4a373146101d5578063de1dd2e0146101f4578063f887ea4014610213575f80fd5b8063affed0e01461016f578063c2df600914610184578063c78bde77146101a3575f80fd5b806314503e51146100c357806329336f39146100e4578063701da98e146100f7578063704ed5421461011e5780638ea59e1d1461013157806391d5a64c14610150575b5f80fd5b3480156100ce575f80fd5b506100e26100dd366004610b10565b61023f565b005b6100e26100f2366004610b94565b6102d0565b348015610102575f80fd5b5061010b5f5481565b6040519081526020015b60405180910390f35b6100e261012c366004610bef565b61039a565b34801561013c575f80fd5b506100e261014b366004610c11565b6103e3565b34801561015b575f80fd5b506100e261016a366004610c11565b61045a565b34801561017a575f80fd5b5061010b60015481565b34801561018f575f80fd5b506100e261019e366004610c28565b610492565b3480156101ae575f80fd5b506100e26101bd366004610c97565b610509565b61010b6101d0366004610d23565b61059b565b3480156101e0575f80fd5b506100e26101ef366004610bef565b6106b7565b3480156101ff575f80fd5b506100e261020e366004610d6b565b610700565b34801561021e575f80fd5b50610227610803565b6040516001600160a01b039091168152602001610115565b610247610803565b6001600160a01b0316336001600160a01b0316146102805760405162461bcd60e51b815260040161027790610dd5565b60405180910390fd5b61028a8282610869565b604080518481526001600160801b03831660208201527fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783910160405180910390a1505050565b5f6102d9610803565b6001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103389190610e23565b905061034c6103478383610e52565b6109aa565b326001600160a01b03167fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8686868660405161038b9493929190610e9f565b60405180910390a25050505050565b6103a3816109aa565b6040516001600160801b03821681527f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667906020015b60405180910390a150565b6103eb610803565b6001600160a01b0316336001600160a01b03161461041b5760405162461bcd60e51b815260040161027790610dd5565b805f5414610457575f8190556040518181527f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930906020016103d8565b50565b60405181815232907f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49789060200160405180910390a250565b61049a610803565b6001600160a01b0316336001600160a01b0316146104ca5760405162461bcd60e51b815260040161027790610dd5565b836001600160a01b03167f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738685858560405161038b9493929190610e9f565b610511610803565b6001600160a01b0316336001600160a01b0316146105415760405162461bcd60e51b815260040161027790610dd5565b61054b8684610869565b806001600160e01b0319167fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68686868660405161058b9493929190610ed2565b60405180910390a2505050505050565b5f806105a5610803565b6001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106049190610e23565b90506106136103478483610e52565b600180545f913091908361062683610f01565b9091555060405160609290921b6bffffffffffffffffffffffff191660208301526034820152605401604051602081830303815290604052805190602001209050326001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516106a69493929190610e9f565b60405180910390a295945050505050565b6106bf610803565b6001600160a01b0316336001600160a01b0316146106ef5760405162461bcd60e51b815260040161027790610dd5565b6104576106fa610803565b82610869565b610708610803565b6001600160a01b0316336001600160a01b0316146107385760405162461bcd60e51b815260040161027790610dd5565b6040516bffffffffffffffffffffffff193060601b1660208201525f6034820181905290819060540160408051601f198184030181529082905280516020918201206001600160801b038616835292507f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667910160405180910390a1866001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516107f29493929190610e9f565b60405180910390a250505050505050565b5f306001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610840573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108649190610f19565b905090565b5f610872610803565b6001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d19190610f19565b90506001600160801b038216156109a55760405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301525f919083169063a9059cbb906044016020604051808303815f875af1158015610939573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095d9190610f34565b9050806109a35760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606401610277565b505b505050565b5f6109b3610803565b90505f816001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190610f19565b6040516323b872dd60e01b81523260048201526001600160a01b0384811660248301526001600160801b03861660448301529192505f918316906323b872dd906064016020604051808303815f875af1158015610a75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a999190610f34565b9050806109a35760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606401610277565b6001600160a01b0381168114610457575f80fd5b6001600160801b0381168114610457575f80fd5b5f805f60608486031215610b22575f80fd5b833592506020840135610b3481610ae8565b91506040840135610b4481610afc565b809150509250925092565b5f8083601f840112610b5f575f80fd5b50813567ffffffffffffffff811115610b76575f80fd5b602083019150836020828501011115610b8d575f80fd5b9250929050565b5f805f8060608587031215610ba7575f80fd5b84359350602085013567ffffffffffffffff811115610bc4575f80fd5b610bd087828801610b4f565b9094509250506040850135610be481610afc565b939692955090935050565b5f60208284031215610bff575f80fd5b8135610c0a81610afc565b9392505050565b5f60208284031215610c21575f80fd5b5035919050565b5f805f805f60808688031215610c3c575f80fd5b853594506020860135610c4e81610ae8565b9350604086013567ffffffffffffffff811115610c69575f80fd5b610c7588828901610b4f565b9094509250506060860135610c8981610afc565b809150509295509295909350565b5f805f805f8060a08789031215610cac575f80fd5b8635610cb781610ae8565b9550602087013567ffffffffffffffff811115610cd2575f80fd5b610cde89828a01610b4f565b9096509450506040870135610cf281610afc565b92506060870135915060808701356001600160e01b031981168114610d15575f80fd5b809150509295509295509295565b5f805f60408486031215610d35575f80fd5b833567ffffffffffffffff811115610d4b575f80fd5b610d5786828701610b4f565b9094509250506020840135610b4481610afc565b5f805f805f60808688031215610d7f575f80fd5b8535610d8a81610ae8565b9450602086013567ffffffffffffffff811115610da5575f80fd5b610db188828901610b4f565b9095509350506040860135610dc581610afc565b91506060860135610c8981610afc565b6020808252602e908201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560408201526d103337b91037b832b930ba34b7b760911b606082015260800190565b5f60208284031215610e33575f80fd5b8151610c0a81610afc565b634e487b7160e01b5f52601160045260245ffd5b6001600160801b038181168382160190811115610e7157610e71610e3e565b92915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f610eb8606083018587610e77565b90506001600160801b038316604083015295945050505050565b606081525f610ee5606083018688610e77565b6001600160801b03949094166020830152506040015292915050565b5f60018201610f1257610f12610e3e565b5060010190565b5f60208284031215610f29575f80fd5b8151610c0a81610ae8565b5f60208284031215610f44575f80fd5b81518015158114610c0a575f80fdfea264697066735822122006f1f0ed16d95c74edb0e140a6bf4e55f40d393a1376c052005029b48ad89e1f64736f6c634300081a0033","sourceMap":"285:3789:76:-:0;;;443:1;420:24;;285:3789;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100bf575f3560e01c8063affed0e01161007c578063d562422211610057578063d5624222146101c2578063dca4a373146101d5578063de1dd2e0146101f4578063f887ea4014610213575f80fd5b8063affed0e01461016f578063c2df600914610184578063c78bde77146101a3575f80fd5b806314503e51146100c357806329336f39146100e4578063701da98e146100f7578063704ed5421461011e5780638ea59e1d1461013157806391d5a64c14610150575b5f80fd5b3480156100ce575f80fd5b506100e26100dd366004610b10565b61023f565b005b6100e26100f2366004610b94565b6102d0565b348015610102575f80fd5b5061010b5f5481565b6040519081526020015b60405180910390f35b6100e261012c366004610bef565b61039a565b34801561013c575f80fd5b506100e261014b366004610c11565b6103e3565b34801561015b575f80fd5b506100e261016a366004610c11565b61045a565b34801561017a575f80fd5b5061010b60015481565b34801561018f575f80fd5b506100e261019e366004610c28565b610492565b3480156101ae575f80fd5b506100e26101bd366004610c97565b610509565b61010b6101d0366004610d23565b61059b565b3480156101e0575f80fd5b506100e26101ef366004610bef565b6106b7565b3480156101ff575f80fd5b506100e261020e366004610d6b565b610700565b34801561021e575f80fd5b50610227610803565b6040516001600160a01b039091168152602001610115565b610247610803565b6001600160a01b0316336001600160a01b0316146102805760405162461bcd60e51b815260040161027790610dd5565b60405180910390fd5b61028a8282610869565b604080518481526001600160801b03831660208201527fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783910160405180910390a1505050565b5f6102d9610803565b6001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610314573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103389190610e23565b905061034c6103478383610e52565b6109aa565b326001600160a01b03167fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f8686868660405161038b9493929190610e9f565b60405180910390a25050505050565b6103a3816109aa565b6040516001600160801b03821681527f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667906020015b60405180910390a150565b6103eb610803565b6001600160a01b0316336001600160a01b03161461041b5760405162461bcd60e51b815260040161027790610dd5565b805f5414610457575f8190556040518181527f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930906020016103d8565b50565b60405181815232907f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c49789060200160405180910390a250565b61049a610803565b6001600160a01b0316336001600160a01b0316146104ca5760405162461bcd60e51b815260040161027790610dd5565b836001600160a01b03167f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117738685858560405161038b9493929190610e9f565b610511610803565b6001600160a01b0316336001600160a01b0316146105415760405162461bcd60e51b815260040161027790610dd5565b61054b8684610869565b806001600160e01b0319167fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c68686868660405161058b9493929190610ed2565b60405180910390a2505050505050565b5f806105a5610803565b6001600160a01b0316636ef25c3a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106049190610e23565b90506106136103478483610e52565b600180545f913091908361062683610f01565b9091555060405160609290921b6bffffffffffffffffffffffff191660208301526034820152605401604051602081830303815290604052805190602001209050326001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516106a69493929190610e9f565b60405180910390a295945050505050565b6106bf610803565b6001600160a01b0316336001600160a01b0316146106ef5760405162461bcd60e51b815260040161027790610dd5565b6104576106fa610803565b82610869565b610708610803565b6001600160a01b0316336001600160a01b0316146107385760405162461bcd60e51b815260040161027790610dd5565b6040516bffffffffffffffffffffffff193060601b1660208201525f6034820181905290819060540160408051601f198184030181529082905280516020918201206001600160801b038616835292507f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c054236667910160405180910390a1866001600160a01b03167f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6828888886040516107f29493929190610e9f565b60405180910390a250505050505050565b5f306001600160a01b031663f887ea406040518163ffffffff1660e01b8152600401602060405180830381865afa158015610840573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108649190610f19565b905090565b5f610872610803565b6001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ad573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d19190610f19565b90506001600160801b038216156109a55760405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301525f919083169063a9059cbb906044016020604051808303815f875af1158015610939573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095d9190610f34565b9050806109a35760405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606401610277565b505b505050565b5f6109b3610803565b90505f816001600160a01b03166388f50cf06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190610f19565b6040516323b872dd60e01b81523260048201526001600160a01b0384811660248301526001600160801b03861660448301529192505f918316906323b872dd906064016020604051808303815f875af1158015610a75573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a999190610f34565b9050806109a35760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606401610277565b6001600160a01b0381168114610457575f80fd5b6001600160801b0381168114610457575f80fd5b5f805f60608486031215610b22575f80fd5b833592506020840135610b3481610ae8565b91506040840135610b4481610afc565b809150509250925092565b5f8083601f840112610b5f575f80fd5b50813567ffffffffffffffff811115610b76575f80fd5b602083019150836020828501011115610b8d575f80fd5b9250929050565b5f805f8060608587031215610ba7575f80fd5b84359350602085013567ffffffffffffffff811115610bc4575f80fd5b610bd087828801610b4f565b9094509250506040850135610be481610afc565b939692955090935050565b5f60208284031215610bff575f80fd5b8135610c0a81610afc565b9392505050565b5f60208284031215610c21575f80fd5b5035919050565b5f805f805f60808688031215610c3c575f80fd5b853594506020860135610c4e81610ae8565b9350604086013567ffffffffffffffff811115610c69575f80fd5b610c7588828901610b4f565b9094509250506060860135610c8981610afc565b809150509295509295909350565b5f805f805f8060a08789031215610cac575f80fd5b8635610cb781610ae8565b9550602087013567ffffffffffffffff811115610cd2575f80fd5b610cde89828a01610b4f565b9096509450506040870135610cf281610afc565b92506060870135915060808701356001600160e01b031981168114610d15575f80fd5b809150509295509295509295565b5f805f60408486031215610d35575f80fd5b833567ffffffffffffffff811115610d4b575f80fd5b610d5786828701610b4f565b9094509250506020840135610b4481610afc565b5f805f805f60808688031215610d7f575f80fd5b8535610d8a81610ae8565b9450602086013567ffffffffffffffff811115610da5575f80fd5b610db188828901610b4f565b9095509350506040860135610dc581610afc565b91506060860135610c8981610afc565b6020808252602e908201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560408201526d103337b91037b832b930ba34b7b760911b606082015260800190565b5f60208284031215610e33575f80fd5b8151610c0a81610afc565b634e487b7160e01b5f52601160045260245ffd5b6001600160801b038181168382160190811115610e7157610e71610e3e565b92915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b848152606060208201525f610eb8606083018587610e77565b90506001600160801b038316604083015295945050505050565b606081525f610ee5606083018688610e77565b6001600160801b03949094166020830152506040015292915050565b5f60018201610f1257610f12610e3e565b5060010190565b5f60208284031215610f29575f80fd5b8151610c0a81610ae8565b5f60208284031215610f44575f80fd5b81518015158114610c0a575f80fdfea264697066735822122006f1f0ed16d95c74edb0e140a6bf4e55f40d393a1376c052005029b48ad89e1f64736f6c634300081a0033","sourceMap":"285:3789:76:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2464:192;;;;;;;;;;-1:-1:-1;2464:192:76;;;;;:::i;:::-;;:::i;:::-;;1011:288;;;;;;:::i;:::-;;:::i;318:24::-;;;;;;;;;;;;;;;;;;;1981:25:81;;;1969:2;1954:18;318:24:76;;;;;;;;1495:167;;;;;;:::i;:::-;;:::i;1720:202::-;;;;;;;;;;-1:-1:-1;1720:202:76;;;;;:::i;:::-;;:::i;1305:184::-;;;;;;;;;;-1:-1:-1;1305:184:76;;;;;:::i;:::-;;:::i;420:24::-;;;;;;;;;;;;;;;;1928:264;;;;;;;;;;-1:-1:-1;1928:264:76;;;;;:::i;:::-;;:::i;2198:260::-;;;;;;;;;;-1:-1:-1;2198:260:76;;;;;:::i;:::-;;:::i;628:377::-;;;;;;:::i;:::-;;:::i;2662:114::-;;;;;;;;;;-1:-1:-1;2662:114:76;;;;;:::i;:::-;;:::i;2782:459::-;;;;;;;;;;-1:-1:-1;2782:459:76;;;;;:::i;:::-;;:::i;484:108::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6032:32:81;;;6014:51;;6002:2;5987:18;484:108:76;5868:203:81;2464:192:76;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;;;;;;;;;2571:32:::1;2584:11;2597:5;2571:12;:32::i;:::-;2619:30;::::0;;6665:25:81;;;-1:-1:-1;;;;;6726:47:81;;6721:2;6706:18;;6699:75;2619:30:76::1;::::0;6638:18:81;2619:30:76::1;;;;;;;2464:192:::0;;;:::o;1011:288::-;1118:15;1144:8;:6;:8::i;:::-;-1:-1:-1;;;;;1136:25:76;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1118:45;-1:-1:-1;1173:40:76;1196:16;1206:6;1118:45;1196:16;:::i;:::-;1173:22;:40::i;:::-;1264:9;-1:-1:-1;;;;;1229:63:76;;1252:10;1275:8;;1285:6;1229:63;;;;;;;;;:::i;:::-;;;;;;;;1108:191;1011:288;;;;:::o;1495:167::-;1570:30;1593:6;1570:22;:30::i;:::-;1616:39;;-1:-1:-1;;;;;8285:47:81;;8267:66;;1616:39:76;;8255:2:81;8240:18;1616:39:76;;;;;;;;1495:167;:::o;1720:202::-;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;1810:12:::1;1797:9;;:25;1793:123;;1838:9;:24:::0;;;1882:23:::1;::::0;1981:25:81;;;1882:23:76::1;::::0;1969:2:81;1954:18;1882:23:76::1;1835:177:81::0;1793:123:76::1;1720:202:::0;:::o;1305:184::-;1437:45;;1981:25:81;;;1472:9:76;;1437:45;;1969:2:81;1954:18;1437:45:76;;;;;;;1305:184;:::o;1928:264::-;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;2157:11:::1;-1:-1:-1::0;;;;;2145:40:76::1;;2153:2;2170:7;;2179:5;2145:40;;;;;;;;;:::i;2198:260::-:0;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;2362:32:::1;2375:11;2388:5;2362:12;:32::i;:::-;2441:9;-1:-1:-1::0;;;;;2410:41:76::1;;;2416:7;;2425:5;2432:7;2410:41;;;;;;;;;:::i;:::-;;;;;;;;2198:260:::0;;;;;;:::o;628:377::-;716:7;735:15;761:8;:6;:8::i;:::-;-1:-1:-1;;;;;753:25:76;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;735:45;-1:-1:-1;790:40:76;813:16;823:6;735:45;813:16;:::i;790:40::-;896:5;:7;;841:10;;889:4;;896:7;841:10;896:7;;;:::i;:::-;;;;-1:-1:-1;864:40:76;;9093:2:81;9089:15;;;;-1:-1:-1;;9085:53:81;864:40:76;;;9073:66:81;9155:12;;;9148:28;9192:12;;864:40:76;;;;;;;;;;;;854:51;;;;;;841:64;;950:9;-1:-1:-1;;;;;921:57:76;;946:2;961:8;;971:6;921:57;;;;;;;;;:::i;:::-;;;;;;;;996:2;628:377;-1:-1:-1;;;;;628:377:76:o;2662:114::-;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;2740:29:::1;2753:8;:6;:8::i;:::-;2763:5;2740:12;:29::i;2782:459::-:0;3301:8;:6;:8::i;:::-;-1:-1:-1;;;;;3287:22:76;:10;-1:-1:-1;;;;;3287:22:76;;3279:81;;;;-1:-1:-1;;;3279:81:76;;;;;;;:::i;:::-;3058:42:::1;::::0;-1:-1:-1;;3083:4:76::1;9093:2:81::0;9089:15;9085:53;3058:42:76::1;::::0;::::1;9073:66:81::0;3004:17:76::1;9155:12:81::0;;;9148:28;;;3004:17:76;;;9192:12:81;;3058:42:76::1;::::0;;-1:-1:-1;;3058:42:76;;::::1;::::0;;;;;;;3048:53;;3058:42:::1;3048:53:::0;;::::1;::::0;-1:-1:-1;;;;;8285:47:81;;8267:66;;3048:53:76;-1:-1:-1;3117:50:76::1;::::0;8240:18:81;3117:50:76::1;;;;;;;3211:6;-1:-1:-1::0;;;;;3182:52:76::1;;3207:2;3219:7;;3228:5;3182:52;;;;;;;;;:::i;:::-;;;;;;;;2925:316;;2782:459:::0;;;;;:::o;484:108::-;523:7;570:4;-1:-1:-1;;;;;549:34:76;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;542:43;;484:108;:::o;3756:316::-;3832:24;3880:8;:6;:8::i;:::-;-1:-1:-1;;;;;3872:29:76;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3832:72;-1:-1:-1;;;;;;3919:10:76;;;3915:151;;3960:40;;-1:-1:-1;;;3960:40:76;;-1:-1:-1;;;;;9663:32:81;;;3960:40:76;;;9645:51:81;-1:-1:-1;;;;;9732:47:81;;9712:18;;;9705:75;3945:12:76;;3960:20;;;;;;9618:18:81;;3960:40:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3945:55;;4023:7;4015:40;;;;-1:-1:-1;;;4015:40:76;;10275:2:81;4015:40:76;;;10257:21:81;10314:2;10294:18;;;10287:30;-1:-1:-1;;;10333:18:81;;;10326:50;10393:18;;4015:40:76;10073:344:81;4015:40:76;3931:135;3915:151;3822:250;3756:316;;:::o;3418:332::-;3484:21;3508:8;:6;:8::i;:::-;3484:32;;3527:24;3575:13;-1:-1:-1;;;;;3567:34:76;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3630:58;;-1:-1:-1;;;3630:58:76;;3655:9;3630:58;;;10624:51:81;-1:-1:-1;;;;;10711:32:81;;;10691:18;;;10684:60;-1:-1:-1;;;;;10780:47:81;;10760:18;;;10753:75;3527:77:76;;-1:-1:-1;3615:12:76;;3630:24;;;;;10597:18:81;;3630:58:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3615:73;;3707:7;3699:44;;;;-1:-1:-1;;;3699:44:76;;11041:2:81;3699:44:76;;;11023:21:81;11080:2;11060:18;;;11053:30;11119:26;11099:18;;;11092:54;11163:18;;3699:44:76;10839:348:81;14:131;-1:-1:-1;;;;;89:31:81;;79:42;;69:70;;135:1;132;125:12;150:146;-1:-1:-1;;;;;229:5:81;225:46;218:5;215:57;205:85;;286:1;283;276:12;301:508;378:6;386;394;447:2;435:9;426:7;422:23;418:32;415:52;;;463:1;460;453:12;415:52;508:23;;;-1:-1:-1;607:2:81;592:18;;579:32;620:33;579:32;620:33;:::i;:::-;672:7;-1:-1:-1;731:2:81;716:18;;703:32;744:33;703:32;744:33;:::i;:::-;796:7;786:17;;;301:508;;;;;:::o;814:347::-;865:8;875:6;929:3;922:4;914:6;910:17;906:27;896:55;;947:1;944;937:12;896:55;-1:-1:-1;970:20:81;;1013:18;1002:30;;999:50;;;1045:1;1042;1035:12;999:50;1082:4;1074:6;1070:17;1058:29;;1134:3;1127:4;1118:6;1110;1106:19;1102:30;1099:39;1096:59;;;1151:1;1148;1141:12;1096:59;814:347;;;;;:::o;1166:664::-;1254:6;1262;1270;1278;1331:2;1319:9;1310:7;1306:23;1302:32;1299:52;;;1347:1;1344;1337:12;1299:52;1392:23;;;-1:-1:-1;1490:2:81;1475:18;;1462:32;1517:18;1506:30;;1503:50;;;1549:1;1546;1539:12;1503:50;1588:58;1638:7;1629:6;1618:9;1614:22;1588:58;:::i;:::-;1665:8;;-1:-1:-1;1562:84:81;-1:-1:-1;;1752:2:81;1737:18;;1724:32;1765:33;1724:32;1765:33;:::i;:::-;1166:664;;;;-1:-1:-1;1166:664:81;;-1:-1:-1;;1166:664:81:o;2017:247::-;2076:6;2129:2;2117:9;2108:7;2104:23;2100:32;2097:52;;;2145:1;2142;2135:12;2097:52;2184:9;2171:23;2203:31;2228:5;2203:31;:::i;:::-;2253:5;2017:247;-1:-1:-1;;;2017:247:81:o;2269:226::-;2328:6;2381:2;2369:9;2360:7;2356:23;2352:32;2349:52;;;2397:1;2394;2387:12;2349:52;-1:-1:-1;2442:23:81;;2269:226;-1:-1:-1;2269:226:81:o;2682:806::-;2779:6;2787;2795;2803;2811;2864:3;2852:9;2843:7;2839:23;2835:33;2832:53;;;2881:1;2878;2871:12;2832:53;2926:23;;;-1:-1:-1;3025:2:81;3010:18;;2997:32;3038:33;2997:32;3038:33;:::i;:::-;3090:7;-1:-1:-1;3148:2:81;3133:18;;3120:32;3175:18;3164:30;;3161:50;;;3207:1;3204;3197:12;3161:50;3246:58;3296:7;3287:6;3276:9;3272:22;3246:58;:::i;:::-;3323:8;;-1:-1:-1;3220:84:81;-1:-1:-1;;3410:2:81;3395:18;;3382:32;3423:33;3382:32;3423:33;:::i;:::-;3475:7;3465:17;;;2682:806;;;;;;;;:::o;3493:989::-;3598:6;3606;3614;3622;3630;3638;3691:3;3679:9;3670:7;3666:23;3662:33;3659:53;;;3708:1;3705;3698:12;3659:53;3747:9;3734:23;3766:31;3791:5;3766:31;:::i;:::-;3816:5;-1:-1:-1;3872:2:81;3857:18;;3844:32;3899:18;3888:30;;3885:50;;;3931:1;3928;3921:12;3885:50;3970:58;4020:7;4011:6;4000:9;3996:22;3970:58;:::i;:::-;4047:8;;-1:-1:-1;3944:84:81;-1:-1:-1;;4134:2:81;4119:18;;4106:32;4147:33;4106:32;4147:33;:::i;:::-;4199:7;-1:-1:-1;4279:2:81;4264:18;;4251:32;;-1:-1:-1;4361:3:81;4346:19;;4333:33;-1:-1:-1;;;;;;4397:34:81;;4385:47;;4375:75;;4446:1;4443;4436:12;4375:75;4469:7;4459:17;;;3493:989;;;;;;;;:::o;4487:544::-;4566:6;4574;4582;4635:2;4623:9;4614:7;4610:23;4606:32;4603:52;;;4651:1;4648;4641:12;4603:52;4691:9;4678:23;4724:18;4716:6;4713:30;4710:50;;;4756:1;4753;4746:12;4710:50;4795:58;4845:7;4836:6;4825:9;4821:22;4795:58;:::i;:::-;4872:8;;-1:-1:-1;4769:84:81;-1:-1:-1;;4957:2:81;4942:18;;4929:32;4970:31;4929:32;4970:31;:::i;5036:827::-;5133:6;5141;5149;5157;5165;5218:3;5206:9;5197:7;5193:23;5189:33;5186:53;;;5235:1;5232;5225:12;5186:53;5274:9;5261:23;5293:31;5318:5;5293:31;:::i;:::-;5343:5;-1:-1:-1;5399:2:81;5384:18;;5371:32;5426:18;5415:30;;5412:50;;;5458:1;5455;5448:12;5412:50;5497:58;5547:7;5538:6;5527:9;5523:22;5497:58;:::i;:::-;5574:8;;-1:-1:-1;5471:84:81;-1:-1:-1;;5661:2:81;5646:18;;5633:32;5674:33;5633:32;5674:33;:::i;:::-;5726:7;-1:-1:-1;5785:2:81;5770:18;;5757:32;5798:33;5757:32;5798:33;:::i;6076:410::-;6278:2;6260:21;;;6317:2;6297:18;;;6290:30;6356:34;6351:2;6336:18;;6329:62;-1:-1:-1;;;6422:2:81;6407:18;;6400:44;6476:3;6461:19;;6076:410::o;6785:251::-;6855:6;6908:2;6896:9;6887:7;6883:23;6879:32;6876:52;;;6924:1;6921;6914:12;6876:52;6956:9;6950:16;6975:31;7000:5;6975:31;:::i;7041:127::-;7102:10;7097:3;7093:20;7090:1;7083:31;7133:4;7130:1;7123:15;7157:4;7154:1;7147:15;7173:240;-1:-1:-1;;;;;7242:42:81;;;7286;;;7238:91;;7341:43;;7338:69;;;7387:18;;:::i;:::-;7173:240;;;;:::o;7418:266::-;7506:6;7501:3;7494:19;7558:6;7551:5;7544:4;7539:3;7535:14;7522:43;-1:-1:-1;7610:1:81;7585:16;;;7603:4;7581:27;;;7574:38;;;;7666:2;7645:15;;;-1:-1:-1;;7641:29:81;7632:39;;;7628:50;;7418:266::o;7689:427::-;7902:6;7891:9;7884:25;7945:2;7940;7929:9;7925:18;7918:30;7865:4;7965:61;8022:2;8011:9;8007:18;7999:6;7991;7965:61;:::i;:::-;7957:69;;-1:-1:-1;;;;;8066:6:81;8062:47;8057:2;8046:9;8042:18;8035:75;7689:427;;;;;;;:::o;8344:::-;8557:2;8546:9;8539:21;8520:4;8577:61;8634:2;8623:9;8619:18;8611:6;8603;8577:61;:::i;:::-;-1:-1:-1;;;;;8674:47:81;;;;8669:2;8654:18;;8647:75;-1:-1:-1;8753:2:81;8738:18;8731:34;8569:69;8344:427;-1:-1:-1;;8344:427:81:o;8776:135::-;8815:3;8836:17;;;8833:43;;8856:18;;:::i;:::-;-1:-1:-1;8903:1:81;8892:13;;8776:135::o;9215:251::-;9285:6;9338:2;9326:9;9317:7;9313:23;9309:32;9306:52;;;9354:1;9351;9344:12;9306:52;9386:9;9380:16;9405:31;9430:5;9405:31;:::i;9791:277::-;9858:6;9911:2;9899:9;9890:7;9886:23;9882:32;9879:52;;;9927:1;9924;9917:12;9879:52;9959:9;9953:16;10012:5;10005:13;9998:21;9991:5;9988:32;9978:60;;10034:1;10031;10024:12","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","executableBalanceBurned(uint128)":"dca4a373","executableBalanceTopUp(uint128)":"704ed542","initMessage(address,bytes,uint128,uint128)":"de1dd2e0","messageSent(bytes32,address,bytes,uint128)":"c2df6009","nonce()":"affed0e0","replySent(address,bytes,uint128,bytes32,bytes4)":"c78bde77","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","updateState(bytes32)":"8ea59e1d","valueClaimed(bytes32,address,uint128)":"14503e51"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceBurned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"executableBalance\",\"type\":\"uint128\"}],\"name\":\"initMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"messageSent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"replySent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"}],\"name\":\"updateState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"valueClaimed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf\",\"dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x964d4cc4767e92eaa596f350860f62e3baed0101b248c61370fdd9a860a93844\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://580380e0eb25222ba80cfb8b9721b1d751773f98ccbf3c0c7972ccbb8c432cdd\",\"dweb:/ipfs/QmQmKK1rvHSns5U3pDpa6LzP67tenhn3bKLk4yWEvJAkdz\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceBurned"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"uint128","name":"executableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initMessage"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"messageSent"},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"bytes32","name":"replyTo","type":"bytes32"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"replySent"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"newStateHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateState"},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"valueClaimed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6","urls":["bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf","dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x964d4cc4767e92eaa596f350860f62e3baed0101b248c61370fdd9a860a93844","urls":["bzz-raw://580380e0eb25222ba80cfb8b9721b1d751773f98ccbf3c0c7972ccbb8c432cdd","dweb:/ipfs/QmQmKK1rvHSns5U3pDpa6LzP67tenhn3bKLk4yWEvJAkdz"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":53763,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":53766,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":54127,"exportedSymbols":{"IMirror":[53423],"IMirrorProxy":[53431],"IRouter":[53738],"IWrappedVara":[53749],"Mirror":[54126]},"nodeType":"SourceUnit","src":"39:4036:76","nodes":[{"id":53751,"nodeType":"PragmaDirective","src":"39:24:76","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":53753,"nodeType":"ImportDirective","src":"65:48:76","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54127,"sourceUnit":53432,"symbolAliases":[{"foreign":{"id":53752,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53431,"src":"73:12:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53755,"nodeType":"ImportDirective","src":"114:38:76","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":54127,"sourceUnit":53424,"symbolAliases":[{"foreign":{"id":53754,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53423,"src":"122:7:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53757,"nodeType":"ImportDirective","src":"153:38:76","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54127,"sourceUnit":53739,"symbolAliases":[{"foreign":{"id":53756,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"161:7:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53759,"nodeType":"ImportDirective","src":"192:48:76","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":54127,"sourceUnit":53750,"symbolAliases":[{"foreign":{"id":53758,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53749,"src":"200:12:76","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54126,"nodeType":"ContractDefinition","src":"285:3789:76","nodes":[{"id":53763,"nodeType":"VariableDeclaration","src":"318:24:76","nodes":[],"baseFunctions":[53330],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"333:9:76","scope":54126,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"318:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":53766,"nodeType":"VariableDeclaration","src":"420:24:76","nodes":[],"baseFunctions":[53335],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"435:5:76","scope":54126,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53764,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31","id":53765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"443:1:76","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"visibility":"public"},{"id":53781,"nodeType":"FunctionDefinition","src":"484:108:76","nodes":[],"body":{"id":53780,"nodeType":"Block","src":"532:60:76","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":53774,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"570:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}],"id":53773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"562:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":53772,"name":"address","nodeType":"ElementaryTypeName","src":"562:7:76","typeDescriptions":{}}},"id":53775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"562:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":53771,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53431,"src":"549:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$53431_$","typeString":"type(contract IMirrorProxy)"}},"id":53776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"549:27:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$53431","typeString":"contract IMirrorProxy"}},"id":53777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"577:6:76","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":53430,"src":"549:34:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":53778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"549:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":53770,"id":53779,"nodeType":"Return","src":"542:43:76"}]},"baseFunctions":[53340],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"493:6:76","parameters":{"id":53767,"nodeType":"ParameterList","parameters":[],"src":"499:2:76"},"returnParameters":{"id":53770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53769,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53781,"src":"523:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53768,"name":"address","nodeType":"ElementaryTypeName","src":"523:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"522:9:76"},"scope":54126,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":53830,"nodeType":"FunctionDefinition","src":"628:377:76","nodes":[],"body":{"id":53829,"nodeType":"Block","src":"725:280:76","nodes":[],"statements":[{"assignments":[53791],"declarations":[{"constant":false,"id":53791,"mutability":"mutable","name":"baseFee","nameLocation":"743:7:76","nodeType":"VariableDeclaration","scope":53829,"src":"735:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53790,"name":"uint128","nodeType":"ElementaryTypeName","src":"735:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":53798,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":53793,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"761:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":53794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"761:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":53792,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"753:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53738_$","typeString":"type(contract IRouter)"}},"id":53795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"753:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53738","typeString":"contract IRouter"}},"id":53796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"771:7:76","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53697,"src":"753:25:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":53797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"753:27:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"735:45:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":53802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53800,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53791,"src":"813:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":53801,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53785,"src":"823:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"813:16:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53799,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54087,"src":"790:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":53803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"790:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53804,"nodeType":"ExpressionStatement","src":"790:40:76"},{"assignments":[53806],"declarations":[{"constant":false,"id":53806,"mutability":"mutable","name":"id","nameLocation":"849:2:76","nodeType":"VariableDeclaration","scope":53829,"src":"841:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53805,"name":"bytes32","nodeType":"ElementaryTypeName","src":"841:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":53818,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":53812,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"889:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}],"id":53811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"881:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":53810,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:76","typeDescriptions":{}}},"id":53813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"881:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"896:7:76","subExpression":{"id":53814,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53766,"src":"896:5:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":53808,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"864:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":53809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"868:12:76","memberName":"encodePacked","nodeType":"MemberAccess","src":"864:16:76","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":53816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"864:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":53807,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"854:9:76","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":53817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"854:51:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"841:64:76"},{"eventCall":{"arguments":[{"id":53820,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53806,"src":"946:2:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":53821,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"950:2:76","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":53822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"953:6:76","memberName":"origin","nodeType":"MemberAccess","src":"950:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53823,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53783,"src":"961:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":53824,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53785,"src":"971:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53819,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53273,"src":"921:24:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":53825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"921:57:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53826,"nodeType":"EmitStatement","src":"916:62:76"},{"expression":{"id":53827,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53806,"src":"996:2:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":53789,"id":53828,"nodeType":"Return","src":"989:9:76"}]},"baseFunctions":[53349],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"637:11:76","parameters":{"id":53786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53783,"mutability":"mutable","name":"_payload","nameLocation":"664:8:76","nodeType":"VariableDeclaration","scope":53830,"src":"649:23:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53782,"name":"bytes","nodeType":"ElementaryTypeName","src":"649:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":53785,"mutability":"mutable","name":"_value","nameLocation":"682:6:76","nodeType":"VariableDeclaration","scope":53830,"src":"674:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53784,"name":"uint128","nodeType":"ElementaryTypeName","src":"674:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"648:41:76"},"returnParameters":{"id":53789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53788,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53830,"src":"716:7:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53787,"name":"bytes32","nodeType":"ElementaryTypeName","src":"716:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"715:9:76"},"scope":54126,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":53863,"nodeType":"FunctionDefinition","src":"1011:288:76","nodes":[],"body":{"id":53862,"nodeType":"Block","src":"1108:191:76","nodes":[],"statements":[{"assignments":[53840],"declarations":[{"constant":false,"id":53840,"mutability":"mutable","name":"baseFee","nameLocation":"1126:7:76","nodeType":"VariableDeclaration","scope":53862,"src":"1118:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53839,"name":"uint128","nodeType":"ElementaryTypeName","src":"1118:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":53847,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":53842,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"1144:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":53843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1144:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":53841,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"1136:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53738_$","typeString":"type(contract IRouter)"}},"id":53844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53738","typeString":"contract IRouter"}},"id":53845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1154:7:76","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53697,"src":"1136:25:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":53846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1136:27:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1118:45:76"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":53851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53849,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53840,"src":"1196:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":53850,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53836,"src":"1206:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1196:16:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53848,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54087,"src":"1173:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":53852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1173:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53853,"nodeType":"ExpressionStatement","src":"1173:40:76"},{"eventCall":{"arguments":[{"id":53855,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53832,"src":"1252:10:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":53856,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"1264:2:76","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":53857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1267:6:76","memberName":"origin","nodeType":"MemberAccess","src":"1264:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53858,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53834,"src":"1275:8:76","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":53859,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53836,"src":"1285:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53854,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53284,"src":"1229:22:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":53860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1229:63:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53861,"nodeType":"EmitStatement","src":"1224:68:76"}]},"baseFunctions":[53358],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"1020:9:76","parameters":{"id":53837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53832,"mutability":"mutable","name":"_repliedTo","nameLocation":"1038:10:76","nodeType":"VariableDeclaration","scope":53863,"src":"1030:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1030:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":53834,"mutability":"mutable","name":"_payload","nameLocation":"1065:8:76","nodeType":"VariableDeclaration","scope":53863,"src":"1050:23:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53833,"name":"bytes","nodeType":"ElementaryTypeName","src":"1050:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":53836,"mutability":"mutable","name":"_value","nameLocation":"1083:6:76","nodeType":"VariableDeclaration","scope":53863,"src":"1075:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53835,"name":"uint128","nodeType":"ElementaryTypeName","src":"1075:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1029:61:76"},"returnParameters":{"id":53838,"nodeType":"ParameterList","parameters":[],"src":"1108:0:76"},"scope":54126,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":53875,"nodeType":"FunctionDefinition","src":"1305:184:76","nodes":[],"body":{"id":53874,"nodeType":"Block","src":"1354:135:76","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":53869,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53865,"src":"1460:10:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":53870,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"1472:2:76","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":53871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1475:6:76","memberName":"origin","nodeType":"MemberAccess","src":"1472:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":53868,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53291,"src":"1437:22:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":53872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1437:45:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53873,"nodeType":"EmitStatement","src":"1432:50:76"}]},"baseFunctions":[53363],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"1314:10:76","parameters":{"id":53866,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53865,"mutability":"mutable","name":"_claimedId","nameLocation":"1333:10:76","nodeType":"VariableDeclaration","scope":53875,"src":"1325:18:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53864,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1325:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1324:20:76"},"returnParameters":{"id":53867,"nodeType":"ParameterList","parameters":[],"src":"1354:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53889,"nodeType":"FunctionDefinition","src":"1495:167:76","nodes":[],"body":{"id":53888,"nodeType":"Block","src":"1560:102:76","nodes":[],"statements":[{"expression":{"arguments":[{"id":53881,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53877,"src":"1593:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53880,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54087,"src":"1570:22:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":53882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1570:30:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53883,"nodeType":"ExpressionStatement","src":"1570:30:76"},{"eventCall":{"arguments":[{"id":53885,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53877,"src":"1648:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53884,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53296,"src":"1616:31:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":53886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1616:39:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53887,"nodeType":"EmitStatement","src":"1611:44:76"}]},"baseFunctions":[53368],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"1504:22:76","parameters":{"id":53878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53877,"mutability":"mutable","name":"_value","nameLocation":"1535:6:76","nodeType":"VariableDeclaration","scope":53889,"src":"1527:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53876,"name":"uint128","nodeType":"ElementaryTypeName","src":"1527:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1526:16:76"},"returnParameters":{"id":53879,"nodeType":"ParameterList","parameters":[],"src":"1560:0:76"},"scope":54126,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":53910,"nodeType":"FunctionDefinition","src":"1720:202:76","nodes":[],"body":{"id":53909,"nodeType":"Block","src":"1783:139:76","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":53898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":53896,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53763,"src":"1797:9:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":53897,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53891,"src":"1810:12:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1797:25:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":53908,"nodeType":"IfStatement","src":"1793:123:76","trueBody":{"id":53907,"nodeType":"Block","src":"1824:92:76","statements":[{"expression":{"id":53901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":53899,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53763,"src":"1838:9:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":53900,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53891,"src":"1850:12:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1838:24:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":53902,"nodeType":"ExpressionStatement","src":"1838:24:76"},{"eventCall":{"arguments":[{"id":53904,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53763,"src":"1895:9:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":53903,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53262,"src":"1882:12:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":53905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1882:23:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53906,"nodeType":"EmitStatement","src":"1877:28:76"}]}}]},"baseFunctions":[53373],"functionSelector":"8ea59e1d","implemented":true,"kind":"function","modifiers":[{"id":53894,"kind":"modifierInvocation","modifierName":{"id":53893,"name":"onlyRouter","nameLocations":["1772:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"1772:10:76"},"nodeType":"ModifierInvocation","src":"1772:10:76"}],"name":"updateState","nameLocation":"1729:11:76","parameters":{"id":53892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53891,"mutability":"mutable","name":"newStateHash","nameLocation":"1749:12:76","nodeType":"VariableDeclaration","scope":53910,"src":"1741:20:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53890,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1741:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1740:22:76"},"returnParameters":{"id":53895,"nodeType":"ParameterList","parameters":[],"src":"1783:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53931,"nodeType":"FunctionDefinition","src":"1928:264:76","nodes":[],"body":{"id":53930,"nodeType":"Block","src":"2041:151:76","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":53924,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53912,"src":"2153:2:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":53925,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53914,"src":"2157:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53926,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53916,"src":"2170:7:76","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":53927,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53918,"src":"2179:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53923,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53307,"src":"2145:7:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":53928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2145:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53929,"nodeType":"EmitStatement","src":"2140:45:76"}]},"baseFunctions":[53384],"functionSelector":"c2df6009","implemented":true,"kind":"function","modifiers":[{"id":53921,"kind":"modifierInvocation","modifierName":{"id":53920,"name":"onlyRouter","nameLocations":["2030:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"2030:10:76"},"nodeType":"ModifierInvocation","src":"2030:10:76"}],"name":"messageSent","nameLocation":"1937:11:76","parameters":{"id":53919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53912,"mutability":"mutable","name":"id","nameLocation":"1957:2:76","nodeType":"VariableDeclaration","scope":53931,"src":"1949:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53911,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1949:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":53914,"mutability":"mutable","name":"destination","nameLocation":"1969:11:76","nodeType":"VariableDeclaration","scope":53931,"src":"1961:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53913,"name":"address","nodeType":"ElementaryTypeName","src":"1961:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53916,"mutability":"mutable","name":"payload","nameLocation":"1997:7:76","nodeType":"VariableDeclaration","scope":53931,"src":"1982:22:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53915,"name":"bytes","nodeType":"ElementaryTypeName","src":"1982:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":53918,"mutability":"mutable","name":"value","nameLocation":"2014:5:76","nodeType":"VariableDeclaration","scope":53931,"src":"2006:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53917,"name":"uint128","nodeType":"ElementaryTypeName","src":"2006:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1948:72:76"},"returnParameters":{"id":53922,"nodeType":"ParameterList","parameters":[],"src":"2041:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53959,"nodeType":"FunctionDefinition","src":"2198:260:76","nodes":[],"body":{"id":53958,"nodeType":"Block","src":"2352:106:76","nodes":[],"statements":[{"expression":{"arguments":[{"id":53947,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53933,"src":"2375:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53948,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53937,"src":"2388:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53946,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54125,"src":"2362:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":53949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2362:32:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53950,"nodeType":"ExpressionStatement","src":"2362:32:76"},{"eventCall":{"arguments":[{"id":53952,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53935,"src":"2416:7:76","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":53953,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53937,"src":"2425:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":53954,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53939,"src":"2432:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":53955,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53941,"src":"2441:9:76","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":53951,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53318,"src":"2410:5:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":53956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2410:41:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53957,"nodeType":"EmitStatement","src":"2405:46:76"}]},"baseFunctions":[53397],"functionSelector":"c78bde77","implemented":true,"kind":"function","modifiers":[{"id":53944,"kind":"modifierInvocation","modifierName":{"id":53943,"name":"onlyRouter","nameLocations":["2337:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"2337:10:76"},"nodeType":"ModifierInvocation","src":"2337:10:76"}],"name":"replySent","nameLocation":"2207:9:76","parameters":{"id":53942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53933,"mutability":"mutable","name":"destination","nameLocation":"2225:11:76","nodeType":"VariableDeclaration","scope":53959,"src":"2217:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53932,"name":"address","nodeType":"ElementaryTypeName","src":"2217:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53935,"mutability":"mutable","name":"payload","nameLocation":"2253:7:76","nodeType":"VariableDeclaration","scope":53959,"src":"2238:22:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53934,"name":"bytes","nodeType":"ElementaryTypeName","src":"2238:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":53937,"mutability":"mutable","name":"value","nameLocation":"2270:5:76","nodeType":"VariableDeclaration","scope":53959,"src":"2262:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53936,"name":"uint128","nodeType":"ElementaryTypeName","src":"2262:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":53939,"mutability":"mutable","name":"replyTo","nameLocation":"2285:7:76","nodeType":"VariableDeclaration","scope":53959,"src":"2277:15:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53938,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2277:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":53941,"mutability":"mutable","name":"replyCode","nameLocation":"2301:9:76","nodeType":"VariableDeclaration","scope":53959,"src":"2294:16:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":53940,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2294:6:76","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2216:95:76"},"returnParameters":{"id":53945,"nodeType":"ParameterList","parameters":[],"src":"2352:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53981,"nodeType":"FunctionDefinition","src":"2464:192:76","nodes":[],"body":{"id":53980,"nodeType":"Block","src":"2561:95:76","nodes":[],"statements":[{"expression":{"arguments":[{"id":53971,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53963,"src":"2584:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53972,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53965,"src":"2597:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53970,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54125,"src":"2571:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":53973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2571:32:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53974,"nodeType":"ExpressionStatement","src":"2571:32:76"},{"eventCall":{"arguments":[{"id":53976,"name":"claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53961,"src":"2632:9:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":53977,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53965,"src":"2643:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53975,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53325,"src":"2619:12:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":53978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2619:30:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53979,"nodeType":"EmitStatement","src":"2614:35:76"}]},"baseFunctions":[53406],"functionSelector":"14503e51","implemented":true,"kind":"function","modifiers":[{"id":53968,"kind":"modifierInvocation","modifierName":{"id":53967,"name":"onlyRouter","nameLocations":["2550:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"2550:10:76"},"nodeType":"ModifierInvocation","src":"2550:10:76"}],"name":"valueClaimed","nameLocation":"2473:12:76","parameters":{"id":53966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53961,"mutability":"mutable","name":"claimedId","nameLocation":"2494:9:76","nodeType":"VariableDeclaration","scope":53981,"src":"2486:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53960,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2486:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":53963,"mutability":"mutable","name":"destination","nameLocation":"2513:11:76","nodeType":"VariableDeclaration","scope":53981,"src":"2505:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53962,"name":"address","nodeType":"ElementaryTypeName","src":"2505:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53965,"mutability":"mutable","name":"value","nameLocation":"2534:5:76","nodeType":"VariableDeclaration","scope":53981,"src":"2526:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53964,"name":"uint128","nodeType":"ElementaryTypeName","src":"2526:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2485:55:76"},"returnParameters":{"id":53969,"nodeType":"ParameterList","parameters":[],"src":"2561:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":53995,"nodeType":"FunctionDefinition","src":"2662:114:76","nodes":[],"body":{"id":53994,"nodeType":"Block","src":"2730:46:76","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":53989,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"2753:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":53990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2753:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":53991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53983,"src":"2763:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":53988,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54125,"src":"2740:12:76","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":53992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2740:29:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":53993,"nodeType":"ExpressionStatement","src":"2740:29:76"}]},"baseFunctions":[53411],"functionSelector":"dca4a373","implemented":true,"kind":"function","modifiers":[{"id":53986,"kind":"modifierInvocation","modifierName":{"id":53985,"name":"onlyRouter","nameLocations":["2719:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"2719:10:76"},"nodeType":"ModifierInvocation","src":"2719:10:76"}],"name":"executableBalanceBurned","nameLocation":"2671:23:76","parameters":{"id":53984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53983,"mutability":"mutable","name":"value","nameLocation":"2703:5:76","nodeType":"VariableDeclaration","scope":53995,"src":"2695:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53982,"name":"uint128","nodeType":"ElementaryTypeName","src":"2695:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2694:15:76"},"returnParameters":{"id":53987,"nodeType":"ParameterList","parameters":[],"src":"2730:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54037,"nodeType":"FunctionDefinition","src":"2782:459:76","nodes":[],"body":{"id":54036,"nodeType":"Block","src":"2925:316:76","nodes":[],"statements":[{"assignments":[54009],"declarations":[{"constant":false,"id":54009,"mutability":"mutable","name":"initNonce","nameLocation":"3012:9:76","nodeType":"VariableDeclaration","scope":54036,"src":"3004:17:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54008,"name":"uint256","nodeType":"ElementaryTypeName","src":"3004:7:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54011,"initialValue":{"hexValue":"30","id":54010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3024:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3004:21:76"},{"assignments":[54013],"declarations":[{"constant":false,"id":54013,"mutability":"mutable","name":"id","nameLocation":"3043:2:76","nodeType":"VariableDeclaration","scope":54036,"src":"3035:10:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54012,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3035:7:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54024,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54019,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3083:4:76","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54126","typeString":"contract Mirror"}],"id":54018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3075:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54017,"name":"address","nodeType":"ElementaryTypeName","src":"3075:7:76","typeDescriptions":{}}},"id":54020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3075:13:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54021,"name":"initNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54009,"src":"3090:9:76","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54015,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3058:3:76","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3062:12:76","memberName":"encodePacked","nodeType":"MemberAccess","src":"3058:16:76","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3058:42:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54014,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3048:9:76","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54023,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3048:53:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3035:66:76"},{"eventCall":{"arguments":[{"id":54026,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54003,"src":"3149:17:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54025,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53296,"src":"3117:31:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3117:50:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54028,"nodeType":"EmitStatement","src":"3112:55:76"},{"eventCall":{"arguments":[{"id":54030,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54013,"src":"3207:2:76","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54031,"name":"source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53997,"src":"3211:6:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54032,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53999,"src":"3219:7:76","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54033,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54001,"src":"3228:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54029,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53273,"src":"3182:24:76","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3182:52:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54035,"nodeType":"EmitStatement","src":"3177:57:76"}]},"baseFunctions":[53422],"functionSelector":"de1dd2e0","implemented":true,"kind":"function","modifiers":[{"id":54006,"kind":"modifierInvocation","modifierName":{"id":54005,"name":"onlyRouter","nameLocations":["2910:10:76"],"nodeType":"IdentifierPath","referencedDeclaration":54050,"src":"2910:10:76"},"nodeType":"ModifierInvocation","src":"2910:10:76"}],"name":"initMessage","nameLocation":"2791:11:76","parameters":{"id":54004,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53997,"mutability":"mutable","name":"source","nameLocation":"2811:6:76","nodeType":"VariableDeclaration","scope":54037,"src":"2803:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53996,"name":"address","nodeType":"ElementaryTypeName","src":"2803:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":53999,"mutability":"mutable","name":"payload","nameLocation":"2834:7:76","nodeType":"VariableDeclaration","scope":54037,"src":"2819:22:76","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53998,"name":"bytes","nodeType":"ElementaryTypeName","src":"2819:5:76","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54001,"mutability":"mutable","name":"value","nameLocation":"2851:5:76","nodeType":"VariableDeclaration","scope":54037,"src":"2843:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54000,"name":"uint128","nodeType":"ElementaryTypeName","src":"2843:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54003,"mutability":"mutable","name":"executableBalance","nameLocation":"2866:17:76","nodeType":"VariableDeclaration","scope":54037,"src":"2858:25:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54002,"name":"uint128","nodeType":"ElementaryTypeName","src":"2858:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2802:82:76"},"returnParameters":{"id":54007,"nodeType":"ParameterList","parameters":[],"src":"2925:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54050,"nodeType":"ModifierDefinition","src":"3247:131:76","nodes":[],"body":{"id":54049,"nodeType":"Block","src":"3269:109:76","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54040,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3287:3:76","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3291:6:76","memberName":"sender","nodeType":"MemberAccess","src":"3287:10:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54042,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"3301:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3301:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3287:22:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6520666f72206f7065726174696f6e","id":54045,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3311:48:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""},"value":"only router contract is eligible for operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""}],"id":54039,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3279:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3279:81:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54047,"nodeType":"ExpressionStatement","src":"3279:81:76"},{"id":54048,"nodeType":"PlaceholderStatement","src":"3370:1:76"}]},"name":"onlyRouter","nameLocation":"3256:10:76","parameters":{"id":54038,"nodeType":"ParameterList","parameters":[],"src":"3266:2:76"},"virtual":false,"visibility":"internal"},{"id":54087,"nodeType":"FunctionDefinition","src":"3418:332:76","nodes":[],"body":{"id":54086,"nodeType":"Block","src":"3474:276:76","nodes":[],"statements":[{"assignments":[54056],"declarations":[{"constant":false,"id":54056,"mutability":"mutable","name":"routerAddress","nameLocation":"3492:13:76","nodeType":"VariableDeclaration","scope":54086,"src":"3484:21:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54055,"name":"address","nodeType":"ElementaryTypeName","src":"3484:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54059,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54057,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"3508:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3508:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3484:32:76"},{"assignments":[54062],"declarations":[{"constant":false,"id":54062,"mutability":"mutable","name":"wrappedVara","nameLocation":"3540:11:76","nodeType":"VariableDeclaration","scope":54086,"src":"3527:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"},"typeName":{"id":54061,"nodeType":"UserDefinedTypeName","pathNode":{"id":54060,"name":"IWrappedVara","nameLocations":["3527:12:76"],"nodeType":"IdentifierPath","referencedDeclaration":53749,"src":"3527:12:76"},"referencedDeclaration":53749,"src":"3527:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54070,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54065,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"3575:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54064,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"3567:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53738_$","typeString":"type(contract IRouter)"}},"id":54066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3567:22:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53738","typeString":"contract IRouter"}},"id":54067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3590:11:76","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53597,"src":"3567:34:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3567:36:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54063,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53749,"src":"3554:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53749_$","typeString":"type(contract IWrappedVara)"}},"id":54069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3554:50:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"3527:77:76"},{"assignments":[54072],"declarations":[{"constant":false,"id":54072,"mutability":"mutable","name":"success","nameLocation":"3620:7:76","nodeType":"VariableDeclaration","scope":54086,"src":"3615:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54071,"name":"bool","nodeType":"ElementaryTypeName","src":"3615:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54080,"initialValue":{"arguments":[{"expression":{"id":54075,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"3655:2:76","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3658:6:76","memberName":"origin","nodeType":"MemberAccess","src":"3655:9:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54077,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54056,"src":"3666:13:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54078,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54052,"src":"3681:6:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54073,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54062,"src":"3630:11:76","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"id":54074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3642:12:76","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"3630:24:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":54079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3630:58:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3615:73:76"},{"expression":{"arguments":[{"id":54082,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54072,"src":"3707:7:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":54083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3716:26:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":54081,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3699:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3699:44:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54085,"nodeType":"ExpressionStatement","src":"3699:44:76"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValueToRouter","nameLocation":"3427:22:76","parameters":{"id":54053,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54052,"mutability":"mutable","name":"_value","nameLocation":"3458:6:76","nodeType":"VariableDeclaration","scope":54087,"src":"3450:14:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54051,"name":"uint128","nodeType":"ElementaryTypeName","src":"3450:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3449:16:76"},"returnParameters":{"id":54054,"nodeType":"ParameterList","parameters":[],"src":"3474:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":54125,"nodeType":"FunctionDefinition","src":"3756:316:76","nodes":[],"body":{"id":54124,"nodeType":"Block","src":"3822:250:76","nodes":[],"statements":[{"assignments":[54096],"declarations":[{"constant":false,"id":54096,"mutability":"mutable","name":"wrappedVara","nameLocation":"3845:11:76","nodeType":"VariableDeclaration","scope":54124,"src":"3832:24:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"},"typeName":{"id":54095,"nodeType":"UserDefinedTypeName","pathNode":{"id":54094,"name":"IWrappedVara","nameLocations":["3832:12:76"],"nodeType":"IdentifierPath","referencedDeclaration":53749,"src":"3832:12:76"},"referencedDeclaration":53749,"src":"3832:12:76","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54105,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54099,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53781,"src":"3880:6:76","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3880:8:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54098,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"3872:7:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53738_$","typeString":"type(contract IRouter)"}},"id":54101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:17:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53738","typeString":"contract IRouter"}},"id":54102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3890:11:76","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53597,"src":"3872:29:76","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3872:31:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54097,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53749,"src":"3859:12:76","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53749_$","typeString":"type(contract IWrappedVara)"}},"id":54104,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3859:45:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"3832:72:76"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54106,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54091,"src":"3919:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3928:1:76","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3919:10:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54123,"nodeType":"IfStatement","src":"3915:151:76","trueBody":{"id":54122,"nodeType":"Block","src":"3931:135:76","statements":[{"assignments":[54110],"declarations":[{"constant":false,"id":54110,"mutability":"mutable","name":"success","nameLocation":"3950:7:76","nodeType":"VariableDeclaration","scope":54122,"src":"3945:12:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54109,"name":"bool","nodeType":"ElementaryTypeName","src":"3945:4:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54116,"initialValue":{"arguments":[{"id":54113,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54089,"src":"3981:11:76","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54114,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54091,"src":"3994:5:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54111,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54096,"src":"3960:11:76","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"id":54112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3972:8:76","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"3960:20:76","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":54115,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3960:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3945:55:76"},{"expression":{"arguments":[{"id":54118,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54110,"src":"4023:7:76","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f2073656e64205756617261","id":54119,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4032:22:76","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""},"value":"failed to send WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""}],"id":54117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4015:7:76","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4015:40:76","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54121,"nodeType":"ExpressionStatement","src":"4015:40:76"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendValueTo","nameLocation":"3765:12:76","parameters":{"id":54092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54089,"mutability":"mutable","name":"destination","nameLocation":"3786:11:76","nodeType":"VariableDeclaration","scope":54125,"src":"3778:19:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54088,"name":"address","nodeType":"ElementaryTypeName","src":"3778:7:76","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54091,"mutability":"mutable","name":"value","nameLocation":"3807:5:76","nodeType":"VariableDeclaration","scope":54125,"src":"3799:13:76","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54090,"name":"uint128","nodeType":"ElementaryTypeName","src":"3799:7:76","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3777:36:76"},"returnParameters":{"id":54093,"nodeType":"ParameterList","parameters":[],"src":"3822:0:76"},"scope":54126,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":53760,"name":"IMirror","nameLocations":["304:7:76"],"nodeType":"IdentifierPath","referencedDeclaration":53423,"src":"304:7:76"},"id":53761,"nodeType":"InheritanceSpecifier","src":"304:7:76"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54126,53423],"name":"Mirror","nameLocation":"294:6:76","scope":54127,"usedErrors":[],"usedEvents":[53262,53273,53284,53291,53296,53307,53318,53325]}],"license":"UNLICENSED"},"id":76} \ No newline at end of file +{"abi":[{"type":"function","name":"claimValue","inputs":[{"name":"_claimedId","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceBurned","inputs":[{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executableBalanceTopUp","inputs":[{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"initMessage","inputs":[{"name":"source","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"executableBalance","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"messageSent","inputs":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"nonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"replySent","inputs":[{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyTo","type":"bytes32","internalType":"bytes32"},{"name":"replyCode","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"sendMessage","inputs":[{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"payable"},{"type":"function","name":"sendReply","inputs":[{"name":"_repliedTo","type":"bytes32","internalType":"bytes32"},{"name":"_payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"stateHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"updateState","inputs":[{"name":"newStateHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"valueClaimed","inputs":[{"name":"claimedId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"ExecutableBalanceTopUpRequested","inputs":[{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Message","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"destination","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MessageQueueingRequested","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"Reply","inputs":[{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"replyTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"replyCode","type":"bytes4","indexed":true,"internalType":"bytes4"}],"anonymous":false},{"type":"event","name":"ReplyQueueingRequested","inputs":[{"name":"repliedTo","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"},{"name":"payload","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"StateChanged","inputs":[{"name":"stateHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"ValueClaimed","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"value","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"ValueClaimingRequested","inputs":[{"name":"claimedId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"source","type":"address","indexed":true,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x60808060405234601557610c2f908161001a8239f35b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806314503e51146106df57806329336f3914610610578063701da98e146105f4578063704ed542146105a25780638ea59e1d1461054157806391d5a64c14610500578063affed0e0146104e3578063c2df60091461044d578063c78bde7714610386578063d56242221461023f578063dca4a37314610201578063de1dd2e0146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c2610958565b6040516001600160a01b039091168152f35b5f80fd5b346100d45760803660031901126100d4576100f161076b565b60243567ffffffffffffffff81116100d4576101327f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69136906004016107c3565b926101fc61013e610781565b6101466107ad565b956101626001600160a01b0361015a610958565b1633146107f1565b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206001546101918161092b565b6001556040513060601b6bffffffffffffffffffffffff191683820190815260148101929092526101cf81603484015b03601f198101835282610854565b519020986001600160801b0360405191168152a16040516001600160a01b039094169693948594856108fd565b0390a2005b346100d45760203660031901126100d45761023d61021d610797565b6102306001600160a01b0361015a610958565b610238610958565b6109c3565b005b60403660031901126100d45760043567ffffffffffffffff81116100d45761026b9036906004016107c3565b602435916001600160801b03831683036100d45760049260206001600160a01b03610294610958565b16604051958680926337792e1d60e11b82525afa90811561037b576102ed6102e8827f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6946020985f9161034e575b506108a9565b610aee565b6001546102f98161092b565b6001556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261032d81603484016101c1565b51902093610343604051928392329688856108fd565b0390a2604051908152f35b61036e9150893d8b11610374575b6103668183610854565b81019061088a565b896102e2565b503d61035c565b6040513d5f823e3d90fd5b346100d45760a03660031901126100d45761039f61076b565b60243567ffffffffffffffff81116100d4576103bf9036906004016107c3565b91906103c9610781565b926084359363ffffffff60e01b85168095036100d4577fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69361041a9082906102386001600160a01b0361015a610958565b6001600160801b036104396040519485946060865260608601916108dd565b9116602083015260643560408301520390a2005b346100d45760803660031901126100d457610466610755565b60443567ffffffffffffffff81116100d4576104a77f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117739136906004016107c3565b90926101fc6104b46107ad565b6104c76001600160a01b0361015a610958565b6040516001600160a01b039093169592938493600435856108fd565b346100d4575f3660031901126100d4576020600154604051908152f35b346100d45760203660031901126100d45760405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203292a2005b346100d45760203660031901126100d4576004356105686001600160a01b0361015a610958565b805f540361057257005b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930925f55604051908152a1005b60203660031901126100d4577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206105d9610797565b6105e281610aee565b6001600160801b0360405191168152a1005b346100d4575f3660031901126100d45760205f54604051908152f35b60603660031901126100d45760243567ffffffffffffffff81116100d45761063d600491369083016107c3565b610648929192610781565b9060206001600160a01b0361065b610958565b16604051948580926337792e1d60e11b82525afa92831561037b576102e8837fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f956106ac935f916106c057506108a9565b6101fc6040519283923296600435856108fd565b6106d9915060203d602011610374576103668183610854565b886102e2565b346100d45760603660031901126100d4577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783604061071b610755565b61073c610726610781565b9182906102386001600160a01b0361015a610958565b6001600160801b038251916004358352166020820152a1005b602435906001600160a01b03821682036100d457565b600435906001600160a01b03821682036100d457565b604435906001600160801b03821682036100d457565b600435906001600160801b03821682036100d457565b606435906001600160801b03821682036100d457565b9181601f840112156100d45782359167ffffffffffffffff83116100d457602083818601950101116100d457565b156107f857565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff82111761087657604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126100d457516001600160801b03811681036100d45790565b906001600160801b03809116911601906001600160801b0382116108c957565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610924916001600160801b039397969786526060602087015260608601916108dd565b9416910152565b5f1981146108c95760010190565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa90811561037b575f9161097f575090565b6109a1915060203d6020116109a4575b6109998183610854565b810190610939565b90565b503d61098f565b908160209103126100d4575180151581036100d45790565b60049160206001600160a01b036109d8610958565b166040519485809263088f50cf60e41b82525afa92831561037b575f93610ac4575b506001600160801b031680610a0e57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af190811561037b575f91610a95575b5015610a5957565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b610ab7915060203d602011610abd575b610aaf8183610854565b8101906109ab565b5f610a51565b503d610aa5565b6001600160801b03919350610ae79060203d6020116109a4576109998183610854565b92906109fa565b6001600160a01b03610afe610958565b60405163088f50cf60e41b8152911691602082600481865afa801561037b576001600160801b03935f6064926020958291610bdc575b5060405196879586946323b872dd60e01b8652326004870152602486015216604484015260018060a01b03165af190811561037b575f91610bbd575b5015610b7857565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b610bd6915060203d602011610abd57610aaf8183610854565b5f610b70565b610bf39150863d88116109a4576109998183610854565b5f610b3456fea2646970667358221220068a46b87e539288ce60019b9091c4d5423d905301f7d59bfe482cb2aafe3dad64736f6c634300081a0033","sourceMap":"285:3800:79:-:0;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806314503e51146106df57806329336f3914610610578063701da98e146105f4578063704ed542146105a25780638ea59e1d1461054157806391d5a64c14610500578063affed0e0146104e3578063c2df60091461044d578063c78bde7714610386578063d56242221461023f578063dca4a37314610201578063de1dd2e0146100d85763f887ea40146100a8575f80fd5b346100d4575f3660031901126100d45760206100c2610958565b6040516001600160a01b039091168152f35b5f80fd5b346100d45760803660031901126100d4576100f161076b565b60243567ffffffffffffffff81116100d4576101327f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c69136906004016107c3565b926101fc61013e610781565b6101466107ad565b956101626001600160a01b0361015a610958565b1633146107f1565b7f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206001546101918161092b565b6001556040513060601b6bffffffffffffffffffffffff191683820190815260148101929092526101cf81603484015b03601f198101835282610854565b519020986001600160801b0360405191168152a16040516001600160a01b039094169693948594856108fd565b0390a2005b346100d45760203660031901126100d45761023d61021d610797565b6102306001600160a01b0361015a610958565b610238610958565b6109c3565b005b60403660031901126100d45760043567ffffffffffffffff81116100d45761026b9036906004016107c3565b602435916001600160801b03831683036100d45760049260206001600160a01b03610294610958565b16604051958680926337792e1d60e11b82525afa90811561037b576102ed6102e8827f3527a119fe7f25d965cb7abc58139f031e8909b8592488c7926862d569e435c6946020985f9161034e575b506108a9565b610aee565b6001546102f98161092b565b6001556040513060601b6bffffffffffffffffffffffff1916878201908152601481019290925261032d81603484016101c1565b51902093610343604051928392329688856108fd565b0390a2604051908152f35b61036e9150893d8b11610374575b6103668183610854565b81019061088a565b896102e2565b503d61035c565b6040513d5f823e3d90fd5b346100d45760a03660031901126100d45761039f61076b565b60243567ffffffffffffffff81116100d4576103bf9036906004016107c3565b91906103c9610781565b926084359363ffffffff60e01b85168095036100d4577fe240a19e4a4ef8e5861c0eea48f9ab2cdb47bfe98347c94ccabb9c45f7d8d1c69361041a9082906102386001600160a01b0361015a610958565b6001600160801b036104396040519485946060865260608601916108dd565b9116602083015260643560408301520390a2005b346100d45760803660031901126100d457610466610755565b60443567ffffffffffffffff81116100d4576104a77f9c4ffe7286aed9eb205c8adb12b51219122c7e56c67017f312af0e15f80117739136906004016107c3565b90926101fc6104b46107ad565b6104c76001600160a01b0361015a610958565b6040516001600160a01b039093169592938493600435856108fd565b346100d4575f3660031901126100d4576020600154604051908152f35b346100d45760203660031901126100d45760405160043581527f0354817698da67944179457b89e15c1c57ca7b8cfd9d80eab1d09c258f6c497860203292a2005b346100d45760203660031901126100d4576004356105686001600160a01b0361015a610958565b805f540361057257005b6020817f5c601f20d27885120b6fed87a4c313849b86eaddc9d28e7685e2e66a9c080930925f55604051908152a1005b60203660031901126100d4577f85ba4ebb0990fc588bfbb287e2e810a77c858e0a69485d6a938c52c05423666760206105d9610797565b6105e281610aee565b6001600160801b0360405191168152a1005b346100d4575f3660031901126100d45760205f54604051908152f35b60603660031901126100d45760243567ffffffffffffffff81116100d45761063d600491369083016107c3565b610648929192610781565b9060206001600160a01b0361065b610958565b16604051948580926337792e1d60e11b82525afa92831561037b576102e8837fb64dad8a89028819d048f9c75ec4c516341da68972bb68a8e1262b5443c61e7f956106ac935f916106c057506108a9565b6101fc6040519283923296600435856108fd565b6106d9915060203d602011610374576103668183610854565b886102e2565b346100d45760603660031901126100d4577fa217f2987a7942c2966f1fd16d39097862308325249e8b9fb4c00a430fd65783604061071b610755565b61073c610726610781565b9182906102386001600160a01b0361015a610958565b6001600160801b038251916004358352166020820152a1005b602435906001600160a01b03821682036100d457565b600435906001600160a01b03821682036100d457565b604435906001600160801b03821682036100d457565b600435906001600160801b03821682036100d457565b606435906001600160801b03821682036100d457565b9181601f840112156100d45782359167ffffffffffffffff83116100d457602083818601950101116100d457565b156107f857565b60405162461bcd60e51b815260206004820152602e60248201527f6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6560448201526d103337b91037b832b930ba34b7b760911b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff82111761087657604052565b634e487b7160e01b5f52604160045260245ffd5b908160209103126100d457516001600160801b03811681036100d45790565b906001600160801b03809116911601906001600160801b0382116108c957565b634e487b7160e01b5f52601160045260245ffd5b908060209392818452848401375f828201840152601f01601f1916010190565b92604092610924916001600160801b039397969786526060602087015260608601916108dd565b9416910152565b5f1981146108c95760010190565b908160209103126100d457516001600160a01b03811681036100d45790565b6040516303e21fa960e61b8152602081600481305afa90811561037b575f9161097f575090565b6109a1915060203d6020116109a4575b6109998183610854565b810190610939565b90565b503d61098f565b908160209103126100d4575180151581036100d45790565b60049160206001600160a01b036109d8610958565b166040519485809263088f50cf60e41b82525afa92831561037b575f93610ac4575b506001600160801b031680610a0e57505050565b60405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291602091839160449183915f91165af190811561037b575f91610a95575b5015610a5957565b60405162461bcd60e51b81526020600482015260146024820152736661696c656420746f2073656e6420575661726160601b6044820152606490fd5b610ab7915060203d602011610abd575b610aaf8183610854565b8101906109ab565b5f610a51565b503d610aa5565b6001600160801b03919350610ae79060203d6020116109a4576109998183610854565b92906109fa565b6001600160a01b03610afe610958565b60405163088f50cf60e41b8152911691602082600481865afa801561037b576001600160801b03935f6064926020958291610bdc575b5060405196879586946323b872dd60e01b8652326004870152602486015216604484015260018060a01b03165af190811561037b575f91610bbd575b5015610b7857565b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b610bd6915060203d602011610abd57610aaf8183610854565b5f610b70565b610bf39150863d88116109a4576109998183610854565b5f610b3456fea2646970667358221220068a46b87e539288ce60019b9091c4d5423d905301f7d59bfe482cb2aafe3dad64736f6c634300081a0033","sourceMap":"285:3800:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;285:3800:79;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;285:3800:79;;;;;;;;;;;;;;;;-1:-1:-1;;285:3800:79;;;;;;:::i;:::-;;;;;;;;;3193:52;285:3800;;;;;;:::i;:::-;;3193:52;285:3800;;:::i;:::-;;;:::i;:::-;;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;:::-;285:3800;3298:10;:22;3290:81;:::i;:::-;3128:50;285:3800;3029:7;285:3800;3029:7;;;:::i;:::-;;285:3800;;;3094:4;285:3800;;-1:-1:-1;;285:3800:79;3069:42;;;285:3800;;;;;;;;;;3069:42;285:3800;;;;3069:42;;869:40;;3069:42;;;;;;:::i;:::-;285:3800;3059:53;;285:3800;-1:-1:-1;;;;;285:3800:79;;;;;;3128:50;285:3800;;-1:-1:-1;;;;;285:3800:79;;;;;;;;;3193:52;:::i;:::-;;;;285:3800;;;;;;;-1:-1:-1;;285:3800:79;;;;2768:5;285:3800;;:::i;:::-;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;3290:81::-;2758:8;;:::i;:::-;2768:5;:::i;:::-;285:3800;;;;-1:-1:-1;;285:3800:79;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;285:3800:79;;;;;;;;;-1:-1:-1;;;;;766:8:79;;:::i;:::-;285:3800;;;;;;;;;;758:27;;;;;;;;;818:16;;758:27;926:57;758:27;285:3800;758:27;285:3800;758:27;;;285:3800;818:16;;:::i;:::-;;:::i;:::-;901:7;285:3800;901:7;;;:::i;:::-;;285:3800;;;894:4;285:3800;;-1:-1:-1;;285:3800:79;869:40;;;285:3800;;;;;;;;;;869:40;285:3800;;;;869:40;285:3800;869:40;285:3800;859:51;;285:3800;926:57;285:3800;;955:9;;;;926:57;;;;:::i;:::-;;;;285:3800;;;;;;758:27;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;285:3800;;;;;;;;;;;;;;;-1:-1:-1;;285:3800:79;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;2415:41;;2393:5;;285:3800;;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;2393:5::-;-1:-1:-1;;;;;285:3800:79;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2415:41;;;285:3800;;;;;;;-1:-1:-1;;285:3800:79;;;;;;:::i;:::-;;;;;;;;;2150:40;285:3800;;;;;;:::i;:::-;;;2150:40;285:3800;;:::i;:::-;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;3290:81::-;285:3800;;-1:-1:-1;;;;;285:3800:79;;;;;;;;;;;2150:40;:::i;285:3800::-;;;;;;-1:-1:-1;;285:3800:79;;;;;420:20;285:3800;;;;;;;;;;;;;-1:-1:-1;;285:3800:79;;;;;;;;;;1442:45;285:3800;1477:9;1442:45;;285:3800;;;;;;;-1:-1:-1;;285:3800:79;;;;;;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;3290:81::-;285:3800;;;1802:25;1798:123;;285:3800;1798:123;285:3800;;1887:23;285:3800;;;;;;;;1887:23;285:3800;;;;-1:-1:-1;;285:3800:79;;;;1621:39;285:3800;;;:::i;:::-;1598:6;;;:::i;:::-;-1:-1:-1;;;;;285:3800:79;;;;;;1621:39;285:3800;;;;;;;-1:-1:-1;;285:3800:79;;;;;;;;;;;;;;;;-1:-1:-1;;285:3800:79;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1149:8:79;;:::i;:::-;285:3800;;;;;;;;;;1141:27;;;;;;;;;1201:16;1141:27;1234:63;1141:27;1201:16;1141:27;285:3800;1141:27;;;1201:16;;:::i;:::-;1234:63;285:3800;;1269:9;;;;285:3800;;;1234:63;;:::i;1141:27::-;;;;285:3800;1141:27;285:3800;1141:27;;;;;;;:::i;:::-;;;;285:3800;;;;;;-1:-1:-1;;285:3800:79;;;;2624:30;285:3800;;;:::i;:::-;2602:5;285:3800;;:::i;:::-;;;;3290:81;-1:-1:-1;;;;;3312:8:79;;:::i;2602:5::-;-1:-1:-1;;;;;285:3800:79;;;;;;;;;;;;2624:30;285:3800;;;;;-1:-1:-1;;;;;285:3800:79;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;285:3800:79;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;285:3800:79;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;285:3800:79;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;285:3800:79;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;285:3800:79;;;;;;;;;;;;;;;;;-1:-1:-1;;;285:3800:79;;;;;;;;;;869:40;;285:3800;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;285:3800:79;;;;;-1:-1:-1;285:3800:79;;;;;;;;;;;-1:-1:-1;;;;;285:3800:79;;;;;;;:::o;:::-;;-1:-1:-1;;;;;285:3800:79;;;;;;;-1:-1:-1;;;;;285:3800:79;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;285:3800:79;;;;;;;;-1:-1:-1;;285:3800:79;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;285:3800:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::o;:::-;-1:-1:-1;;285:3800:79;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;285:3800:79;;;;;;;:::o;489:108::-;285:3800;;-1:-1:-1;;;554:36:79;;;285:3800;554:36;285:3800;575:4;554:36;;;;;;;-1:-1:-1;554:36:79;;;547:43;489:108;:::o;554:36::-;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;489:108;:::o;554:36::-;;;;;285:3800;;;;;;;;;;;;;;;;;;:::o;3767:316::-;3883:31;;;-1:-1:-1;;;;;3891:8:79;;:::i;:::-;285:3800;;;;;;;;;;3883:31;;;;;;;;;-1:-1:-1;3883:31:79;;;3767:316;285:3800;-1:-1:-1;;;;;285:3800:79;3930:10;3926:151;;3767:316;;;:::o;3926:151::-;285:3800;;-1:-1:-1;;;3971:40:79;;-1:-1:-1;;;;;285:3800:79;;;3883:31;3971:40;;285:3800;;;;;;;;;3883:31;;285:3800;;3971:40;;285:3800;;-1:-1:-1;;285:3800:79;3971:40;;;;;;;-1:-1:-1;3971:40:79;;;3926:151;285:3800;;;;3767:316::o;285:3800::-;;;-1:-1:-1;;;285:3800:79;;3883:31;;285:3800;;;;;;;;-1:-1:-1;;;3971:40:79;285:3800;;;;;;3971:40;;;;3883:31;3971:40;3883:31;3971:40;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;3883:31;-1:-1:-1;;;;;3883:31:79;;;;;;;;;;;;;;;:::i;:::-;;;;;3429:332;-1:-1:-1;;;;;3519:8:79;;:::i;:::-;285:3800;;-1:-1:-1;;;3578:36:79;;285:3800;;;3578:36;285:3800;3578:36;285:3800;;3578:36;;;;;;-1:-1:-1;;;;;3578:36:79;-1:-1:-1;3641:58:79;3578:36;;;;;;;3429:332;285:3800;;;;;;;;;;;3641:58;;3666:9;3578:36;3641:58;;285:3800;;;;;;;;;;;;;;;;3641:58;;;;;;;-1:-1:-1;3641:58:79;;;3429:332;285:3800;;;;3429:332::o;285:3800::-;;;-1:-1:-1;;;285:3800:79;;3578:36;;285:3800;;;;;;;;;;;;;3641:58;;285:3800;3641:58;;;;3578:36;3641:58;3578:36;3641:58;;;;;;;:::i;:::-;;;;3578:36;;;;;;;;;;;;;;:::i;:::-;;;","linkReferences":{}},"methodIdentifiers":{"claimValue(bytes32)":"91d5a64c","executableBalanceBurned(uint128)":"dca4a373","executableBalanceTopUp(uint128)":"704ed542","initMessage(address,bytes,uint128,uint128)":"de1dd2e0","messageSent(bytes32,address,bytes,uint128)":"c2df6009","nonce()":"affed0e0","replySent(address,bytes,uint128,bytes32,bytes4)":"c78bde77","router()":"f887ea40","sendMessage(bytes,uint128)":"d5624222","sendReply(bytes32,bytes,uint128)":"29336f39","stateHash()":"701da98e","updateState(bytes32)":"8ea59e1d","valueClaimed(bytes32,address,uint128)":"14503e51"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ExecutableBalanceTopUpRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"Message\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"MessageQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"Reply\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"repliedTo\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ReplyQueueingRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateHash\",\"type\":\"bytes32\"}],\"name\":\"StateChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"ValueClaimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"}],\"name\":\"ValueClaimingRequested\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_claimedId\",\"type\":\"bytes32\"}],\"name\":\"claimValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceBurned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"executableBalanceTopUp\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"source\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"executableBalance\",\"type\":\"uint128\"}],\"name\":\"initMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"messageSent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"internalType\":\"bytes32\",\"name\":\"replyTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"replyCode\",\"type\":\"bytes4\"}],\"name\":\"replySent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_repliedTo\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"sendReply\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"}],\"name\":\"updateState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"claimedId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"name\":\"valueClaimed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ExecutableBalanceTopUpRequested(uint128)\":{\"details\":\"Emitted when a user requests program's executable balance top up with his tokens. NOTE: It's event for NODES: it requires to top up balance of the program.\"},\"Message(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when the program sends outgoing message. NOTE: It's event for USERS: it informs about new message sent from program.\"},\"MessageQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new message is sent to be queued. NOTE: It's event for NODES: it requires to insert message in the program's queue.\"},\"Reply(bytes,uint128,bytes32,bytes4)\":{\"details\":\"Emitted when the program sends reply message. NOTE: It's event for USERS: it informs about new reply sent from program.\"},\"ReplyQueueingRequested(bytes32,address,bytes,uint128)\":{\"details\":\"Emitted when a new reply is sent and requested to be verified and queued. NOTE: It's event for NODES: it requires to insert message in the program's queue, if message, exists.\"},\"StateChanged(bytes32)\":{\"details\":\"Emitted when the state hash of program is changed. NOTE: It's event for USERS: it informs about state changes.\"},\"ValueClaimed(bytes32,uint128)\":{\"details\":\"Emitted when a user succeed in claiming value request and receives balance. NOTE: It's event for USERS: it informs about value claimed.\"},\"ValueClaimingRequested(bytes32,address)\":{\"details\":\"Emitted when a reply's value is requested to be verified and claimed. NOTE: It's event for NODES: it requires to claim value from message, if exists.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Mirror.sol\":\"Mirror\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf\",\"dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Mirror.sol\":{\"keccak256\":\"0x855debb1eedc59a930167ab2178bd306fdd9a780ad7ed95fdae0c2a344336c10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b94e02729ecce1dab9019b3441840bb7ccebddba00d0c4f266ba490f44a78a77\",\"dweb:/ipfs/Qmf2ibL2SdGbU6bLvcTEm9dR3tr3hTYT6qrDkyVFWrTKV8\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ExecutableBalanceTopUpRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"destination","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"Message","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"MessageQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false},{"internalType":"bytes32","name":"replyTo","type":"bytes32","indexed":false},{"internalType":"bytes4","name":"replyCode","type":"bytes4","indexed":true}],"type":"event","name":"Reply","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"repliedTo","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true},{"internalType":"bytes","name":"payload","type":"bytes","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ReplyQueueingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"stateHash","type":"bytes32","indexed":false}],"type":"event","name":"StateChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"uint128","name":"value","type":"uint128","indexed":false}],"type":"event","name":"ValueClaimed","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32","indexed":false},{"internalType":"address","name":"source","type":"address","indexed":true}],"type":"event","name":"ValueClaimingRequested","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"_claimedId","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"claimValue"},{"inputs":[{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"executableBalanceBurned"},{"inputs":[{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"executableBalanceTopUp"},{"inputs":[{"internalType":"address","name":"source","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"uint128","name":"executableBalance","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"initMessage"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"messageSent"},{"inputs":[],"stateMutability":"view","type":"function","name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"bytes32","name":"replyTo","type":"bytes32"},{"internalType":"bytes4","name":"replyCode","type":"bytes4"}],"stateMutability":"nonpayable","type":"function","name":"replySent"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendMessage","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_repliedTo","type":"bytes32"},{"internalType":"bytes","name":"_payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"sendReply"},{"inputs":[],"stateMutability":"view","type":"function","name":"stateHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"newStateHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"updateState"},{"inputs":[{"internalType":"bytes32","name":"claimedId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"valueClaimed"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Mirror.sol":"Mirror"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6","urls":["bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf","dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL"],"license":"UNLICENSED"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Mirror.sol":{"keccak256":"0x855debb1eedc59a930167ab2178bd306fdd9a780ad7ed95fdae0c2a344336c10","urls":["bzz-raw://b94e02729ecce1dab9019b3441840bb7ccebddba00d0c4f266ba490f44a78a77","dweb:/ipfs/Qmf2ibL2SdGbU6bLvcTEm9dR3tr3hTYT6qrDkyVFWrTKV8"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[{"astId":53976,"contract":"src/Mirror.sol:Mirror","label":"stateHash","offset":0,"slot":"0","type":"t_bytes32"},{"astId":53978,"contract":"src/Mirror.sol:Mirror","label":"nonce","offset":0,"slot":"1","type":"t_uint256"}],"types":{"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/Mirror.sol","id":54340,"exportedSymbols":{"IMirror":[53636],"IMirrorProxy":[53644],"IRouter":[53951],"IWrappedVara":[53962],"Mirror":[54339]},"nodeType":"SourceUnit","src":"39:4047:79","nodes":[{"id":53964,"nodeType":"PragmaDirective","src":"39:24:79","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":53966,"nodeType":"ImportDirective","src":"65:48:79","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54340,"sourceUnit":53645,"symbolAliases":[{"foreign":{"id":53965,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53644,"src":"73:12:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53968,"nodeType":"ImportDirective","src":"114:38:79","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":54340,"sourceUnit":53637,"symbolAliases":[{"foreign":{"id":53967,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53636,"src":"122:7:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53970,"nodeType":"ImportDirective","src":"153:38:79","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54340,"sourceUnit":53952,"symbolAliases":[{"foreign":{"id":53969,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"161:7:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":53972,"nodeType":"ImportDirective","src":"192:48:79","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":54340,"sourceUnit":53963,"symbolAliases":[{"foreign":{"id":53971,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53962,"src":"200:12:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54339,"nodeType":"ContractDefinition","src":"285:3800:79","nodes":[{"id":53976,"nodeType":"VariableDeclaration","src":"318:24:79","nodes":[],"baseFunctions":[53543],"constant":false,"functionSelector":"701da98e","mutability":"mutable","name":"stateHash","nameLocation":"333:9:79","scope":54339,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53975,"name":"bytes32","nodeType":"ElementaryTypeName","src":"318:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":53978,"nodeType":"VariableDeclaration","src":"420:20:79","nodes":[],"baseFunctions":[53548],"constant":false,"functionSelector":"affed0e0","mutability":"mutable","name":"nonce","nameLocation":"435:5:79","scope":54339,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53977,"name":"uint256","nodeType":"ElementaryTypeName","src":"420:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":53993,"nodeType":"FunctionDefinition","src":"489:108:79","nodes":[],"body":{"id":53992,"nodeType":"Block","src":"537:60:79","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[{"id":53986,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"575:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}],"id":53985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"567:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":53984,"name":"address","nodeType":"ElementaryTypeName","src":"567:7:79","typeDescriptions":{}}},"id":53987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"567:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":53983,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53644,"src":"554:12:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirrorProxy_$53644_$","typeString":"type(contract IMirrorProxy)"}},"id":53988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"554:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirrorProxy_$53644","typeString":"contract IMirrorProxy"}},"id":53989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"582:6:79","memberName":"router","nodeType":"MemberAccess","referencedDeclaration":53643,"src":"554:34:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":53990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"554:36:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":53982,"id":53991,"nodeType":"Return","src":"547:43:79"}]},"baseFunctions":[53553],"functionSelector":"f887ea40","implemented":true,"kind":"function","modifiers":[],"name":"router","nameLocation":"498:6:79","parameters":{"id":53979,"nodeType":"ParameterList","parameters":[],"src":"504:2:79"},"returnParameters":{"id":53982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53981,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":53993,"src":"528:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53980,"name":"address","nodeType":"ElementaryTypeName","src":"528:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"527:9:79"},"scope":54339,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54042,"nodeType":"FunctionDefinition","src":"633:377:79","nodes":[],"body":{"id":54041,"nodeType":"Block","src":"730:280:79","nodes":[],"statements":[{"assignments":[54003],"declarations":[{"constant":false,"id":54003,"mutability":"mutable","name":"baseFee","nameLocation":"748:7:79","nodeType":"VariableDeclaration","scope":54041,"src":"740:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54002,"name":"uint128","nodeType":"ElementaryTypeName","src":"740:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54010,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54005,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"766:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"766:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54004,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"758:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53951_$","typeString":"type(contract IRouter)"}},"id":54007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"758:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53951","typeString":"contract IRouter"}},"id":54008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"776:7:79","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53910,"src":"758:25:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"758:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"740:45:79"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54012,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54003,"src":"818:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54013,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53997,"src":"828:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"818:16:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54011,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54300,"src":"795:22:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"795:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54016,"nodeType":"ExpressionStatement","src":"795:40:79"},{"assignments":[54018],"declarations":[{"constant":false,"id":54018,"mutability":"mutable","name":"id","nameLocation":"854:2:79","nodeType":"VariableDeclaration","scope":54041,"src":"846:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"846:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54030,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54024,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"894:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}],"id":54023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"886:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54022,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:79","typeDescriptions":{}}},"id":54025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"886:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"901:7:79","subExpression":{"id":54026,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53978,"src":"901:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54020,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"869:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54021,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"873:12:79","memberName":"encodePacked","nodeType":"MemberAccess","src":"869:16:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"869:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54019,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"859:9:79","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"859:51:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"846:64:79"},{"eventCall":{"arguments":[{"id":54032,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54018,"src":"951:2:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54033,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"955:2:79","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"958:6:79","memberName":"origin","nodeType":"MemberAccess","src":"955:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54035,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53995,"src":"966:8:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54036,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53997,"src":"976:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54031,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"926:24:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"926:57:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54038,"nodeType":"EmitStatement","src":"921:62:79"},{"expression":{"id":54039,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54018,"src":"1001:2:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54001,"id":54040,"nodeType":"Return","src":"994:9:79"}]},"baseFunctions":[53562],"functionSelector":"d5624222","implemented":true,"kind":"function","modifiers":[],"name":"sendMessage","nameLocation":"642:11:79","parameters":{"id":53998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":53995,"mutability":"mutable","name":"_payload","nameLocation":"669:8:79","nodeType":"VariableDeclaration","scope":54042,"src":"654:23:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":53994,"name":"bytes","nodeType":"ElementaryTypeName","src":"654:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":53997,"mutability":"mutable","name":"_value","nameLocation":"687:6:79","nodeType":"VariableDeclaration","scope":54042,"src":"679:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":53996,"name":"uint128","nodeType":"ElementaryTypeName","src":"679:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"653:41:79"},"returnParameters":{"id":54001,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54000,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54042,"src":"721:7:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":53999,"name":"bytes32","nodeType":"ElementaryTypeName","src":"721:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"720:9:79"},"scope":54339,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54075,"nodeType":"FunctionDefinition","src":"1016:288:79","nodes":[],"body":{"id":54074,"nodeType":"Block","src":"1113:191:79","nodes":[],"statements":[{"assignments":[54052],"declarations":[{"constant":false,"id":54052,"mutability":"mutable","name":"baseFee","nameLocation":"1131:7:79","nodeType":"VariableDeclaration","scope":54074,"src":"1123:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54051,"name":"uint128","nodeType":"ElementaryTypeName","src":"1123:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54059,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54054,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"1149:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1149:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54053,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"1141:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53951_$","typeString":"type(contract IRouter)"}},"id":54056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53951","typeString":"contract IRouter"}},"id":54057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1159:7:79","memberName":"baseFee","nodeType":"MemberAccess","referencedDeclaration":53910,"src":"1141:25:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint128_$","typeString":"function () view external returns (uint128)"}},"id":54058,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1141:27:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"1123:45:79"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54061,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54052,"src":"1201:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54062,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54048,"src":"1211:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1201:16:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54060,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54300,"src":"1178:22:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1178:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54065,"nodeType":"ExpressionStatement","src":"1178:40:79"},{"eventCall":{"arguments":[{"id":54067,"name":"_repliedTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54044,"src":"1257:10:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54068,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"1269:2:79","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1272:6:79","memberName":"origin","nodeType":"MemberAccess","src":"1269:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54070,"name":"_payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54046,"src":"1280:8:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54071,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54048,"src":"1290:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54066,"name":"ReplyQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53497,"src":"1234:22:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1234:63:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54073,"nodeType":"EmitStatement","src":"1229:68:79"}]},"baseFunctions":[53571],"functionSelector":"29336f39","implemented":true,"kind":"function","modifiers":[],"name":"sendReply","nameLocation":"1025:9:79","parameters":{"id":54049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54044,"mutability":"mutable","name":"_repliedTo","nameLocation":"1043:10:79","nodeType":"VariableDeclaration","scope":54075,"src":"1035:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54043,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1035:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54046,"mutability":"mutable","name":"_payload","nameLocation":"1070:8:79","nodeType":"VariableDeclaration","scope":54075,"src":"1055:23:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54045,"name":"bytes","nodeType":"ElementaryTypeName","src":"1055:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54048,"mutability":"mutable","name":"_value","nameLocation":"1088:6:79","nodeType":"VariableDeclaration","scope":54075,"src":"1080:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54047,"name":"uint128","nodeType":"ElementaryTypeName","src":"1080:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1034:61:79"},"returnParameters":{"id":54050,"nodeType":"ParameterList","parameters":[],"src":"1113:0:79"},"scope":54339,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54087,"nodeType":"FunctionDefinition","src":"1310:184:79","nodes":[],"body":{"id":54086,"nodeType":"Block","src":"1359:135:79","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":54081,"name":"_claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54077,"src":"1465:10:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54082,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"1477:2:79","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1480:6:79","memberName":"origin","nodeType":"MemberAccess","src":"1477:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54080,"name":"ValueClaimingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53504,"src":"1442:22:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:45:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54085,"nodeType":"EmitStatement","src":"1437:50:79"}]},"baseFunctions":[53576],"functionSelector":"91d5a64c","implemented":true,"kind":"function","modifiers":[],"name":"claimValue","nameLocation":"1319:10:79","parameters":{"id":54078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54077,"mutability":"mutable","name":"_claimedId","nameLocation":"1338:10:79","nodeType":"VariableDeclaration","scope":54087,"src":"1330:18:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54076,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1330:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1329:20:79"},"returnParameters":{"id":54079,"nodeType":"ParameterList","parameters":[],"src":"1359:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54101,"nodeType":"FunctionDefinition","src":"1500:167:79","nodes":[],"body":{"id":54100,"nodeType":"Block","src":"1565:102:79","nodes":[],"statements":[{"expression":{"arguments":[{"id":54093,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54089,"src":"1598:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54092,"name":"_retrieveValueToRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54300,"src":"1575:22:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1575:30:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54095,"nodeType":"ExpressionStatement","src":"1575:30:79"},{"eventCall":{"arguments":[{"id":54097,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54089,"src":"1653:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54096,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"1621:31:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1621:39:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54099,"nodeType":"EmitStatement","src":"1616:44:79"}]},"baseFunctions":[53581],"functionSelector":"704ed542","implemented":true,"kind":"function","modifiers":[],"name":"executableBalanceTopUp","nameLocation":"1509:22:79","parameters":{"id":54090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54089,"mutability":"mutable","name":"_value","nameLocation":"1540:6:79","nodeType":"VariableDeclaration","scope":54101,"src":"1532:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54088,"name":"uint128","nodeType":"ElementaryTypeName","src":"1532:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1531:16:79"},"returnParameters":{"id":54091,"nodeType":"ParameterList","parameters":[],"src":"1565:0:79"},"scope":54339,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54122,"nodeType":"FunctionDefinition","src":"1725:202:79","nodes":[],"body":{"id":54121,"nodeType":"Block","src":"1788:139:79","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54108,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53976,"src":"1802:9:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":54109,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54103,"src":"1815:12:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1802:25:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54120,"nodeType":"IfStatement","src":"1798:123:79","trueBody":{"id":54119,"nodeType":"Block","src":"1829:92:79","statements":[{"expression":{"id":54113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54111,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53976,"src":"1843:9:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54112,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54103,"src":"1855:12:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1843:24:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54114,"nodeType":"ExpressionStatement","src":"1843:24:79"},{"eventCall":{"arguments":[{"id":54116,"name":"stateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53976,"src":"1900:9:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54115,"name":"StateChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"1887:12:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":54117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1887:23:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54118,"nodeType":"EmitStatement","src":"1882:28:79"}]}}]},"baseFunctions":[53586],"functionSelector":"8ea59e1d","implemented":true,"kind":"function","modifiers":[{"id":54106,"kind":"modifierInvocation","modifierName":{"id":54105,"name":"onlyRouter","nameLocations":["1777:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"1777:10:79"},"nodeType":"ModifierInvocation","src":"1777:10:79"}],"name":"updateState","nameLocation":"1734:11:79","parameters":{"id":54104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54103,"mutability":"mutable","name":"newStateHash","nameLocation":"1754:12:79","nodeType":"VariableDeclaration","scope":54122,"src":"1746:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1746:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1745:22:79"},"returnParameters":{"id":54107,"nodeType":"ParameterList","parameters":[],"src":"1788:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54143,"nodeType":"FunctionDefinition","src":"1933:264:79","nodes":[],"body":{"id":54142,"nodeType":"Block","src":"2046:151:79","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":54136,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54124,"src":"2158:2:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54137,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54126,"src":"2162:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54138,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54128,"src":"2175:7:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54139,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54130,"src":"2184:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54135,"name":"Message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53520,"src":"2150:7:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2150:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54141,"nodeType":"EmitStatement","src":"2145:45:79"}]},"baseFunctions":[53597],"functionSelector":"c2df6009","implemented":true,"kind":"function","modifiers":[{"id":54133,"kind":"modifierInvocation","modifierName":{"id":54132,"name":"onlyRouter","nameLocations":["2035:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"2035:10:79"},"nodeType":"ModifierInvocation","src":"2035:10:79"}],"name":"messageSent","nameLocation":"1942:11:79","parameters":{"id":54131,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54124,"mutability":"mutable","name":"id","nameLocation":"1962:2:79","nodeType":"VariableDeclaration","scope":54143,"src":"1954:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54123,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1954:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54126,"mutability":"mutable","name":"destination","nameLocation":"1974:11:79","nodeType":"VariableDeclaration","scope":54143,"src":"1966:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54125,"name":"address","nodeType":"ElementaryTypeName","src":"1966:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54128,"mutability":"mutable","name":"payload","nameLocation":"2002:7:79","nodeType":"VariableDeclaration","scope":54143,"src":"1987:22:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54127,"name":"bytes","nodeType":"ElementaryTypeName","src":"1987:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54130,"mutability":"mutable","name":"value","nameLocation":"2019:5:79","nodeType":"VariableDeclaration","scope":54143,"src":"2011:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54129,"name":"uint128","nodeType":"ElementaryTypeName","src":"2011:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"1953:72:79"},"returnParameters":{"id":54134,"nodeType":"ParameterList","parameters":[],"src":"2046:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54171,"nodeType":"FunctionDefinition","src":"2203:260:79","nodes":[],"body":{"id":54170,"nodeType":"Block","src":"2357:106:79","nodes":[],"statements":[{"expression":{"arguments":[{"id":54159,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54145,"src":"2380:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54160,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54149,"src":"2393:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54158,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54338,"src":"2367:12:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2367:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54162,"nodeType":"ExpressionStatement","src":"2367:32:79"},{"eventCall":{"arguments":[{"id":54164,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54147,"src":"2421:7:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54165,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54149,"src":"2430:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54166,"name":"replyTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54151,"src":"2437:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54167,"name":"replyCode","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54153,"src":"2446:9:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":54163,"name":"Reply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53531,"src":"2415:5:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (bytes memory,uint128,bytes32,bytes4)"}},"id":54168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2415:41:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54169,"nodeType":"EmitStatement","src":"2410:46:79"}]},"baseFunctions":[53610],"functionSelector":"c78bde77","implemented":true,"kind":"function","modifiers":[{"id":54156,"kind":"modifierInvocation","modifierName":{"id":54155,"name":"onlyRouter","nameLocations":["2342:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"2342:10:79"},"nodeType":"ModifierInvocation","src":"2342:10:79"}],"name":"replySent","nameLocation":"2212:9:79","parameters":{"id":54154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54145,"mutability":"mutable","name":"destination","nameLocation":"2230:11:79","nodeType":"VariableDeclaration","scope":54171,"src":"2222:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54144,"name":"address","nodeType":"ElementaryTypeName","src":"2222:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54147,"mutability":"mutable","name":"payload","nameLocation":"2258:7:79","nodeType":"VariableDeclaration","scope":54171,"src":"2243:22:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54146,"name":"bytes","nodeType":"ElementaryTypeName","src":"2243:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54149,"mutability":"mutable","name":"value","nameLocation":"2275:5:79","nodeType":"VariableDeclaration","scope":54171,"src":"2267:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54148,"name":"uint128","nodeType":"ElementaryTypeName","src":"2267:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54151,"mutability":"mutable","name":"replyTo","nameLocation":"2290:7:79","nodeType":"VariableDeclaration","scope":54171,"src":"2282:15:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54150,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2282:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54153,"mutability":"mutable","name":"replyCode","nameLocation":"2306:9:79","nodeType":"VariableDeclaration","scope":54171,"src":"2299:16:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":54152,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2299:6:79","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"2221:95:79"},"returnParameters":{"id":54157,"nodeType":"ParameterList","parameters":[],"src":"2357:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54193,"nodeType":"FunctionDefinition","src":"2469:192:79","nodes":[],"body":{"id":54192,"nodeType":"Block","src":"2566:95:79","nodes":[],"statements":[{"expression":{"arguments":[{"id":54183,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54175,"src":"2589:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54184,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54177,"src":"2602:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54182,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54338,"src":"2576:12:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2576:32:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54186,"nodeType":"ExpressionStatement","src":"2576:32:79"},{"eventCall":{"arguments":[{"id":54188,"name":"claimedId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54173,"src":"2637:9:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54189,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54177,"src":"2648:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54187,"name":"ValueClaimed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53538,"src":"2624:12:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_uint128_$returns$__$","typeString":"function (bytes32,uint128)"}},"id":54190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2624:30:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54191,"nodeType":"EmitStatement","src":"2619:35:79"}]},"baseFunctions":[53619],"functionSelector":"14503e51","implemented":true,"kind":"function","modifiers":[{"id":54180,"kind":"modifierInvocation","modifierName":{"id":54179,"name":"onlyRouter","nameLocations":["2555:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"2555:10:79"},"nodeType":"ModifierInvocation","src":"2555:10:79"}],"name":"valueClaimed","nameLocation":"2478:12:79","parameters":{"id":54178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54173,"mutability":"mutable","name":"claimedId","nameLocation":"2499:9:79","nodeType":"VariableDeclaration","scope":54193,"src":"2491:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2491:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54175,"mutability":"mutable","name":"destination","nameLocation":"2518:11:79","nodeType":"VariableDeclaration","scope":54193,"src":"2510:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54174,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54177,"mutability":"mutable","name":"value","nameLocation":"2539:5:79","nodeType":"VariableDeclaration","scope":54193,"src":"2531:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54176,"name":"uint128","nodeType":"ElementaryTypeName","src":"2531:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2490:55:79"},"returnParameters":{"id":54181,"nodeType":"ParameterList","parameters":[],"src":"2566:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54207,"nodeType":"FunctionDefinition","src":"2667:114:79","nodes":[],"body":{"id":54206,"nodeType":"Block","src":"2735:46:79","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54201,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"2758:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2758:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54203,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54195,"src":"2768:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54200,"name":"_sendValueTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54338,"src":"2745:12:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$","typeString":"function (address,uint128)"}},"id":54204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2745:29:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54205,"nodeType":"ExpressionStatement","src":"2745:29:79"}]},"baseFunctions":[53624],"functionSelector":"dca4a373","implemented":true,"kind":"function","modifiers":[{"id":54198,"kind":"modifierInvocation","modifierName":{"id":54197,"name":"onlyRouter","nameLocations":["2724:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"2724:10:79"},"nodeType":"ModifierInvocation","src":"2724:10:79"}],"name":"executableBalanceBurned","nameLocation":"2676:23:79","parameters":{"id":54196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54195,"mutability":"mutable","name":"value","nameLocation":"2708:5:79","nodeType":"VariableDeclaration","scope":54207,"src":"2700:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54194,"name":"uint128","nodeType":"ElementaryTypeName","src":"2700:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2699:15:79"},"returnParameters":{"id":54199,"nodeType":"ParameterList","parameters":[],"src":"2735:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54250,"nodeType":"FunctionDefinition","src":"2787:465:79","nodes":[],"body":{"id":54249,"nodeType":"Block","src":"2930:322:79","nodes":[],"statements":[{"assignments":[54221],"declarations":[{"constant":false,"id":54221,"mutability":"mutable","name":"initNonce","nameLocation":"3017:9:79","nodeType":"VariableDeclaration","scope":54249,"src":"3009:17:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54220,"name":"uint256","nodeType":"ElementaryTypeName","src":"3009:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54224,"initialValue":{"id":54223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3029:7:79","subExpression":{"id":54222,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53978,"src":"3029:5:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3009:27:79"},{"assignments":[54226],"declarations":[{"constant":false,"id":54226,"mutability":"mutable","name":"id","nameLocation":"3054:2:79","nodeType":"VariableDeclaration","scope":54249,"src":"3046:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54225,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3046:7:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54237,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":54232,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3094:4:79","typeDescriptions":{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Mirror_$54339","typeString":"contract Mirror"}],"id":54231,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3086:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54230,"name":"address","nodeType":"ElementaryTypeName","src":"3086:7:79","typeDescriptions":{}}},"id":54233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3086:13:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54234,"name":"initNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54221,"src":"3101:9:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54228,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3069:3:79","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3073:12:79","memberName":"encodePacked","nodeType":"MemberAccess","src":"3069:16:79","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3069:42:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54227,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3059:9:79","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3059:53:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3046:66:79"},{"eventCall":{"arguments":[{"id":54239,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54215,"src":"3160:17:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54238,"name":"ExecutableBalanceTopUpRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53509,"src":"3128:31:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3128:50:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54241,"nodeType":"EmitStatement","src":"3123:55:79"},{"eventCall":{"arguments":[{"id":54243,"name":"id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54226,"src":"3218:2:79","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54244,"name":"source","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54209,"src":"3222:6:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54245,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54211,"src":"3230:7:79","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54246,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54213,"src":"3239:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54242,"name":"MessageQueueingRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53486,"src":"3193:24:79","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128)"}},"id":54247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:52:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54248,"nodeType":"EmitStatement","src":"3188:57:79"}]},"baseFunctions":[53635],"functionSelector":"de1dd2e0","implemented":true,"kind":"function","modifiers":[{"id":54218,"kind":"modifierInvocation","modifierName":{"id":54217,"name":"onlyRouter","nameLocations":["2915:10:79"],"nodeType":"IdentifierPath","referencedDeclaration":54263,"src":"2915:10:79"},"nodeType":"ModifierInvocation","src":"2915:10:79"}],"name":"initMessage","nameLocation":"2796:11:79","parameters":{"id":54216,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54209,"mutability":"mutable","name":"source","nameLocation":"2816:6:79","nodeType":"VariableDeclaration","scope":54250,"src":"2808:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54208,"name":"address","nodeType":"ElementaryTypeName","src":"2808:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54211,"mutability":"mutable","name":"payload","nameLocation":"2839:7:79","nodeType":"VariableDeclaration","scope":54250,"src":"2824:22:79","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54210,"name":"bytes","nodeType":"ElementaryTypeName","src":"2824:5:79","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54213,"mutability":"mutable","name":"value","nameLocation":"2856:5:79","nodeType":"VariableDeclaration","scope":54250,"src":"2848:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54212,"name":"uint128","nodeType":"ElementaryTypeName","src":"2848:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":54215,"mutability":"mutable","name":"executableBalance","nameLocation":"2871:17:79","nodeType":"VariableDeclaration","scope":54250,"src":"2863:25:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54214,"name":"uint128","nodeType":"ElementaryTypeName","src":"2863:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"2807:82:79"},"returnParameters":{"id":54219,"nodeType":"ParameterList","parameters":[],"src":"2930:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54263,"nodeType":"ModifierDefinition","src":"3258:131:79","nodes":[],"body":{"id":54262,"nodeType":"Block","src":"3280:109:79","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":54257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54253,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3298:3:79","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3302:6:79","memberName":"sender","nodeType":"MemberAccess","src":"3298:10:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54255,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"3312:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3312:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3298:22:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6f6e6c7920726f7574657220636f6e747261637420697320656c696769626c6520666f72206f7065726174696f6e","id":54258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3322:48:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""},"value":"only router contract is eligible for operation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_64d2230e88596248f8ffc0c335875e1b5d3e7ef288684b79c0f3f409577b1f91","typeString":"literal_string \"only router contract is eligible for operation\""}],"id":54252,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3290:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54259,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3290:81:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54260,"nodeType":"ExpressionStatement","src":"3290:81:79"},{"id":54261,"nodeType":"PlaceholderStatement","src":"3381:1:79"}]},"name":"onlyRouter","nameLocation":"3267:10:79","parameters":{"id":54251,"nodeType":"ParameterList","parameters":[],"src":"3277:2:79"},"virtual":false,"visibility":"internal"},{"id":54300,"nodeType":"FunctionDefinition","src":"3429:332:79","nodes":[],"body":{"id":54299,"nodeType":"Block","src":"3485:276:79","nodes":[],"statements":[{"assignments":[54269],"declarations":[{"constant":false,"id":54269,"mutability":"mutable","name":"routerAddress","nameLocation":"3503:13:79","nodeType":"VariableDeclaration","scope":54299,"src":"3495:21:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54268,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54272,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54270,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"3519:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3519:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3495:32:79"},{"assignments":[54275],"declarations":[{"constant":false,"id":54275,"mutability":"mutable","name":"wrappedVara","nameLocation":"3551:11:79","nodeType":"VariableDeclaration","scope":54299,"src":"3538:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"},"typeName":{"id":54274,"nodeType":"UserDefinedTypeName","pathNode":{"id":54273,"name":"IWrappedVara","nameLocations":["3538:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":53962,"src":"3538:12:79"},"referencedDeclaration":53962,"src":"3538:12:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54283,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54278,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54269,"src":"3586:13:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54277,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"3578:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53951_$","typeString":"type(contract IRouter)"}},"id":54279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3578:22:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53951","typeString":"contract IRouter"}},"id":54280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3601:11:79","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53810,"src":"3578:34:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3578:36:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54276,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53962,"src":"3565:12:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53962_$","typeString":"type(contract IWrappedVara)"}},"id":54282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3565:50:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"3538:77:79"},{"assignments":[54285],"declarations":[{"constant":false,"id":54285,"mutability":"mutable","name":"success","nameLocation":"3631:7:79","nodeType":"VariableDeclaration","scope":54299,"src":"3626:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54284,"name":"bool","nodeType":"ElementaryTypeName","src":"3626:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54293,"initialValue":{"arguments":[{"expression":{"id":54288,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"3666:2:79","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3669:6:79","memberName":"origin","nodeType":"MemberAccess","src":"3666:9:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54290,"name":"routerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54269,"src":"3677:13:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54291,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54265,"src":"3692:6:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54286,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54275,"src":"3641:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"id":54287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3653:12:79","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"3641:24:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":54292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3641:58:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3626:73:79"},{"expression":{"arguments":[{"id":54295,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54285,"src":"3718:7:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":54296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3727:26:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":54294,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"3710:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3710:44:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54298,"nodeType":"ExpressionStatement","src":"3710:44:79"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValueToRouter","nameLocation":"3438:22:79","parameters":{"id":54266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54265,"mutability":"mutable","name":"_value","nameLocation":"3469:6:79","nodeType":"VariableDeclaration","scope":54300,"src":"3461:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54264,"name":"uint128","nodeType":"ElementaryTypeName","src":"3461:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3460:16:79"},"returnParameters":{"id":54267,"nodeType":"ParameterList","parameters":[],"src":"3485:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":54338,"nodeType":"FunctionDefinition","src":"3767:316:79","nodes":[],"body":{"id":54337,"nodeType":"Block","src":"3833:250:79","nodes":[],"statements":[{"assignments":[54309],"declarations":[{"constant":false,"id":54309,"mutability":"mutable","name":"wrappedVara","nameLocation":"3856:11:79","nodeType":"VariableDeclaration","scope":54337,"src":"3843:24:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"},"typeName":{"id":54308,"nodeType":"UserDefinedTypeName","pathNode":{"id":54307,"name":"IWrappedVara","nameLocations":["3843:12:79"],"nodeType":"IdentifierPath","referencedDeclaration":53962,"src":"3843:12:79"},"referencedDeclaration":53962,"src":"3843:12:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":54318,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54312,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53993,"src":"3891:6:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":54313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3891:8:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54311,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"3883:7:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53951_$","typeString":"type(contract IRouter)"}},"id":54314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3883:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53951","typeString":"contract IRouter"}},"id":54315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3901:11:79","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53810,"src":"3883:29:79","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3883:31:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54310,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53962,"src":"3870:12:79","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53962_$","typeString":"type(contract IWrappedVara)"}},"id":54317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3870:45:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"3843:72:79"},{"condition":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54319,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54304,"src":"3930:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54320,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3939:1:79","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3930:10:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54336,"nodeType":"IfStatement","src":"3926:151:79","trueBody":{"id":54335,"nodeType":"Block","src":"3942:135:79","statements":[{"assignments":[54323],"declarations":[{"constant":false,"id":54323,"mutability":"mutable","name":"success","nameLocation":"3961:7:79","nodeType":"VariableDeclaration","scope":54335,"src":"3956:12:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54322,"name":"bool","nodeType":"ElementaryTypeName","src":"3956:4:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":54329,"initialValue":{"arguments":[{"id":54326,"name":"destination","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54302,"src":"3992:11:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54327,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54304,"src":"4005:5:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":54324,"name":"wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54309,"src":"3971:11:79","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"id":54325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3983:8:79","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"3971:20:79","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":54328,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3971:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3956:55:79"},{"expression":{"arguments":[{"id":54331,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54323,"src":"4034:7:79","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f2073656e64205756617261","id":54332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4043:22:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""},"value":"failed to send WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ec034c4b2ac47d4229390ddbbb751ebe057cb836b00500cd6f2ff2a9adb713a","typeString":"literal_string \"failed to send WVara\""}],"id":54330,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4026:7:79","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4026:40:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54334,"nodeType":"ExpressionStatement","src":"4026:40:79"}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_sendValueTo","nameLocation":"3776:12:79","parameters":{"id":54305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54302,"mutability":"mutable","name":"destination","nameLocation":"3797:11:79","nodeType":"VariableDeclaration","scope":54338,"src":"3789:19:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54301,"name":"address","nodeType":"ElementaryTypeName","src":"3789:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54304,"mutability":"mutable","name":"value","nameLocation":"3818:5:79","nodeType":"VariableDeclaration","scope":54338,"src":"3810:13:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54303,"name":"uint128","nodeType":"ElementaryTypeName","src":"3810:7:79","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"3788:36:79"},"returnParameters":{"id":54306,"nodeType":"ParameterList","parameters":[],"src":"3833:0:79"},"scope":54339,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":53973,"name":"IMirror","nameLocations":["304:7:79"],"nodeType":"IdentifierPath","referencedDeclaration":53636,"src":"304:7:79"},"id":53974,"nodeType":"InheritanceSpecifier","src":"304:7:79"}],"canonicalName":"Mirror","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54339,53636],"name":"Mirror","nameLocation":"294:6:79","scope":54340,"usedErrors":[],"usedEvents":[53475,53486,53497,53504,53509,53520,53531,53538]}],"license":"UNLICENSED"},"id":79} \ No newline at end of file diff --git a/ethexe/ethereum/MirrorProxy.json b/ethexe/ethereum/MirrorProxy.json index 0f434c976bf..1648b73817d 100644 --- a/ethexe/ethereum/MirrorProxy.json +++ b/ethexe/ethereum/MirrorProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a0604052348015600e575f80fd5b50604051610212380380610212833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b60805161018f6100835f395f818160380152608b015261018f5ff3fe60806040526004361061001d575f3560e01c8063f887ea4014610027575b610025610076565b005b348015610032575f80fd5b5061005a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610086610081610088565b61010e565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663444d91726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100e5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610109919061012c565b905090565b365f80375f80365f845af43d5f803e808015610128573d5ff35b3d5ffd5b5f6020828403121561013c575f80fd5b81516001600160a01b0381168114610152575f80fd5b939250505056fea26469706673582212209b2de0532f6af58b47e47e5895f24beebc2d9d0775e821a627f362d76a45d4f264736f6c634300081a0033","sourceMap":"259:282:77:-:0;;;347:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;386:16:77;;;259:282;;14:290:81;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:81;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:81:o;:::-;259:282:77;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061001d575f3560e01c8063f887ea4014610027575b610025610076565b005b348015610032575f80fd5b5061005a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b610086610081610088565b61010e565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663444d91726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100e5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610109919061012c565b905090565b365f80375f80365f845af43d5f803e808015610128573d5ff35b3d5ffd5b5f6020828403121561013c575f80fd5b81516001600160a01b0381168114610152575f80fd5b939250505056fea26469706673582212209b2de0532f6af58b47e47e5895f24beebc2d9d0775e821a627f362d76a45d4f264736f6c634300081a0033","sourceMap":"259:282:77:-:0;;;;;;;;;;;;;;;;;;2649:11:39;:9;:11::i;:::-;259:282:77;309:31;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:81;;;160:51;;148:2;133:18;309:31:77;;;;;;;2323:83:39;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;415:124:77:-;482:7;516:6;-1:-1:-1;;;;;508:22:77;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;501:31;;415:124;:::o;949:895:39:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;222:290:81;292:6;345:2;333:9;324:7;320:23;316:32;313:52;;;361:1;358;351:12;313:52;387:16;;-1:-1:-1;;;;;432:31:81;;422:42;;412:70;;478:1;475;468:12;412:70;501:5;222:290;-1:-1:-1;;;222:290:81:o","linkReferences":{},"immutableReferences":{"54140":[{"start":56,"length":32},{"start":139,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8\",\"dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30","urls":["bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8","dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":54165,"exportedSymbols":{"IMirrorProxy":[53431],"IRouter":[53738],"MirrorProxy":[54164],"Proxy":[41489]},"nodeType":"SourceUnit","src":"39:503:77","nodes":[{"id":54128,"nodeType":"PragmaDirective","src":"39:24:77","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54130,"nodeType":"ImportDirective","src":"65:62:77","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":54165,"sourceUnit":41490,"symbolAliases":[{"foreign":{"id":54129,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"73:5:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54132,"nodeType":"ImportDirective","src":"128:48:77","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54165,"sourceUnit":53432,"symbolAliases":[{"foreign":{"id":54131,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53431,"src":"136:12:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54134,"nodeType":"ImportDirective","src":"177:38:77","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54165,"sourceUnit":53739,"symbolAliases":[{"foreign":{"id":54133,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"185:7:77","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54164,"nodeType":"ContractDefinition","src":"259:282:77","nodes":[{"id":54140,"nodeType":"VariableDeclaration","src":"309:31:77","nodes":[],"baseFunctions":[53430],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:77","scope":54164,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54139,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54150,"nodeType":"FunctionDefinition","src":"347:62:77","nodes":[],"body":{"id":54149,"nodeType":"Block","src":"376:33:77","nodes":[],"statements":[{"expression":{"id":54147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54145,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54140,"src":"386:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54146,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54142,"src":"395:7:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54148,"nodeType":"ExpressionStatement","src":"386:16:77"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54142,"mutability":"mutable","name":"_router","nameLocation":"367:7:77","nodeType":"VariableDeclaration","scope":54150,"src":"359:15:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54141,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:77"},"returnParameters":{"id":54144,"nodeType":"ParameterList","parameters":[],"src":"376:0:77"},"scope":54164,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54163,"nodeType":"FunctionDefinition","src":"415:124:77","nodes":[],"body":{"id":54162,"nodeType":"Block","src":"491:48:77","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54157,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54140,"src":"516:6:77","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54156,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"508:7:77","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53738_$","typeString":"type(contract IRouter)"}},"id":54158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53738","typeString":"contract IRouter"}},"id":54159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:6:77","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53607,"src":"508:22:77","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:24:77","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54155,"id":54161,"nodeType":"Return","src":"501:31:77"}]},"baseFunctions":[41470],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:77","overrides":{"id":54152,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:77"},"parameters":{"id":54151,"nodeType":"ParameterList","parameters":[],"src":"439:2:77"},"returnParameters":{"id":54155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54154,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54163,"src":"482:7:77","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54153,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:77","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:77"},"scope":54164,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":54135,"name":"IMirrorProxy","nameLocations":["283:12:77"],"nodeType":"IdentifierPath","referencedDeclaration":53431,"src":"283:12:77"},"id":54136,"nodeType":"InheritanceSpecifier","src":"283:12:77"},{"baseName":{"id":54137,"name":"Proxy","nameLocations":["297:5:77"],"nodeType":"IdentifierPath","referencedDeclaration":41489,"src":"297:5:77"},"id":54138,"nodeType":"InheritanceSpecifier","src":"297:5:77"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54164,41489,53431],"name":"MirrorProxy","nameLocation":"268:11:77","scope":54165,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":77} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_router","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"fallback","stateMutability":"payable"},{"type":"function","name":"router","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"}],"bytecode":{"object":"0x60a034606b57601f61021038819003918201601f19168301916001600160401b03831184841017606f57808492602094604052833981010312606b57516001600160a01b0381168103606b5760805260405161018c908161008482396080518181816023015260e10152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220283f540781fa7e26256f2b498c58b4163e183be41573ea8eb465014038e1dbd064736f6c634300081a0033","sourceMap":"259:282:80:-:0;;;;;;;;;;;;;-1:-1:-1;;259:282:80;;;;-1:-1:-1;;;;;259:282:80;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:80;;;;;;386:16;;259:282;;;;;;;;386:16;259:282;;;;;;;;;;;;-1:-1:-1;259:282:80;;;;;;-1:-1:-1;259:282:80;;;;;-1:-1:-1;259:282:80","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610156100c0575b632226c8b960e11b60809081526020906004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa80156100b5575f9015610139575060203d6020116100ae575b601f19601f820116608001906080821067ffffffffffffffff83111761009a5761009591604052608001610117565b610139565b634e487b7160e01b5f52604160045260245ffd5b503d610066565b6040513d5f823e3d90fd5b5f3560e01c63f887ea400361000e5734610113575f366003190112610113577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166080908152602090f35b5f80fd5b602090607f190112610113576080516001600160a01b03811681036101135790565b5f8091368280378136915af43d5f803e15610152573d5ff35b3d5ffdfea2646970667358221220283f540781fa7e26256f2b498c58b4163e183be41573ea8eb465014038e1dbd064736f6c634300081a0033","sourceMap":"259:282:80:-:0;;;;;;;;;-1:-1:-1;;;;259:282:80;508:24;;;;;259:282;;516:6;-1:-1:-1;;;;;259:282:80;508:24;;;;;;-1:-1:-1;508:24:80;;2381:17:39;508:24:80;;;;;;;;;259:282;;;;;;;;;;;;;;;;;;508:24;259:282;;;;508:24;;:::i;:::-;2381:17:39;:::i;259:282:80:-;;;;-1:-1:-1;259:282:80;;;;;-1:-1:-1;259:282:80;508:24;;;;;;259:282;;;-1:-1:-1;259:282:80;;;;;;;;;;;;;;;;;;;-1:-1:-1;;259:282:80;;;;309:31;-1:-1:-1;;;;;259:282:80;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;259:282:80;;;;;;;:::o;949:895:39:-;1019:819;949:895;;1019:819;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{},"immutableReferences":{"54353":[{"start":35,"length":32},{"start":225,"length":32}]}},"methodIdentifiers":{"router()":"f887ea40"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/MirrorProxy.sol\":\"MirrorProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"src/IMirrorProxy.sol\":{\"keccak256\":\"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469\",\"dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/MirrorProxy.sol\":{\"keccak256\":\"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8\",\"dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"payable","type":"fallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"router","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/MirrorProxy.sol":"MirrorProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"src/IMirrorProxy.sol":{"keccak256":"0x56448b8905cc408f5656d47c893f3cda6623992ef1ba6a2e0a1be06b04c0b570","urls":["bzz-raw://7d148123c4f51abce8b8e92c45830dd7de3829e228f37fd2e9093616dd7b2469","dweb:/ipfs/QmTkohe2uFVsJiCKdu7QBFYff6L3tzvE7rTjnRhnjdgEmG"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/MirrorProxy.sol":{"keccak256":"0xbb15dbe1f5a0bb2168af590f1aee9748d3a96b4f7423f3428fe6fd24a9796c30","urls":["bzz-raw://d17ae2869b3fbfcc3a03754bedffcd798f70bf53b771f95d1f2f0b8f113662a8","dweb:/ipfs/QmdUwWV5MdYzsxXaq1R2zLAttW5XwEKX6SSTpVo6pRynwq"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/MirrorProxy.sol","id":54378,"exportedSymbols":{"IMirrorProxy":[53644],"IRouter":[53951],"MirrorProxy":[54377],"Proxy":[41489]},"nodeType":"SourceUnit","src":"39:503:80","nodes":[{"id":54341,"nodeType":"PragmaDirective","src":"39:24:80","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54343,"nodeType":"ImportDirective","src":"65:62:80","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol","file":"@openzeppelin/contracts/proxy/Proxy.sol","nameLocation":"-1:-1:-1","scope":54378,"sourceUnit":41490,"symbolAliases":[{"foreign":{"id":54342,"name":"Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41489,"src":"73:5:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54345,"nodeType":"ImportDirective","src":"128:48:80","nodes":[],"absolutePath":"src/IMirrorProxy.sol","file":"./IMirrorProxy.sol","nameLocation":"-1:-1:-1","scope":54378,"sourceUnit":53645,"symbolAliases":[{"foreign":{"id":54344,"name":"IMirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53644,"src":"136:12:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54347,"nodeType":"ImportDirective","src":"177:38:80","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":54378,"sourceUnit":53952,"symbolAliases":[{"foreign":{"id":54346,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"185:7:80","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54377,"nodeType":"ContractDefinition","src":"259:282:80","nodes":[{"id":54353,"nodeType":"VariableDeclaration","src":"309:31:80","nodes":[],"baseFunctions":[53643],"constant":false,"functionSelector":"f887ea40","mutability":"immutable","name":"router","nameLocation":"334:6:80","scope":54377,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54352,"name":"address","nodeType":"ElementaryTypeName","src":"309:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"public"},{"id":54363,"nodeType":"FunctionDefinition","src":"347:62:80","nodes":[],"body":{"id":54362,"nodeType":"Block","src":"376:33:80","nodes":[],"statements":[{"expression":{"id":54360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54358,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54353,"src":"386:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54359,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54355,"src":"395:7:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"386:16:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54361,"nodeType":"ExpressionStatement","src":"386:16:80"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54355,"mutability":"mutable","name":"_router","nameLocation":"367:7:80","nodeType":"VariableDeclaration","scope":54363,"src":"359:15:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54354,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"358:17:80"},"returnParameters":{"id":54357,"nodeType":"ParameterList","parameters":[],"src":"376:0:80"},"scope":54377,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54376,"nodeType":"FunctionDefinition","src":"415:124:80","nodes":[],"body":{"id":54375,"nodeType":"Block","src":"491:48:80","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":54370,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54353,"src":"516:6:80","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54369,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"508:7:80","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IRouter_$53951_$","typeString":"type(contract IRouter)"}},"id":54371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:15:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IRouter_$53951","typeString":"contract IRouter"}},"id":54372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"524:6:80","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53820,"src":"508:22:80","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":54373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"508:24:80","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54368,"id":54374,"nodeType":"Return","src":"501:31:80"}]},"baseFunctions":[41470],"implemented":true,"kind":"function","modifiers":[],"name":"_implementation","nameLocation":"424:15:80","overrides":{"id":54365,"nodeType":"OverrideSpecifier","overrides":[],"src":"464:8:80"},"parameters":{"id":54364,"nodeType":"ParameterList","parameters":[],"src":"439:2:80"},"returnParameters":{"id":54368,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54367,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54376,"src":"482:7:80","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54366,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:80","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"481:9:80"},"scope":54377,"stateMutability":"view","virtual":true,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":54348,"name":"IMirrorProxy","nameLocations":["283:12:80"],"nodeType":"IdentifierPath","referencedDeclaration":53644,"src":"283:12:80"},"id":54349,"nodeType":"InheritanceSpecifier","src":"283:12:80"},{"baseName":{"id":54350,"name":"Proxy","nameLocations":["297:5:80"],"nodeType":"IdentifierPath","referencedDeclaration":41489,"src":"297:5:80"},"id":54351,"nodeType":"InheritanceSpecifier","src":"297:5:80"}],"canonicalName":"MirrorProxy","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[54377,41489,53644],"name":"MirrorProxy","nameLocation":"268:11:80","scope":54378,"usedErrors":[],"usedEvents":[]}],"license":"UNLICENSED"},"id":80} \ No newline at end of file diff --git a/ethexe/ethereum/Router.json b/ethexe/ethereum/Router.json index 60c795674c8..ef43e63ce49 100644 --- a/ethexe/ethereum/Router.json +++ b/ethexe/ethereum/Router.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"baseFee","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"baseWeight","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRouter.CodeState"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"blockCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.BlockCommitment[]","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"prevCommitmentHash","type":"bytes32","internalType":"bytes32"},{"name":"predBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct IRouter.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct IRouter.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct IRouter.OutgoingMessage[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct IRouter.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"codeCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createProgram","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStorageSlot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validatorAddressArray","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastBlockCommitmentHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"mirror","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBaseWeight","inputs":[{"name":"_baseWeight","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"_mirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStorageSlot","inputs":[{"name":"namespace","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setValuePerWeight","inputs":[{"name":"_valuePerWeight","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateValidators","inputs":[{"name":"validatorsAddressArray","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorExists","inputs":[{"name":"validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"valuePerWeight","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BaseWeightChanged","inputs":[{"name":"baseWeight","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlockCommitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValidatorsSetChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValuePerWeightChanged","inputs":[{"name":"valuePerWeight","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b612c60806100d65f395ff3fe6080604052600436106101cf575f3560e01c80638febbd59116100fd578063e71731e411610092578063efd81abc11610062578063efd81abc1461052a578063f2fde38b1461053e578063f8453e7c1461055d578063fa97ed6d1461057c575f80fd5b8063e71731e4146104c4578063e97d3eb3146104e3578063ed612f8c14610502578063edc8722514610516575f80fd5b8063a6bbbe1c116100cd578063a6bbbe1c1461042c578063c13911e81461044b578063ca1e781914610477578063d3fd636414610498575f80fd5b80638febbd59146103975780639067088e146103c657806396708226146103e557806396a2ddfa14610418575f80fd5b80635686cad5116101735780638028861a116101435780638028861a146103155780638074b4551461033457806388f50cf0146103475780638da5cb5b1461035b575f80fd5b80635686cad5146102ba5780636ef25c3a146102d9578063715018a6146102ed57806378ee5dec14610301575f80fd5b806328e24b3d116101ae57806328e24b3d146102475780632dacfb691461025b5780633d43b4181461026f578063444d91721461028e575f80fd5b80627a32e7146101d35780630834fecc146101fa5780631c149d8a14610226575b5f80fd5b3480156101de575f80fd5b506101e761059b565b6040519081526020015b60405180910390f35b348015610205575f80fd5b5061020e6105af565b6040516001600160801b0390911681526020016101f1565b348015610231575f80fd5b506102456102403660046122dc565b6105d3565b005b348015610252575f80fd5b506101e7610721565b348015610266575f80fd5b506101e7610732565b34801561027a575f80fd5b50610245610289366004612317565b610746565b348015610299575f80fd5b506102a261077c565b6040516001600160a01b0390911681526020016101f1565b3480156102c5575f80fd5b506102456102d4366004612374565b610799565b3480156102e4575f80fd5b5061020e610836565b3480156102f8575f80fd5b5061024561085f565b34801561030c575f80fd5b506102a2610872565b348015610320575f80fd5b5061024561032f366004612406565b61088f565b6102a2610342366004612442565b6108fc565b348015610352575f80fd5b506102a2610af4565b348015610366575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102a2565b3480156103a2575f80fd5b506103b66103b1366004612317565b610b11565b60405190151581526020016101f1565b3480156103d1575f80fd5b506101e76103e0366004612317565b610b3f565b3480156103f0575f80fd5b507f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000546101e7565b348015610423575f80fd5b506101e7610b6a565b348015610437575f80fd5b506102456104463660046124d1565b610b7e565b348015610456575f80fd5b5061046a6104653660046124ea565b610bfc565b6040516101f19190612515565b348015610482575f80fd5b5061048b610c1d565b6040516101f1919061253b565b3480156104a3575f80fd5b506104ac610c86565b6040516001600160401b0390911681526020016101f1565b3480156104cf575f80fd5b506102456104de3660046125cd565b610ca3565b3480156104ee575f80fd5b506102456104fd36600461260b565b610d1a565b34801561050d575f80fd5b506101e7610ef1565b348015610521575f80fd5b506101e7610f05565b348015610535575f80fd5b506101e7610f39565b348015610549575f80fd5b50610245610558366004612317565b610f4d565b348015610568575f80fd5b506102456105773660046126a3565b610f8a565b348015610587575f80fd5b50610245610596366004612793565b61115c565b5f806105a56111e4565b600a015492915050565b5f806105b96111e4565b60060154600160401b90046001600160801b031692915050565b801515806105e157505f4915155b6106325760405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e640000000060448201526064015b60405180910390fd5b5f61063b6111e4565b90505f8084815260098301602052604090205460ff16600281111561066257610662612501565b146106c85760405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608401610629565b5f838152600982016020908152604091829020805460ff1916600117905581518581529081018490527f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada396910160405180910390a1505050565b5f8061072b6111e4565b5492915050565b5f8061073c6111e4565b6004015492915050565b61074e611214565b5f6107576111e4565b60010180546001600160a01b0319166001600160a01b03939093169290921790915550565b5f806107866111e4565b600101546001600160a01b031692915050565b6107a1611214565b805160208201205f9060ff19906107ba906001906127f9565b6040516020016107cc91815260200190565b60408051601f198184030181529190528051602090910120169050807f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000556040517f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc905f90a15050565b5f61083f6105af565b610847610c86565b6001600160401b031661085a919061280c565b905090565b610867611214565b6108705f61126f565b565b5f8061087c6111e4565b600201546001600160a01b031692915050565b610897611214565b5f6108a06111e4565b60068101805467ffffffffffffffff19166001600160401b0385169081179091556040519081529091507f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c7906020015b60405180910390a15050565b5f806109066111e4565b905060025f88815260098301602052604090205460ff16600281111561092e5761092e612501565b146109925760405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608401610629565b5f61099b610836565b90505f6109a982600a61280c565b90505f856109b78385612835565b6109c19190612835565b90506109cc816112df565b600284015460408051602081018d90529081018b90525f91610a12916001600160a01b0390911690606001604051602081830303815290604052805190602001206113c3565b6001600160a01b0381165f908152600b8701602052604081208d9055600c8701805492935090610a4183612854565b90915550506040516001600160a01b03821681528b907f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf19060200160405180910390a26040516306f0ee9760e51b81526001600160a01b0382169063de1dd2e090610ab89032908d908d908d908a90600401612894565b5f604051808303815f87803b158015610acf575f80fd5b505af1158015610ae1573d5f803e3d5ffd5b50929d9c50505050505050505050505050565b5f80610afe6111e4565b600301546001600160a01b031692915050565b5f80610b1b6111e4565b6001600160a01b039093165f90815260079093016020525050604090205460ff1690565b5f80610b496111e4565b6001600160a01b039093165f908152600b9093016020525050604090205490565b5f80610b746111e4565b600c015492915050565b610b86611214565b5f610b8f6111e4565b60068101805477ffffffffffffffffffffffffffffffff00000000000000001916600160401b6001600160801b038616908102919091179091556040519081529091507f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740906020016108f0565b5f80610c066111e4565b5f9384526009016020525050604090205460ff1690565b60605f610c286111e4565b60088101805460408051602080840282018101909252828152939450830182828015610c7b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610c5d575b505050505091505090565b5f80610c906111e4565b600601546001600160401b031692915050565b610cab611214565b610cb36113d6565b610cee8282808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061144692505050565b6040517f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f51905f90a15050565b5f610d236111e4565b905060605f5b85811015610ed65736878783818110610d4457610d446128da565b90506040020190505f610d5682611521565b90508381604051602001610d6b929190612905565b60408051601f198184030181529190529350813560015f82815260098801602052604090205460ff166002811115610da557610da5612501565b14610e025760405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608401610629565b610e12604084016020850161292a565b15610e81575f8181526009870160205260408120805460ff19166002179055600a8701805491610e4183612854565b90915550506040518181526001907f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c99060200160405180910390a2610ecb565b5f8181526009870160209081526040808320805460ff19169055518381527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9910160405180910390a25b505050600101610d29565b50610ee981805190602001208585611570565b505050505050565b5f80610efb6111e4565b6008015492915050565b5f612710610f11610f39565b610f19610ef1565b610f239190612945565b610f2f9061270f61295c565b61085a919061296f565b5f80610f436111e4565b6005015492915050565b610f55611214565b6001600160a01b038116610f7e57604051631e4fbdf760e01b81525f6004820152602401610629565b610f878161126f565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fce5750825b90505f826001600160401b03166001148015610fe95750303b155b905081158015610ff7575080155b156110155760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561103f57845460ff60401b1916600160401b1785555b6110488a611714565b61107e604051806040016040528060158152602001743937baba32b91739ba37b930b3b2972937baba32b960591b815250610799565b5f6110876111e4565b90506110946001436127f9565b4081556001810180546001600160a01b03199081166001600160a01b038d81169190911790925560028301805482168c8416179055600383018054909116918a16919091179055611a0a60058201556006810180546001600160c01b031916680a000000009502f90017905561110987611446565b50831561115057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60605f5b848110156111ca573686868381811061117b5761117b6128da565b905060200281019061118d919061298e565b90505f61119982611725565b905083816040516020016111ae929190612905565b60408051808303601f1901815291905293505050600101611160565b506111dd81805190602001208484611570565b5050505050565b5f8061120e7f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e0005490565b92915050565b336112467f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108705760405163118cdaa760e01b8152336004820152602401610629565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6112e86111e4565b60038101546040516323b872dd60e01b81523260048201523060248201526001600160801b03851660448201529192505f916001600160a01b03909116906323b872dd906064016020604051808303815f875af115801561134b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136f91906129ac565b9050806113be5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606401610629565b505050565b5f6113cf83835f6118fd565b9392505050565b5f6113df6111e4565b90505f5b6008820154811015611438575f826008018281548110611405576114056128da565b5f9182526020808320909101546001600160a01b0316825260078501905260409020805460ff19169055506001016113e3565b50610f87600882015f61224a565b5f61144f6111e4565b6008810154909150156114b05760405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608401610629565b5f5b825181101561150b575f8382815181106114ce576114ce6128da565b6020908102919091018101516001600160a01b03165f9081526007850190915260409020805460ff191660019081179091559190910190506114b2565b5081516113be9060088301906020850190612265565b5f8135611534604084016020850161292a565b604051602001611553929190918252151560f81b602082015260210190565b604051602081830303815290604052805190602001209050919050565b5f6115796111e4565b90505f611584610f05565b90505f6115b48660405160200161159d91815260200190565b60408051601f198184030181529190523090611992565b90505f805b858110156116ba57365f8888848181106115d5576115d56128da565b90506020028101906115e791906129c7565b915091505f61162d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a939250506119c49050565b6001600160a01b0381165f90815260078a01602052604090205490915060ff1615611671578661165c86612854565b9550850361166c575050506116ba565b6116af565b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606401610629565b5050506001016115b9565b508281101561170b5760405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606401610629565b50505050505050565b61171c6119ec565b610f8781611a35565b5f8061172f6111e4565b905082602001358160040154146117885760405162461bcd60e51b815260206004820181905260248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152606401610629565b6117958360400135611a3d565b6117ed5760405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608401610629565b60605f5b6117fe6060860186612a09565b905081101561187457366118156060870187612a09565b83818110611825576118256128da565b90506020028101906118379190612a4e565b90505f61184382611a8f565b90508381604051602001611858929190612905565b60408051808303601f19018152919052935050506001016117f1565b508335600483018190556040519081527fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e9060200160405180910390a180516020828101919091206040805187358185015283880135818301528188013560608201526080808201939093528151808203909301835260a001905280519101205b949350505050565b5f814710156119285760405163cf47918160e01b815247600482015260248101839052604401610629565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c175f526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166113cf5760405163b06ebf3d60e01b815260040160405180910390fd5b5f82826040516020016119a6929190612a62565b60405160208183030381529060405280519060200120905092915050565b5f805f806119d28686612022565b9250925092506119e2828261206b565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661087057604051631afcd79f60e31b815260040160405180910390fd5b610f556119ec565b5f80611a4a6001436127f9565b90505b8015611a87578040838103611a66575060019392505050565b5f819003611a745750611a87565b5080611a7f81612a8b565b915050611a4d565b505f92915050565b5f80611a996111e4565b9050600b81015f611aad6020860186612317565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f801b03611b355760405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608401610629565b60038101546001600160a01b03168063a9059cbb611b566020870187612317565b611b6660608801604089016124d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015611bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdb91906129ac565b505f611bea6020860186612317565b905060605f5b611bfd6060880188612aa0565b9050811015611d6b5736611c146060890189612aa0565b83818110611c2457611c246128da565b6060029190910191508390508135611c426040840160208501612317565b611c5260608501604086016124d1565b604051602001611c8f9392919092835260609190911b6001600160601b031916602083015260801b6001600160801b031916603482015260440190565b60408051601f1981840301815290829052611cad9291602001612ae4565b6040516020818303038152906040529250836001600160a01b03166314503e51825f0135836020016020810190611ce49190612317565b611cf460608601604087016124d1565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526001600160801b031660448201526064015f604051808303815f87803b158015611d48575f80fd5b505af1158015611d5a573d5f803e3d5ffd5b505060019093019250611bf0915050565b5060605f5b611d7d6080890189612a09565b9050811015611f295736611d9460808a018a612a09565b83818110611da457611da46128da565b9050602002810190611db69190612af8565b905082611dc282612127565b604051602001611dd3929190612905565b60408051601f19818403018152919052925060808101355f03611e80576001600160a01b03851663c2df60098235611e116040850160208601612317565b611e1e60408601866129c7565b611e2e60808801606089016124d1565b6040518663ffffffff1660e01b8152600401611e4e959493929190612b0c565b5f604051808303815f87803b158015611e65575f80fd5b505af1158015611e77573d5f803e3d5ffd5b50505050611f20565b6001600160a01b03851663c78bde77611e9f6040840160208501612317565b611eac60408501856129c7565b611ebc60808701606088016124d1565b6080870135611ed160c0890160a08a01612b51565b6040518763ffffffff1660e01b8152600401611ef296959493929190612b78565b5f604051808303815f87803b158015611f09575f80fd5b505af1158015611f1b573d5f803e3d5ffd5b505050505b50600101611d70565b50604051638ea59e1d60e01b8152602088013560048201526001600160a01b03841690638ea59e1d906024015f604051808303815f87803b158015611f6c575f80fd5b505af1158015611f7e573d5f803e3d5ffd5b506120179250611f949150506020890189612317565b6020890135611fa960608b0160408c016124d1565b85516020808801919091208651878301206040805160609790971b6001600160601b03191687850152603487019590955260809390931b6001600160801b031916605486015260648501526084808501929092528251808503909201825260a4909301909152805191012090565b979650505050505050565b5f805f8351604103612059576020840151604085015160608601515f1a61204b88828585612182565b955095509550505050612064565b505081515f91506002905b9250925092565b5f82600381111561207e5761207e612501565b03612087575050565b600182600381111561209b5761209b612501565b036120b95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156120cd576120cd612501565b036120ee5760405163fce698f760e01b815260048101829052602401610629565b600382600381111561210257612102612501565b03612123576040516335e2f38360e21b815260048101829052602401610629565b5050565b5f813561213a6040840160208501612317565b61214760408501856129c7565b61215760808701606088016124d1565b608087013561216c60c0890160a08a01612b51565b6040516020016115539796959493929190612bcd565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156121bb57505f91506003905082612240565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561220c573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661223757505f925060019150829050612240565b92505f91508190505b9450945094915050565b5080545f8255905f5260205f2090810190610f8791906122c8565b828054828255905f5260205f209081019282156122b8579160200282015b828111156122b857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612283565b506122c49291506122c8565b5090565b5b808211156122c4575f81556001016122c9565b5f80604083850312156122ed575f80fd5b50508035926020909101359150565b80356001600160a01b0381168114612312575f80fd5b919050565b5f60208284031215612327575f80fd5b6113cf826122fc565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561236c5761236c612330565b604052919050565b5f60208284031215612384575f80fd5b81356001600160401b03811115612399575f80fd5b8201601f810184136123a9575f80fd5b80356001600160401b038111156123c2576123c2612330565b6123d5601f8201601f1916602001612344565b8181528560208385010111156123e9575f80fd5b816020840160208301375f91810160200191909152949350505050565b5f60208284031215612416575f80fd5b81356001600160401b03811681146113cf575f80fd5b80356001600160801b0381168114612312575f80fd5b5f805f805f60808688031215612456575f80fd5b853594506020860135935060408601356001600160401b03811115612479575f80fd5b8601601f81018813612489575f80fd5b80356001600160401b0381111561249e575f80fd5b8860208284010111156124af575f80fd5b602091909101935091506124c56060870161242c565b90509295509295909350565b5f602082840312156124e1575f80fd5b6113cf8261242c565b5f602082840312156124fa575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016003831061253557634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f918401906040840190835b8181101561257b5783516001600160a01b0316835260209384019390920191600101612554565b509095945050505050565b5f8083601f840112612596575f80fd5b5081356001600160401b038111156125ac575f80fd5b6020830191508360208260051b85010111156125c6575f80fd5b9250929050565b5f80602083850312156125de575f80fd5b82356001600160401b038111156125f3575f80fd5b6125ff85828601612586565b90969095509350505050565b5f805f806040858703121561261e575f80fd5b84356001600160401b03811115612633575f80fd5b8501601f81018713612643575f80fd5b80356001600160401b03811115612658575f80fd5b8760208260061b840101111561266c575f80fd5b6020918201955093508501356001600160401b0381111561268b575f80fd5b61269787828801612586565b95989497509550505050565b5f805f805f60a086880312156126b7575f80fd5b6126c0866122fc565b94506126ce602087016122fc565b93506126dc604087016122fc565b92506126ea606087016122fc565b915060808601356001600160401b03811115612704575f80fd5b8601601f81018813612714575f80fd5b80356001600160401b0381111561272d5761272d612330565b8060051b61273d60208201612344565b9182526020818401810192908101908b841115612758575f80fd5b6020850194505b8385101561278157612770856122fc565b82526020948501949091019061275f565b80955050505050509295509295909350565b5f805f80604085870312156127a6575f80fd5b84356001600160401b038111156127bb575f80fd5b6127c787828801612586565b90955093505060208501356001600160401b0381111561268b575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561120e5761120e6127e5565b6001600160801b03818116838216029081169081811461282e5761282e6127e5565b5092915050565b6001600160801b03818116838216019081111561120e5761120e6127e5565b5f60018201612865576128656127e5565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03861681526080602082018190525f906128b8908301868861286c565b6001600160801b03948516604084015292909316606090910152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f61291082856128ee565b9283525050602001919050565b8015158114610f87575f80fd5b5f6020828403121561293a575f80fd5b81356113cf8161291d565b808202811582820484141761120e5761120e6127e5565b8082018082111561120e5761120e6127e5565b5f8261298957634e487b7160e01b5f52601260045260245ffd5b500490565b5f8235607e198336030181126129a2575f80fd5b9190910192915050565b5f602082840312156129bc575f80fd5b81516113cf8161291d565b5f808335601e198436030181126129dc575f80fd5b8301803591506001600160401b038211156129f5575f80fd5b6020019150368190038213156125c6575f80fd5b5f808335601e19843603018112612a1e575f80fd5b8301803591506001600160401b03821115612a37575f80fd5b6020019150600581901b36038213156125c6575f80fd5b5f8235609e198336030181126129a2575f80fd5b601960f81b8152606083901b6001600160601b03191660028201525f6118f560168301846128ee565b5f81612a9957612a996127e5565b505f190190565b5f808335601e19843603018112612ab5575f80fd5b8301803591506001600160401b03821115612ace575f80fd5b60200191506060810236038213156125c6575f80fd5b5f6118f5612af283866128ee565b846128ee565b5f823560be198336030181126129a2575f80fd5b8581526001600160a01b03851660208201526080604082018190525f90612b36908301858761286c565b90506001600160801b03831660608301529695505050505050565b5f60208284031215612b61575f80fd5b81356001600160e01b0319811681146113cf575f80fd5b6001600160a01b038716815260a0602082018190525f90612b9c908301878961286c565b6001600160801b039590951660408301525060608101929092526001600160e01b0319166080909101529392505050565b8781526bffffffffffffffffffffffff198760601b1660208201528486603483013760809390931b6001600160801b0319166034949093019384019290925260448301526001600160e01b0319166064820152606801939250505056fea2646970667358221220cdae2caffe3f8d0a31f1acc9ef7db5a30a7aff35689eceb75caf7feed87a43ea64736f6c634300081a0033","sourceMap":"781:15771:78:-:0;;;1198:53;;;;;;;;;-1:-1:-1;1222:22:78;:20;:22::i;:::-;781:15771;;7711:422:25;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:25;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:25;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:25;-1:-1:-1;;;;;8035:33:25;;;;;8087:29;;158:50:81;;;8087:29:25;;146:2:81;131:18;8087:29:25;;;;;;;7981:146;7760:373;7711:422::o;14:200:81:-;781:15771:78;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101cf575f3560e01c80638febbd59116100fd578063e71731e411610092578063efd81abc11610062578063efd81abc1461052a578063f2fde38b1461053e578063f8453e7c1461055d578063fa97ed6d1461057c575f80fd5b8063e71731e4146104c4578063e97d3eb3146104e3578063ed612f8c14610502578063edc8722514610516575f80fd5b8063a6bbbe1c116100cd578063a6bbbe1c1461042c578063c13911e81461044b578063ca1e781914610477578063d3fd636414610498575f80fd5b80638febbd59146103975780639067088e146103c657806396708226146103e557806396a2ddfa14610418575f80fd5b80635686cad5116101735780638028861a116101435780638028861a146103155780638074b4551461033457806388f50cf0146103475780638da5cb5b1461035b575f80fd5b80635686cad5146102ba5780636ef25c3a146102d9578063715018a6146102ed57806378ee5dec14610301575f80fd5b806328e24b3d116101ae57806328e24b3d146102475780632dacfb691461025b5780633d43b4181461026f578063444d91721461028e575f80fd5b80627a32e7146101d35780630834fecc146101fa5780631c149d8a14610226575b5f80fd5b3480156101de575f80fd5b506101e761059b565b6040519081526020015b60405180910390f35b348015610205575f80fd5b5061020e6105af565b6040516001600160801b0390911681526020016101f1565b348015610231575f80fd5b506102456102403660046122dc565b6105d3565b005b348015610252575f80fd5b506101e7610721565b348015610266575f80fd5b506101e7610732565b34801561027a575f80fd5b50610245610289366004612317565b610746565b348015610299575f80fd5b506102a261077c565b6040516001600160a01b0390911681526020016101f1565b3480156102c5575f80fd5b506102456102d4366004612374565b610799565b3480156102e4575f80fd5b5061020e610836565b3480156102f8575f80fd5b5061024561085f565b34801561030c575f80fd5b506102a2610872565b348015610320575f80fd5b5061024561032f366004612406565b61088f565b6102a2610342366004612442565b6108fc565b348015610352575f80fd5b506102a2610af4565b348015610366575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102a2565b3480156103a2575f80fd5b506103b66103b1366004612317565b610b11565b60405190151581526020016101f1565b3480156103d1575f80fd5b506101e76103e0366004612317565b610b3f565b3480156103f0575f80fd5b507f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000546101e7565b348015610423575f80fd5b506101e7610b6a565b348015610437575f80fd5b506102456104463660046124d1565b610b7e565b348015610456575f80fd5b5061046a6104653660046124ea565b610bfc565b6040516101f19190612515565b348015610482575f80fd5b5061048b610c1d565b6040516101f1919061253b565b3480156104a3575f80fd5b506104ac610c86565b6040516001600160401b0390911681526020016101f1565b3480156104cf575f80fd5b506102456104de3660046125cd565b610ca3565b3480156104ee575f80fd5b506102456104fd36600461260b565b610d1a565b34801561050d575f80fd5b506101e7610ef1565b348015610521575f80fd5b506101e7610f05565b348015610535575f80fd5b506101e7610f39565b348015610549575f80fd5b50610245610558366004612317565b610f4d565b348015610568575f80fd5b506102456105773660046126a3565b610f8a565b348015610587575f80fd5b50610245610596366004612793565b61115c565b5f806105a56111e4565b600a015492915050565b5f806105b96111e4565b60060154600160401b90046001600160801b031692915050565b801515806105e157505f4915155b6106325760405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e640000000060448201526064015b60405180910390fd5b5f61063b6111e4565b90505f8084815260098301602052604090205460ff16600281111561066257610662612501565b146106c85760405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608401610629565b5f838152600982016020908152604091829020805460ff1916600117905581518581529081018490527f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada396910160405180910390a1505050565b5f8061072b6111e4565b5492915050565b5f8061073c6111e4565b6004015492915050565b61074e611214565b5f6107576111e4565b60010180546001600160a01b0319166001600160a01b03939093169290921790915550565b5f806107866111e4565b600101546001600160a01b031692915050565b6107a1611214565b805160208201205f9060ff19906107ba906001906127f9565b6040516020016107cc91815260200190565b60408051601f198184030181529190528051602090910120169050807f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000556040517f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc905f90a15050565b5f61083f6105af565b610847610c86565b6001600160401b031661085a919061280c565b905090565b610867611214565b6108705f61126f565b565b5f8061087c6111e4565b600201546001600160a01b031692915050565b610897611214565b5f6108a06111e4565b60068101805467ffffffffffffffff19166001600160401b0385169081179091556040519081529091507f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c7906020015b60405180910390a15050565b5f806109066111e4565b905060025f88815260098301602052604090205460ff16600281111561092e5761092e612501565b146109925760405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608401610629565b5f61099b610836565b90505f6109a982600a61280c565b90505f856109b78385612835565b6109c19190612835565b90506109cc816112df565b600284015460408051602081018d90529081018b90525f91610a12916001600160a01b0390911690606001604051602081830303815290604052805190602001206113c3565b6001600160a01b0381165f908152600b8701602052604081208d9055600c8701805492935090610a4183612854565b90915550506040516001600160a01b03821681528b907f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf19060200160405180910390a26040516306f0ee9760e51b81526001600160a01b0382169063de1dd2e090610ab89032908d908d908d908a90600401612894565b5f604051808303815f87803b158015610acf575f80fd5b505af1158015610ae1573d5f803e3d5ffd5b50929d9c50505050505050505050505050565b5f80610afe6111e4565b600301546001600160a01b031692915050565b5f80610b1b6111e4565b6001600160a01b039093165f90815260079093016020525050604090205460ff1690565b5f80610b496111e4565b6001600160a01b039093165f908152600b9093016020525050604090205490565b5f80610b746111e4565b600c015492915050565b610b86611214565b5f610b8f6111e4565b60068101805477ffffffffffffffffffffffffffffffff00000000000000001916600160401b6001600160801b038616908102919091179091556040519081529091507f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740906020016108f0565b5f80610c066111e4565b5f9384526009016020525050604090205460ff1690565b60605f610c286111e4565b60088101805460408051602080840282018101909252828152939450830182828015610c7b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610c5d575b505050505091505090565b5f80610c906111e4565b600601546001600160401b031692915050565b610cab611214565b610cb36113d6565b610cee8282808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525061144692505050565b6040517f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f51905f90a15050565b5f610d236111e4565b905060605f5b85811015610ed65736878783818110610d4457610d446128da565b90506040020190505f610d5682611521565b90508381604051602001610d6b929190612905565b60408051601f198184030181529190529350813560015f82815260098801602052604090205460ff166002811115610da557610da5612501565b14610e025760405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608401610629565b610e12604084016020850161292a565b15610e81575f8181526009870160205260408120805460ff19166002179055600a8701805491610e4183612854565b90915550506040518181526001907f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c99060200160405180910390a2610ecb565b5f8181526009870160209081526040808320805460ff19169055518381527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c9910160405180910390a25b505050600101610d29565b50610ee981805190602001208585611570565b505050505050565b5f80610efb6111e4565b6008015492915050565b5f612710610f11610f39565b610f19610ef1565b610f239190612945565b610f2f9061270f61295c565b61085a919061296f565b5f80610f436111e4565b6005015492915050565b610f55611214565b6001600160a01b038116610f7e57604051631e4fbdf760e01b81525f6004820152602401610629565b610f878161126f565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610fce5750825b90505f826001600160401b03166001148015610fe95750303b155b905081158015610ff7575080155b156110155760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561103f57845460ff60401b1916600160401b1785555b6110488a611714565b61107e604051806040016040528060158152602001743937baba32b91739ba37b930b3b2972937baba32b960591b815250610799565b5f6110876111e4565b90506110946001436127f9565b4081556001810180546001600160a01b03199081166001600160a01b038d81169190911790925560028301805482168c8416179055600383018054909116918a16919091179055611a0a60058201556006810180546001600160c01b031916680a000000009502f90017905561110987611446565b50831561115057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b60605f5b848110156111ca573686868381811061117b5761117b6128da565b905060200281019061118d919061298e565b90505f61119982611725565b905083816040516020016111ae929190612905565b60408051808303601f1901815291905293505050600101611160565b506111dd81805190602001208484611570565b5050505050565b5f8061120e7f5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e0005490565b92915050565b336112467f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108705760405163118cdaa760e01b8152336004820152602401610629565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f6112e86111e4565b60038101546040516323b872dd60e01b81523260048201523060248201526001600160801b03851660448201529192505f916001600160a01b03909116906323b872dd906064016020604051808303815f875af115801561134b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136f91906129ac565b9050806113be5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606401610629565b505050565b5f6113cf83835f6118fd565b9392505050565b5f6113df6111e4565b90505f5b6008820154811015611438575f826008018281548110611405576114056128da565b5f9182526020808320909101546001600160a01b0316825260078501905260409020805460ff19169055506001016113e3565b50610f87600882015f61224a565b5f61144f6111e4565b6008810154909150156114b05760405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608401610629565b5f5b825181101561150b575f8382815181106114ce576114ce6128da565b6020908102919091018101516001600160a01b03165f9081526007850190915260409020805460ff191660019081179091559190910190506114b2565b5081516113be9060088301906020850190612265565b5f8135611534604084016020850161292a565b604051602001611553929190918252151560f81b602082015260210190565b604051602081830303815290604052805190602001209050919050565b5f6115796111e4565b90505f611584610f05565b90505f6115b48660405160200161159d91815260200190565b60408051601f198184030181529190523090611992565b90505f805b858110156116ba57365f8888848181106115d5576115d56128da565b90506020028101906115e791906129c7565b915091505f61162d83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152508a939250506119c49050565b6001600160a01b0381165f90815260078a01602052604090205490915060ff1615611671578661165c86612854565b9550850361166c575050506116ba565b6116af565b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606401610629565b5050506001016115b9565b508281101561170b5760405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606401610629565b50505050505050565b61171c6119ec565b610f8781611a35565b5f8061172f6111e4565b905082602001358160040154146117885760405162461bcd60e51b815260206004820181905260248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152606401610629565b6117958360400135611a3d565b6117ed5760405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608401610629565b60605f5b6117fe6060860186612a09565b905081101561187457366118156060870187612a09565b83818110611825576118256128da565b90506020028101906118379190612a4e565b90505f61184382611a8f565b90508381604051602001611858929190612905565b60408051808303601f19018152919052935050506001016117f1565b508335600483018190556040519081527fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e9060200160405180910390a180516020828101919091206040805187358185015283880135818301528188013560608201526080808201939093528151808203909301835260a001905280519101205b949350505050565b5f814710156119285760405163cf47918160e01b815247600482015260248101839052604401610629565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c175f526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166113cf5760405163b06ebf3d60e01b815260040160405180910390fd5b5f82826040516020016119a6929190612a62565b60405160208183030381529060405280519060200120905092915050565b5f805f806119d28686612022565b9250925092506119e2828261206b565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661087057604051631afcd79f60e31b815260040160405180910390fd5b610f556119ec565b5f80611a4a6001436127f9565b90505b8015611a87578040838103611a66575060019392505050565b5f819003611a745750611a87565b5080611a7f81612a8b565b915050611a4d565b505f92915050565b5f80611a996111e4565b9050600b81015f611aad6020860186612317565b6001600160a01b03166001600160a01b031681526020019081526020015f20545f801b03611b355760405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608401610629565b60038101546001600160a01b03168063a9059cbb611b566020870187612317565b611b6660608801604089016124d1565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015611bb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bdb91906129ac565b505f611bea6020860186612317565b905060605f5b611bfd6060880188612aa0565b9050811015611d6b5736611c146060890189612aa0565b83818110611c2457611c246128da565b6060029190910191508390508135611c426040840160208501612317565b611c5260608501604086016124d1565b604051602001611c8f9392919092835260609190911b6001600160601b031916602083015260801b6001600160801b031916603482015260440190565b60408051601f1981840301815290829052611cad9291602001612ae4565b6040516020818303038152906040529250836001600160a01b03166314503e51825f0135836020016020810190611ce49190612317565b611cf460608601604087016124d1565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526001600160801b031660448201526064015f604051808303815f87803b158015611d48575f80fd5b505af1158015611d5a573d5f803e3d5ffd5b505060019093019250611bf0915050565b5060605f5b611d7d6080890189612a09565b9050811015611f295736611d9460808a018a612a09565b83818110611da457611da46128da565b9050602002810190611db69190612af8565b905082611dc282612127565b604051602001611dd3929190612905565b60408051601f19818403018152919052925060808101355f03611e80576001600160a01b03851663c2df60098235611e116040850160208601612317565b611e1e60408601866129c7565b611e2e60808801606089016124d1565b6040518663ffffffff1660e01b8152600401611e4e959493929190612b0c565b5f604051808303815f87803b158015611e65575f80fd5b505af1158015611e77573d5f803e3d5ffd5b50505050611f20565b6001600160a01b03851663c78bde77611e9f6040840160208501612317565b611eac60408501856129c7565b611ebc60808701606088016124d1565b6080870135611ed160c0890160a08a01612b51565b6040518763ffffffff1660e01b8152600401611ef296959493929190612b78565b5f604051808303815f87803b158015611f09575f80fd5b505af1158015611f1b573d5f803e3d5ffd5b505050505b50600101611d70565b50604051638ea59e1d60e01b8152602088013560048201526001600160a01b03841690638ea59e1d906024015f604051808303815f87803b158015611f6c575f80fd5b505af1158015611f7e573d5f803e3d5ffd5b506120179250611f949150506020890189612317565b6020890135611fa960608b0160408c016124d1565b85516020808801919091208651878301206040805160609790971b6001600160601b03191687850152603487019590955260809390931b6001600160801b031916605486015260648501526084808501929092528251808503909201825260a4909301909152805191012090565b979650505050505050565b5f805f8351604103612059576020840151604085015160608601515f1a61204b88828585612182565b955095509550505050612064565b505081515f91506002905b9250925092565b5f82600381111561207e5761207e612501565b03612087575050565b600182600381111561209b5761209b612501565b036120b95760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156120cd576120cd612501565b036120ee5760405163fce698f760e01b815260048101829052602401610629565b600382600381111561210257612102612501565b03612123576040516335e2f38360e21b815260048101829052602401610629565b5050565b5f813561213a6040840160208501612317565b61214760408501856129c7565b61215760808701606088016124d1565b608087013561216c60c0890160a08a01612b51565b6040516020016115539796959493929190612bcd565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156121bb57505f91506003905082612240565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561220c573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661223757505f925060019150829050612240565b92505f91508190505b9450945094915050565b5080545f8255905f5260205f2090810190610f8791906122c8565b828054828255905f5260205f209081019282156122b8579160200282015b828111156122b857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612283565b506122c49291506122c8565b5090565b5b808211156122c4575f81556001016122c9565b5f80604083850312156122ed575f80fd5b50508035926020909101359150565b80356001600160a01b0381168114612312575f80fd5b919050565b5f60208284031215612327575f80fd5b6113cf826122fc565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561236c5761236c612330565b604052919050565b5f60208284031215612384575f80fd5b81356001600160401b03811115612399575f80fd5b8201601f810184136123a9575f80fd5b80356001600160401b038111156123c2576123c2612330565b6123d5601f8201601f1916602001612344565b8181528560208385010111156123e9575f80fd5b816020840160208301375f91810160200191909152949350505050565b5f60208284031215612416575f80fd5b81356001600160401b03811681146113cf575f80fd5b80356001600160801b0381168114612312575f80fd5b5f805f805f60808688031215612456575f80fd5b853594506020860135935060408601356001600160401b03811115612479575f80fd5b8601601f81018813612489575f80fd5b80356001600160401b0381111561249e575f80fd5b8860208284010111156124af575f80fd5b602091909101935091506124c56060870161242c565b90509295509295909350565b5f602082840312156124e1575f80fd5b6113cf8261242c565b5f602082840312156124fa575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b602081016003831061253557634e487b7160e01b5f52602160045260245ffd5b91905290565b602080825282518282018190525f918401906040840190835b8181101561257b5783516001600160a01b0316835260209384019390920191600101612554565b509095945050505050565b5f8083601f840112612596575f80fd5b5081356001600160401b038111156125ac575f80fd5b6020830191508360208260051b85010111156125c6575f80fd5b9250929050565b5f80602083850312156125de575f80fd5b82356001600160401b038111156125f3575f80fd5b6125ff85828601612586565b90969095509350505050565b5f805f806040858703121561261e575f80fd5b84356001600160401b03811115612633575f80fd5b8501601f81018713612643575f80fd5b80356001600160401b03811115612658575f80fd5b8760208260061b840101111561266c575f80fd5b6020918201955093508501356001600160401b0381111561268b575f80fd5b61269787828801612586565b95989497509550505050565b5f805f805f60a086880312156126b7575f80fd5b6126c0866122fc565b94506126ce602087016122fc565b93506126dc604087016122fc565b92506126ea606087016122fc565b915060808601356001600160401b03811115612704575f80fd5b8601601f81018813612714575f80fd5b80356001600160401b0381111561272d5761272d612330565b8060051b61273d60208201612344565b9182526020818401810192908101908b841115612758575f80fd5b6020850194505b8385101561278157612770856122fc565b82526020948501949091019061275f565b80955050505050509295509295909350565b5f805f80604085870312156127a6575f80fd5b84356001600160401b038111156127bb575f80fd5b6127c787828801612586565b90955093505060208501356001600160401b0381111561268b575f80fd5b634e487b7160e01b5f52601160045260245ffd5b8181038181111561120e5761120e6127e5565b6001600160801b03818116838216029081169081811461282e5761282e6127e5565b5092915050565b6001600160801b03818116838216019081111561120e5761120e6127e5565b5f60018201612865576128656127e5565b5060010190565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03861681526080602082018190525f906128b8908301868861286c565b6001600160801b03948516604084015292909316606090910152949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f81518060208401855e5f93019283525090919050565b5f61291082856128ee565b9283525050602001919050565b8015158114610f87575f80fd5b5f6020828403121561293a575f80fd5b81356113cf8161291d565b808202811582820484141761120e5761120e6127e5565b8082018082111561120e5761120e6127e5565b5f8261298957634e487b7160e01b5f52601260045260245ffd5b500490565b5f8235607e198336030181126129a2575f80fd5b9190910192915050565b5f602082840312156129bc575f80fd5b81516113cf8161291d565b5f808335601e198436030181126129dc575f80fd5b8301803591506001600160401b038211156129f5575f80fd5b6020019150368190038213156125c6575f80fd5b5f808335601e19843603018112612a1e575f80fd5b8301803591506001600160401b03821115612a37575f80fd5b6020019150600581901b36038213156125c6575f80fd5b5f8235609e198336030181126129a2575f80fd5b601960f81b8152606083901b6001600160601b03191660028201525f6118f560168301846128ee565b5f81612a9957612a996127e5565b505f190190565b5f808335601e19843603018112612ab5575f80fd5b8301803591506001600160401b03821115612ace575f80fd5b60200191506060810236038213156125c6575f80fd5b5f6118f5612af283866128ee565b846128ee565b5f823560be198336030181126129a2575f80fd5b8581526001600160a01b03851660208201526080604082018190525f90612b36908301858761286c565b90506001600160801b03831660608301529695505050505050565b5f60208284031215612b61575f80fd5b81356001600160e01b0319811681146113cf575f80fd5b6001600160a01b038716815260a0602082018190525f90612b9c908301878961286c565b6001600160801b039590951660408301525060608101929092526001600160e01b0319166080909101529392505050565b8781526bffffffffffffffffffffffff198760601b1660208201528486603483013760809390931b6001600160801b0319166034949093019384019290925260448301526001600160e01b0319166064820152606801939250505056fea2646970667358221220cdae2caffe3f8d0a31f1acc9ef7db5a30a7aff35689eceb75caf7feed87a43ea64736f6c634300081a0033","sourceMap":"781:15771:78:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3429:159;;;;;;;;;;;;;:::i;:::-;;;160:25:81;;;148:2;133:18;3429:159:78;;;;;;;;5694:149;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;360:47:81;;;342:66;;330:2;315:18;5694:149:78;196:218:81;6233:453:78;;;;;;;;;;-1:-1:-1;6233:453:78;;;;;:::i;:::-;;:::i;:::-;;2461:153;;;;;;;;;;;;;:::i;2620:167::-;;;;;;;;;;;;;:::i;3230:143::-;;;;;;;;;;-1:-1:-1;3230:143:78;;;;;:::i;:::-;;:::i;3091:133::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1485:32:81;;;1467:51;;1455:2;1440:18;3091:133:78;1321:203:81;2168:287:78;;;;;;;;;;-1:-1:-1;2168:287:78;;;;;:::i;:::-;;:::i;6084:113::-;;;;;;;;;;;;;:::i;3155:101:24:-;;;;;;;;;;;;;:::i;2942:143:78:-;;;;;;;;;;;;;:::i;5484:204::-;;;;;;;;;;-1:-1:-1;5484:204:78;;;;;:::i;:::-;;:::i;6692:1033::-;;;;;;:::i;:::-;;:::i;2793:143::-;;;;;;;;;;;;;:::i;2441:144:24:-;;;;;;;;;;-1:-1:-1;1313:22:24;2570:8;-1:-1:-1;;;;;2570:8:24;2441:144;;4681:171:78;;;;;;;;;;-1:-1:-1;4681:171:78;;;;;:::i;:::-;;:::i;:::-;;;4259:14:81;;4252:22;4234:41;;4222:2;4207:18;4681:171:78;4094:187:81;3912:166:78;;;;;;;;;;-1:-1:-1;3912:166:78;;;;;:::i;:::-;;:::i;2036:126::-;;;;;;;;;;-1:-1:-1;1072:66:78;2109:46;2036:126;;3759:147;;;;;;;;;;;;;:::i;5849:229::-;;;;;;;;;;-1:-1:-1;5849:229:78;;;;;:::i;:::-;;:::i;3594:159::-;;;;;;;;;;-1:-1:-1;3594:159:78;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4858:154::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5338:140::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;5992:31:81;;;5974:50;;5962:2;5947:18;5338:140:78;5830:200:81;5075:209:78;;;;;;;;;;-1:-1:-1;5075:209:78;;;;;:::i;:::-;;:::i;7731:1117::-;;;;;;;;;;-1:-1:-1;7731:1117:78;;;;;:::i;:::-;;:::i;4518:157::-;;;;;;;;;;;;;:::i;4308:204::-;;;;;;;;;;;;;:::i;4129:173::-;;;;;;;;;;;;;:::i;3405:215:24:-;;;;;;;;;;-1:-1:-1;3405:215:24;;;;;:::i;:::-;;:::i;1257:740:78:-;;;;;;;;;;-1:-1:-1;1257:740:78;;;;;:::i;:::-;;:::i;8854:571::-;;;;;;;;;;-1:-1:-1;8854:571:78;;;;;:::i;:::-;;:::i;3429:159::-;3481:7;3500:22;3525:13;:11;:13::i;:::-;3555:26;;;;3429:159;-1:-1:-1;;3429:159:78:o;5694:149::-;5741:7;5760:22;5785:13;:11;:13::i;:::-;5815:21;;;-1:-1:-1;;;5815:21:78;;-1:-1:-1;;;;;5815:21:78;;;-1:-1:-1;;5694:149:78:o;6233:453::-;6327:15;;;;:35;;-1:-1:-1;6355:1:78;6346:11;:16;;6327:35;6319:76;;;;-1:-1:-1;;;6319:76:78;;10114:2:81;6319:76:78;;;10096:21:81;10153:2;10133:18;;;10126:30;10192;10172:18;;;10165:58;10240:18;;6319:76:78;;;;;;;;;6406:22;6431:13;:11;:13::i;:::-;6406:38;-1:-1:-1;6487:17:78;6463:20;;;;:12;;;:20;;;;;;;;:41;;;;;;;;:::i;:::-;;6455:102;;;;-1:-1:-1;;;6455:102:78;;10471:2:81;6455:102:78;;;10453:21:81;10510:2;10490:18;;;10483:30;10549:34;10529:18;;;10522:62;-1:-1:-1;;;10600:18:81;;;10593:46;10656:19;;6455:102:78;10269:412:81;6455:102:78;6568:20;;;;:12;;;:20;;;;;;;;;:52;;-1:-1:-1;;6568:52:78;6591:29;6568:52;;;6636:43;;10860:25:81;;;10901:18;;;10894:34;;;6636:43:78;;10833:18:81;6636:43:78;;;;;;;6309:377;6233:453;;:::o;2461:153::-;2510:7;2529:22;2554:13;:11;:13::i;:::-;2584:23;;2461:153;-1:-1:-1;;2461:153:78:o;2620:167::-;2676:7;2695:22;2720:13;:11;:13::i;:::-;2750:30;;;;2620:167;-1:-1:-1;;2620:167:78:o;3230:143::-;2334:13:24;:11;:13::i;:::-;3295:22:78::1;3320:13;:11;:13::i;:::-;3343;;:23:::0;;-1:-1:-1;;;;;;3343:23:78::1;-1:-1:-1::0;;;;;3343:23:78;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;3230:143:78:o;3091:133::-;3130:7;3149:22;3174:13;:11;:13::i;:::-;3204;;;-1:-1:-1;;;;;3204:13:78;;3091:133;-1:-1:-1;;3091:133:78:o;2168:287::-;2334:13:24;:11;:13::i;:::-;2288:27:78;;::::1;::::0;::::1;::::0;2244:12:::1;::::0;-1:-1:-1;;2325:23:78;2280:40:::1;::::0;2319:1:::1;::::0;2280:40:::1;:::i;:::-;2269:52;;;;;;160:25:81::0;;148:2;133:18;;14:177;2269:52:78::1;;::::0;;-1:-1:-1;;2269:52:78;;::::1;::::0;;;;;;2259:63;;2269:52:::1;2259:63:::0;;::::1;::::0;:89:::1;::::0;-1:-1:-1;2259:89:78;1072:66:::1;2359:53:::0;2428:20:::1;::::0;::::1;::::0;2359:46:::1;::::0;2428:20:::1;2234:221;2168:287:::0;:::o;6084:113::-;6124:7;6174:16;:14;:16::i;:::-;6158:12;:10;:12::i;:::-;-1:-1:-1;;;;;6150:21:78;:40;;;;:::i;:::-;6143:47;;6084:113;:::o;3155:101:24:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;2942:143:78:-;2986:7;3005:22;3030:13;:11;:13::i;:::-;3060:18;;;-1:-1:-1;;;;;3060:18:78;;2942:143;-1:-1:-1;;2942:143:78:o;5484:204::-;2334:13:24;:11;:13::i;:::-;5556:22:78::1;5581:13;:11;:13::i;:::-;5604:17;::::0;::::1;:31:::0;;-1:-1:-1;;5604:31:78::1;-1:-1:-1::0;;;;;5604:31:78;::::1;::::0;;::::1;::::0;;;5651:30:::1;::::0;5974:50:81;;;5604:17:78;;-1:-1:-1;5651:30:78::1;::::0;5962:2:81;5947:18;5651:30:78::1;;;;;;;;5546:142;5484:204:::0;:::o;6692:1033::-;6835:7;6858:22;6883:13;:11;:13::i;:::-;6858:38;-1:-1:-1;6939:19:78;6915:20;;;;:12;;;:20;;;;;;;;:43;;;;;;;;:::i;:::-;;6907:102;;;;-1:-1:-1;;;6907:102:78;;11728:2:81;6907:102:78;;;11710:21:81;11767:2;11747:18;;;11740:30;11806:34;11786:18;;;11779:62;-1:-1:-1;;;11857:18:81;;;11850:44;11911:19;;6907:102:78;11526:410:81;6907:102:78;7020:20;7043:9;:7;:9::i;:::-;7020:32;-1:-1:-1;7062:25:78;7090:17;7020:32;7105:2;7090:17;:::i;:::-;7062:45;-1:-1:-1;7118:18:78;7174:6;7139:32;7062:45;7139:12;:32;:::i;:::-;:41;;;;:::i;:::-;7118:62;;7191:26;7206:10;7191:14;:26::i;:::-;7422:18;;;;7452:30;;;;;;12343:19:81;;;12378:12;;;12371:28;;;7378:15:78;;7396:88;;-1:-1:-1;;;;;7422:18:78;;;;12415:12:81;;7452:30:78;;;;;;;;;;;;7442:41;;;;;;7396:25;:88::i;:::-;-1:-1:-1;;;;;7495:24:78;;;;;;:15;;;:24;;;;;:33;;;7538:20;;;:22;;7378:106;;-1:-1:-1;7538:20:78;:22;;;:::i;:::-;;;;-1:-1:-1;;7576:31:78;;-1:-1:-1;;;;;1485:32:81;;1467:51;;7600:6:78;;7576:31;;1455:2:81;1440:18;7576:31:78;;;;;;;7618:75;;-1:-1:-1;;;7618:75:78;;-1:-1:-1;;;;;7618:28:78;;;;;:75;;7647:9;;7658:7;;;;7667:6;;7675:17;;7618:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7711:7:78;;6692:1033;-1:-1:-1;;;;;;;;;;;;;6692:1033:78:o;2793:143::-;2837:7;2856:22;2881:13;:11;:13::i;:::-;2911:18;;;-1:-1:-1;;;;;2911:18:78;;2793:143;-1:-1:-1;;2793:143:78:o;4681:171::-;4746:4;4762:22;4787:13;:11;:13::i;:::-;-1:-1:-1;;;;;4817:28:78;;;;;;;:17;;;;:28;;-1:-1:-1;;4817:28:78;;;;;;;4681:171::o;3912:166::-;3973:7;3992:22;4017:13;:11;:13::i;:::-;-1:-1:-1;;;;;4047:24:78;;;;;;;:15;;;;:24;;-1:-1:-1;;4047:24:78;;;;;3912:166::o;3759:147::-;3805:7;3824:22;3849:13;:11;:13::i;:::-;3879:20;;;;3759:147;-1:-1:-1;;3759:147:78:o;5849:229::-;2334:13:24;:11;:13::i;:::-;5930:22:78::1;5955:13;:11;:13::i;:::-;5978:21;::::0;::::1;:39:::0;;-1:-1:-1;;5978:39:78::1;-1:-1:-1::0;;;;;;;;5978:39:78;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;6033:38:::1;::::0;342:66:81;;;5978:21:78;;-1:-1:-1;6033:38:78::1;::::0;330:2:81;315:18;6033:38:78::1;196:218:81::0;3594:159:78;3650:9;3671:22;3696:13;:11;:13::i;:::-;3726:20;;;;:12;;:20;;-1:-1:-1;;3726:20:78;;;;;;;3594:159::o;4858:154::-;4901:16;4929:22;4954:13;:11;:13::i;:::-;4984:21;;;4977:28;;;;;;;;;;;;;;;;;;;4929:38;;-1:-1:-1;4977:28:78;;4984:21;4977:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4977:28:78;;;;;;;;;;;;;;;;;;;;;;;;4858:154;:::o;5338:140::-;5381:6;5399:22;5424:13;:11;:13::i;:::-;5454:17;;;-1:-1:-1;;;;;5454:17:78;;5338:140;-1:-1:-1;;5338:140:78:o;5075:209::-;2334:13:24;:11;:13::i;:::-;5173:18:78::1;:16;:18::i;:::-;5201:38;5216:22;;5201:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5201:14:78::1;::::0;-1:-1:-1;;;5201:38:78:i:1;:::-;5255:22;::::0;::::1;::::0;;;::::1;5075:209:::0;;:::o;7731:1117::-;7848:22;7873:13;:11;:13::i;:::-;7848:38;;7897:34;7947:9;7942:824;7962:31;;;7942:824;;;8014:38;8055:20;;8076:1;8055:23;;;;;;;:::i;:::-;;;;;;8014:64;;8093:26;8122:35;8142:14;8122:19;:35::i;:::-;8093:64;;8209:21;8232:18;8196:55;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8196:55:78;;;;;;;;;;-1:-1:-1;8283:17:78;;8346:29;8322:20;;;;:12;;;:20;;;;;;;;:53;;;;;;;;:::i;:::-;;8314:105;;;;-1:-1:-1;;;8314:105:78;;14259:2:81;8314:105:78;;;14241:21:81;14298:2;14278:18;;;14271:30;14337:34;14317:18;;;14310:62;-1:-1:-1;;;14388:18:81;;;14381:37;14435:19;;8314:105:78;14057:403:81;8314:105:78;8438:20;;;;;;;;:::i;:::-;8434:322;;;8478:20;;;;:12;;;:20;;;;;:42;;-1:-1:-1;;8478:42:78;8501:19;8478:42;;;8538:26;;;:28;;;;;;:::i;:::-;;;;-1:-1:-1;;8590:30:78;;160:25:81;;;8615:4:78;;8590:30;;148:2:81;133:18;8590:30:78;;;;;;;8434:322;;;8666:20;;;;:12;;;:20;;;;;;;;8659:27;;-1:-1:-1;;8659:27:78;;;8710:31;160:25:81;;;8710:31:78;;133:18:81;8710:31:78;;;;;;;8434:322;-1:-1:-1;;;7995:3:78;;7942:824;;;;8776:65;8806:21;8796:32;;;;;;8830:10;;8776:19;:65::i;:::-;7838:1010;;7731:1117;;;;:::o;4518:157::-;4566:7;4585:22;4610:13;:11;:13::i;:::-;4640:21;;:28;;4518:157;-1:-1:-1;;4518:157:78:o;4308:204::-;4360:7;4500:5;4461:28;:26;:28::i;:::-;4441:17;:15;:17::i;:::-;:48;;;;:::i;:::-;:55;;4492:4;4441:55;:::i;:::-;4440:65;;;;:::i;4129:173::-;4188:7;4207:22;4232:13;:11;:13::i;:::-;4262:33;;;;4129:173;-1:-1:-1;;4129:173:78:o;3405:215:24:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:24;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:24;;3562:1:::1;3534:31;::::0;::::1;1467:51:81::0;1440:18;;3534:31:24::1;1321:203:81::0;3485:91:24::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;1257:740:78:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;1476:28:78::1;1491:12;1476:14;:28::i;:::-;1515:39;;;;;;;;;;;;;;-1:-1:-1::0;;;1515:39:78::1;;::::0;:14:::1;:39::i;:::-;1564:22;1589:13;:11;:13::i;:::-;1564:38:::0;-1:-1:-1;1649:16:78::1;1664:1;1649:12;:16;:::i;:::-;1639:27;1613:53:::0;;1676:13:::1;::::0;::::1;:23:::0;;-1:-1:-1;;;;;;1676:23:78;;::::1;-1:-1:-1::0;;;;;1676:23:78;;::::1;::::0;;;::::1;::::0;;;1709:18:::1;::::0;::::1;:33:::0;;;::::1;::::0;;::::1;;::::0;;1752:18:::1;::::0;::::1;:33:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;1831:4:::1;1795:33;::::0;::::1;:40:::0;1873:17:::1;::::0;::::1;:33:::0;;-1:-1:-1;;;;;;1916:26:78;;;;;1952:38:::1;1967:22:::0;1952:14:::1;:38::i;:::-;1466:531;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;5974:50:81;;5142:14:25;;5962:2:81;5947:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;1257:740:78;;;;;:::o;8854:571::-;8974:35;9025:9;9020:322;9040:32;;;9020:322;;;9093:40;9136:21;;9158:1;9136:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;9093:67;;9175:27;9205:29;9218:15;9205:12;:29::i;:::-;9175:59;;9287:22;9311:19;9274:57;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;9274:57:78;;;;;;;-1:-1:-1;;;9074:3:78;;9020:322;;;;9352:66;9382:22;9372:33;;;;;;9407:10;;9352:19;:66::i;:::-;8964:461;8854:571;;;;:::o;16328:222::-;16373:22;16407:12;16422:16;1072:66;2109:46;;2036:126;16422:16;16407:31;16328:222;-1:-1:-1;;16328:222:78:o;2658:162:24:-;966:10:29;2717:7:24;1313:22;2570:8;-1:-1:-1;;;;;2570:8:24;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:24;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:24;;966:10:29;2763:40:24;;;1467:51:81;1440:18;;2763:40:24;1321:203:81;3774:248:24;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:24;;-1:-1:-1;;;;;3941:19:24;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;15294:257:78:-;15352:22;15377:13;:11;:13::i;:::-;15423:18;;;;15416:73;;-1:-1:-1;;;15416:73:78;;15456:9;15416:73;;;16114:51:81;15475:4:78;16181:18:81;;;16174:60;-1:-1:-1;;;;;16270:47:81;;16250:18;;;16243:75;15423:18:78;;-1:-1:-1;15401:12:78;;-1:-1:-1;;;;;15423:18:78;;;;15416:39;;16087:18:81;;15416:73:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15401:88;;15508:7;15500:44;;;;-1:-1:-1;;;15500:44:78;;16781:2:81;15500:44:78;;;16763:21:81;16820:2;16800:18;;;16793:30;16859:26;16839:18;;;16832:54;16903:18;;15500:44:78;16579:348:81;15500:44:78;15342:209;;15294:257;:::o;2816:169:36:-;2900:16;2935:43;2954:14;2970:4;2976:1;2935:18;:43::i;:::-;2928:50;2816:169;-1:-1:-1;;;2816:169:36:o;15557:317:78:-;15603:22;15628:13;:11;:13::i;:::-;15603:38;;15657:9;15652:177;15676:21;;;:28;15672:32;;15652:177;;;15725:17;15745:6;:21;;15767:1;15745:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15745:24:78;15790:28;;:17;;;:28;;;;;15783:35;;-1:-1:-1;;15783:35:78;;;-1:-1:-1;15745:24:78;15706:3;15652:177;;;-1:-1:-1;15839:28:78;15846:21;;;;15839:28;:::i;15880:442::-;15957:22;15982:13;:11;:13::i;:::-;16014:21;;;:28;15957:38;;-1:-1:-1;16014:33:78;16006:81;;;;-1:-1:-1;;;16006:81:78;;17134:2:81;16006:81:78;;;17116:21:81;17173:2;17153:18;;;17146:30;17212:34;17192:18;;;17185:62;-1:-1:-1;;;17263:18:81;;;17256:33;17306:19;;16006:81:78;16932:399:81;16006:81:78;16103:9;16098:167;16122:16;:23;16118:1;:27;16098:167;;;16166:17;16186:16;16203:1;16186:19;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;16219:28:78;;;;;:17;;;:28;;;;;;:35;;-1:-1:-1;;16219:35:78;16250:4;16219:35;;;;;;16147:3;;;;;-1:-1:-1;16098:167:78;;;-1:-1:-1;16275:40:78;;;;:21;;;;:40;;;;;:::i;15096:192::-;15187:7;15240:17;;15259:20;;;;;;;;:::i;:::-;15223:57;;;;;;;;17487:19:81;;;17552:14;17545:22;17540:3;17536:32;17531:2;17522:12;;17515:54;17594:2;17585:12;;17336:267;15223:57:78;;;;;;;;;;;;;15213:68;;;;;;15206:75;;15096:192;;;:::o;9467:844::-;9566:22;9591:13;:11;:13::i;:::-;9566:38;;9615:17;9635:21;:19;:21::i;:::-;9615:41;;9667:19;9689:73;9752:8;9735:26;;;;;;17737:19:81;;17781:2;17772:12;;17608:182;9735:26:78;;;;-1:-1:-1;;9735:26:78;;;;;;;;;9697:4;;9689:45;:73::i;:::-;9667:95;;9772:23;9815:9;9810:416;9830:21;;;9810:416;;;9872:24;;9899:10;;9910:1;9899:13;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;9872:40;;;;9927:17;9947:30;9967:9;;9947:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9947:11:78;;:30;-1:-1:-1;;9947:19:78;:30;-1:-1:-1;9947:30:78:i;:::-;-1:-1:-1;;;;;9996:28:78;;;;;;:17;;;:28;;;;;;9927:50;;-1:-1:-1;9996:28:78;;9992:224;;;10069:9;10048:17;;;:::i;:::-;;;;:30;10044:82;;10102:5;;;;;10044:82;9992:224;;;10164:37;;-1:-1:-1;;;10164:37:78;;18523:2:81;10164:37:78;;;18505:21:81;18562:2;18542:18;;;18535:30;-1:-1:-1;;;18581:18:81;;;18574:49;18640:18;;10164:37:78;18321:343:81;10164:37:78;-1:-1:-1;;;9853:3:78;;9810:416;;;;10263:9;10244:15;:28;;10236:68;;;;-1:-1:-1;;;10236:68:78;;18871:2:81;10236:68:78;;;18853:21:81;18910:2;18890:18;;;18883:30;18949:29;18929:18;;;18922:57;18996:18;;10236:68:78;18669:351:81;10236:68:78;9556:755;;;;9467:844;;;:::o;1847:127:24:-;6931:20:25;:18;:20::i;:::-;1929:38:24::1;1954:12;1929:24;:38::i;10317:1114:78:-:0;10398:7;10417:22;10442:13;:11;:13::i;:::-;10417:38;;10521:15;:34;;;10487:6;:30;;;:68;10466:135;;;;-1:-1:-1;;;10466:135:78;;19227:2:81;10466:135:78;;;19209:21:81;;;19246:18;;;19239:30;19305:34;19285:18;;;19278:62;19357:18;;10466:135:78;19025:356:81;10466:135:78;10619:49;10638:15;:29;;;10619:18;:49::i;:::-;10611:97;;;;-1:-1:-1;;;10611:97:78;;19588:2:81;10611:97:78;;;19570:21:81;19627:2;19607:18;;;19600:30;19666:34;19646:18;;;19639:62;-1:-1:-1;;;19717:18:81;;;19710:33;19760:19;;10611:97:78;19386:399:81;10611:97:78;10719:30;10765:9;10760:320;10784:27;;;;:15;:27;:::i;:::-;:34;;10780:1;:38;10760:320;;;10839:40;10882:27;;;;:15;:27;:::i;:::-;10910:1;10882:30;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;10839:73;;10927:22;10952:35;10971:15;10952:18;:35::i;:::-;10927:60;;11035:17;11054:14;11022:47;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;11022:47:78;;;;;;;-1:-1:-1;;;10820:3:78;;10760:320;;;-1:-1:-1;11123:25:78;;11090:30;;;:58;;;11163:41;;160:25:81;;;11163:41:78;;148:2:81;133:18;11163:41:78;;;;;;;11386:28;;11295:34;11386:28;;;;;;;11343:29;14184:85;;11256:25;;14184:85;;;26543:19:81;11295:34:78;;;;26578:12:81;;;26571:28;11343:29:78;;;;26615:12:81;;;26608:28;26652:12;;;;26645:28;;;;14184:85:78;;;;;;;;;;26689:13:81;;14184:85:78;;14174:96;;;;;11222:202;11215:209;10317:1114;-1:-1:-1;;;;10317:1114:78:o;3411:1001:36:-;3540:16;3596:5;3572:21;:29;3568:123;;;3624:56;;-1:-1:-1;;;3624:56:36;;3651:21;3624:56;;;10860:25:81;10901:18;;;10894:34;;;10833:18;;3624:56:36;10686:248:81;3568:123:36;4004:48;3986:14;3980:4;3976:25;3970:4;3966:36;3963:90;3957:4;3950:104;4211:32;4194:14;4188:4;4184:25;4181:63;4175:4;4168:77;4297:4;4291;4285;4278:5;4270:32;4258:44;-1:-1:-1;;;;;;4325:22:36;;4321:85;;4370:25;;-1:-1:-1;;;4370:25:36;;;;;;;;;;;2720:191:56;2822:7;2887:9;2898:4;2858:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2848:56;;;;;;2841:63;;2720:191;;;;:::o;3702:255:55:-;3780:7;3800:17;3819:18;3839:16;3859:27;3870:4;3876:9;3859:10;:27::i;:::-;3799:87;;;;;;3896:28;3908:5;3915:8;3896:11;:28::i;:::-;-1:-1:-1;3941:9:55;;3702:255;-1:-1:-1;;;;3702:255:55:o;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;1980:235:24;6931:20:25;:18;:20::i;11437:338:78:-;11501:4;;11534:16;11549:1;11534:12;:16;:::i;:::-;11522:28;;11517:230;11552:5;;11517:230;;11592:12;;11622:11;;;11618:119;;-1:-1:-1;11660:4:78;;11437:338;-1:-1:-1;;;11437:338:78:o;11618:119::-;11696:1;11689:8;;;11685:52;;11717:5;;;11685:52;-1:-1:-1;11559:3:78;;;;:::i;:::-;;;;11517:230;;;-1:-1:-1;11763:5:78;;11437:338;-1:-1:-1;;11437:338:78:o;11781:2170::-;11868:7;11887:22;11912:13;:11;:13::i;:::-;11887:38;-1:-1:-1;11944:15:78;;;:40;11960:23;;;;:15;:23;:::i;:::-;-1:-1:-1;;;;;11944:40:78;-1:-1:-1;;;;;11944:40:78;;;;;;;;;;;;;11988:1;11944:45;;;11936:105;;;;-1:-1:-1;;;11936:105:78;;21760:2:81;11936:105:78;;;21742:21:81;21799:2;21779:18;;;21772:30;21838:34;21818:18;;;21811:62;-1:-1:-1;;;21889:18:81;;;21882:45;21944:19;;11936:105:78;21558:411:81;11936:105:78;12097:18;;;;-1:-1:-1;;;;;12097:18:78;;12126:25;12152:23;;;;:15;:23;:::i;:::-;12177:30;;;;;;;;:::i;:::-;12126:82;;-1:-1:-1;;;;;;12126:82:78;;;;;;;-1:-1:-1;;;;;22166:32:81;;;12126:82:78;;;22148:51:81;-1:-1:-1;;;;;22235:47:81;22215:18;;;22208:75;22121:18;;12126:82:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12219:19:78;12249:23;;;;:15;:23;:::i;:::-;12219:54;;12284:29;12329:9;12324:432;12348:27;;;;:15;:27;:::i;:::-;:34;;12344:1;:38;12324:432;;;12403:30;12436:27;;;;:15;:27;:::i;:::-;12464:1;12436:30;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;12530:16:78;;-1:-1:-1;12565:20:78;;12587:22;;;;;;;;:::i;:::-;12611:16;;;;;;;;:::i;:::-;12548:80;;;;;;;;;23063:19:81;;;23120:2;23116:15;;;;-1:-1:-1;;;;;;23112:53:81;23107:2;23098:12;;23091:75;23204:3;23200:16;-1:-1:-1;;;;;;23196:62:81;23191:2;23182:12;;23175:84;23284:2;23275:12;;22878:415;12548:80:78;;;;-1:-1:-1;;12548:80:78;;;;;;;;;;12500:142;;;12548:80;12500:142;;:::i;:::-;;;;;;;;;;;;;12481:161;;12657:11;-1:-1:-1;;;;;12657:24:78;;12682:10;:20;;;12704:10;:22;;;;;;;;;;:::i;:::-;12728:16;;;;;;;;:::i;:::-;12657:88;;-1:-1:-1;;;;;;12657:88:78;;;;;;;;;;23766:25:81;;;;-1:-1:-1;;;;;23827:32:81;;;23807:18;;;23800:60;-1:-1:-1;;;;;23896:47:81;23876:18;;;23869:75;23739:18;;12657:88:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12384:3:78;;;;;-1:-1:-1;12324:432:78;;-1:-1:-1;;12324:432:78;;;12766:27;12809:9;12804:826;12828:24;;;;:15;:24;:::i;:::-;:31;;12824:1;:35;12804:826;;;12880:40;12923:24;;;;:15;:24;:::i;:::-;12948:1;12923:27;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;12880:70;;12995:14;13011:37;13032:15;13011:20;:37::i;:::-;12982:67;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12982:67:78;;;;;;;;;;-1:-1:-1;13068:28:78;;;:31;;:36;13064:556;;-1:-1:-1;;;;;13124:23:78;;;13169:18;;13189:27;;;;;;;;:::i;:::-;13218:23;;;;:15;:23;:::i;:::-;13243:21;;;;;;;;:::i;:::-;13124:158;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13064:556;;;-1:-1:-1;;;;;13321:21:78;;;13364:27;;;;;;;;:::i;:::-;13413:23;;;;:15;:23;:::i;:::-;13458:21;;;;;;;;:::i;:::-;13501:28;;;:31;13554:33;;;;;;;;:::i;:::-;13321:284;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13064:556;-1:-1:-1;12861:3:78;;12804:826;;;-1:-1:-1;13640:53:78;;-1:-1:-1;;;13640:53:78;;13664:28;;;;13640:53;;;160:25:81;-1:-1:-1;;;;;13640:23:78;;;;;133:18:81;;13640:53:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13711:233:78;;-1:-1:-1;13745:23:78;;-1:-1:-1;;13745:23:78;;;:15;:23;:::i;:::-;13782:28;;;;13824:30;;;;;;;;:::i;:::-;13868:27;;;;;;;;;;13909:25;;;;;;14533:92;;;27689:2:81;27685:15;;;;-1:-1:-1;;;;;;27681:53:81;14533:92:78;;;27669:66:81;27751:12;;;27744:28;;;;27810:3;27806:16;;;;-1:-1:-1;;;;;;27802:62:81;27788:12;;;27781:84;27881:12;;;27874:28;27918:13;;;;27911:29;;;;14533:92:78;;;;;;;;;;27956:13:81;;;;14533:92:78;;;14523:103;;;;;;14283:350;13711:233;13704:240;11781:2170;-1:-1:-1;;;;;;;11781:2170:78:o;2129:766:55:-;2210:7;2219:12;2233:7;2256:9;:16;2276:2;2256:22;2252:637;;2592:4;2577:20;;2571:27;2641:4;2626:20;;2620:27;2698:4;2683:20;;2677:27;2294:9;2669:36;2739:25;2750:4;2669:36;2571:27;2620;2739:10;:25::i;:::-;2732:32;;;;;;;;;;;2252:637;-1:-1:-1;;2860:16:55;;2811:1;;-1:-1:-1;2815:35:55;;2252:637;2129:766;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;-1:-1:-1;;;7439:23:55;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;-1:-1:-1;;;7550:46:55;;;;;160:25:81;;;133:18;;7550:46:55;14:177:81;7479:243:55;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;-1:-1:-1;;;7679:32:55;;;;;160:25:81;;;133:18;;7679:32:55;14:177:81;7613:109:55;7196:532;;:::o;14639:451:78:-;14733:7;14816:18;;14852:27;;;;;;;;:::i;:::-;14897:23;;;;:15;:23;:::i;:::-;14938:21;;;;;;;;:::i;:::-;14977:28;;;:31;15026:33;;;;;;;;:::i;:::-;14782:291;;;;;;;;;;;;;;:::i;5140:1530:55:-;5266:7;;;6199:66;6186:79;;6182:164;;;-1:-1:-1;6297:1:55;;-1:-1:-1;6301:30:55;;-1:-1:-1;6333:1:55;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;28207:25:81;;;28280:4;28268:17;;28248:18;;;28241:45;;;;28302:18;;;28295:34;;;28345:18;;;28338:34;;;6457:24:55;;28179:19:81;;6457:24:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:55;;-1:-1:-1;;6457:24:55;;;-1:-1:-1;;;;;;;6495:20:55;;6491:113;;-1:-1:-1;6547:1:55;;-1:-1:-1;6551:29:55;;-1:-1:-1;6547:1:55;;-1:-1:-1;6531:62:55;;6491:113;6622:6;-1:-1:-1;6630:20:55;;-1:-1:-1;6630:20:55;;-1:-1:-1;5140:1530:55;;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;419:346:81;487:6;495;548:2;536:9;527:7;523:23;519:32;516:52;;;564:1;561;554:12;516:52;-1:-1:-1;;609:23:81;;;729:2;714:18;;;701:32;;-1:-1:-1;419:346:81:o;952:173::-;1020:20;;-1:-1:-1;;;;;1069:31:81;;1059:42;;1049:70;;1115:1;1112;1105:12;1049:70;952:173;;;:::o;1130:186::-;1189:6;1242:2;1230:9;1221:7;1217:23;1213:32;1210:52;;;1258:1;1255;1248:12;1210:52;1281:29;1300:9;1281:29;:::i;1529:127::-;1590:10;1585:3;1581:20;1578:1;1571:31;1621:4;1618:1;1611:15;1645:4;1642:1;1635:15;1661:275;1732:2;1726:9;1797:2;1778:13;;-1:-1:-1;;1774:27:81;1762:40;;-1:-1:-1;;;;;1817:34:81;;1853:22;;;1814:62;1811:88;;;1879:18;;:::i;:::-;1915:2;1908:22;1661:275;;-1:-1:-1;1661:275:81:o;1941:766::-;2010:6;2063:2;2051:9;2042:7;2038:23;2034:32;2031:52;;;2079:1;2076;2069:12;2031:52;2119:9;2106:23;-1:-1:-1;;;;;2144:6:81;2141:30;2138:50;;;2184:1;2181;2174:12;2138:50;2207:22;;2260:4;2252:13;;2248:27;-1:-1:-1;2238:55:81;;2289:1;2286;2279:12;2238:55;2329:2;2316:16;-1:-1:-1;;;;;2347:6:81;2344:30;2341:56;;;2377:18;;:::i;:::-;2419:57;2466:2;2443:17;;-1:-1:-1;;2439:31:81;2472:2;2435:40;2419:57;:::i;:::-;2499:6;2492:5;2485:21;2547:7;2542:2;2533:6;2529:2;2525:15;2521:24;2518:37;2515:57;;;2568:1;2565;2558:12;2515:57;2623:6;2618:2;2614;2610:11;2605:2;2598:5;2594:14;2581:49;2675:1;2650:18;;;2670:2;2646:27;2639:38;;;;2654:5;1941:766;-1:-1:-1;;;;1941:766:81:o;2712:284::-;2770:6;2823:2;2811:9;2802:7;2798:23;2794:32;2791:52;;;2839:1;2836;2829:12;2791:52;2878:9;2865:23;-1:-1:-1;;;;;2921:5:81;2917:30;2910:5;2907:41;2897:69;;2962:1;2959;2952:12;3001:188;3069:20;;-1:-1:-1;;;;;3118:46:81;;3108:57;;3098:85;;3179:1;3176;3169:12;3194:895;3291:6;3299;3307;3315;3323;3376:3;3364:9;3355:7;3351:23;3347:33;3344:53;;;3393:1;3390;3383:12;3344:53;3438:23;;;-1:-1:-1;3558:2:81;3543:18;;3530:32;;-1:-1:-1;3639:2:81;3624:18;;3611:32;-1:-1:-1;;;;;3655:30:81;;3652:50;;;3698:1;3695;3688:12;3652:50;3721:22;;3774:4;3766:13;;3762:27;-1:-1:-1;3752:55:81;;3803:1;3800;3793:12;3752:55;3843:2;3830:16;-1:-1:-1;;;;;3861:6:81;3858:30;3855:50;;;3901:1;3898;3891:12;3855:50;3946:7;3941:2;3932:6;3928:2;3924:15;3920:24;3917:37;3914:57;;;3967:1;3964;3957:12;3914:57;3998:2;3990:11;;;;;-1:-1:-1;4020:6:81;-1:-1:-1;4045:38:81;4079:2;4064:18;;4045:38;:::i;:::-;4035:48;;3194:895;;;;;;;;:::o;4286:186::-;4345:6;4398:2;4386:9;4377:7;4373:23;4369:32;4366:52;;;4414:1;4411;4404:12;4366:52;4437:29;4456:9;4437:29;:::i;4477:226::-;4536:6;4589:2;4577:9;4568:7;4564:23;4560:32;4557:52;;;4605:1;4602;4595:12;4557:52;-1:-1:-1;4650:23:81;;4477:226;-1:-1:-1;4477:226:81:o;4708:127::-;4769:10;4764:3;4760:20;4757:1;4750:31;4800:4;4797:1;4790:15;4824:4;4821:1;4814:15;4840:343;4987:2;4972:18;;5020:1;5009:13;;4999:144;;5065:10;5060:3;5056:20;5053:1;5046:31;5100:4;5097:1;5090:15;5128:4;5125:1;5118:15;4999:144;5152:25;;;4840:343;:::o;5188:637::-;5378:2;5390:21;;;5460:13;;5363:18;;;5482:22;;;5330:4;;5561:15;;;5535:2;5520:18;;;5330:4;5604:195;5618:6;5615:1;5612:13;5604:195;;;5683:13;;-1:-1:-1;;;;;5679:39:81;5667:52;;5748:2;5774:15;;;;5739:12;;;;5715:1;5633:9;5604:195;;;-1:-1:-1;5816:3:81;;5188:637;-1:-1:-1;;;;;5188:637:81:o;6035:367::-;6098:8;6108:6;6162:3;6155:4;6147:6;6143:17;6139:27;6129:55;;6180:1;6177;6170:12;6129:55;-1:-1:-1;6203:20:81;;-1:-1:-1;;;;;6235:30:81;;6232:50;;;6278:1;6275;6268:12;6232:50;6315:4;6307:6;6303:17;6291:29;;6375:3;6368:4;6358:6;6355:1;6351:14;6343:6;6339:27;6335:38;6332:47;6329:67;;;6392:1;6389;6382:12;6329:67;6035:367;;;;;:::o;6407:437::-;6493:6;6501;6554:2;6542:9;6533:7;6529:23;6525:32;6522:52;;;6570:1;6567;6560:12;6522:52;6610:9;6597:23;-1:-1:-1;;;;;6635:6:81;6632:30;6629:50;;;6675:1;6672;6665:12;6629:50;6714:70;6776:7;6767:6;6756:9;6752:22;6714:70;:::i;:::-;6803:8;;6688:96;;-1:-1:-1;6407:437:81;-1:-1:-1;;;;6407:437:81:o;6849:993::-;7017:6;7025;7033;7041;7094:2;7082:9;7073:7;7069:23;7065:32;7062:52;;;7110:1;7107;7100:12;7062:52;7150:9;7137:23;-1:-1:-1;;;;;7175:6:81;7172:30;7169:50;;;7215:1;7212;7205:12;7169:50;7238:22;;7291:4;7283:13;;7279:27;-1:-1:-1;7269:55:81;;7320:1;7317;7310:12;7269:55;7360:2;7347:16;-1:-1:-1;;;;;7378:6:81;7375:30;7372:50;;;7418:1;7415;7408:12;7372:50;7473:7;7466:4;7456:6;7453:1;7449:14;7445:2;7441:23;7437:34;7434:47;7431:67;;;7494:1;7491;7484:12;7431:67;7525:4;7517:13;;;;-1:-1:-1;7549:6:81;-1:-1:-1;7593:20:81;;7580:34;-1:-1:-1;;;;;7626:32:81;;7623:52;;;7671:1;7668;7661:12;7623:52;7710:72;7774:7;7763:8;7752:9;7748:24;7710:72;:::i;:::-;6849:993;;;;-1:-1:-1;7801:8:81;-1:-1:-1;;;;6849:993:81:o;7847:1240::-;7967:6;7975;7983;7991;7999;8052:3;8040:9;8031:7;8027:23;8023:33;8020:53;;;8069:1;8066;8059:12;8020:53;8092:29;8111:9;8092:29;:::i;:::-;8082:39;;8140:38;8174:2;8163:9;8159:18;8140:38;:::i;:::-;8130:48;;8197:38;8231:2;8220:9;8216:18;8197:38;:::i;:::-;8187:48;;8254:38;8288:2;8277:9;8273:18;8254:38;:::i;:::-;8244:48;;8343:3;8332:9;8328:19;8315:33;-1:-1:-1;;;;;8363:6:81;8360:30;8357:50;;;8403:1;8400;8393:12;8357:50;8426:22;;8479:4;8471:13;;8467:27;-1:-1:-1;8457:55:81;;8508:1;8505;8498:12;8457:55;8548:2;8535:16;-1:-1:-1;;;;;8566:6:81;8563:30;8560:56;;;8596:18;;:::i;:::-;8642:6;8639:1;8635:14;8669:28;8693:2;8689;8685:11;8669:28;:::i;:::-;8731:19;;;8775:2;8805:11;;;8801:20;;;8766:12;;;;8833:19;;;8830:39;;;8865:1;8862;8855:12;8830:39;8897:2;8893;8889:11;8878:22;;8909:148;8925:6;8920:3;8917:15;8909:148;;;8991:23;9010:3;8991:23;:::i;:::-;8979:36;;9044:2;8942:12;;;;9035;;;;8909:148;;;9076:5;9066:15;;;;;;;7847:1240;;;;;;;;:::o;9092:815::-;9261:6;9269;9277;9285;9338:2;9326:9;9317:7;9313:23;9309:32;9306:52;;;9354:1;9351;9344:12;9306:52;9394:9;9381:23;-1:-1:-1;;;;;9419:6:81;9416:30;9413:50;;;9459:1;9456;9449:12;9413:50;9498:70;9560:7;9551:6;9540:9;9536:22;9498:70;:::i;:::-;9587:8;;-1:-1:-1;9472:96:81;-1:-1:-1;;9675:2:81;9660:18;;9647:32;-1:-1:-1;;;;;9691:32:81;;9688:52;;;9736:1;9733;9726:12;10939:127;11000:10;10995:3;10991:20;10988:1;10981:31;11031:4;11028:1;11021:15;11055:4;11052:1;11045:15;11071:128;11138:9;;;11159:11;;;11156:37;;;11173:18;;:::i;11204:317::-;-1:-1:-1;;;;;11289:42:81;;;11333;;;11285:91;11396:52;;;;11467:24;;;11457:58;;11495:18;;:::i;:::-;11457:58;11204:317;;;;:::o;11941:240::-;-1:-1:-1;;;;;12010:42:81;;;12054;;;12006:91;;12109:43;;12106:69;;;12155:18;;:::i;12438:135::-;12477:3;12498:17;;;12495:43;;12518:18;;:::i;:::-;-1:-1:-1;12565:1:81;12554:13;;12438:135::o;12578:266::-;12666:6;12661:3;12654:19;12718:6;12711:5;12704:4;12699:3;12695:14;12682:43;-1:-1:-1;12770:1:81;12745:16;;;12763:4;12741:27;;;12734:38;;;;12826:2;12805:15;;;-1:-1:-1;;12801:29:81;12792:39;;;12788:50;;12578:266::o;12849:567::-;-1:-1:-1;;;;;13090:32:81;;13072:51;;13159:3;13154:2;13139:18;;13132:31;;;-1:-1:-1;;13180:62:81;;13222:19;;13214:6;13206;13180:62;:::i;:::-;-1:-1:-1;;;;;13278:47:81;;;13273:2;13258:18;;13251:75;13362:47;;;;13357:2;13342:18;;;13335:75;13172:70;12849:567;-1:-1:-1;;;;12849:567:81:o;13421:127::-;13482:10;13477:3;13473:20;13470:1;13463:31;13513:4;13510:1;13503:15;13537:4;13534:1;13527:15;13553:211;13594:3;13632:5;13626:12;13676:6;13669:4;13662:5;13658:16;13653:3;13647:36;13738:1;13702:16;;13727:13;;;-1:-1:-1;13702:16:81;;13553:211;-1:-1:-1;13553:211:81:o;13769:283::-;13926:3;13957:29;13982:3;13974:6;13957:29;:::i;:::-;13995:21;;;-1:-1:-1;;14043:2:81;14032:14;;13769:283;-1:-1:-1;13769:283:81:o;14465:118::-;14551:5;14544:13;14537:21;14530:5;14527:32;14517:60;;14573:1;14570;14563:12;14588:241;14644:6;14697:2;14685:9;14676:7;14672:23;14668:32;14665:52;;;14713:1;14710;14703:12;14665:52;14752:9;14739:23;14771:28;14793:5;14771:28;:::i;14834:168::-;14907:9;;;14938;;14955:15;;;14949:22;;14935:37;14925:71;;14976:18;;:::i;15007:125::-;15072:9;;;15093:10;;;15090:36;;;15106:18;;:::i;15137:217::-;15177:1;15203;15193:132;;15247:10;15242:3;15238:20;15235:1;15228:31;15282:4;15279:1;15272:15;15310:4;15307:1;15300:15;15193:132;-1:-1:-1;15339:9:81;;15137:217::o;15573:334::-;15675:4;15733:11;15720:25;15827:3;15823:8;15812;15796:14;15792:29;15788:44;15768:18;15764:69;15754:97;;15847:1;15844;15837:12;15754:97;15868:33;;;;;15573:334;-1:-1:-1;;15573:334:81:o;16329:245::-;16396:6;16449:2;16437:9;16428:7;16424:23;16420:32;16417:52;;;16465:1;16462;16455:12;16417:52;16497:9;16491:16;16516:28;16538:5;16516:28;:::i;17795:521::-;17872:4;17878:6;17938:11;17925:25;18032:2;18028:7;18017:8;18001:14;17997:29;17993:43;17973:18;17969:68;17959:96;;18051:1;18048;18041:12;17959:96;18078:33;;18130:20;;;-1:-1:-1;;;;;;18162:30:81;;18159:50;;;18205:1;18202;18195:12;18159:50;18238:4;18226:17;;-1:-1:-1;18269:14:81;18265:27;;;18255:38;;18252:58;;;18306:1;18303;18296:12;19790:581;19919:4;19925:6;19985:11;19972:25;20079:2;20075:7;20064:8;20048:14;20044:29;20040:43;20020:18;20016:68;20006:96;;20098:1;20095;20088:12;20006:96;20125:33;;20177:20;;;-1:-1:-1;;;;;;20209:30:81;;20206:50;;;20252:1;20249;20242:12;20206:50;20285:4;20273:17;;-1:-1:-1;20336:1:81;20332:14;;;20316;20312:35;20302:46;;20299:66;;;20361:1;20358;20351:12;20376:334;20478:4;20536:11;20523:25;20630:3;20626:8;20615;20599:14;20595:29;20591:44;20571:18;20567:69;20557:97;;20650:1;20647;20640:12;20968:444;-1:-1:-1;;;21244:25:81;;21306:2;21302:15;;;-1:-1:-1;;;;;;21298:53:81;21294:1;21285:11;;21278:74;-1:-1:-1;21368:38:81;21402:2;21393:12;;21385:6;21368:38;:::i;21417:136::-;21456:3;21484:5;21474:39;;21493:18;;:::i;:::-;-1:-1:-1;;;21529:18:81;;21417:136::o;22294:579::-;22418:4;22424:6;22484:11;22471:25;22578:2;22574:7;22563:8;22547:14;22543:29;22539:43;22519:18;22515:68;22505:96;;22597:1;22594;22587:12;22505:96;22624:33;;22676:20;;;-1:-1:-1;;;;;;22708:30:81;;22705:50;;;22751:1;22748;22741:12;22705:50;22784:4;22772:17;;-1:-1:-1;22843:4:81;22831:17;;22815:14;22811:38;22801:49;;22798:69;;;22863:1;22860;22853:12;23298:261;23473:3;23498:55;23523:29;23548:3;23540:6;23523:29;:::i;:::-;23515:6;23498:55;:::i;24541:334::-;24643:4;24701:11;24688:25;24795:3;24791:8;24780;24764:14;24760:29;24756:44;24736:18;24732:69;24722:97;;24815:1;24812;24805:12;24880:526;25103:25;;;-1:-1:-1;;;;;25164:32:81;;25159:2;25144:18;;25137:60;25233:3;25228:2;25213:18;;25206:31;;;-1:-1:-1;;25254:62:81;;25296:19;;25288:6;25280;25254:62;:::i;:::-;25246:70;;-1:-1:-1;;;;;25356:6:81;25352:47;25347:2;25336:9;25332:18;25325:75;24880:526;;;;;;;;:::o;25411:286::-;25469:6;25522:2;25510:9;25501:7;25497:23;25493:32;25490:52;;;25538:1;25535;25528:12;25490:52;25564:23;;-1:-1:-1;;;;;;25616:32:81;;25606:43;;25596:71;;25663:1;25660;25653:12;25702:623;-1:-1:-1;;;;;25969:32:81;;25951:51;;25989:3;26033:2;26018:18;;26011:31;;;-1:-1:-1;;26059:62:81;;26101:19;;26093:6;26085;26059:62;:::i;:::-;-1:-1:-1;;;;;26157:47:81;;;;26152:2;26137:18;;26130:75;-1:-1:-1;26236:2:81;26221:18;;26214:34;;;;-1:-1:-1;;;;;;26285:33:81;26279:3;26264:19;;;26257:62;26051:70;25702:623;-1:-1:-1;;;25702:623:81:o;26713:710::-;27020:6;27015:3;27008:19;27082:26;27078:31;27069:6;27065:2;27061:15;27057:53;27052:2;27047:3;27043:12;27036:75;27155:6;27147;27142:2;27137:3;27133:12;27120:42;27234:3;27230:16;;;;-1:-1:-1;;;;;;27226:62:81;27221:2;27181:16;;;;27213:11;;;27206:83;;;;27313:2;27305:11;;27298:27;-1:-1:-1;;;;;;27355:33:81;27349:3;27341:12;;27334:55;27413:3;27405:12;;;-1:-1:-1;;;26713:710:81:o","linkReferences":{}},"methodIdentifiers":{"baseFee()":"6ef25c3a","baseWeight()":"d3fd6364","codeState(bytes32)":"c13911e8","commitBlocks((bytes32,bytes32,bytes32,(address,bytes32,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"fa97ed6d","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","createProgram(bytes32,bytes32,bytes,uint128)":"8074b455","genesisBlockHash()":"28e24b3d","getStorageSlot()":"96708226","initialize(address,address,address,address,address[])":"f8453e7c","lastBlockCommitmentHash()":"2dacfb69","mirror()":"444d9172","mirrorProxy()":"78ee5dec","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCount()":"96a2ddfa","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setBaseWeight(uint64)":"8028861a","setMirror(address)":"3d43b418","setStorageSlot(string)":"5686cad5","setValuePerWeight(uint128)":"a6bbbe1c","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","updateValidators(address[])":"e71731e4","validatedCodesCount()":"007a32e7","validatorExists(address)":"8febbd59","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","valuePerWeight()":"0834fecc","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"baseWeight\",\"type\":\"uint64\"}],\"name\":\"BaseWeightChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ValidatorsSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"ValuePerWeightChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"baseFee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum IRouter.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevCommitmentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct IRouter.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct IRouter.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct IRouter.OutgoingMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.BlockCommitment[]\",\"name\":\"blockCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct IRouter.CodeCommitment[]\",\"name\":\"codeCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStorageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validatorAddressArray\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBlockCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirror\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_baseWeight\",\"type\":\"uint64\"}],\"name\":\"setBaseWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"namespace\",\"type\":\"string\"}],\"name\":\"setStorageSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"setValuePerWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validatorsAddressArray\",\"type\":\"address[]\"}],\"name\":\"updateValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"valuePerWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BaseWeightChanged(uint64)\":{\"details\":\"Emitted when the tx's base weight is changed. NOTE: It's event for USERS: it informs about new value of commission for each message sending. NOTE: It's event for NODES: it requires to update commission in programs execution parameters.\"},\"BlockCommitted(bytes32)\":{\"details\":\"Emitted when a new state transitions are applied. NOTE: It's event for USERS: it informs about new block outcome committed.\"},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"Emitted when a code, previously requested to be validated, gets validated. NOTE: It's event for USERS: it informs about validation results of previously requested code.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"Emitted when a new code validation request submitted. NOTE: It's event for NODES: it requires to download and validate code from blob.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"Emitted when a new program created. NOTE: It's event for USERS: it informs about new program creation and it's availability on Ethereum. NOTE: It's event for NODES: it requires to create associated gear program in local storage.\"},\"StorageSlotChanged()\":{\"details\":\"Emitted when the storage slot is changed. NOTE: It's event for USERS: it informs about router being wiped and all programs and codes deletion. NOTE: It's event for NODES: it requires to clean the local storage.\"},\"ValidatorsSetChanged()\":{\"details\":\"Emitted when the validators set is changed. NOTE: It's event for USERS: it informs about validators rotation. NOTE: It's event for NODES: it requires to update authorities that sign outcomes.\"},\"ValuePerWeightChanged(uint128)\":{\"details\":\"Emitted when the value per executable weight is changed. NOTE: It's event for USERS: it informs about new conversion rate between weight and it's WVara price. NOTE: It's event for NODES: it requires to update conversion rate in programs execution parameters.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"programCodeId(address)\":{\"details\":\"Returns bytes32(0) in case of inexistent program.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58\",\"dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf\",\"dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x8a8c183b1cbea8636bd228974872db26b5ab5b71acd53339f7b08e14f5ea3835\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a222bd8fb6a6274588b915c85efed9db7fc387c71ad4b7d6585909593ca00cde\",\"dweb:/ipfs/QmVhkYLvvbgw2qi53qoLMr3YaFgEMpyULfwUnDzdpsQsUc\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"baseWeight","type":"uint64","indexed":false}],"type":"event","name":"BaseWeightChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[],"type":"event","name":"ValidatorsSetChanged","anonymous":false},{"inputs":[{"internalType":"uint128","name":"valuePerWeight","type":"uint128","indexed":false}],"type":"event","name":"ValuePerWeightChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"baseFee","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"baseWeight","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum IRouter.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct IRouter.BlockCommitment[]","name":"blockCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"prevCommitmentHash","type":"bytes32"},{"internalType":"bytes32","name":"predBlockHash","type":"bytes32"},{"internalType":"struct IRouter.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct IRouter.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct IRouter.OutgoingMessage[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct IRouter.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct IRouter.CodeCommitment[]","name":"codeCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStorageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validatorAddressArray","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastBlockCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirror","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"program","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"uint64","name":"_baseWeight","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setBaseWeight"},{"inputs":[{"internalType":"address","name":"_mirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"string","name":"namespace","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setStorageSlot"},{"inputs":[{"internalType":"uint128","name":"_valuePerWeight","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"setValuePerWeight"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address[]","name":"validatorsAddressArray","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function","name":"validatorExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"valuePerWeight","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"programCodeId(address)":{"details":"Returns bytes32(0) in case of inexistent program."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9","urls":["bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58","dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6","urls":["bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf","dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x8a8c183b1cbea8636bd228974872db26b5ab5b71acd53339f7b08e14f5ea3835","urls":["bzz-raw://a222bd8fb6a6274588b915c85efed9db7fc387c71ad4b7d6585909593ca00cde","dweb:/ipfs/QmVhkYLvvbgw2qi53qoLMr3YaFgEMpyULfwUnDzdpsQsUc"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":55703,"exportedSymbols":{"Clones":[41121],"ECDSA":[43387],"IERC20":[41906],"IMirror":[53423],"IRouter":[53738],"IWrappedVara":[53749],"MessageHashUtils":[43461],"OwnableUpgradeable":[39024],"ReentrancyGuardTransient":[42400],"Router":[55702],"StorageSlot":[42719]},"nodeType":"SourceUnit","src":"39:16514:78","nodes":[{"id":54166,"nodeType":"PragmaDirective","src":"39:24:78","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54168,"nodeType":"ImportDirective","src":"65:74:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":42720,"symbolAliases":[{"foreign":{"id":54167,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"73:11:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54170,"nodeType":"ImportDirective","src":"140:101:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":54169,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"148:18:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54172,"nodeType":"ImportDirective","src":"242:64:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54171,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"250:6:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54174,"nodeType":"ImportDirective","src":"307:75:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":43388,"symbolAliases":[{"foreign":{"id":54173,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43387,"src":"315:5:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54176,"nodeType":"ImportDirective","src":"383:97:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":43462,"symbolAliases":[{"foreign":{"id":54175,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43461,"src":"391:16:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54178,"nodeType":"ImportDirective","src":"481:100:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":42401,"symbolAliases":[{"foreign":{"id":54177,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42400,"src":"489:24:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54180,"nodeType":"ImportDirective","src":"582:38:78","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":53739,"symbolAliases":[{"foreign":{"id":54179,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53738,"src":"590:7:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54182,"nodeType":"ImportDirective","src":"621:38:78","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":53424,"symbolAliases":[{"foreign":{"id":54181,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53423,"src":"629:7:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54184,"nodeType":"ImportDirective","src":"660:48:78","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":53750,"symbolAliases":[{"foreign":{"id":54183,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53749,"src":"668:12:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54186,"nodeType":"ImportDirective","src":"709:70:78","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":55703,"sourceUnit":41907,"symbolAliases":[{"foreign":{"id":54185,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"717:6:78","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55702,"nodeType":"ContractDefinition","src":"781:15771:78","nodes":[{"id":54195,"nodeType":"UsingForDirective","src":"860:24:78","nodes":[],"global":false,"libraryName":{"id":54193,"name":"ECDSA","nameLocations":["866:5:78"],"nodeType":"IdentifierPath","referencedDeclaration":43387,"src":"866:5:78"},"typeName":{"id":54194,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":54198,"nodeType":"UsingForDirective","src":"889:35:78","nodes":[],"global":false,"libraryName":{"id":54196,"name":"MessageHashUtils","nameLocations":["895:16:78"],"nodeType":"IdentifierPath","referencedDeclaration":43461,"src":"895:16:78"},"typeName":{"id":54197,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":54201,"nodeType":"VariableDeclaration","src":"1032:106:78","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1057:12:78","scope":55702,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54199,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1032:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":54200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:66:78","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":54209,"nodeType":"FunctionDefinition","src":"1198:53:78","nodes":[],"body":{"id":54208,"nodeType":"Block","src":"1212:39:78","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54205,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1222:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1222:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54207,"nodeType":"ExpressionStatement","src":"1222:22:78"}]},"documentation":{"id":54202,"nodeType":"StructuredDocumentation","src":"1145:48:78","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54203,"nodeType":"ParameterList","parameters":[],"src":"1209:2:78"},"returnParameters":{"id":54204,"nodeType":"ParameterList","parameters":[],"src":"1212:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54291,"nodeType":"FunctionDefinition","src":"1257:740:78","nodes":[],"body":{"id":54290,"nodeType":"Block","src":"1466:531:78","nodes":[],"statements":[{"expression":{"arguments":[{"id":54226,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54211,"src":"1491:12:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54225,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1476:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1476:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54228,"nodeType":"ExpressionStatement","src":"1476:28:78"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f75746572","id":54230,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1530:23:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_6c41043f2a2fa2e1c8851558f7ff38d8e2c7e719011cc0624ae6dd991637dcc3","typeString":"literal_string \"router.storage.Router\""},"value":"router.storage.Router"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6c41043f2a2fa2e1c8851558f7ff38d8e2c7e719011cc0624ae6dd991637dcc3","typeString":"literal_string \"router.storage.Router\""}],"id":54229,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54351,"src":"1515:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1515:39:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54232,"nodeType":"ExpressionStatement","src":"1515:39:78"},{"assignments":[54235],"declarations":[{"constant":false,"id":54235,"mutability":"mutable","name":"router","nameLocation":"1580:6:78","nodeType":"VariableDeclaration","scope":54290,"src":"1564:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54234,"nodeType":"UserDefinedTypeName","pathNode":{"id":54233,"name":"Storage","nameLocations":["1564:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"1564:7:78"},"referencedDeclaration":53471,"src":"1564:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54238,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54236,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"1589:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1589:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1564:38:78"},{"expression":{"id":54248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54239,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1613:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1620:16:78","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53436,"src":"1613:23:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54243,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1649:5:78","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1655:6:78","memberName":"number","nodeType":"MemberAccess","src":"1649:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1664:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1649:16:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54242,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"1639:9:78","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:27:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1613:53:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54249,"nodeType":"ExpressionStatement","src":"1613:53:78"},{"expression":{"id":54254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54250,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1676:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1683:6:78","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53438,"src":"1676:13:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54253,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54213,"src":"1692:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1676:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54255,"nodeType":"ExpressionStatement","src":"1676:23:78"},{"expression":{"id":54260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54256,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1709:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54258,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1716:11:78","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53440,"src":"1709:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54259,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54215,"src":"1730:12:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1709:33:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54261,"nodeType":"ExpressionStatement","src":"1709:33:78"},{"expression":{"id":54266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54262,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1752:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54264,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1759:11:78","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53442,"src":"1752:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54265,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54217,"src":"1773:12:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1752:33:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54267,"nodeType":"ExpressionStatement","src":"1752:33:78"},{"expression":{"id":54272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54268,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1795:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54270,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1802:26:78","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53446,"src":"1795:33:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"36363636","id":54271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1831:4:78","typeDescriptions":{"typeIdentifier":"t_rational_6666_by_1","typeString":"int_const 6666"},"value":"6666"},"src":"1795:40:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54273,"nodeType":"ExpressionStatement","src":"1795:40:78"},{"expression":{"id":54278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54274,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1873:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1880:10:78","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53448,"src":"1873:17:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"325f3530305f3030305f303030","id":54277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1893:13:78","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"src":"1873:33:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54279,"nodeType":"ExpressionStatement","src":"1873:33:78"},{"expression":{"id":54284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54280,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54235,"src":"1916:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54282,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1923:14:78","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53450,"src":"1916:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":54283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1940:2:78","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1916:26:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54285,"nodeType":"ExpressionStatement","src":"1916:26:78"},{"expression":{"arguments":[{"id":54287,"name":"_validatorAddressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54220,"src":"1967:22:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54286,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55688,"src":"1952:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1952:38:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54289,"nodeType":"ExpressionStatement","src":"1952:38:78"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":54223,"kind":"modifierInvocation","modifierName":{"id":54222,"name":"initializer","nameLocations":["1454:11:78"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1454:11:78"},"nodeType":"ModifierInvocation","src":"1454:11:78"}],"name":"initialize","nameLocation":"1266:10:78","parameters":{"id":54221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54211,"mutability":"mutable","name":"initialOwner","nameLocation":"1294:12:78","nodeType":"VariableDeclaration","scope":54291,"src":"1286:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54210,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54213,"mutability":"mutable","name":"_mirror","nameLocation":"1324:7:78","nodeType":"VariableDeclaration","scope":54291,"src":"1316:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54212,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54215,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1349:12:78","nodeType":"VariableDeclaration","scope":54291,"src":"1341:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54214,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54217,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1379:12:78","nodeType":"VariableDeclaration","scope":54291,"src":"1371:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54216,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54220,"mutability":"mutable","name":"_validatorAddressArray","nameLocation":"1418:22:78","nodeType":"VariableDeclaration","scope":54291,"src":"1401:39:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54218,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54219,"nodeType":"ArrayTypeName","src":"1401:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1276:170:78"},"returnParameters":{"id":54224,"nodeType":"ParameterList","parameters":[],"src":"1466:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54303,"nodeType":"FunctionDefinition","src":"2036:126:78","nodes":[],"body":{"id":54302,"nodeType":"Block","src":"2092:70:78","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":54298,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54201,"src":"2136:12:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54296,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"2109:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2121:14:78","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"2109:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2109:40:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54300,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2150:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"2109:46:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54295,"id":54301,"nodeType":"Return","src":"2102:53:78"}]},"baseFunctions":[53577],"functionSelector":"96708226","implemented":true,"kind":"function","modifiers":[],"name":"getStorageSlot","nameLocation":"2045:14:78","parameters":{"id":54292,"nodeType":"ParameterList","parameters":[],"src":"2059:2:78"},"returnParameters":{"id":54295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54303,"src":"2083:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54293,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2083:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2082:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54351,"nodeType":"FunctionDefinition","src":"2168:287:78","nodes":[],"body":{"id":54350,"nodeType":"Block","src":"2234:221:78","nodes":[],"statements":[{"assignments":[54311],"declarations":[{"constant":false,"id":54311,"mutability":"mutable","name":"slot","nameLocation":"2252:4:78","nodeType":"VariableDeclaration","scope":54350,"src":"2244:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54310,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2244:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54337,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":54320,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54305,"src":"2304:9:78","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54319,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2298:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":54318,"name":"bytes","nodeType":"ElementaryTypeName","src":"2298:5:78","typeDescriptions":{}}},"id":54321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2298:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54317,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2288:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2288:27:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2280:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54315,"name":"uint256","nodeType":"ElementaryTypeName","src":"2280:7:78","typeDescriptions":{}}},"id":54323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2280:36:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2280:40:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54313,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2269:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54314,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2273:6:78","memberName":"encode","nodeType":"MemberAccess","src":"2269:10:78","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2269:52:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54312,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2259:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2259:63:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":54335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"2325:23:78","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":54332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2342:4:78","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":54331,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2334:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54330,"name":"uint256","nodeType":"ElementaryTypeName","src":"2334:7:78","typeDescriptions":{}}},"id":54333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2334:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54329,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2326:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":54328,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2326:7:78","typeDescriptions":{}}},"id":54334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2326:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2259:89:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2244:104:78"},{"expression":{"id":54345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":54341,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54201,"src":"2386:12:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54338,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"2359:11:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2371:14:78","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"2359:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2359:40:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54343,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2400:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"2359:46:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54344,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54311,"src":"2408:4:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2359:53:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54346,"nodeType":"ExpressionStatement","src":"2359:53:78"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54347,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53562,"src":"2428:18:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2428:20:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54349,"nodeType":"EmitStatement","src":"2423:25:78"}]},"baseFunctions":[53582],"functionSelector":"5686cad5","implemented":true,"kind":"function","modifiers":[{"id":54308,"kind":"modifierInvocation","modifierName":{"id":54307,"name":"onlyOwner","nameLocations":["2224:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2224:9:78"},"nodeType":"ModifierInvocation","src":"2224:9:78"}],"name":"setStorageSlot","nameLocation":"2177:14:78","parameters":{"id":54306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54305,"mutability":"mutable","name":"namespace","nameLocation":"2206:9:78","nodeType":"VariableDeclaration","scope":54351,"src":"2192:23:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54304,"name":"string","nodeType":"ElementaryTypeName","src":"2192:6:78","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2191:25:78"},"returnParameters":{"id":54309,"nodeType":"ParameterList","parameters":[],"src":"2234:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54366,"nodeType":"FunctionDefinition","src":"2461:153:78","nodes":[],"body":{"id":54365,"nodeType":"Block","src":"2519:95:78","nodes":[],"statements":[{"assignments":[54358],"declarations":[{"constant":false,"id":54358,"mutability":"mutable","name":"router","nameLocation":"2545:6:78","nodeType":"VariableDeclaration","scope":54365,"src":"2529:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54357,"nodeType":"UserDefinedTypeName","pathNode":{"id":54356,"name":"Storage","nameLocations":["2529:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"2529:7:78"},"referencedDeclaration":53471,"src":"2529:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54361,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54359,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"2554:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2554:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2529:38:78"},{"expression":{"expression":{"id":54362,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54358,"src":"2584:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54363,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2591:16:78","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53436,"src":"2584:23:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54355,"id":54364,"nodeType":"Return","src":"2577:30:78"}]},"baseFunctions":[53587],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"2470:16:78","parameters":{"id":54352,"nodeType":"ParameterList","parameters":[],"src":"2486:2:78"},"returnParameters":{"id":54355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54366,"src":"2510:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54353,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2510:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2509:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54381,"nodeType":"FunctionDefinition","src":"2620:167:78","nodes":[],"body":{"id":54380,"nodeType":"Block","src":"2685:102:78","nodes":[],"statements":[{"assignments":[54373],"declarations":[{"constant":false,"id":54373,"mutability":"mutable","name":"router","nameLocation":"2711:6:78","nodeType":"VariableDeclaration","scope":54380,"src":"2695:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54372,"nodeType":"UserDefinedTypeName","pathNode":{"id":54371,"name":"Storage","nameLocations":["2695:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"2695:7:78"},"referencedDeclaration":53471,"src":"2695:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54376,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54374,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"2720:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2720:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2695:38:78"},{"expression":{"expression":{"id":54377,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"2750:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2757:23:78","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53444,"src":"2750:30:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54370,"id":54379,"nodeType":"Return","src":"2743:37:78"}]},"baseFunctions":[53592],"functionSelector":"2dacfb69","implemented":true,"kind":"function","modifiers":[],"name":"lastBlockCommitmentHash","nameLocation":"2629:23:78","parameters":{"id":54367,"nodeType":"ParameterList","parameters":[],"src":"2652:2:78"},"returnParameters":{"id":54370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54369,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54381,"src":"2676:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54368,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2676:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2675:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54396,"nodeType":"FunctionDefinition","src":"2793:143:78","nodes":[],"body":{"id":54395,"nodeType":"Block","src":"2846:90:78","nodes":[],"statements":[{"assignments":[54388],"declarations":[{"constant":false,"id":54388,"mutability":"mutable","name":"router","nameLocation":"2872:6:78","nodeType":"VariableDeclaration","scope":54395,"src":"2856:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54387,"nodeType":"UserDefinedTypeName","pathNode":{"id":54386,"name":"Storage","nameLocations":["2856:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"2856:7:78"},"referencedDeclaration":53471,"src":"2856:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54391,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54389,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"2881:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2881:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2856:38:78"},{"expression":{"expression":{"id":54392,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54388,"src":"2911:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54393,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2918:11:78","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53442,"src":"2911:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54385,"id":54394,"nodeType":"Return","src":"2904:25:78"}]},"baseFunctions":[53597],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"2802:11:78","parameters":{"id":54382,"nodeType":"ParameterList","parameters":[],"src":"2813:2:78"},"returnParameters":{"id":54385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54396,"src":"2837:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54383,"name":"address","nodeType":"ElementaryTypeName","src":"2837:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2836:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54411,"nodeType":"FunctionDefinition","src":"2942:143:78","nodes":[],"body":{"id":54410,"nodeType":"Block","src":"2995:90:78","nodes":[],"statements":[{"assignments":[54403],"declarations":[{"constant":false,"id":54403,"mutability":"mutable","name":"router","nameLocation":"3021:6:78","nodeType":"VariableDeclaration","scope":54410,"src":"3005:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54402,"nodeType":"UserDefinedTypeName","pathNode":{"id":54401,"name":"Storage","nameLocations":["3005:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3005:7:78"},"referencedDeclaration":53471,"src":"3005:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54406,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54404,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3030:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3030:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3005:38:78"},{"expression":{"expression":{"id":54407,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54403,"src":"3060:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3067:11:78","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53440,"src":"3060:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54400,"id":54409,"nodeType":"Return","src":"3053:25:78"}]},"baseFunctions":[53602],"functionSelector":"78ee5dec","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxy","nameLocation":"2951:11:78","parameters":{"id":54397,"nodeType":"ParameterList","parameters":[],"src":"2962:2:78"},"returnParameters":{"id":54400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54399,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54411,"src":"2986:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54398,"name":"address","nodeType":"ElementaryTypeName","src":"2986:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2985:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54426,"nodeType":"FunctionDefinition","src":"3091:133:78","nodes":[],"body":{"id":54425,"nodeType":"Block","src":"3139:85:78","nodes":[],"statements":[{"assignments":[54418],"declarations":[{"constant":false,"id":54418,"mutability":"mutable","name":"router","nameLocation":"3165:6:78","nodeType":"VariableDeclaration","scope":54425,"src":"3149:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54417,"nodeType":"UserDefinedTypeName","pathNode":{"id":54416,"name":"Storage","nameLocations":["3149:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3149:7:78"},"referencedDeclaration":53471,"src":"3149:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54421,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54419,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3174:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3174:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3149:38:78"},{"expression":{"expression":{"id":54422,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54418,"src":"3204:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54423,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3211:6:78","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53438,"src":"3204:13:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54415,"id":54424,"nodeType":"Return","src":"3197:20:78"}]},"baseFunctions":[53607],"functionSelector":"444d9172","implemented":true,"kind":"function","modifiers":[],"name":"mirror","nameLocation":"3100:6:78","parameters":{"id":54412,"nodeType":"ParameterList","parameters":[],"src":"3106:2:78"},"returnParameters":{"id":54415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54414,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54426,"src":"3130:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54413,"name":"address","nodeType":"ElementaryTypeName","src":"3130:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3129:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54446,"nodeType":"FunctionDefinition","src":"3230:143:78","nodes":[],"body":{"id":54445,"nodeType":"Block","src":"3285:88:78","nodes":[],"statements":[{"assignments":[54435],"declarations":[{"constant":false,"id":54435,"mutability":"mutable","name":"router","nameLocation":"3311:6:78","nodeType":"VariableDeclaration","scope":54445,"src":"3295:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54434,"nodeType":"UserDefinedTypeName","pathNode":{"id":54433,"name":"Storage","nameLocations":["3295:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3295:7:78"},"referencedDeclaration":53471,"src":"3295:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54438,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54436,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3320:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3320:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3295:38:78"},{"expression":{"id":54443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54439,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54435,"src":"3343:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3350:6:78","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53438,"src":"3343:13:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54442,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54428,"src":"3359:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3343:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54444,"nodeType":"ExpressionStatement","src":"3343:23:78"}]},"baseFunctions":[53612],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":54431,"kind":"modifierInvocation","modifierName":{"id":54430,"name":"onlyOwner","nameLocations":["3275:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"3275:9:78"},"nodeType":"ModifierInvocation","src":"3275:9:78"}],"name":"setMirror","nameLocation":"3239:9:78","parameters":{"id":54429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54428,"mutability":"mutable","name":"_mirror","nameLocation":"3257:7:78","nodeType":"VariableDeclaration","scope":54446,"src":"3249:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54427,"name":"address","nodeType":"ElementaryTypeName","src":"3249:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3248:17:78"},"returnParameters":{"id":54432,"nodeType":"ParameterList","parameters":[],"src":"3285:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54461,"nodeType":"FunctionDefinition","src":"3429:159:78","nodes":[],"body":{"id":54460,"nodeType":"Block","src":"3490:98:78","nodes":[],"statements":[{"assignments":[54453],"declarations":[{"constant":false,"id":54453,"mutability":"mutable","name":"router","nameLocation":"3516:6:78","nodeType":"VariableDeclaration","scope":54460,"src":"3500:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54452,"nodeType":"UserDefinedTypeName","pathNode":{"id":54451,"name":"Storage","nameLocations":["3500:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3500:7:78"},"referencedDeclaration":53471,"src":"3500:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54456,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54454,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3525:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54455,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3525:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3500:38:78"},{"expression":{"expression":{"id":54457,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54453,"src":"3555:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54458,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3562:19:78","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53464,"src":"3555:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54450,"id":54459,"nodeType":"Return","src":"3548:33:78"}]},"baseFunctions":[53617],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"3438:19:78","parameters":{"id":54447,"nodeType":"ParameterList","parameters":[],"src":"3457:2:78"},"returnParameters":{"id":54450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54449,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54461,"src":"3481:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54448,"name":"uint256","nodeType":"ElementaryTypeName","src":"3481:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3480:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54481,"nodeType":"FunctionDefinition","src":"3594:159:78","nodes":[],"body":{"id":54480,"nodeType":"Block","src":"3661:92:78","nodes":[],"statements":[{"assignments":[54471],"declarations":[{"constant":false,"id":54471,"mutability":"mutable","name":"router","nameLocation":"3687:6:78","nodeType":"VariableDeclaration","scope":54480,"src":"3671:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54470,"nodeType":"UserDefinedTypeName","pathNode":{"id":54469,"name":"Storage","nameLocations":["3671:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3671:7:78"},"referencedDeclaration":53471,"src":"3671:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54474,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54472,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3696:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3696:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3671:38:78"},{"expression":{"baseExpression":{"expression":{"id":54475,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54471,"src":"3726:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3733:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"3726:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54478,"indexExpression":{"id":54477,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54463,"src":"3739:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3726:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"functionReturnParameters":54468,"id":54479,"nodeType":"Return","src":"3719:27:78"}]},"baseFunctions":[53625],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"3603:9:78","parameters":{"id":54464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54463,"mutability":"mutable","name":"codeId","nameLocation":"3621:6:78","nodeType":"VariableDeclaration","scope":54481,"src":"3613:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54462,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3613:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3612:16:78"},"returnParameters":{"id":54468,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54467,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54481,"src":"3650:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"},"typeName":{"id":54466,"nodeType":"UserDefinedTypeName","pathNode":{"id":54465,"name":"CodeState","nameLocations":["3650:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":53475,"src":"3650:9:78"},"referencedDeclaration":53475,"src":"3650:9:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"visibility":"internal"}],"src":"3649:11:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54496,"nodeType":"FunctionDefinition","src":"3759:147:78","nodes":[],"body":{"id":54495,"nodeType":"Block","src":"3814:92:78","nodes":[],"statements":[{"assignments":[54488],"declarations":[{"constant":false,"id":54488,"mutability":"mutable","name":"router","nameLocation":"3840:6:78","nodeType":"VariableDeclaration","scope":54495,"src":"3824:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54487,"nodeType":"UserDefinedTypeName","pathNode":{"id":54486,"name":"Storage","nameLocations":["3824:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3824:7:78"},"referencedDeclaration":53471,"src":"3824:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54491,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54489,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"3849:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3849:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3824:38:78"},{"expression":{"expression":{"id":54492,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54488,"src":"3879:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54493,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3886:13:78","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53470,"src":"3879:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54485,"id":54494,"nodeType":"Return","src":"3872:27:78"}]},"baseFunctions":[53630],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"3768:13:78","parameters":{"id":54482,"nodeType":"ParameterList","parameters":[],"src":"3781:2:78"},"returnParameters":{"id":54485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54496,"src":"3805:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54483,"name":"uint256","nodeType":"ElementaryTypeName","src":"3805:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3804:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54515,"nodeType":"FunctionDefinition","src":"3912:166:78","nodes":[],"body":{"id":54514,"nodeType":"Block","src":"3982:96:78","nodes":[],"statements":[{"assignments":[54505],"declarations":[{"constant":false,"id":54505,"mutability":"mutable","name":"router","nameLocation":"4008:6:78","nodeType":"VariableDeclaration","scope":54514,"src":"3992:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54504,"nodeType":"UserDefinedTypeName","pathNode":{"id":54503,"name":"Storage","nameLocations":["3992:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"3992:7:78"},"referencedDeclaration":53471,"src":"3992:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54508,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54506,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"4017:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4017:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3992:38:78"},{"expression":{"baseExpression":{"expression":{"id":54509,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54505,"src":"4047:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54510,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4054:8:78","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53468,"src":"4047:15:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":54512,"indexExpression":{"id":54511,"name":"program","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54498,"src":"4063:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4047:24:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54502,"id":54513,"nodeType":"Return","src":"4040:31:78"}]},"baseFunctions":[53638],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"3921:13:78","parameters":{"id":54499,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54498,"mutability":"mutable","name":"program","nameLocation":"3943:7:78","nodeType":"VariableDeclaration","scope":54515,"src":"3935:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54497,"name":"address","nodeType":"ElementaryTypeName","src":"3935:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3934:17:78"},"returnParameters":{"id":54502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54501,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54515,"src":"3973:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54500,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3973:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3972:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54530,"nodeType":"FunctionDefinition","src":"4129:173:78","nodes":[],"body":{"id":54529,"nodeType":"Block","src":"4197:105:78","nodes":[],"statements":[{"assignments":[54522],"declarations":[{"constant":false,"id":54522,"mutability":"mutable","name":"router","nameLocation":"4223:6:78","nodeType":"VariableDeclaration","scope":54529,"src":"4207:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54521,"nodeType":"UserDefinedTypeName","pathNode":{"id":54520,"name":"Storage","nameLocations":["4207:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"4207:7:78"},"referencedDeclaration":53471,"src":"4207:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54525,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54523,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"4232:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54524,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4232:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4207:38:78"},{"expression":{"expression":{"id":54526,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54522,"src":"4262:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54527,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4269:26:78","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53446,"src":"4262:33:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54519,"id":54528,"nodeType":"Return","src":"4255:40:78"}]},"baseFunctions":[53643],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"4138:26:78","parameters":{"id":54516,"nodeType":"ParameterList","parameters":[],"src":"4164:2:78"},"returnParameters":{"id":54519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54518,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54530,"src":"4188:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54517,"name":"uint256","nodeType":"ElementaryTypeName","src":"4188:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4187:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54547,"nodeType":"FunctionDefinition","src":"4308:204:78","nodes":[],"body":{"id":54546,"nodeType":"Block","src":"4369:143:78","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54535,"name":"validatorsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54563,"src":"4441:15:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4441:17:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54537,"name":"signingThresholdPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54530,"src":"4461:26:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4461:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4441:48:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"39393939","id":54540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4492:4:78","typeDescriptions":{"typeIdentifier":"t_rational_9999_by_1","typeString":"int_const 9999"},"value":"9999"},"src":"4441:55:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":54542,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4440:57:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":54543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4500:5:78","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"4440:65:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54534,"id":54545,"nodeType":"Return","src":"4433:72:78"}]},"baseFunctions":[53648],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"4317:19:78","parameters":{"id":54531,"nodeType":"ParameterList","parameters":[],"src":"4336:2:78"},"returnParameters":{"id":54534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54547,"src":"4360:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54532,"name":"uint256","nodeType":"ElementaryTypeName","src":"4360:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4359:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54563,"nodeType":"FunctionDefinition","src":"4518:157:78","nodes":[],"body":{"id":54562,"nodeType":"Block","src":"4575:100:78","nodes":[],"statements":[{"assignments":[54554],"declarations":[{"constant":false,"id":54554,"mutability":"mutable","name":"router","nameLocation":"4601:6:78","nodeType":"VariableDeclaration","scope":54562,"src":"4585:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54553,"nodeType":"UserDefinedTypeName","pathNode":{"id":54552,"name":"Storage","nameLocations":["4585:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"4585:7:78"},"referencedDeclaration":53471,"src":"4585:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54557,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54555,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"4610:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4610:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4585:38:78"},{"expression":{"expression":{"expression":{"id":54558,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54554,"src":"4640:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4647:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"4640:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":54560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4662:6:78","memberName":"length","nodeType":"MemberAccess","src":"4640:28:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54551,"id":54561,"nodeType":"Return","src":"4633:35:78"}]},"baseFunctions":[53653],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"4527:15:78","parameters":{"id":54548,"nodeType":"ParameterList","parameters":[],"src":"4542:2:78"},"returnParameters":{"id":54551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54563,"src":"4566:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54549,"name":"uint256","nodeType":"ElementaryTypeName","src":"4566:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4565:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54582,"nodeType":"FunctionDefinition","src":"4681:171:78","nodes":[],"body":{"id":54581,"nodeType":"Block","src":"4752:100:78","nodes":[],"statements":[{"assignments":[54572],"declarations":[{"constant":false,"id":54572,"mutability":"mutable","name":"router","nameLocation":"4778:6:78","nodeType":"VariableDeclaration","scope":54581,"src":"4762:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54571,"nodeType":"UserDefinedTypeName","pathNode":{"id":54570,"name":"Storage","nameLocations":["4762:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"4762:7:78"},"referencedDeclaration":53471,"src":"4762:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54575,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54573,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"4787:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4787:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4762:38:78"},{"expression":{"baseExpression":{"expression":{"id":54576,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54572,"src":"4817:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4824:10:78","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53454,"src":"4817:17:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":54579,"indexExpression":{"id":54578,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54565,"src":"4835:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4817:28:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":54569,"id":54580,"nodeType":"Return","src":"4810:35:78"}]},"baseFunctions":[53660],"functionSelector":"8febbd59","implemented":true,"kind":"function","modifiers":[],"name":"validatorExists","nameLocation":"4690:15:78","parameters":{"id":54566,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54565,"mutability":"mutable","name":"validator","nameLocation":"4714:9:78","nodeType":"VariableDeclaration","scope":54582,"src":"4706:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54564,"name":"address","nodeType":"ElementaryTypeName","src":"4706:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4705:19:78"},"returnParameters":{"id":54569,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54568,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54582,"src":"4746:4:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54567,"name":"bool","nodeType":"ElementaryTypeName","src":"4746:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4745:6:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54598,"nodeType":"FunctionDefinition","src":"4858:154:78","nodes":[],"body":{"id":54597,"nodeType":"Block","src":"4919:93:78","nodes":[],"statements":[{"assignments":[54590],"declarations":[{"constant":false,"id":54590,"mutability":"mutable","name":"router","nameLocation":"4945:6:78","nodeType":"VariableDeclaration","scope":54597,"src":"4929:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54589,"nodeType":"UserDefinedTypeName","pathNode":{"id":54588,"name":"Storage","nameLocations":["4929:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"4929:7:78"},"referencedDeclaration":53471,"src":"4929:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54593,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54591,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"4954:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4954:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4929:38:78"},{"expression":{"expression":{"id":54594,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54590,"src":"4984:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54595,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4991:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"4984:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":54587,"id":54596,"nodeType":"Return","src":"4977:28:78"}]},"baseFunctions":[53666],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"4867:10:78","parameters":{"id":54583,"nodeType":"ParameterList","parameters":[],"src":"4877:2:78"},"returnParameters":{"id":54587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54586,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54598,"src":"4901:16:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54584,"name":"address","nodeType":"ElementaryTypeName","src":"4901:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54585,"nodeType":"ArrayTypeName","src":"4901:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"4900:18:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54617,"nodeType":"FunctionDefinition","src":"5075:209:78","nodes":[],"body":{"id":54616,"nodeType":"Block","src":"5163:121:78","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54606,"name":"_cleanValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55633,"src":"5173:16:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5173:18:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54608,"nodeType":"ExpressionStatement","src":"5173:18:78"},{"expression":{"arguments":[{"id":54610,"name":"validatorsAddressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54601,"src":"5216:22:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":54609,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55688,"src":"5201:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5201:38:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54612,"nodeType":"ExpressionStatement","src":"5201:38:78"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54613,"name":"ValidatorsSetChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53559,"src":"5255:20:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5255:22:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54615,"nodeType":"EmitStatement","src":"5250:27:78"}]},"baseFunctions":[53672],"functionSelector":"e71731e4","implemented":true,"kind":"function","modifiers":[{"id":54604,"kind":"modifierInvocation","modifierName":{"id":54603,"name":"onlyOwner","nameLocations":["5153:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5153:9:78"},"nodeType":"ModifierInvocation","src":"5153:9:78"}],"name":"updateValidators","nameLocation":"5084:16:78","parameters":{"id":54602,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54601,"mutability":"mutable","name":"validatorsAddressArray","nameLocation":"5120:22:78","nodeType":"VariableDeclaration","scope":54617,"src":"5101:41:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54599,"name":"address","nodeType":"ElementaryTypeName","src":"5101:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54600,"nodeType":"ArrayTypeName","src":"5101:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5100:43:78"},"returnParameters":{"id":54605,"nodeType":"ParameterList","parameters":[],"src":"5163:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54632,"nodeType":"FunctionDefinition","src":"5338:140:78","nodes":[],"body":{"id":54631,"nodeType":"Block","src":"5389:89:78","nodes":[],"statements":[{"assignments":[54624],"declarations":[{"constant":false,"id":54624,"mutability":"mutable","name":"router","nameLocation":"5415:6:78","nodeType":"VariableDeclaration","scope":54631,"src":"5399:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54623,"nodeType":"UserDefinedTypeName","pathNode":{"id":54622,"name":"Storage","nameLocations":["5399:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"5399:7:78"},"referencedDeclaration":53471,"src":"5399:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54627,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54625,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"5424:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5424:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5399:38:78"},{"expression":{"expression":{"id":54628,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54624,"src":"5454:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5461:10:78","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53448,"src":"5454:17:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":54621,"id":54630,"nodeType":"Return","src":"5447:24:78"}]},"baseFunctions":[53677],"functionSelector":"d3fd6364","implemented":true,"kind":"function","modifiers":[],"name":"baseWeight","nameLocation":"5347:10:78","parameters":{"id":54618,"nodeType":"ParameterList","parameters":[],"src":"5357:2:78"},"returnParameters":{"id":54621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54632,"src":"5381:6:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":54619,"name":"uint64","nodeType":"ElementaryTypeName","src":"5381:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5380:8:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54656,"nodeType":"FunctionDefinition","src":"5484:204:78","nodes":[],"body":{"id":54655,"nodeType":"Block","src":"5546:142:78","nodes":[],"statements":[{"assignments":[54641],"declarations":[{"constant":false,"id":54641,"mutability":"mutable","name":"router","nameLocation":"5572:6:78","nodeType":"VariableDeclaration","scope":54655,"src":"5556:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54640,"nodeType":"UserDefinedTypeName","pathNode":{"id":54639,"name":"Storage","nameLocations":["5556:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"5556:7:78"},"referencedDeclaration":53471,"src":"5556:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54644,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54642,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"5581:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5581:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5556:38:78"},{"expression":{"id":54649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54645,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54641,"src":"5604:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5611:10:78","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53448,"src":"5604:17:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54648,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"5624:11:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"5604:31:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54650,"nodeType":"ExpressionStatement","src":"5604:31:78"},{"eventCall":{"arguments":[{"id":54652,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54634,"src":"5669:11:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":54651,"name":"BaseWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53567,"src":"5651:17:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":54653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5651:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54654,"nodeType":"EmitStatement","src":"5646:35:78"}]},"baseFunctions":[53682],"functionSelector":"8028861a","implemented":true,"kind":"function","modifiers":[{"id":54637,"kind":"modifierInvocation","modifierName":{"id":54636,"name":"onlyOwner","nameLocations":["5536:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5536:9:78"},"nodeType":"ModifierInvocation","src":"5536:9:78"}],"name":"setBaseWeight","nameLocation":"5493:13:78","parameters":{"id":54635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54634,"mutability":"mutable","name":"_baseWeight","nameLocation":"5514:11:78","nodeType":"VariableDeclaration","scope":54656,"src":"5507:18:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":54633,"name":"uint64","nodeType":"ElementaryTypeName","src":"5507:6:78","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"5506:20:78"},"returnParameters":{"id":54638,"nodeType":"ParameterList","parameters":[],"src":"5546:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54671,"nodeType":"FunctionDefinition","src":"5694:149:78","nodes":[],"body":{"id":54670,"nodeType":"Block","src":"5750:93:78","nodes":[],"statements":[{"assignments":[54663],"declarations":[{"constant":false,"id":54663,"mutability":"mutable","name":"router","nameLocation":"5776:6:78","nodeType":"VariableDeclaration","scope":54670,"src":"5760:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54662,"nodeType":"UserDefinedTypeName","pathNode":{"id":54661,"name":"Storage","nameLocations":["5760:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"5760:7:78"},"referencedDeclaration":53471,"src":"5760:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54666,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54664,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"5785:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5785:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5760:38:78"},{"expression":{"expression":{"id":54667,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54663,"src":"5815:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54668,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5822:14:78","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53450,"src":"5815:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":54660,"id":54669,"nodeType":"Return","src":"5808:28:78"}]},"baseFunctions":[53687],"functionSelector":"0834fecc","implemented":true,"kind":"function","modifiers":[],"name":"valuePerWeight","nameLocation":"5703:14:78","parameters":{"id":54657,"nodeType":"ParameterList","parameters":[],"src":"5717:2:78"},"returnParameters":{"id":54660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54659,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54671,"src":"5741:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54658,"name":"uint128","nodeType":"ElementaryTypeName","src":"5741:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5740:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54695,"nodeType":"FunctionDefinition","src":"5849:229:78","nodes":[],"body":{"id":54694,"nodeType":"Block","src":"5920:158:78","nodes":[],"statements":[{"assignments":[54680],"declarations":[{"constant":false,"id":54680,"mutability":"mutable","name":"router","nameLocation":"5946:6:78","nodeType":"VariableDeclaration","scope":54694,"src":"5930:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54679,"nodeType":"UserDefinedTypeName","pathNode":{"id":54678,"name":"Storage","nameLocations":["5930:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"5930:7:78"},"referencedDeclaration":53471,"src":"5930:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54683,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54681,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"5955:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5955:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5930:38:78"},{"expression":{"id":54688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54684,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54680,"src":"5978:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"5985:14:78","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53450,"src":"5978:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54687,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54673,"src":"6002:15:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"5978:39:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54689,"nodeType":"ExpressionStatement","src":"5978:39:78"},{"eventCall":{"arguments":[{"id":54691,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54673,"src":"6055:15:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54690,"name":"ValuePerWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53572,"src":"6033:21:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6033:38:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54693,"nodeType":"EmitStatement","src":"6028:43:78"}]},"baseFunctions":[53692],"functionSelector":"a6bbbe1c","implemented":true,"kind":"function","modifiers":[{"id":54676,"kind":"modifierInvocation","modifierName":{"id":54675,"name":"onlyOwner","nameLocations":["5910:9:78"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5910:9:78"},"nodeType":"ModifierInvocation","src":"5910:9:78"}],"name":"setValuePerWeight","nameLocation":"5858:17:78","parameters":{"id":54674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54673,"mutability":"mutable","name":"_valuePerWeight","nameLocation":"5884:15:78","nodeType":"VariableDeclaration","scope":54695,"src":"5876:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54672,"name":"uint128","nodeType":"ElementaryTypeName","src":"5876:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"5875:25:78"},"returnParameters":{"id":54677,"nodeType":"ParameterList","parameters":[],"src":"5920:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54710,"nodeType":"FunctionDefinition","src":"6084:113:78","nodes":[],"body":{"id":54709,"nodeType":"Block","src":"6133:64:78","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54702,"name":"baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54632,"src":"6158:10:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":54703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6158:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":54701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6150:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":54700,"name":"uint128","nodeType":"ElementaryTypeName","src":"6150:7:78","typeDescriptions":{}}},"id":54704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6150:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54705,"name":"valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54671,"src":"6174:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":54706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6150:40:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":54699,"id":54708,"nodeType":"Return","src":"6143:47:78"}]},"baseFunctions":[53697],"functionSelector":"6ef25c3a","implemented":true,"kind":"function","modifiers":[],"name":"baseFee","nameLocation":"6093:7:78","parameters":{"id":54696,"nodeType":"ParameterList","parameters":[],"src":"6100:2:78"},"returnParameters":{"id":54699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54710,"src":"6124:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54697,"name":"uint128","nodeType":"ElementaryTypeName","src":"6124:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6123:9:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54762,"nodeType":"FunctionDefinition","src":"6233:453:78","nodes":[],"body":{"id":54761,"nodeType":"Block","src":"6309:377:78","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":54726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54718,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54714,"src":"6327:10:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6341:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6327:15:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":54722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6355:1:78","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":54721,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"6346:8:78","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6346:11:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6361:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6346:16:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6327:35:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f6254784861736820636f756c646e277420626520666f756e64","id":54727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6364:30:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""},"value":"blobTxHash couldn't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""}],"id":54717,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6319:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6319:76:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54729,"nodeType":"ExpressionStatement","src":"6319:76:78"},{"assignments":[54732],"declarations":[{"constant":false,"id":54732,"mutability":"mutable","name":"router","nameLocation":"6422:6:78","nodeType":"VariableDeclaration","scope":54761,"src":"6406:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54731,"nodeType":"UserDefinedTypeName","pathNode":{"id":54730,"name":"Storage","nameLocations":["6406:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"6406:7:78"},"referencedDeclaration":53471,"src":"6406:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54735,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54733,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"6431:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6431:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6406:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"},"id":54743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":54737,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54732,"src":"6463:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54738,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6470:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"6463:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54740,"indexExpression":{"id":54739,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54712,"src":"6476:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6463:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":54741,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"6487:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53475_$","typeString":"type(enum IRouter.CodeState)"}},"id":54742,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6497:7:78","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":53472,"src":"6487:17:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"src":"6463:41:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652077697468207375636820696420616c726561647920726571756573746564206f722076616c696461746564","id":54744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6506:50:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""},"value":"code with such id already requested or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""}],"id":54736,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6455:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6455:102:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54746,"nodeType":"ExpressionStatement","src":"6455:102:78"},{"expression":{"id":54754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":54747,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54732,"src":"6568:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6575:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"6568:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54751,"indexExpression":{"id":54749,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54712,"src":"6581:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6568:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":54752,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"6591:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53475_$","typeString":"type(enum IRouter.CodeState)"}},"id":54753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6601:19:78","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53473,"src":"6591:29:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"src":"6568:52:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"id":54755,"nodeType":"ExpressionStatement","src":"6568:52:78"},{"eventCall":{"arguments":[{"id":54757,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54712,"src":"6660:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54758,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54714,"src":"6668:10:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54756,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53542,"src":"6636:23:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":54759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6636:43:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54760,"nodeType":"EmitStatement","src":"6631:48:78"}]},"baseFunctions":[53704],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6242:21:78","parameters":{"id":54715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54712,"mutability":"mutable","name":"codeId","nameLocation":"6272:6:78","nodeType":"VariableDeclaration","scope":54762,"src":"6264:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54711,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6264:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54714,"mutability":"mutable","name":"blobTxHash","nameLocation":"6288:10:78","nodeType":"VariableDeclaration","scope":54762,"src":"6280:18:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54713,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6280:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6263:36:78"},"returnParameters":{"id":54716,"nodeType":"ParameterList","parameters":[],"src":"6309:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54862,"nodeType":"FunctionDefinition","src":"6692:1033:78","nodes":[],"body":{"id":54861,"nodeType":"Block","src":"6848:877:78","nodes":[],"statements":[{"assignments":[54777],"declarations":[{"constant":false,"id":54777,"mutability":"mutable","name":"router","nameLocation":"6874:6:78","nodeType":"VariableDeclaration","scope":54861,"src":"6858:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54776,"nodeType":"UserDefinedTypeName","pathNode":{"id":54775,"name":"Storage","nameLocations":["6858:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"6858:7:78"},"referencedDeclaration":53471,"src":"6858:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54780,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54778,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"6883:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6883:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6858:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"},"id":54788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":54782,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54777,"src":"6915:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54783,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6922:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"6915:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54785,"indexExpression":{"id":54784,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54764,"src":"6928:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6915:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":54786,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"6939:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53475_$","typeString":"type(enum IRouter.CodeState)"}},"id":54787,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6949:9:78","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53474,"src":"6939:19:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"src":"6915:43:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":54789,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6960:48:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":54781,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6907:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54790,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6907:102:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54791,"nodeType":"ExpressionStatement","src":"6907:102:78"},{"assignments":[54793],"declarations":[{"constant":false,"id":54793,"mutability":"mutable","name":"baseFeeValue","nameLocation":"7028:12:78","nodeType":"VariableDeclaration","scope":54861,"src":"7020:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54792,"name":"uint128","nodeType":"ElementaryTypeName","src":"7020:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54796,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54794,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54710,"src":"7043:7:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":54795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7043:9:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7020:32:78"},{"assignments":[54798],"declarations":[{"constant":false,"id":54798,"mutability":"mutable","name":"executableBalance","nameLocation":"7070:17:78","nodeType":"VariableDeclaration","scope":54861,"src":"7062:25:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54797,"name":"uint128","nodeType":"ElementaryTypeName","src":"7062:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54802,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54799,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54793,"src":"7090:12:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":54800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7105:2:78","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7090:17:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7062:45:78"},{"assignments":[54804],"declarations":[{"constant":false,"id":54804,"mutability":"mutable","name":"totalValue","nameLocation":"7126:10:78","nodeType":"VariableDeclaration","scope":54861,"src":"7118:18:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54803,"name":"uint128","nodeType":"ElementaryTypeName","src":"7118:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":54810,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":54807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54805,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54793,"src":"7139:12:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54806,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54798,"src":"7154:17:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7139:32:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54808,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54770,"src":"7174:6:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7139:41:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7118:62:78"},{"expression":{"arguments":[{"id":54812,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54804,"src":"7206:10:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54811,"name":"_retrieveValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55592,"src":"7191:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7191:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54814,"nodeType":"ExpressionStatement","src":"7191:26:78"},{"assignments":[54816],"declarations":[{"constant":false,"id":54816,"mutability":"mutable","name":"actorId","nameLocation":"7386:7:78","nodeType":"VariableDeclaration","scope":54861,"src":"7378:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54815,"name":"address","nodeType":"ElementaryTypeName","src":"7378:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54829,"initialValue":{"arguments":[{"expression":{"id":54819,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54777,"src":"7422:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7429:11:78","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53440,"src":"7422:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":54824,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54764,"src":"7469:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54825,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54766,"src":"7477:4:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54822,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7452:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54823,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7456:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"7452:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7452:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54821,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7442:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7442:41:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54817,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"7396:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":54818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7403:18:78","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"7396:25:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":54828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7396:88:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7378:106:78"},{"expression":{"id":54836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":54830,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54777,"src":"7495:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54833,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7502:8:78","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53468,"src":"7495:15:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":54834,"indexExpression":{"id":54832,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"7511:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7495:24:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54835,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54764,"src":"7522:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7495:33:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54837,"nodeType":"ExpressionStatement","src":"7495:33:78"},{"expression":{"id":54841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7538:22:78","subExpression":{"expression":{"id":54838,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54777,"src":"7538:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54840,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"7545:13:78","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53470,"src":"7538:20:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54842,"nodeType":"ExpressionStatement","src":"7538:22:78"},{"eventCall":{"arguments":[{"id":54844,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"7591:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54845,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54764,"src":"7600:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54843,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53556,"src":"7576:14:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":54846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7576:31:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54847,"nodeType":"EmitStatement","src":"7571:36:78"},{"expression":{"arguments":[{"expression":{"id":54852,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"7647:2:78","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":54853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7650:6:78","memberName":"origin","nodeType":"MemberAccess","src":"7647:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54854,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54768,"src":"7658:7:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":54855,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54770,"src":"7667:6:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":54856,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54798,"src":"7675:17:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":54849,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"7626:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54848,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53423,"src":"7618:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53423_$","typeString":"type(contract IMirror)"}},"id":54850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7618:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"id":54851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7635:11:78","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53422,"src":"7618:28:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":54857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7618:75:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54858,"nodeType":"ExpressionStatement","src":"7618:75:78"},{"expression":{"id":54859,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"7711:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54774,"id":54860,"nodeType":"Return","src":"7704:14:78"}]},"baseFunctions":[53717],"functionSelector":"8074b455","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"6701:13:78","parameters":{"id":54771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54764,"mutability":"mutable","name":"codeId","nameLocation":"6723:6:78","nodeType":"VariableDeclaration","scope":54862,"src":"6715:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54763,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6715:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54766,"mutability":"mutable","name":"salt","nameLocation":"6739:4:78","nodeType":"VariableDeclaration","scope":54862,"src":"6731:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6731:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54768,"mutability":"mutable","name":"payload","nameLocation":"6760:7:78","nodeType":"VariableDeclaration","scope":54862,"src":"6745:22:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":54767,"name":"bytes","nodeType":"ElementaryTypeName","src":"6745:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54770,"mutability":"mutable","name":"_value","nameLocation":"6777:6:78","nodeType":"VariableDeclaration","scope":54862,"src":"6769:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54769,"name":"uint128","nodeType":"ElementaryTypeName","src":"6769:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6714:70:78"},"returnParameters":{"id":54774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54773,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54862,"src":"6835:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54772,"name":"address","nodeType":"ElementaryTypeName","src":"6835:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6834:9:78"},"scope":55702,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":54975,"nodeType":"FunctionDefinition","src":"7731:1117:78","nodes":[],"body":{"id":54974,"nodeType":"Block","src":"7838:1010:78","nodes":[],"statements":[{"assignments":[54874],"declarations":[{"constant":false,"id":54874,"mutability":"mutable","name":"router","nameLocation":"7864:6:78","nodeType":"VariableDeclaration","scope":54974,"src":"7848:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54873,"nodeType":"UserDefinedTypeName","pathNode":{"id":54872,"name":"Storage","nameLocations":["7848:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"7848:7:78"},"referencedDeclaration":53471,"src":"7848:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54877,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54875,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"7873:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7873:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7848:38:78"},{"assignments":[54879],"declarations":[{"constant":false,"id":54879,"mutability":"mutable","name":"codeCommetmentsHashes","nameLocation":"7910:21:78","nodeType":"VariableDeclaration","scope":54974,"src":"7897:34:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54878,"name":"bytes","nodeType":"ElementaryTypeName","src":"7897:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54880,"nodeType":"VariableDeclarationStatement","src":"7897:34:78"},{"body":{"id":54965,"nodeType":"Block","src":"8000:766:78","statements":[{"assignments":[54894],"declarations":[{"constant":false,"id":54894,"mutability":"mutable","name":"codeCommitment","nameLocation":"8038:14:78","nodeType":"VariableDeclaration","scope":54965,"src":"8014:38:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":54893,"nodeType":"UserDefinedTypeName","pathNode":{"id":54892,"name":"CodeCommitment","nameLocations":["8014:14:78"],"nodeType":"IdentifierPath","referencedDeclaration":53480,"src":"8014:14:78"},"referencedDeclaration":53480,"src":"8014:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"id":54898,"initialValue":{"baseExpression":{"id":54895,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54866,"src":"8055:20:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53480_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":54897,"indexExpression":{"id":54896,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54882,"src":"8076:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8055:23:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"8014:64:78"},{"assignments":[54900],"declarations":[{"constant":false,"id":54900,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"8101:18:78","nodeType":"VariableDeclaration","scope":54965,"src":"8093:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54899,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8093:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54904,"initialValue":{"arguments":[{"id":54902,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54894,"src":"8142:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}],"id":54901,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55559,"src":"8122:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$53480_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.CodeCommitment calldata) pure returns (bytes32)"}},"id":54903,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8122:35:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8093:64:78"},{"expression":{"id":54912,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54905,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54879,"src":"8172:21:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":54909,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54879,"src":"8209:21:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":54910,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54900,"src":"8232:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54907,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8196:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":54906,"name":"bytes","nodeType":"ElementaryTypeName","src":"8196:5:78","typeDescriptions":{}}},"id":54908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8202:6:78","memberName":"concat","nodeType":"MemberAccess","src":"8196:12:78","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8196:55:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8172:79:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":54913,"nodeType":"ExpressionStatement","src":"8172:79:78"},{"assignments":[54915],"declarations":[{"constant":false,"id":54915,"mutability":"mutable","name":"codeId","nameLocation":"8274:6:78","nodeType":"VariableDeclaration","scope":54965,"src":"8266:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54914,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8266:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54918,"initialValue":{"expression":{"id":54916,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54894,"src":"8283:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":54917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8298:2:78","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53477,"src":"8283:17:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8266:34:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"},"id":54926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":54920,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54874,"src":"8322:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8329:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"8322:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54923,"indexExpression":{"id":54922,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54915,"src":"8335:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8322:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":54924,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"8346:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53475_$","typeString":"type(enum IRouter.CodeState)"}},"id":54925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8356:19:78","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53473,"src":"8346:29:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"src":"8322:53:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652073686f756c642062652072657175657374656420666f722076616c69646174696f6e","id":54927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8377:41:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""},"value":"code should be requested for validation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""}],"id":54919,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8314:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8314:105:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54929,"nodeType":"ExpressionStatement","src":"8314:105:78"},{"condition":{"expression":{"id":54930,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54894,"src":"8438:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":54931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8453:5:78","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53479,"src":"8438:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":54963,"nodeType":"Block","src":"8641:115:78","statements":[{"expression":{"id":54956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"8659:27:78","subExpression":{"baseExpression":{"expression":{"id":54952,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54874,"src":"8666:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8673:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"8666:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54955,"indexExpression":{"id":54954,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54915,"src":"8679:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8666:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54957,"nodeType":"ExpressionStatement","src":"8659:27:78"},{"eventCall":{"arguments":[{"id":54959,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54915,"src":"8727:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":54960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8735:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":54958,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53549,"src":"8710:16:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":54961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8710:31:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54962,"nodeType":"EmitStatement","src":"8705:36:78"}]},"id":54964,"nodeType":"IfStatement","src":"8434:322:78","trueBody":{"id":54951,"nodeType":"Block","src":"8460:175:78","statements":[{"expression":{"id":54939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":54932,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54874,"src":"8478:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54935,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8485:5:78","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53462,"src":"8478:12:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53475_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54936,"indexExpression":{"id":54934,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54915,"src":"8491:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8478:20:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":54937,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53475,"src":"8501:9:78","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53475_$","typeString":"type(enum IRouter.CodeState)"}},"id":54938,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8511:9:78","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53474,"src":"8501:19:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"src":"8478:42:78","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53475","typeString":"enum IRouter.CodeState"}},"id":54940,"nodeType":"ExpressionStatement","src":"8478:42:78"},{"expression":{"id":54944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8538:28:78","subExpression":{"expression":{"id":54941,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54874,"src":"8538:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8545:19:78","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53464,"src":"8538:26:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54945,"nodeType":"ExpressionStatement","src":"8538:28:78"},{"eventCall":{"arguments":[{"id":54947,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54915,"src":"8607:6:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":54948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8615:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":54946,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53549,"src":"8590:16:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":54949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8590:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54950,"nodeType":"EmitStatement","src":"8585:35:78"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54885,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54882,"src":"7962:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54886,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54866,"src":"7966:20:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53480_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":54887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7987:6:78","memberName":"length","nodeType":"MemberAccess","src":"7966:27:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7962:31:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54966,"initializationExpression":{"assignments":[54882],"declarations":[{"constant":false,"id":54882,"mutability":"mutable","name":"i","nameLocation":"7955:1:78","nodeType":"VariableDeclaration","scope":54966,"src":"7947:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54881,"name":"uint256","nodeType":"ElementaryTypeName","src":"7947:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54884,"initialValue":{"hexValue":"30","id":54883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7959:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"7947:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"7995:3:78","subExpression":{"id":54889,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54882,"src":"7995:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54891,"nodeType":"ExpressionStatement","src":"7995:3:78"},"nodeType":"ForStatement","src":"7942:824:78"},{"expression":{"arguments":[{"arguments":[{"id":54969,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54879,"src":"8806:21:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54968,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8796:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8796:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54971,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54869,"src":"8830:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":54967,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55120,"src":"8776:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":54972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:65:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54973,"nodeType":"ExpressionStatement","src":"8776:65:78"}]},"baseFunctions":[53727],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"7740:11:78","parameters":{"id":54870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54866,"mutability":"mutable","name":"codeCommitmentsArray","nameLocation":"7778:20:78","nodeType":"VariableDeclaration","scope":54975,"src":"7752:46:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53480_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment[]"},"typeName":{"baseType":{"id":54864,"nodeType":"UserDefinedTypeName","pathNode":{"id":54863,"name":"CodeCommitment","nameLocations":["7752:14:78"],"nodeType":"IdentifierPath","referencedDeclaration":53480,"src":"7752:14:78"},"referencedDeclaration":53480,"src":"7752:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"id":54865,"nodeType":"ArrayTypeName","src":"7752:16:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53480_storage_$dyn_storage_ptr","typeString":"struct IRouter.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":54869,"mutability":"mutable","name":"signatures","nameLocation":"7817:10:78","nodeType":"VariableDeclaration","scope":54975,"src":"7800:27:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":54867,"name":"bytes","nodeType":"ElementaryTypeName","src":"7800:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":54868,"nodeType":"ArrayTypeName","src":"7800:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"7751:77:78"},"returnParameters":{"id":54871,"nodeType":"ParameterList","parameters":[],"src":"7838:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55031,"nodeType":"FunctionDefinition","src":"8854:571:78","nodes":[],"body":{"id":55030,"nodeType":"Block","src":"8964:461:78","nodes":[],"statements":[{"assignments":[54986],"declarations":[{"constant":false,"id":54986,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"8987:22:78","nodeType":"VariableDeclaration","scope":55030,"src":"8974:35:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":54985,"name":"bytes","nodeType":"ElementaryTypeName","src":"8974:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":54987,"nodeType":"VariableDeclarationStatement","src":"8974:35:78"},{"body":{"id":55021,"nodeType":"Block","src":"9079:263:78","statements":[{"assignments":[55001],"declarations":[{"constant":false,"id":55001,"mutability":"mutable","name":"blockCommitment","nameLocation":"9118:15:78","nodeType":"VariableDeclaration","scope":55021,"src":"9093:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55000,"nodeType":"UserDefinedTypeName","pathNode":{"id":54999,"name":"BlockCommitment","nameLocations":["9093:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53491,"src":"9093:15:78"},"referencedDeclaration":53491,"src":"9093:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"id":55005,"initialValue":{"baseExpression":{"id":55002,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54979,"src":"9136:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53491_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55004,"indexExpression":{"id":55003,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54989,"src":"9158:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9136:24:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9093:67:78"},{"assignments":[55007],"declarations":[{"constant":false,"id":55007,"mutability":"mutable","name":"blockCommitmentHash","nameLocation":"9183:19:78","nodeType":"VariableDeclaration","scope":55021,"src":"9175:27:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55006,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9175:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55011,"initialValue":{"arguments":[{"id":55009,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55001,"src":"9218:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}],"id":55008,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55216,"src":"9205:12:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$53491_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.BlockCommitment calldata) returns (bytes32)"}},"id":55010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9205:29:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9175:59:78"},{"expression":{"id":55019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55012,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54986,"src":"9249:22:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55016,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54986,"src":"9287:22:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55017,"name":"blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55007,"src":"9311:19:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55014,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9274:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55013,"name":"bytes","nodeType":"ElementaryTypeName","src":"9274:5:78","typeDescriptions":{}}},"id":55015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9280:6:78","memberName":"concat","nodeType":"MemberAccess","src":"9274:12:78","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9274:57:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9249:82:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55020,"nodeType":"ExpressionStatement","src":"9249:82:78"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54992,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54989,"src":"9040:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54993,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54979,"src":"9044:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53491_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":54994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9066:6:78","memberName":"length","nodeType":"MemberAccess","src":"9044:28:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9040:32:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55022,"initializationExpression":{"assignments":[54989],"declarations":[{"constant":false,"id":54989,"mutability":"mutable","name":"i","nameLocation":"9033:1:78","nodeType":"VariableDeclaration","scope":55022,"src":"9025:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54988,"name":"uint256","nodeType":"ElementaryTypeName","src":"9025:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54991,"initialValue":{"hexValue":"30","id":54990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9037:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9025:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9074:3:78","subExpression":{"id":54996,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54989,"src":"9074:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54998,"nodeType":"ExpressionStatement","src":"9074:3:78"},"nodeType":"ForStatement","src":"9020:322:78"},{"expression":{"arguments":[{"arguments":[{"id":55025,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54986,"src":"9382:22:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55024,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9372:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9372:33:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55027,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54982,"src":"9407:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55023,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55120,"src":"9352:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:66:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55029,"nodeType":"ExpressionStatement","src":"9352:66:78"}]},"baseFunctions":[53737],"functionSelector":"fa97ed6d","implemented":true,"kind":"function","modifiers":[],"name":"commitBlocks","nameLocation":"8863:12:78","parameters":{"id":54983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54979,"mutability":"mutable","name":"blockCommitmentsArray","nameLocation":"8903:21:78","nodeType":"VariableDeclaration","scope":55031,"src":"8876:48:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53491_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment[]"},"typeName":{"baseType":{"id":54977,"nodeType":"UserDefinedTypeName","pathNode":{"id":54976,"name":"BlockCommitment","nameLocations":["8876:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53491,"src":"8876:15:78"},"referencedDeclaration":53491,"src":"8876:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"id":54978,"nodeType":"ArrayTypeName","src":"8876:17:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53491_storage_$dyn_storage_ptr","typeString":"struct IRouter.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":54982,"mutability":"mutable","name":"signatures","nameLocation":"8943:10:78","nodeType":"VariableDeclaration","scope":55031,"src":"8926:27:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":54980,"name":"bytes","nodeType":"ElementaryTypeName","src":"8926:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":54981,"nodeType":"ArrayTypeName","src":"8926:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8875:79:78"},"returnParameters":{"id":54984,"nodeType":"ParameterList","parameters":[],"src":"8964:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55120,"nodeType":"FunctionDefinition","src":"9467:844:78","nodes":[],"body":{"id":55119,"nodeType":"Block","src":"9556:755:78","nodes":[],"statements":[{"assignments":[55041],"declarations":[{"constant":false,"id":55041,"mutability":"mutable","name":"router","nameLocation":"9582:6:78","nodeType":"VariableDeclaration","scope":55119,"src":"9566:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55040,"nodeType":"UserDefinedTypeName","pathNode":{"id":55039,"name":"Storage","nameLocations":["9566:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"9566:7:78"},"referencedDeclaration":53471,"src":"9566:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55044,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55042,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"9591:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9591:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"9566:38:78"},{"assignments":[55046],"declarations":[{"constant":false,"id":55046,"mutability":"mutable","name":"threshold","nameLocation":"9623:9:78","nodeType":"VariableDeclaration","scope":55119,"src":"9615:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55045,"name":"uint256","nodeType":"ElementaryTypeName","src":"9615:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55049,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55047,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54547,"src":"9635:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9635:21:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9615:41:78"},{"assignments":[55051],"declarations":[{"constant":false,"id":55051,"mutability":"mutable","name":"messageHash","nameLocation":"9675:11:78","nodeType":"VariableDeclaration","scope":55119,"src":"9667:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55050,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9667:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55062,"initialValue":{"arguments":[{"arguments":[{"id":55059,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55033,"src":"9752:8:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55057,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"9735:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9739:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"9735:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9735:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":55054,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9697:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$55702","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$55702","typeString":"contract Router"}],"id":55053,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9689:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55052,"name":"address","nodeType":"ElementaryTypeName","src":"9689:7:78","typeDescriptions":{}}},"id":55055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9689:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9703:31:78","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":43448,"src":"9689:45:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes memory) pure returns (bytes32)"}},"id":55061,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9689:73:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9667:95:78"},{"assignments":[55064],"declarations":[{"constant":false,"id":55064,"mutability":"mutable","name":"validSignatures","nameLocation":"9780:15:78","nodeType":"VariableDeclaration","scope":55119,"src":"9772:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55063,"name":"uint256","nodeType":"ElementaryTypeName","src":"9772:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55066,"initialValue":{"hexValue":"30","id":55065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9798:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9772:27:78"},{"body":{"id":55110,"nodeType":"Block","src":"9858:368:78","statements":[{"assignments":[55079],"declarations":[{"constant":false,"id":55079,"mutability":"mutable","name":"signature","nameLocation":"9887:9:78","nodeType":"VariableDeclaration","scope":55110,"src":"9872:24:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55078,"name":"bytes","nodeType":"ElementaryTypeName","src":"9872:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55083,"initialValue":{"baseExpression":{"id":55080,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55036,"src":"9899:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55082,"indexExpression":{"id":55081,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55068,"src":"9910:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9899:13:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"9872:40:78"},{"assignments":[55085],"declarations":[{"constant":false,"id":55085,"mutability":"mutable","name":"validator","nameLocation":"9935:9:78","nodeType":"VariableDeclaration","scope":55110,"src":"9927:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55084,"name":"address","nodeType":"ElementaryTypeName","src":"9927:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55090,"initialValue":{"arguments":[{"id":55088,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55079,"src":"9967:9:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":55086,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55051,"src":"9947:11:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9959:7:78","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":43143,"src":"9947:19:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":55089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9947:30:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9927:50:78"},{"condition":{"baseExpression":{"expression":{"id":55091,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55041,"src":"9996:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10003:10:78","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53454,"src":"9996:17:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55094,"indexExpression":{"id":55093,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55085,"src":"10014:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9996:28:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55108,"nodeType":"Block","src":"10146:70:78","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":55104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10172:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"696e636f7272656374207369676e6174757265","id":55105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10179:21:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""},"value":"incorrect signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""}],"id":55103,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10164:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10164:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55107,"nodeType":"ExpressionStatement","src":"10164:37:78"}]},"id":55109,"nodeType":"IfStatement","src":"9992:224:78","trueBody":{"id":55102,"nodeType":"Block","src":"10026:114:78","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55098,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10048:17:78","subExpression":{"id":55095,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55064,"src":"10050:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55097,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55046,"src":"10069:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10048:30:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55101,"nodeType":"IfStatement","src":"10044:82:78","trueBody":{"id":55100,"nodeType":"Block","src":"10080:46:78","statements":[{"id":55099,"nodeType":"Break","src":"10102:5:78"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55071,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55068,"src":"9830:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55072,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55036,"src":"9834:10:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9845:6:78","memberName":"length","nodeType":"MemberAccess","src":"9834:17:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9830:21:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55111,"initializationExpression":{"assignments":[55068],"declarations":[{"constant":false,"id":55068,"mutability":"mutable","name":"i","nameLocation":"9823:1:78","nodeType":"VariableDeclaration","scope":55111,"src":"9815:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55067,"name":"uint256","nodeType":"ElementaryTypeName","src":"9815:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55070,"initialValue":{"hexValue":"30","id":55069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9827:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9815:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9853:3:78","subExpression":{"id":55075,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55068,"src":"9853:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55077,"nodeType":"ExpressionStatement","src":"9853:3:78"},"nodeType":"ForStatement","src":"9810:416:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55113,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55064,"src":"10244:15:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":55114,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55046,"src":"10263:9:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10244:28:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f7420656e6f7567682076616c6964207369676e617475726573","id":55116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10274:29:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""},"value":"not enough valid signatures"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""}],"id":55112,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10236:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10236:68:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55118,"nodeType":"ExpressionStatement","src":"10236:68:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateSignatures","nameLocation":"9476:19:78","parameters":{"id":55037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55033,"mutability":"mutable","name":"dataHash","nameLocation":"9504:8:78","nodeType":"VariableDeclaration","scope":55120,"src":"9496:16:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55032,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9496:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55036,"mutability":"mutable","name":"signatures","nameLocation":"9531:10:78","nodeType":"VariableDeclaration","scope":55120,"src":"9514:27:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55034,"name":"bytes","nodeType":"ElementaryTypeName","src":"9514:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55035,"nodeType":"ArrayTypeName","src":"9514:7:78","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9495:47:78"},"returnParameters":{"id":55038,"nodeType":"ParameterList","parameters":[],"src":"9556:0:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55216,"nodeType":"FunctionDefinition","src":"10317:1114:78","nodes":[],"body":{"id":55215,"nodeType":"Block","src":"10407:1024:78","nodes":[],"statements":[{"assignments":[55130],"declarations":[{"constant":false,"id":55130,"mutability":"mutable","name":"router","nameLocation":"10433:6:78","nodeType":"VariableDeclaration","scope":55215,"src":"10417:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55129,"nodeType":"UserDefinedTypeName","pathNode":{"id":55128,"name":"Storage","nameLocations":["10417:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"10417:7:78"},"referencedDeclaration":53471,"src":"10417:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55133,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55131,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"10442:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10442:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10417:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55135,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55130,"src":"10487:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55136,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10494:23:78","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53444,"src":"10487:30:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55137,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"10521:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10537:18:78","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53484,"src":"10521:34:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"10487:68:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d69746d656e742068617368","id":55140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10557:34:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""},"value":"invalid previous commitment hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""}],"id":55134,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10466:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10466:135:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55142,"nodeType":"ExpressionStatement","src":"10466:135:78"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":55145,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"10638:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55146,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10654:13:78","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53486,"src":"10638:29:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55144,"name":"_isPredecessorHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55260,"src":"10619:18:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":55147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10619:49:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f756e64","id":55148,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10670:37:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""},"value":"allowed predecessor block not found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""}],"id":55143,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10611:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10611:97:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55150,"nodeType":"ExpressionStatement","src":"10611:97:78"},{"assignments":[55152],"declarations":[{"constant":false,"id":55152,"mutability":"mutable","name":"transitionsHashes","nameLocation":"10732:17:78","nodeType":"VariableDeclaration","scope":55215,"src":"10719:30:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55151,"name":"bytes","nodeType":"ElementaryTypeName","src":"10719:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55153,"nodeType":"VariableDeclarationStatement","src":"10719:30:78"},{"body":{"id":55189,"nodeType":"Block","src":"10825:255:78","statements":[{"assignments":[55168],"declarations":[{"constant":false,"id":55168,"mutability":"mutable","name":"stateTransition","nameLocation":"10864:15:78","nodeType":"VariableDeclaration","scope":55189,"src":"10839:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55167,"nodeType":"UserDefinedTypeName","pathNode":{"id":55166,"name":"StateTransition","nameLocations":["10839:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53506,"src":"10839:15:78"},"referencedDeclaration":53506,"src":"10839:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"id":55173,"initialValue":{"baseExpression":{"expression":{"id":55169,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"10882:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10898:11:78","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53490,"src":"10882:27:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53506_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55172,"indexExpression":{"id":55171,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55155,"src":"10910:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10882:30:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"10839:73:78"},{"assignments":[55175],"declarations":[{"constant":false,"id":55175,"mutability":"mutable","name":"transitionHash","nameLocation":"10935:14:78","nodeType":"VariableDeclaration","scope":55189,"src":"10927:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55174,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10927:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55179,"initialValue":{"arguments":[{"id":55177,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"10971:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}],"id":55176,"name":"_doStateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55460,"src":"10952:18:78","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StateTransition_$53506_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.StateTransition calldata) returns (bytes32)"}},"id":55178,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10952:35:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10927:60:78"},{"expression":{"id":55187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55180,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55152,"src":"11002:17:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55184,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55152,"src":"11035:17:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55185,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55175,"src":"11054:14:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11022:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55181,"name":"bytes","nodeType":"ElementaryTypeName","src":"11022:5:78","typeDescriptions":{}}},"id":55183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11028:6:78","memberName":"concat","nodeType":"MemberAccess","src":"11022:12:78","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11022:47:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11002:67:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55188,"nodeType":"ExpressionStatement","src":"11002:67:78"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55158,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55155,"src":"10780:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55159,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"10784:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10800:11:78","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53490,"src":"10784:27:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53506_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10812:6:78","memberName":"length","nodeType":"MemberAccess","src":"10784:34:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10780:38:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55190,"initializationExpression":{"assignments":[55155],"declarations":[{"constant":false,"id":55155,"mutability":"mutable","name":"i","nameLocation":"10773:1:78","nodeType":"VariableDeclaration","scope":55190,"src":"10765:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55154,"name":"uint256","nodeType":"ElementaryTypeName","src":"10765:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55157,"initialValue":{"hexValue":"30","id":55156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10777:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10765:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10820:3:78","subExpression":{"id":55163,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55155,"src":"10820:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55165,"nodeType":"ExpressionStatement","src":"10820:3:78"},"nodeType":"ForStatement","src":"10760:320:78"},{"expression":{"id":55196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55191,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55130,"src":"11090:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55193,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11097:23:78","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53444,"src":"11090:30:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55194,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"11123:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11139:9:78","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53482,"src":"11123:25:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11090:58:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55197,"nodeType":"ExpressionStatement","src":"11090:58:78"},{"eventCall":{"arguments":[{"expression":{"id":55199,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"11178:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11194:9:78","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53482,"src":"11178:25:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55198,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53535,"src":"11163:14:78","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":55201,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11163:41:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55202,"nodeType":"EmitStatement","src":"11158:46:78"},{"expression":{"arguments":[{"expression":{"id":55204,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"11256:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11272:9:78","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53482,"src":"11256:25:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55206,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"11295:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11311:18:78","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53484,"src":"11295:34:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55208,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55123,"src":"11343:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11359:13:78","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53486,"src":"11343:29:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55211,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55152,"src":"11396:17:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55210,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"11386:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11386:28:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55203,"name":"_blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55484,"src":"11222:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":55213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11222:202:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55127,"id":55214,"nodeType":"Return","src":"11215:209:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"10326:12:78","parameters":{"id":55124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55123,"mutability":"mutable","name":"blockCommitment","nameLocation":"10364:15:78","nodeType":"VariableDeclaration","scope":55216,"src":"10339:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55122,"nodeType":"UserDefinedTypeName","pathNode":{"id":55121,"name":"BlockCommitment","nameLocations":["10339:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53491,"src":"10339:15:78"},"referencedDeclaration":53491,"src":"10339:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53491_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"src":"10338:42:78"},"returnParameters":{"id":55127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55216,"src":"10398:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55125,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10398:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"10397:9:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55260,"nodeType":"FunctionDefinition","src":"11437:338:78","nodes":[],"body":{"id":55259,"nodeType":"Block","src":"11507:268:78","nodes":[],"statements":[{"body":{"id":55255,"nodeType":"Block","src":"11564:183:78","statements":[{"assignments":[55237],"declarations":[{"constant":false,"id":55237,"mutability":"mutable","name":"ret","nameLocation":"11586:3:78","nodeType":"VariableDeclaration","scope":55255,"src":"11578:11:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55236,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11578:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55241,"initialValue":{"arguments":[{"id":55239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55224,"src":"11602:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55238,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"11592:9:78","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11592:12:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11578:26:78"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55242,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55237,"src":"11622:3:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55243,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55218,"src":"11629:4:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11622:11:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55248,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55237,"src":"11689:3:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11696:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11689:8:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55253,"nodeType":"IfStatement","src":"11685:52:78","trueBody":{"id":55252,"nodeType":"Block","src":"11699:38:78","statements":[{"id":55251,"nodeType":"Break","src":"11717:5:78"}]}},"id":55254,"nodeType":"IfStatement","src":"11618:119:78","trueBody":{"id":55247,"nodeType":"Block","src":"11635:44:78","statements":[{"expression":{"hexValue":"74727565","id":55245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11660:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":55222,"id":55246,"nodeType":"Return","src":"11653:11:78"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55230,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55224,"src":"11552:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":55231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11556:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11552:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55256,"initializationExpression":{"assignments":[55224],"declarations":[{"constant":false,"id":55224,"mutability":"mutable","name":"i","nameLocation":"11530:1:78","nodeType":"VariableDeclaration","scope":55256,"src":"11522:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55223,"name":"uint256","nodeType":"ElementaryTypeName","src":"11522:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55229,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55225,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"11534:5:78","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":55226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11540:6:78","memberName":"number","nodeType":"MemberAccess","src":"11534:12:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":55227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11549:1:78","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11534:16:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11522:28:78"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":55234,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"11559:3:78","subExpression":{"id":55233,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55224,"src":"11559:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55235,"nodeType":"ExpressionStatement","src":"11559:3:78"},"nodeType":"ForStatement","src":"11517:230:78"},{"expression":{"hexValue":"66616c7365","id":55257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"11763:5:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":55222,"id":55258,"nodeType":"Return","src":"11756:12:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_isPredecessorHash","nameLocation":"11446:18:78","parameters":{"id":55219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55218,"mutability":"mutable","name":"hash","nameLocation":"11473:4:78","nodeType":"VariableDeclaration","scope":55260,"src":"11465:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11465:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11464:14:78"},"returnParameters":{"id":55222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55260,"src":"11501:4:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55220,"name":"bool","nodeType":"ElementaryTypeName","src":"11501:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"11500:6:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55460,"nodeType":"FunctionDefinition","src":"11781:2170:78","nodes":[],"body":{"id":55459,"nodeType":"Block","src":"11877:2074:78","nodes":[],"statements":[{"assignments":[55270],"declarations":[{"constant":false,"id":55270,"mutability":"mutable","name":"router","nameLocation":"11903:6:78","nodeType":"VariableDeclaration","scope":55459,"src":"11887:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55269,"nodeType":"UserDefinedTypeName","pathNode":{"id":55268,"name":"Storage","nameLocations":["11887:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"11887:7:78"},"referencedDeclaration":53471,"src":"11887:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55273,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55271,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"11912:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11912:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11887:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55275,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55270,"src":"11944:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11951:8:78","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53468,"src":"11944:15:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55279,"indexExpression":{"expression":{"id":55277,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"11960:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11976:7:78","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53493,"src":"11960:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11944:40:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11988:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11944:45:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":55282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11991:49:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":55274,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11936:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11936:105:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55284,"nodeType":"ExpressionStatement","src":"11936:105:78"},{"assignments":[55287],"declarations":[{"constant":false,"id":55287,"mutability":"mutable","name":"wrappedVaraActor","nameLocation":"12065:16:78","nodeType":"VariableDeclaration","scope":55459,"src":"12052:29:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"},"typeName":{"id":55286,"nodeType":"UserDefinedTypeName","pathNode":{"id":55285,"name":"IWrappedVara","nameLocations":["12052:12:78"],"nodeType":"IdentifierPath","referencedDeclaration":53749,"src":"12052:12:78"},"referencedDeclaration":53749,"src":"12052:12:78","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":55292,"initialValue":{"arguments":[{"expression":{"id":55289,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55270,"src":"12097:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55290,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12104:11:78","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53442,"src":"12097:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55288,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53749,"src":"12084:12:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53749_$","typeString":"type(contract IWrappedVara)"}},"id":55291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12084:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"12052:64:78"},{"expression":{"arguments":[{"expression":{"id":55296,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12152:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12168:7:78","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53493,"src":"12152:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55298,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12177:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12193:14:78","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53497,"src":"12177:30:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55293,"name":"wrappedVaraActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55287,"src":"12126:16:78","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53749","typeString":"contract IWrappedVara"}},"id":55295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12143:8:78","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"12126:25:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":55300,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12126:82:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55301,"nodeType":"ExpressionStatement","src":"12126:82:78"},{"assignments":[55304],"declarations":[{"constant":false,"id":55304,"mutability":"mutable","name":"mirrorActor","nameLocation":"12227:11:78","nodeType":"VariableDeclaration","scope":55459,"src":"12219:19:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"},"typeName":{"id":55303,"nodeType":"UserDefinedTypeName","pathNode":{"id":55302,"name":"IMirror","nameLocations":["12219:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53423,"src":"12219:7:78"},"referencedDeclaration":53423,"src":"12219:7:78","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55309,"initialValue":{"arguments":[{"expression":{"id":55306,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12249:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12265:7:78","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53493,"src":"12249:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55305,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53423,"src":"12241:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53423_$","typeString":"type(contract IMirror)"}},"id":55308,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12241:32:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"12219:54:78"},{"assignments":[55311],"declarations":[{"constant":false,"id":55311,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"12297:16:78","nodeType":"VariableDeclaration","scope":55459,"src":"12284:29:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55310,"name":"bytes","nodeType":"ElementaryTypeName","src":"12284:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55312,"nodeType":"VariableDeclarationStatement","src":"12284:29:78"},{"body":{"id":55361,"nodeType":"Block","src":"12389:367:78","statements":[{"assignments":[55327],"declarations":[{"constant":false,"id":55327,"mutability":"mutable","name":"valueClaim","nameLocation":"12423:10:78","nodeType":"VariableDeclaration","scope":55361,"src":"12403:30:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim"},"typeName":{"id":55326,"nodeType":"UserDefinedTypeName","pathNode":{"id":55325,"name":"ValueClaim","nameLocations":["12403:10:78"],"nodeType":"IdentifierPath","referencedDeclaration":53513,"src":"12403:10:78"},"referencedDeclaration":53513,"src":"12403:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_storage_ptr","typeString":"struct IRouter.ValueClaim"}},"visibility":"internal"}],"id":55332,"initialValue":{"baseExpression":{"expression":{"id":55328,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12436:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12452:11:78","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53501,"src":"12436:27:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53513_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55331,"indexExpression":{"id":55330,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"12464:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12436:30:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"12403:63:78"},{"expression":{"id":55348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55333,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55311,"src":"12481:16:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55337,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55311,"src":"12530:16:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":55340,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12565:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12576:9:78","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53508,"src":"12565:20:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55342,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12587:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12598:11:78","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53510,"src":"12587:22:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55344,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12611:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12622:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53512,"src":"12611:16:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55338,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"12548:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12552:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"12548:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55346,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12548:80:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":55335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12500:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55334,"name":"bytes","nodeType":"ElementaryTypeName","src":"12500:5:78","typeDescriptions":{}}},"id":55336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12506:6:78","memberName":"concat","nodeType":"MemberAccess","src":"12500:12:78","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12500:142:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12481:161:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55349,"nodeType":"ExpressionStatement","src":"12481:161:78"},{"expression":{"arguments":[{"expression":{"id":55353,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12682:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12693:9:78","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53508,"src":"12682:20:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55355,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12704:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12715:11:78","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53510,"src":"12704:22:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55357,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"12728:10:78","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53513_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12739:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53512,"src":"12728:16:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55350,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"12657:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"id":55352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12669:12:78","memberName":"valueClaimed","nodeType":"MemberAccess","referencedDeclaration":53406,"src":"12657:24:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128) external"}},"id":55359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12657:88:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55360,"nodeType":"ExpressionStatement","src":"12657:88:78"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55317,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"12344:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55318,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12348:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12364:11:78","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53501,"src":"12348:27:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53513_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12376:6:78","memberName":"length","nodeType":"MemberAccess","src":"12348:34:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12344:38:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55362,"initializationExpression":{"assignments":[55314],"declarations":[{"constant":false,"id":55314,"mutability":"mutable","name":"i","nameLocation":"12337:1:78","nodeType":"VariableDeclaration","scope":55362,"src":"12329:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55313,"name":"uint256","nodeType":"ElementaryTypeName","src":"12329:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55316,"initialValue":{"hexValue":"30","id":55315,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12341:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12329:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12384:3:78","subExpression":{"id":55322,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"12384:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55324,"nodeType":"ExpressionStatement","src":"12384:3:78"},"nodeType":"ForStatement","src":"12324:432:78"},{"assignments":[55364],"declarations":[{"constant":false,"id":55364,"mutability":"mutable","name":"messagesHashes","nameLocation":"12779:14:78","nodeType":"VariableDeclaration","scope":55459,"src":"12766:27:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55363,"name":"bytes","nodeType":"ElementaryTypeName","src":"12766:5:78","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55365,"nodeType":"VariableDeclarationStatement","src":"12766:27:78"},{"body":{"id":55435,"nodeType":"Block","src":"12866:764:78","statements":[{"assignments":[55380],"declarations":[{"constant":false,"id":55380,"mutability":"mutable","name":"outgoingMessage","nameLocation":"12905:15:78","nodeType":"VariableDeclaration","scope":55435,"src":"12880:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":55379,"nodeType":"UserDefinedTypeName","pathNode":{"id":55378,"name":"OutgoingMessage","nameLocations":["12880:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53525,"src":"12880:15:78"},"referencedDeclaration":53525,"src":"12880:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"id":55385,"initialValue":{"baseExpression":{"expression":{"id":55381,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12923:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12939:8:78","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53505,"src":"12923:24:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53525_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55384,"indexExpression":{"id":55383,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55367,"src":"12948:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12923:27:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"nodeType":"VariableDeclarationStatement","src":"12880:70:78"},{"expression":{"id":55395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55386,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55364,"src":"12965:14:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55390,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55364,"src":"12995:14:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":55392,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13032:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}],"id":55391,"name":"_outgoingMessageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55540,"src":"13011:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OutgoingMessage_$53525_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.OutgoingMessage calldata) pure returns (bytes32)"}},"id":55393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13011:37:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55388,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12982:5:78","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55387,"name":"bytes","nodeType":"ElementaryTypeName","src":"12982:5:78","typeDescriptions":{}}},"id":55389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12988:6:78","memberName":"concat","nodeType":"MemberAccess","src":"12982:12:78","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12982:67:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"12965:84:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55396,"nodeType":"ExpressionStatement","src":"12965:84:78"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":55397,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13068:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13084:12:78","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53524,"src":"13068:28:78","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53530_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13097:2:78","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53527,"src":"13068:31:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13103:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13068:36:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55433,"nodeType":"Block","src":"13303:317:78","statements":[{"expression":{"arguments":[{"expression":{"id":55419,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13364:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13380:11:78","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53517,"src":"13364:27:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55421,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13413:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13429:7:78","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53519,"src":"13413:23:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55423,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13458:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13474:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53521,"src":"13458:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":55425,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13501:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13517:12:78","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53524,"src":"13501:28:78","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53530_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13530:2:78","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53527,"src":"13501:31:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":55428,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13554:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13570:12:78","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53524,"src":"13554:28:78","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53530_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13583:4:78","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53529,"src":"13554:33:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55416,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"13321:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"id":55418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13333:9:78","memberName":"replySent","nodeType":"MemberAccess","referencedDeclaration":53397,"src":"13321:21:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (address,bytes memory,uint128,bytes32,bytes4) external"}},"id":55431,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13321:284:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55432,"nodeType":"ExpressionStatement","src":"13321:284:78"}]},"id":55434,"nodeType":"IfStatement","src":"13064:556:78","trueBody":{"id":55415,"nodeType":"Block","src":"13106:191:78","statements":[{"expression":{"arguments":[{"expression":{"id":55405,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13169:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13185:2:78","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53515,"src":"13169:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55407,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13189:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13205:11:78","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53517,"src":"13189:27:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55409,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13218:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13234:7:78","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53519,"src":"13218:23:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55411,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55380,"src":"13243:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13259:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53521,"src":"13243:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55402,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"13124:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"id":55404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13136:11:78","memberName":"messageSent","nodeType":"MemberAccess","referencedDeclaration":53384,"src":"13124:23:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128) external"}},"id":55413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13124:158:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55414,"nodeType":"ExpressionStatement","src":"13124:158:78"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55370,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55367,"src":"12824:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55371,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"12828:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12844:8:78","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53505,"src":"12828:24:78","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53525_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12853:6:78","memberName":"length","nodeType":"MemberAccess","src":"12828:31:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12824:35:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55436,"initializationExpression":{"assignments":[55367],"declarations":[{"constant":false,"id":55367,"mutability":"mutable","name":"i","nameLocation":"12817:1:78","nodeType":"VariableDeclaration","scope":55436,"src":"12809:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55366,"name":"uint256","nodeType":"ElementaryTypeName","src":"12809:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55369,"initialValue":{"hexValue":"30","id":55368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12821:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12809:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12861:3:78","subExpression":{"id":55375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55367,"src":"12861:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55377,"nodeType":"ExpressionStatement","src":"12861:3:78"},"nodeType":"ForStatement","src":"12804:826:78"},{"expression":{"arguments":[{"expression":{"id":55440,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"13664:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13680:12:78","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53495,"src":"13664:28:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55437,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55304,"src":"13640:11:78","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53423","typeString":"contract IMirror"}},"id":55439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13652:11:78","memberName":"updateState","nodeType":"MemberAccess","referencedDeclaration":53373,"src":"13640:23:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":55442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13640:53:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55443,"nodeType":"ExpressionStatement","src":"13640:53:78"},{"expression":{"arguments":[{"expression":{"id":55445,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"13745:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13761:7:78","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53493,"src":"13745:23:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55447,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"13782:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13798:12:78","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53495,"src":"13782:28:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55449,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55263,"src":"13824:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13840:14:78","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53497,"src":"13824:30:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":55452,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55311,"src":"13878:16:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55451,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13868:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13868:27:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55455,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55364,"src":"13919:14:78","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55454,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"13909:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13909:25:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55444,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55511,"src":"13711:20:78","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":55457,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13711:233:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55267,"id":55458,"nodeType":"Return","src":"13704:240:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_doStateTransition","nameLocation":"11790:18:78","parameters":{"id":55264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55263,"mutability":"mutable","name":"stateTransition","nameLocation":"11834:15:78","nodeType":"VariableDeclaration","scope":55460,"src":"11809:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55262,"nodeType":"UserDefinedTypeName","pathNode":{"id":55261,"name":"StateTransition","nameLocations":["11809:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53506,"src":"11809:15:78"},"referencedDeclaration":53506,"src":"11809:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53506_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"src":"11808:42:78"},"returnParameters":{"id":55267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55266,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55460,"src":"11868:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55265,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11868:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11867:9:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55484,"nodeType":"FunctionDefinition","src":"13957:320:78","nodes":[],"body":{"id":55483,"nodeType":"Block","src":"14157:120:78","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":55476,"name":"blockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55462,"src":"14201:9:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55477,"name":"prevCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55464,"src":"14212:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55478,"name":"predBlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55466,"src":"14232:13:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55479,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55468,"src":"14247:21:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55474,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14184:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14188:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"14184:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14184:85:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55473,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14174:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14174:96:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55472,"id":55482,"nodeType":"Return","src":"14167:103:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_blockCommitmentHash","nameLocation":"13966:20:78","parameters":{"id":55469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55462,"mutability":"mutable","name":"blockHash","nameLocation":"14004:9:78","nodeType":"VariableDeclaration","scope":55484,"src":"13996:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55461,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13996:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55464,"mutability":"mutable","name":"prevCommitmentHash","nameLocation":"14031:18:78","nodeType":"VariableDeclaration","scope":55484,"src":"14023:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55463,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14023:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55466,"mutability":"mutable","name":"predBlockHash","nameLocation":"14067:13:78","nodeType":"VariableDeclaration","scope":55484,"src":"14059:21:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55465,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14059:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55468,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"14098:21:78","nodeType":"VariableDeclaration","scope":55484,"src":"14090:29:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55467,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14090:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13986:139:78"},"returnParameters":{"id":55472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55471,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55484,"src":"14148:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55470,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14148:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14147:9:78"},"scope":55702,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55511,"nodeType":"FunctionDefinition","src":"14283:350:78","nodes":[],"body":{"id":55510,"nodeType":"Block","src":"14506:127:78","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":55502,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55486,"src":"14550:7:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55503,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55488,"src":"14559:12:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55504,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55490,"src":"14573:14:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55505,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55492,"src":"14589:15:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55506,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55494,"src":"14606:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55500,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14533:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14537:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"14533:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14533:92:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55499,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14523:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14523:103:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55498,"id":55509,"nodeType":"Return","src":"14516:110:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_stateTransitionHash","nameLocation":"14292:20:78","parameters":{"id":55495,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55486,"mutability":"mutable","name":"actorId","nameLocation":"14330:7:78","nodeType":"VariableDeclaration","scope":55511,"src":"14322:15:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55485,"name":"address","nodeType":"ElementaryTypeName","src":"14322:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55488,"mutability":"mutable","name":"newStateHash","nameLocation":"14355:12:78","nodeType":"VariableDeclaration","scope":55511,"src":"14347:20:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55487,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14347:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55490,"mutability":"mutable","name":"valueToReceive","nameLocation":"14385:14:78","nodeType":"VariableDeclaration","scope":55511,"src":"14377:22:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55489,"name":"uint128","nodeType":"ElementaryTypeName","src":"14377:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":55492,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"14417:15:78","nodeType":"VariableDeclaration","scope":55511,"src":"14409:23:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14409:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55494,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"14450:18:78","nodeType":"VariableDeclaration","scope":55511,"src":"14442:26:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14442:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14312:162:78"},"returnParameters":{"id":55498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55497,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55511,"src":"14497:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14497:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14496:9:78"},"scope":55702,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55540,"nodeType":"FunctionDefinition","src":"14639:451:78","nodes":[],"body":{"id":55539,"nodeType":"Block","src":"14742:348:78","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":55522,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"14816:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14832:2:78","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53515,"src":"14816:18:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55524,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"14852:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14868:11:78","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53517,"src":"14852:27:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55526,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"14897:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14913:7:78","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53519,"src":"14897:23:78","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55528,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"14938:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14954:5:78","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53521,"src":"14938:21:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":55530,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"14977:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14993:12:78","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53524,"src":"14977:28:78","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53530_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15006:2:78","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53527,"src":"14977:31:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":55533,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55514,"src":"15026:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15042:12:78","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53524,"src":"15026:28:78","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53530_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15055:4:78","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53529,"src":"15026:33:78","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55520,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14782:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14786:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"14782:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14782:291:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55519,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14759:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14759:324:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55518,"id":55538,"nodeType":"Return","src":"14752:331:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_outgoingMessageHash","nameLocation":"14648:20:78","parameters":{"id":55515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55514,"mutability":"mutable","name":"outgoingMessage","nameLocation":"14694:15:78","nodeType":"VariableDeclaration","scope":55540,"src":"14669:40:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":55513,"nodeType":"UserDefinedTypeName","pathNode":{"id":55512,"name":"OutgoingMessage","nameLocations":["14669:15:78"],"nodeType":"IdentifierPath","referencedDeclaration":53525,"src":"14669:15:78"},"referencedDeclaration":53525,"src":"14669:15:78","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53525_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"src":"14668:42:78"},"returnParameters":{"id":55518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55517,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55540,"src":"14733:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55516,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14733:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14732:9:78"},"scope":55702,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55559,"nodeType":"FunctionDefinition","src":"15096:192:78","nodes":[],"body":{"id":55558,"nodeType":"Block","src":"15196:92:78","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":55551,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55543,"src":"15240:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15255:2:78","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53477,"src":"15240:17:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55553,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55543,"src":"15259:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15274:5:78","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53479,"src":"15259:20:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":55549,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15223:3:78","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15227:12:78","memberName":"encodePacked","nodeType":"MemberAccess","src":"15223:16:78","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15223:57:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55548,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15213:9:78","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15213:68:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55547,"id":55557,"nodeType":"Return","src":"15206:75:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_codeCommitmentHash","nameLocation":"15105:19:78","parameters":{"id":55544,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55543,"mutability":"mutable","name":"codeCommitment","nameLocation":"15149:14:78","nodeType":"VariableDeclaration","scope":55559,"src":"15125:38:78","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":55542,"nodeType":"UserDefinedTypeName","pathNode":{"id":55541,"name":"CodeCommitment","nameLocations":["15125:14:78"],"nodeType":"IdentifierPath","referencedDeclaration":53480,"src":"15125:14:78"},"referencedDeclaration":53480,"src":"15125:14:78","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53480_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"src":"15124:40:78"},"returnParameters":{"id":55547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55546,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55559,"src":"15187:7:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55545,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15187:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15186:9:78"},"scope":55702,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55592,"nodeType":"FunctionDefinition","src":"15294:257:78","nodes":[],"body":{"id":55591,"nodeType":"Block","src":"15342:209:78","nodes":[],"statements":[{"assignments":[55566],"declarations":[{"constant":false,"id":55566,"mutability":"mutable","name":"router","nameLocation":"15368:6:78","nodeType":"VariableDeclaration","scope":55591,"src":"15352:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55565,"nodeType":"UserDefinedTypeName","pathNode":{"id":55564,"name":"Storage","nameLocations":["15352:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"15352:7:78"},"referencedDeclaration":53471,"src":"15352:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55569,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55567,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"15377:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15377:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15352:38:78"},{"assignments":[55571],"declarations":[{"constant":false,"id":55571,"mutability":"mutable","name":"success","nameLocation":"15406:7:78","nodeType":"VariableDeclaration","scope":55591,"src":"15401:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55570,"name":"bool","nodeType":"ElementaryTypeName","src":"15401:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":55585,"initialValue":{"arguments":[{"expression":{"id":55577,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"15456:2:78","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15459:6:78","memberName":"origin","nodeType":"MemberAccess","src":"15456:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55581,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15475:4:78","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$55702","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$55702","typeString":"contract Router"}],"id":55580,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15467:7:78","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55579,"name":"address","nodeType":"ElementaryTypeName","src":"15467:7:78","typeDescriptions":{}}},"id":55582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15467:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55583,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55561,"src":"15482:6:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"id":55573,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55566,"src":"15423:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15430:11:78","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53442,"src":"15423:18:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55572,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"15416:6:78","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$41906_$","typeString":"type(contract IERC20)"}},"id":55575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15416:26:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$41906","typeString":"contract IERC20"}},"id":55576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15443:12:78","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"15416:39:78","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":55584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15416:73:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15401:88:78"},{"expression":{"arguments":[{"id":55587,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55571,"src":"15508:7:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":55588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15517:26:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":55586,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"15500:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15500:44:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55590,"nodeType":"ExpressionStatement","src":"15500:44:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValue","nameLocation":"15303:14:78","parameters":{"id":55562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55561,"mutability":"mutable","name":"_value","nameLocation":"15326:6:78","nodeType":"VariableDeclaration","scope":55592,"src":"15318:14:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55560,"name":"uint128","nodeType":"ElementaryTypeName","src":"15318:7:78","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"15317:16:78"},"returnParameters":{"id":55563,"nodeType":"ParameterList","parameters":[],"src":"15342:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55633,"nodeType":"FunctionDefinition","src":"15557:317:78","nodes":[],"body":{"id":55632,"nodeType":"Block","src":"15593:281:78","nodes":[],"statements":[{"assignments":[55597],"declarations":[{"constant":false,"id":55597,"mutability":"mutable","name":"router","nameLocation":"15619:6:78","nodeType":"VariableDeclaration","scope":55632,"src":"15603:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55596,"nodeType":"UserDefinedTypeName","pathNode":{"id":55595,"name":"Storage","nameLocations":["15603:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"15603:7:78"},"referencedDeclaration":53471,"src":"15603:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55600,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55598,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"15628:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15628:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15603:38:78"},{"body":{"id":55626,"nodeType":"Block","src":"15711:118:78","statements":[{"assignments":[55614],"declarations":[{"constant":false,"id":55614,"mutability":"mutable","name":"validator","nameLocation":"15733:9:78","nodeType":"VariableDeclaration","scope":55626,"src":"15725:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55613,"name":"address","nodeType":"ElementaryTypeName","src":"15725:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55619,"initialValue":{"baseExpression":{"expression":{"id":55615,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55597,"src":"15745:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15752:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"15745:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55618,"indexExpression":{"id":55617,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55602,"src":"15767:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15745:24:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"15725:44:78"},{"expression":{"id":55624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"15783:35:78","subExpression":{"baseExpression":{"expression":{"id":55620,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55597,"src":"15790:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15797:10:78","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53454,"src":"15790:17:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55623,"indexExpression":{"id":55622,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55614,"src":"15808:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15790:28:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55625,"nodeType":"ExpressionStatement","src":"15783:35:78"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55602,"src":"15672:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55606,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55597,"src":"15676:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55607,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15683:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"15676:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15698:6:78","memberName":"length","nodeType":"MemberAccess","src":"15676:28:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15672:32:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55627,"initializationExpression":{"assignments":[55602],"declarations":[{"constant":false,"id":55602,"mutability":"mutable","name":"i","nameLocation":"15665:1:78","nodeType":"VariableDeclaration","scope":55627,"src":"15657:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55601,"name":"uint256","nodeType":"ElementaryTypeName","src":"15657:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55604,"initialValue":{"hexValue":"30","id":55603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15669:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15657:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15706:3:78","subExpression":{"id":55610,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55602,"src":"15706:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55612,"nodeType":"ExpressionStatement","src":"15706:3:78"},"nodeType":"ForStatement","src":"15652:177:78"},{"expression":{"id":55630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"15839:28:78","subExpression":{"expression":{"id":55628,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55597,"src":"15846:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55629,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"15853:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"15846:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55631,"nodeType":"ExpressionStatement","src":"15839:28:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_cleanValidators","nameLocation":"15566:16:78","parameters":{"id":55593,"nodeType":"ParameterList","parameters":[],"src":"15582:2:78"},"returnParameters":{"id":55594,"nodeType":"ParameterList","parameters":[],"src":"15593:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55688,"nodeType":"FunctionDefinition","src":"15880:442:78","nodes":[],"body":{"id":55687,"nodeType":"Block","src":"15947:375:78","nodes":[],"statements":[{"assignments":[55641],"declarations":[{"constant":false,"id":55641,"mutability":"mutable","name":"router","nameLocation":"15973:6:78","nodeType":"VariableDeclaration","scope":55687,"src":"15957:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55640,"nodeType":"UserDefinedTypeName","pathNode":{"id":55639,"name":"Storage","nameLocations":["15957:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"15957:7:78"},"referencedDeclaration":53471,"src":"15957:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55644,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55642,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55701,"src":"15982:11:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53471_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15982:13:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"15957:38:78"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":55646,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55641,"src":"16014:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16021:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"16014:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16036:6:78","memberName":"length","nodeType":"MemberAccess","src":"16014:28:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16046:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16014:33:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726576696f75732076616c696461746f727320776572656e27742072656d6f766564","id":55651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16049:37:78","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""},"value":"previous validators weren't removed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""}],"id":55645,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16006:7:78","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16006:81:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55653,"nodeType":"ExpressionStatement","src":"16006:81:78"},{"body":{"id":55679,"nodeType":"Block","src":"16152:113:78","statements":[{"assignments":[55666],"declarations":[{"constant":false,"id":55666,"mutability":"mutable","name":"validator","nameLocation":"16174:9:78","nodeType":"VariableDeclaration","scope":55679,"src":"16166:17:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55665,"name":"address","nodeType":"ElementaryTypeName","src":"16166:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55670,"initialValue":{"baseExpression":{"id":55667,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55636,"src":"16186:16:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55669,"indexExpression":{"id":55668,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55655,"src":"16203:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16186:19:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16166:39:78"},{"expression":{"id":55677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55671,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55641,"src":"16219:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16226:10:78","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53454,"src":"16219:17:78","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55675,"indexExpression":{"id":55673,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55666,"src":"16237:9:78","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16219:28:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":55676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16250:4:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16219:35:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55678,"nodeType":"ExpressionStatement","src":"16219:35:78"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55658,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55655,"src":"16118:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55659,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55636,"src":"16122:16:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16139:6:78","memberName":"length","nodeType":"MemberAccess","src":"16122:23:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16118:27:78","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55680,"initializationExpression":{"assignments":[55655],"declarations":[{"constant":false,"id":55655,"mutability":"mutable","name":"i","nameLocation":"16111:1:78","nodeType":"VariableDeclaration","scope":55680,"src":"16103:9:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55654,"name":"uint256","nodeType":"ElementaryTypeName","src":"16103:7:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55657,"initialValue":{"hexValue":"30","id":55656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16115:1:78","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16103:13:78"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16147:3:78","subExpression":{"id":55662,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55655,"src":"16147:1:78","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55664,"nodeType":"ExpressionStatement","src":"16147:3:78"},"nodeType":"ForStatement","src":"16098:167:78"},{"expression":{"id":55685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55681,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55641,"src":"16275:6:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16282:14:78","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53457,"src":"16275:21:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55684,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55636,"src":"16299:16:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"16275:40:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55686,"nodeType":"ExpressionStatement","src":"16275:40:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"15889:14:78","parameters":{"id":55637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55636,"mutability":"mutable","name":"_validatorsArray","nameLocation":"15921:16:78","nodeType":"VariableDeclaration","scope":55688,"src":"15904:33:78","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55634,"name":"address","nodeType":"ElementaryTypeName","src":"15904:7:78","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55635,"nodeType":"ArrayTypeName","src":"15904:9:78","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"15903:35:78"},"returnParameters":{"id":55638,"nodeType":"ParameterList","parameters":[],"src":"15947:0:78"},"scope":55702,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55701,"nodeType":"FunctionDefinition","src":"16328:222:78","nodes":[],"body":{"id":55700,"nodeType":"Block","src":"16397:153:78","nodes":[],"statements":[{"assignments":[55695],"declarations":[{"constant":false,"id":55695,"mutability":"mutable","name":"slot","nameLocation":"16415:4:78","nodeType":"VariableDeclaration","scope":55700,"src":"16407:12:78","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16407:7:78","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55698,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55696,"name":"getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54303,"src":"16422:14:78","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":55697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16422:16:78","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"16407:31:78"},{"AST":{"nativeSrc":"16501:43:78","nodeType":"YulBlock","src":"16501:43:78","statements":[{"nativeSrc":"16515:19:78","nodeType":"YulAssignment","src":"16515:19:78","value":{"name":"slot","nativeSrc":"16530:4:78","nodeType":"YulIdentifier","src":"16530:4:78"},"variableNames":[{"name":"router.slot","nativeSrc":"16515:11:78","nodeType":"YulIdentifier","src":"16515:11:78"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":55692,"isOffset":false,"isSlot":true,"src":"16515:11:78","suffix":"slot","valueSize":1},{"declaration":55695,"isOffset":false,"isSlot":false,"src":"16530:4:78","valueSize":1}],"id":55699,"nodeType":"InlineAssembly","src":"16492:52:78"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"16337:11:78","parameters":{"id":55689,"nodeType":"ParameterList","parameters":[],"src":"16348:2:78"},"returnParameters":{"id":55693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55692,"mutability":"mutable","name":"router","nameLocation":"16389:6:78","nodeType":"VariableDeclaration","scope":55701,"src":"16373:22:78","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55691,"nodeType":"UserDefinedTypeName","pathNode":{"id":55690,"name":"Storage","nameLocations":["16373:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53471,"src":"16373:7:78"},"referencedDeclaration":53471,"src":"16373:7:78","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53471_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"16372:24:78"},"scope":55702,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54187,"name":"IRouter","nameLocations":["800:7:78"],"nodeType":"IdentifierPath","referencedDeclaration":53738,"src":"800:7:78"},"id":54188,"nodeType":"InheritanceSpecifier","src":"800:7:78"},{"baseName":{"id":54189,"name":"OwnableUpgradeable","nameLocations":["809:18:78"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"809:18:78"},"id":54190,"nodeType":"InheritanceSpecifier","src":"809:18:78"},{"baseName":{"id":54191,"name":"ReentrancyGuardTransient","nameLocations":["829:24:78"],"nodeType":"IdentifierPath","referencedDeclaration":42400,"src":"829:24:78"},"id":54192,"nodeType":"InheritanceSpecifier","src":"829:24:78"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[55702,42400,39024,40172,39278,53738],"name":"Router","nameLocation":"790:6:78","scope":55703,"usedErrors":[38860,38865,39041,39044,42267,42273,42344,43050,43055,43060],"usedEvents":[38871,39049,53535,53542,53549,53556,53559,53562,53567,53572]}],"license":"UNLICENSED"},"id":78} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"baseFee","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"baseWeight","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"codeState","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint8","internalType":"enum IRouter.CodeState"}],"stateMutability":"view"},{"type":"function","name":"commitBlocks","inputs":[{"name":"blockCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.BlockCommitment[]","components":[{"name":"blockHash","type":"bytes32","internalType":"bytes32"},{"name":"prevCommitmentHash","type":"bytes32","internalType":"bytes32"},{"name":"predBlockHash","type":"bytes32","internalType":"bytes32"},{"name":"transitions","type":"tuple[]","internalType":"struct IRouter.StateTransition[]","components":[{"name":"actorId","type":"address","internalType":"address"},{"name":"newStateHash","type":"bytes32","internalType":"bytes32"},{"name":"valueToReceive","type":"uint128","internalType":"uint128"},{"name":"valueClaims","type":"tuple[]","internalType":"struct IRouter.ValueClaim[]","components":[{"name":"messageId","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"value","type":"uint128","internalType":"uint128"}]},{"name":"messages","type":"tuple[]","internalType":"struct IRouter.OutgoingMessage[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"destination","type":"address","internalType":"address"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"value","type":"uint128","internalType":"uint128"},{"name":"replyDetails","type":"tuple","internalType":"struct IRouter.ReplyDetails","components":[{"name":"to","type":"bytes32","internalType":"bytes32"},{"name":"code","type":"bytes4","internalType":"bytes4"}]}]}]}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitCodes","inputs":[{"name":"codeCommitmentsArray","type":"tuple[]","internalType":"struct IRouter.CodeCommitment[]","components":[{"name":"id","type":"bytes32","internalType":"bytes32"},{"name":"valid","type":"bool","internalType":"bool"}]},{"name":"signatures","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"createProgram","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"payload","type":"bytes","internalType":"bytes"},{"name":"_value","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"payable"},{"type":"function","name":"genesisBlockHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStorageSlot","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_mirror","type":"address","internalType":"address"},{"name":"_mirrorProxy","type":"address","internalType":"address"},{"name":"_wrappedVara","type":"address","internalType":"address"},{"name":"_validatorsKeys","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastBlockCommitmentHash","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"mirror","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"mirrorProxy","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"programCodeId","inputs":[{"name":"program","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"programsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"requestCodeValidation","inputs":[{"name":"codeId","type":"bytes32","internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBaseWeight","inputs":[{"name":"_baseWeight","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMirror","inputs":[{"name":"_mirror","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStorageSlot","inputs":[{"name":"namespace","type":"string","internalType":"string"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setValuePerWeight","inputs":[{"name":"_valuePerWeight","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"signingThresholdPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateValidators","inputs":[{"name":"validatorsAddressArray","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validatedCodesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorExists","inputs":[{"name":"validator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"validators","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"validatorsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validatorsThreshold","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"valuePerWeight","inputs":[],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"wrappedVara","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"BaseWeightChanged","inputs":[{"name":"baseWeight","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"BlockCommitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"CodeGotValidated","inputs":[{"name":"id","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"valid","type":"bool","indexed":true,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"CodeValidationRequested","inputs":[{"name":"codeId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"blobTxHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProgramCreated","inputs":[{"name":"actorId","type":"address","indexed":false,"internalType":"address"},{"name":"codeId","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"StorageSlotChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValidatorsSetChanged","inputs":[],"anonymous":false},{"type":"event","name":"ValuePerWeightChanged","inputs":[{"name":"valuePerWeight","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"FailedDeployment","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b60405161289590816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe610200806040526004361015610013575f80fd5b5f6101e0525f3560e01c9081627a32e714611f71575080630834fecc14611f3a5780631c149d8a14611df257806328e24b3d14611dc85780632dacfb6914611d9b5780633d43b41814611d49578063444d917214611d115780635686cad514611c5f5780636c2eb35014611a485780636ef25c3a14611a1d578063715018a6146119b657806378ee5dec1461197e5780638028861a146119015780638074b4551461158557806388f50cf01461154a5780638da5cb5b146115135780638febbd59146114c65780639067088e1461147e578063967082261461145257806396a2ddfa14611422578063a6bbbe1c14611372578063c13911e814611326578063ca1e7819146112a9578063d3fd636414611270578063e71731e41461115e578063e97d3eb314610f0f578063ed612f8c14610edf578063edc8722514610eba578063efd81abc14610e8a578063f2fde38b14610e66578063f8453e7c14610b585763fa97ed6d14610181575f80fd5b34610521576040366003190112610521576004356001600160401b038111610521576101b190369060040161202b565b906024356001600160401b038111610521576101d190369060040161202b565b6101e051606060a052909391925b82821015610b3c57600582901b8101359236829003607e19018412156105215760045f805160206128208339815191525401608052608051546020858401013503610af8576102336040858401013561262e565b15610aa7576101e0516101c0526060958285018701955b610256878786016125ce565b90506101c0511015610a125761026e878786016125ce565b9060e0526101c0511015610536576101c05160051b60e051013560c052609e1960e05136030160c0511215610521575f80516020612820833981519152546102bb60c05160e05101612671565b6001600160a01b03165f908152600b82016020526040902054156109b55760206001600160801b0391600360018060a01b0391015416604461030260c05160e05101612671565b610314604060c05160e0510101612685565b60405163a9059cbb60e01b81526001600160a01b0390921660048301529490941660248501526101e05184928391905af1801561052857610989575b5060c05160e0516001600160a01b039161036a9101612671565b166101a0526101e051606061016081905260c05160e0510101610140525b61039b6101405160c05160e05101612699565b9050811015610550576103b76101405160c05160e05101612699565b9061018052811015610536576103d7602060608302610180510101612671565b6040606083026101805101019061047a6103f083612685565b6040519060208201936060870261018051013585526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261043a606482611fb1565b60206040519384926101605151808461016051018587015e840190838201906101e0518252519283915e01016101e051815203601f198101835282611fb1565b6101605261049b610495602060608502610180510101612671565b91612685565b6101a0513b15610521576040516314503e5160e01b81526101805160608502013560048201526001600160a01b0390921660248301526001600160801b031660448201526101e0516101a0518290606490829084905af1801561052857610506575b50600101610388565b6101e05161051391611fb1565b6101e051610521575f6104fd565b6101e05180fd5b6040513d6101e051823e3d90fd5b634e487b7160e01b6101e05152603260045260246101e051fd5b50909195929394956101e051610100526060610100526101e0515b60c05160e051610580910160808101906125ce565b90508110156108715760c05160e05161059e910160808101906125ce565b821015610536578160051b8101356101205260be1981360301610120511215610521576106906105d5602061012051840101612671565b605461068460346105f3604061012051880101610120518801612417565b93906106066060610120518a0101612685565b61061760a0610120518b01016126ce565b86604051978894602086019a8d6101205101358c526001600160601b03199060601b166040870152868601378301916001600160801b03199060801b16848301526080610120518b010135606483015263ffffffff60e01b16608482015203016014810184520182611fb1565b519020610100516121a2565b6101005261012051810160800135610779576106b3602061012051830101612671565b610120516106c79083016040810190612417565b90916106da606061012051860101612685565b926101a0513b156105215760405163c2df600960e01b8152610120519095013560048601526001600160a01b039091166024850152608060448501526001600160801b039161072e91608486019190612182565b9116606483015281806101e0519203816101e0516101a0515af180156105285761075e575b506001905b0161056b565b6101e05161076b91611fb1565b6101e051610521575f610753565b61078a602061012051830101612671565b906107a2604061012051830101610120518301612417565b6107b3606061012051850101612685565b926107c560a0610120518301016126ce565b926101a0513b156105215760405163c78bde7760e01b81526001600160a01b03909616600487015260a060248701526080926001600160801b039161080e9160a4890191612182565b9416604486015261012051010135606484015263ffffffff60e01b16608483015281806101e0519203816101e0516101a0515af1801561052857610856575b50600190610758565b6101e05161086391611fb1565b6101e051610521575f61084d565b5091909695949392956101a0513b1561052157604051638ea59e1d60e01b8152602060c05160e05101013560048201526101e051816024816101e0516101a0515af180156105285761096e575b5061095d906108d260c05160e05101612671565b6108e4604060c05160e0510101612685565b6101605151602061016051012061010051516020610100510120906040519260208401946001600160601b03199060601b168552602060c05160e05101013560348501526001600160801b03199060801b166054840152606483015260848201526084815261095460a482611fb1565b519020906121a2565b9660016101c051016101c05261024a565b6101e05161097b91611fb1565b6101e051610521575f6108be565b6109a99060203d81116109ae575b6109a18183611fb1565b8101906123ff565b610350565b503d610997565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b9391966001939650610a999195808801359182608051557fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858152a1602081519101206040805192602084019485526020818c010135828501528a0101356060830152608082015260808152610a8e60a082611fb1565b51902060a0516121a2565b60a0520190929391936101df565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b610b51858560a05151602060a0510120612449565b6101e05180f35b346105215760a036600319011261052157610b71611f9b565b602435906001600160a01b038216820361052157604435916001600160a01b038316830361052157606435926001600160a01b0384168403610521576084356001600160401b038111610521573660238201121561052157610bdd90369060248160040135910161205b565b905f805160206128408339815191525460ff8160401c1615946001600160401b03821680159081610e5e575b6001149081610e54575b159081610e4b575b50610e365767ffffffffffffffff1982166001175f8051602061284083398151915255610c5e9186610e0a575b50610c51612603565b610c59612603565b61221a565b6040948551610c6d8782611fb1565b6017815260208101907f726f757465722e73746f726167652e526f7574657256310000000000000000008252610ca161228b565b5190205f198101908111610df0578651906020820190815260208252610cc78883611fb1565b60ff19915190201690815f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101e0516101e051a15f19430192438411610df057924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b0319909116179055610d90906122be565b610d9b576101e05180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f8051602061284083398151915254165f80516020612840833981519152555160018152a180610b51565b634e487b7160e01b6101e05152601160045260246101e051fd5b68ffffffffffffffffff191668010000000000000001175f805160206128408339815191525587610c48565b63f92ee8a960e01b6101e0515260046101e051fd5b90501588610c1b565b303b159150610c13565b879150610c09565b3461052157602036600319011261052157610b51610e82611f9b565b610c5961228b565b34610521576101e05136600319011261052157602060055f80516020612820833981519152540154604051908152f35b34610521576101e051366003190112610521576020610ed76121dc565b604051908152f35b34610521576101e05136600319011261052157602060085f80516020612820833981519152540154604051908152f35b34610521576040366003190112610521576004356001600160401b0381116105215736602382011215610521578060040135906001600160401b038211610521573660248360061b83010111610521576024356001600160401b03811161052157610f7f8391369060040161202b565b5f80516020612820833981519152546101e0519460098201939192909160605b8688101561114d576101e051508760061b840197610fed604460248b01359a0192610fc9846121cf565b60405160208101918d8352151560f81b604082015260218152610954604182611fb1565b98806101e051528760205260ff60406101e0512054166003811015611133576001036110de5761101e6001936121cf565b1561108c577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960208285936101e051528a825260406101e051206101e051506101e05150600260ff19825416179055600a8a0161107b8154612174565b9055604051908152a25b0196610f9f565b806101e051528760205260406101e0512080546101e0515060ff191690556040519081527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960206101e05192a2611085565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b6101e05152602160045260246101e051fd5b610b51935060208151910120612449565b34610521576020366003190112610521576004356001600160401b0381116105215761118e90369060040161202b565b61119661228b565b5f80516020612820833981519152546101e0516007820191600801905b81548110156111f3576101e08051839052516020908190208201546001600160a01b03165f9081529084905260409020805460ff191690556001016111b3565b506101e0518154908255915081611249575b61121861121336858761205b565b6122be565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f516101e0516101e051a16101e05180f35b6101e0515260206101e05120908101905b81811015611205576101e051815560010161125a565b34610521576101e0513660031901126105215760206001600160401b0360065f8051602061282083398151915254015416604051908152f35b34610521576101e051366003190112610521576112d660085f8051602061282083398151915254016120bf565b6040518091602082016020835281518091526020604084019201906101e0515b818110611304575050500390f35b82516001600160a01b03168452859450602093840193909201916001016112f6565b346105215760203660031901126105215760095f8051602061282083398151915254016004356101e0515260205260ff60406101e0512054166040516003821015611133576020918152f35b34610521576020366003190112610521576004356001600160801b03811690818103610521577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916113c561228b565b5f8051602061282083398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a16101e05180f35b34610521576101e051366003190112610521576020600c5f80516020612820833981519152540154604051908152f35b34610521576101e0513660031901126105215760205f8051602061282083398151915254604051908152f35b3461052157602036600319011261052157611497611f9b565b600b5f8051602061282083398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b34610521576020366003190112610521576114df611f9b565b60075f8051602061282083398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610521576101e051366003190112610521575f80516020612800833981519152546040516001600160a01b039091168152602090f35b34610521576101e051366003190112610521575f8051602061282083398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112611806576044356004356001600160401b0382116118065736602383011215611806578160040135916001600160401b03831161180657366024848301011161180657606435906001600160801b03821693848303611806575f805160206128208339815191525493805f526009850160205260ff60405f20541660038110156118ed5760020361189157611620612112565b600a6001600160801b03821602946001600160801b03861695860361187d5761164c8661165193612154565b612154565b60038601546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af19081156117fb575f9161185e575b50156118195760028501546e5af43d82803e903d91602b57fd5bf360405160208101908482526024356040820152604081526116e2606082611fb1565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b161760205260018060a01b0390603760095ff51694851561180a57600c90865f52600b81016020528260405f2055016117588154612174565b90557f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf16020604051878152a2833b15611806576117bd945f9360405196879485946306f0ee9760e51b8652326004870152608060248701526024608487019201612182565b9160448401526064830152038183855af19182156117fb576020926117e6575b50604051908152f35b5f6117f091611fb1565b5f6101e052826117dd565b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611877915060203d6020116109ae576109a18183611fb1565b876116a5565b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b34611806576020366003190112611806576004356001600160401b0381168091036118065760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c79161195261228b565b5f8051602061282083398151915254600601805467ffffffffffffffff191682179055604051908152a1005b34611806575f366003190112611806575f8051602061282083398151915254600201546040516001600160a01b039091168152602090f35b34611806575f366003190112611806576119ce61228b565b5f8051602061280083398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34611806575f366003190112611806576020611a37612112565b6001600160801b0360405191168152f35b34611806575f36600319011261180657611a6061228b565b5f805160206128408339815191525460ff8160401c168015611c4b575b611c3c5768ffffffffffffffffff191668010000000000000002175f80516020612840833981519152555f80516020612820833981519152546001810154600282015460038301546001600160a01b0390811693918116921690611ae3906008016120bf565b906040918251611af38482611fb1565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611b2761228b565b5190205f19810190811161187d578351906020820190815260208252611b4d8583611fb1565b60ff19915190201694855f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f19430143811161187d574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160209190611c0f906122be565b60ff60401b195f8051602061284083398151915254165f80516020612840833981519152555160028152a1005b63f92ee8a960e01b5f5260045ffd5b5060026001600160401b0382161015611a7d565b34611806576020366003190112611806576004356001600160401b038111611806573660238201121561180657611ca0903690602481600401359101611fe6565b611ca861228b565b602081519101205f19810190811161187d57604051906020820190815260208252611cd4604083611fb1565b9051902060ff19165f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b34611806575f366003190112611806575f8051602061282083398151915254600101546040516001600160a01b039091168152602090f35b3461180657602036600319011261180657611d62611f9b565b611d6a61228b565b5f805160206128208339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34611806575f36600319011261180657602060045f80516020612820833981519152540154604051908152f35b34611806575f3660031901126118065760205f805160206128208339815191525454604051908152f35b34611806576040366003190112611806576024356004358115801590611f30575b15611eeb5760095f80516020612820833981519152540190805f528160205260ff60405f20541660038110156118ed57611e8d577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611e13565b34611806575f366003190112611806576020611a376001600160801b0360065f8051602061282083398151915254015460401c1690565b34611806575f36600319011261180657602090600a5f805160206128208339815191525401548152f35b600435906001600160a01b038216820361180657565b90601f801991011681019081106001600160401b03821117611fd257604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611fd2576040519161200f601f8201601f191660200184611fb1565b829481845281830111611806578281602093845f960137010152565b9181601f84011215611806578235916001600160401b038311611806576020808501948460051b01011161180657565b9092916001600160401b038411611fd2578360051b91602060405161208282860182611fb1565b809681520192810191821161180657915b81831061209f57505050565b82356001600160a01b038116810361180657815260209283019201612093565b90604051918281549182825260208201905f5260205f20925f5b8181106120f05750506120ee92500383611fb1565b565b84546001600160a01b03168352600194850194879450602090930192016120d9565b5f8051602061282083398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b03811690810361187d5790565b906001600160801b03809116911601906001600160801b03821161187d57565b5f19811461187d5760010190565b908060209392818452848401375f828201840152601f01601f1916010190565b6020806120ee928195946040519682889351918291018585015e8201908382015203018085520183611fb1565b3580151581036118065790565b5f8051602061282083398151915254600560088201549101549081810291818304149015171561187d5761270f810180911161187d57612710900490565b6001600160a01b03168015612278575f8051602061280083398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f80516020612800833981519152546001600160a01b031633036122ab57565b63118cdaa760e01b5f523360045260245ffd5b5f805160206128208339815191525490600882019081546123ae579091600701905f5b815181101561232057600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016122e1565b5080519291506001600160401b038311611fd257680100000000000000008311611fd2578154838355808410612388575b50602001905f5260205f205f5b83811061236b5750505050565b82516001600160a01b03168183015560209092019160010161235e565b825f528360205f2091820191015b8181106123a35750612351565b5f8155600101612396565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b90816020910312611806575180151581036118065790565b903590601e198136030182121561180657018035906001600160401b0382116118065760200191813603831361180657565b905f8051602061282083398151915254906124626121dc565b9260405190602082019081526020825261247d604083611fb1565b6124b9603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611fb1565b5190205f9260070191835b868510156125c2576124fa6124f16124eb6124e48860051b860186612417565b3691611fe6565b856126e3565b9092919261271d565b6001600160a01b03165f9081526020859052604090205460ff16156125875761252290612174565b9385851461253357600101936124c4565b505050509091505b1061254257565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b9495505050505061253b565b903590601e198136030182121561180657018035906001600160401b03821161180657602001918160051b3603831361180657565b60ff5f805160206128408339815191525460401c161561261f57565b631afcd79f60e31b5f5260045ffd5b905f19430143811161187d57805b612647575b505f9150565b804083810361265857506001925050565b1561266c57801561187d575f19018061263c565b612641565b356001600160a01b03811681036118065790565b356001600160801b03811681036118065790565b903590601e198136030182121561180657018035906001600160401b0382116118065760200191606082023603831361180657565b356001600160e01b0319811681036118065790565b81519190604183036127135761270c9250602082015190606060408401519301515f1a9061277d565b9192909190565b50505f9160029190565b60048110156118ed578061272f575050565b600181036127465763f645eedf60e01b5f5260045ffd5b60028103612761575063fce698f760e01b5f5260045260245ffd5b60031461276b5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116127f4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156117fb575f516001600160a01b038116156127ea57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d97d988e5debbb0caed497bc3e4db936acd49450c96dfd5737459b9e1738bc3e64736f6c634300081a0033","sourceMap":"781:16427:81:-:0;;;;;;;8837:64:25;781:16427:81;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;781:16427:81;;7985:34:25;7981:146;;-1:-1:-1;781:16427:81;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;781:16427:81;-1:-1:-1;;;;;781:16427:81;;;8837:64:25;781:16427:81;;;8087:29:25;;781:16427:81;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;781:16427:81;;;","linkReferences":{}},"deployedBytecode":{"object":"0x610200806040526004361015610013575f80fd5b5f6101e0525f3560e01c9081627a32e714611f71575080630834fecc14611f3a5780631c149d8a14611df257806328e24b3d14611dc85780632dacfb6914611d9b5780633d43b41814611d49578063444d917214611d115780635686cad514611c5f5780636c2eb35014611a485780636ef25c3a14611a1d578063715018a6146119b657806378ee5dec1461197e5780638028861a146119015780638074b4551461158557806388f50cf01461154a5780638da5cb5b146115135780638febbd59146114c65780639067088e1461147e578063967082261461145257806396a2ddfa14611422578063a6bbbe1c14611372578063c13911e814611326578063ca1e7819146112a9578063d3fd636414611270578063e71731e41461115e578063e97d3eb314610f0f578063ed612f8c14610edf578063edc8722514610eba578063efd81abc14610e8a578063f2fde38b14610e66578063f8453e7c14610b585763fa97ed6d14610181575f80fd5b34610521576040366003190112610521576004356001600160401b038111610521576101b190369060040161202b565b906024356001600160401b038111610521576101d190369060040161202b565b6101e051606060a052909391925b82821015610b3c57600582901b8101359236829003607e19018412156105215760045f805160206128208339815191525401608052608051546020858401013503610af8576102336040858401013561262e565b15610aa7576101e0516101c0526060958285018701955b610256878786016125ce565b90506101c0511015610a125761026e878786016125ce565b9060e0526101c0511015610536576101c05160051b60e051013560c052609e1960e05136030160c0511215610521575f80516020612820833981519152546102bb60c05160e05101612671565b6001600160a01b03165f908152600b82016020526040902054156109b55760206001600160801b0391600360018060a01b0391015416604461030260c05160e05101612671565b610314604060c05160e0510101612685565b60405163a9059cbb60e01b81526001600160a01b0390921660048301529490941660248501526101e05184928391905af1801561052857610989575b5060c05160e0516001600160a01b039161036a9101612671565b166101a0526101e051606061016081905260c05160e0510101610140525b61039b6101405160c05160e05101612699565b9050811015610550576103b76101405160c05160e05101612699565b9061018052811015610536576103d7602060608302610180510101612671565b6040606083026101805101019061047a6103f083612685565b6040519060208201936060870261018051013585526001600160601b03199060601b1660408301526001600160801b03199060801b1660548201526044815261043a606482611fb1565b60206040519384926101605151808461016051018587015e840190838201906101e0518252519283915e01016101e051815203601f198101835282611fb1565b6101605261049b610495602060608502610180510101612671565b91612685565b6101a0513b15610521576040516314503e5160e01b81526101805160608502013560048201526001600160a01b0390921660248301526001600160801b031660448201526101e0516101a0518290606490829084905af1801561052857610506575b50600101610388565b6101e05161051391611fb1565b6101e051610521575f6104fd565b6101e05180fd5b6040513d6101e051823e3d90fd5b634e487b7160e01b6101e05152603260045260246101e051fd5b50909195929394956101e051610100526060610100526101e0515b60c05160e051610580910160808101906125ce565b90508110156108715760c05160e05161059e910160808101906125ce565b821015610536578160051b8101356101205260be1981360301610120511215610521576106906105d5602061012051840101612671565b605461068460346105f3604061012051880101610120518801612417565b93906106066060610120518a0101612685565b61061760a0610120518b01016126ce565b86604051978894602086019a8d6101205101358c526001600160601b03199060601b166040870152868601378301916001600160801b03199060801b16848301526080610120518b010135606483015263ffffffff60e01b16608482015203016014810184520182611fb1565b519020610100516121a2565b6101005261012051810160800135610779576106b3602061012051830101612671565b610120516106c79083016040810190612417565b90916106da606061012051860101612685565b926101a0513b156105215760405163c2df600960e01b8152610120519095013560048601526001600160a01b039091166024850152608060448501526001600160801b039161072e91608486019190612182565b9116606483015281806101e0519203816101e0516101a0515af180156105285761075e575b506001905b0161056b565b6101e05161076b91611fb1565b6101e051610521575f610753565b61078a602061012051830101612671565b906107a2604061012051830101610120518301612417565b6107b3606061012051850101612685565b926107c560a0610120518301016126ce565b926101a0513b156105215760405163c78bde7760e01b81526001600160a01b03909616600487015260a060248701526080926001600160801b039161080e9160a4890191612182565b9416604486015261012051010135606484015263ffffffff60e01b16608483015281806101e0519203816101e0516101a0515af1801561052857610856575b50600190610758565b6101e05161086391611fb1565b6101e051610521575f61084d565b5091909695949392956101a0513b1561052157604051638ea59e1d60e01b8152602060c05160e05101013560048201526101e051816024816101e0516101a0515af180156105285761096e575b5061095d906108d260c05160e05101612671565b6108e4604060c05160e0510101612685565b6101605151602061016051012061010051516020610100510120906040519260208401946001600160601b03199060601b168552602060c05160e05101013560348501526001600160801b03199060801b166054840152606483015260848201526084815261095460a482611fb1565b519020906121a2565b9660016101c051016101c05261024a565b6101e05161097b91611fb1565b6101e051610521575f6108be565b6109a99060203d81116109ae575b6109a18183611fb1565b8101906123ff565b610350565b503d610997565b60405162461bcd60e51b815260206004820152602f60248201527f636f756c646e277420706572666f726d207472616e736974696f6e20666f722060448201526e756e6b6e6f776e2070726f6772616d60881b6064820152608490fd5b9391966001939650610a999195808801359182608051557fd756eca21e02cb0dbde1e44a4d9c6921b5c8aa4668cfa0752784b3dc855bce1e6020604051858152a1602081519101206040805192602084019485526020818c010135828501528a0101356060830152608082015260808152610a8e60a082611fb1565b51902060a0516121a2565b60a0520190929391936101df565b60405162461bcd60e51b815260206004820152602360248201527f616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f6044820152621d5b9960ea1b6064820152608490fd5b606460405162461bcd60e51b815260206004820152602060248201527f696e76616c69642070726576696f757320636f6d6d69746d656e7420686173686044820152fd5b610b51858560a05151602060a0510120612449565b6101e05180f35b346105215760a036600319011261052157610b71611f9b565b602435906001600160a01b038216820361052157604435916001600160a01b038316830361052157606435926001600160a01b0384168403610521576084356001600160401b038111610521573660238201121561052157610bdd90369060248160040135910161205b565b905f805160206128408339815191525460ff8160401c1615946001600160401b03821680159081610e5e575b6001149081610e54575b159081610e4b575b50610e365767ffffffffffffffff1982166001175f8051602061284083398151915255610c5e9186610e0a575b50610c51612603565b610c59612603565b61221a565b6040948551610c6d8782611fb1565b6017815260208101907f726f757465722e73746f726167652e526f7574657256310000000000000000008252610ca161228b565b5190205f198101908111610df0578651906020820190815260208252610cc78883611fb1565b60ff19915190201690815f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc6101e0516101e051a15f19430192438411610df057924082556001820180546001600160a01b03199081166001600160a01b03978816179091556002830180548216948716949094179093556003820180549093169416939093179055611a0a60058301556006919091018054680a000000009502f9006001600160c01b0319909116179055610d90906122be565b610d9b576101e05180f35b60207fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160ff60401b195f8051602061284083398151915254165f80516020612840833981519152555160018152a180610b51565b634e487b7160e01b6101e05152601160045260246101e051fd5b68ffffffffffffffffff191668010000000000000001175f805160206128408339815191525587610c48565b63f92ee8a960e01b6101e0515260046101e051fd5b90501588610c1b565b303b159150610c13565b879150610c09565b3461052157602036600319011261052157610b51610e82611f9b565b610c5961228b565b34610521576101e05136600319011261052157602060055f80516020612820833981519152540154604051908152f35b34610521576101e051366003190112610521576020610ed76121dc565b604051908152f35b34610521576101e05136600319011261052157602060085f80516020612820833981519152540154604051908152f35b34610521576040366003190112610521576004356001600160401b0381116105215736602382011215610521578060040135906001600160401b038211610521573660248360061b83010111610521576024356001600160401b03811161052157610f7f8391369060040161202b565b5f80516020612820833981519152546101e0519460098201939192909160605b8688101561114d576101e051508760061b840197610fed604460248b01359a0192610fc9846121cf565b60405160208101918d8352151560f81b604082015260218152610954604182611fb1565b98806101e051528760205260ff60406101e0512054166003811015611133576001036110de5761101e6001936121cf565b1561108c577f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960208285936101e051528a825260406101e051206101e051506101e05150600260ff19825416179055600a8a0161107b8154612174565b9055604051908152a25b0196610f9f565b806101e051528760205260406101e0512080546101e0515060ff191690556040519081527f460119a8f69a33ed127de517d5ea464e958ce23ef19e4420a8b92bf780bbc2c960206101e05192a2611085565b60405162461bcd60e51b815260206004820152602760248201527f636f64652073686f756c642062652072657175657374656420666f722076616c60448201526634b230ba34b7b760c91b6064820152608490fd5b634e487b7160e01b6101e05152602160045260246101e051fd5b610b51935060208151910120612449565b34610521576020366003190112610521576004356001600160401b0381116105215761118e90369060040161202b565b61119661228b565b5f80516020612820833981519152546101e0516007820191600801905b81548110156111f3576101e08051839052516020908190208201546001600160a01b03165f9081529084905260409020805460ff191690556001016111b3565b506101e0518154908255915081611249575b61121861121336858761205b565b6122be565b7f144bbc027dc176e94c43b7c1bcff2a8aa58ab434029eec294743cd4ab2e54f516101e0516101e051a16101e05180f35b6101e0515260206101e05120908101905b81811015611205576101e051815560010161125a565b34610521576101e0513660031901126105215760206001600160401b0360065f8051602061282083398151915254015416604051908152f35b34610521576101e051366003190112610521576112d660085f8051602061282083398151915254016120bf565b6040518091602082016020835281518091526020604084019201906101e0515b818110611304575050500390f35b82516001600160a01b03168452859450602093840193909201916001016112f6565b346105215760203660031901126105215760095f8051602061282083398151915254016004356101e0515260205260ff60406101e0512054166040516003821015611133576020918152f35b34610521576020366003190112610521576004356001600160801b03811690818103610521577f9f5e1796f1a0adf311f86170503308a06a16560a7679b7b6da35f4999200d740916020916113c561228b565b5f8051602061282083398151915254600601805477ffffffffffffffffffffffffffffffff00000000000000001916604092831b77ffffffffffffffffffffffffffffffff00000000000000001617905551908152a16101e05180f35b34610521576101e051366003190112610521576020600c5f80516020612820833981519152540154604051908152f35b34610521576101e0513660031901126105215760205f8051602061282083398151915254604051908152f35b3461052157602036600319011261052157611497611f9b565b600b5f8051602061282083398151915254019060018060a01b03165f52602052602060405f2054604051908152f35b34610521576020366003190112610521576114df611f9b565b60075f8051602061282083398151915254019060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b34610521576101e051366003190112610521575f80516020612800833981519152546040516001600160a01b039091168152602090f35b34610521576101e051366003190112610521575f8051602061282083398151915254600301546040516001600160a01b039091168152602090f35b6080366003190112611806576044356004356001600160401b0382116118065736602383011215611806578160040135916001600160401b03831161180657366024848301011161180657606435906001600160801b03821693848303611806575f805160206128208339815191525493805f526009850160205260ff60405f20541660038110156118ed5760020361189157611620612112565b600a6001600160801b03821602946001600160801b03861695860361187d5761164c8661165193612154565b612154565b60038601546040516323b872dd60e01b81523260048201523060248201526001600160801b03929092166044830152602090829060649082905f906001600160a01b03165af19081156117fb575f9161185e575b50156118195760028501546e5af43d82803e903d91602b57fd5bf360405160208101908482526024356040820152604081526116e2606082611fb1565b51902091763d602d80600a3d3981f3363d3d373d3d3d363d7300000062ffffff8260881c16175f526effffffffffffffffffffffffffffff199060781b161760205260018060a01b0390603760095ff51694851561180a57600c90865f52600b81016020528260405f2055016117588154612174565b90557f8008ec1d8798725ebfa0f2d128d52e8e717dcba6e0f786557eeee70614b02bf16020604051878152a2833b15611806576117bd945f9360405196879485946306f0ee9760e51b8652326004870152608060248701526024608487019201612182565b9160448401526064830152038183855af19182156117fb576020926117e6575b50604051908152f35b5f6117f091611fb1565b5f6101e052826117dd565b6040513d5f823e3d90fd5b5f80fd5b63b06ebf3d60e01b5f5260045ffd5b60405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f20726574726965766520575661726100000000000000006044820152606490fd5b611877915060203d6020116109ae576109a18183611fb1565b876116a5565b634e487b7160e01b5f52601160045260245ffd5b60405162461bcd60e51b815260206004820152602e60248201527f636f6465206d7573742062652076616c696461746564206265666f726520707260448201526d37b3b930b69031b932b0ba34b7b760911b6064820152608490fd5b634e487b7160e01b5f52602160045260245ffd5b34611806576020366003190112611806576004356001600160401b0381168091036118065760207f01326573cfc0bc40a2550923254394ebd7529e3e3301840dfa33cf786aead0c79161195261228b565b5f8051602061282083398151915254600601805467ffffffffffffffff191682179055604051908152a1005b34611806575f366003190112611806575f8051602061282083398151915254600201546040516001600160a01b039091168152602090f35b34611806575f366003190112611806576119ce61228b565b5f8051602061280083398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34611806575f366003190112611806576020611a37612112565b6001600160801b0360405191168152f35b34611806575f36600319011261180657611a6061228b565b5f805160206128408339815191525460ff8160401c168015611c4b575b611c3c5768ffffffffffffffffff191668010000000000000002175f80516020612840833981519152555f80516020612820833981519152546001810154600282015460038301546001600160a01b0390811693918116921690611ae3906008016120bf565b906040918251611af38482611fb1565b6017815260208101907f726f757465722e73746f726167652e526f7574657256320000000000000000008252611b2761228b565b5190205f19810190811161187d578351906020820190815260208252611b4d8583611fb1565b60ff19915190201694855f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a15f19430143811161187d574086556001860180546001600160a01b03199081166001600160a01b03958616179091556002870180548216968516969096179095556003909501805490941694909116939093179091557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29160209190611c0f906122be565b60ff60401b195f8051602061284083398151915254165f80516020612840833981519152555160028152a1005b63f92ee8a960e01b5f5260045ffd5b5060026001600160401b0382161015611a7d565b34611806576020366003190112611806576004356001600160401b038111611806573660238201121561180657611ca0903690602481600401359101611fe6565b611ca861228b565b602081519101205f19810190811161187d57604051906020820190815260208252611cd4604083611fb1565b9051902060ff19165f80516020612820833981519152557f5aa0c6c9fb33211212ffe5bef7a4b5d511b82a611e6677052d984e2bcedeaccc5f80a1005b34611806575f366003190112611806575f8051602061282083398151915254600101546040516001600160a01b039091168152602090f35b3461180657602036600319011261180657611d62611f9b565b611d6a61228b565b5f805160206128208339815191525460010180546001600160a01b0319166001600160a01b03909216919091179055005b34611806575f36600319011261180657602060045f80516020612820833981519152540154604051908152f35b34611806575f3660031901126118065760205f805160206128208339815191525454604051908152f35b34611806576040366003190112611806576024356004358115801590611f30575b15611eeb5760095f80516020612820833981519152540190805f528160205260ff60405f20541660038110156118ed57611e8d577f65672eaf4ff8b823ea29ae013fef437d1fa9ed431125263a7a1f0ac49eada39692604092825f52602052825f20600160ff1982541617905582519182526020820152a1005b60405162461bcd60e51b815260206004820152603060248201527f636f64652077697468207375636820696420616c72656164792072657175657360448201526f1d1959081bdc881d985b1a59185d195960821b6064820152608490fd5b60405162461bcd60e51b815260206004820152601c60248201527f626c6f6254784861736820636f756c646e277420626520666f756e64000000006044820152606490fd5b505f491515611e13565b34611806575f366003190112611806576020611a376001600160801b0360065f8051602061282083398151915254015460401c1690565b34611806575f36600319011261180657602090600a5f805160206128208339815191525401548152f35b600435906001600160a01b038216820361180657565b90601f801991011681019081106001600160401b03821117611fd257604052565b634e487b7160e01b5f52604160045260245ffd5b9291926001600160401b038211611fd2576040519161200f601f8201601f191660200184611fb1565b829481845281830111611806578281602093845f960137010152565b9181601f84011215611806578235916001600160401b038311611806576020808501948460051b01011161180657565b9092916001600160401b038411611fd2578360051b91602060405161208282860182611fb1565b809681520192810191821161180657915b81831061209f57505050565b82356001600160a01b038116810361180657815260209283019201612093565b90604051918281549182825260208201905f5260205f20925f5b8181106120f05750506120ee92500383611fb1565b565b84546001600160a01b03168352600194850194879450602090930192016120d9565b5f8051602061282083398151915254600601546001600160401b038116906001600160801b039060401c811616026001600160801b03811690810361187d5790565b906001600160801b03809116911601906001600160801b03821161187d57565b5f19811461187d5760010190565b908060209392818452848401375f828201840152601f01601f1916010190565b6020806120ee928195946040519682889351918291018585015e8201908382015203018085520183611fb1565b3580151581036118065790565b5f8051602061282083398151915254600560088201549101549081810291818304149015171561187d5761270f810180911161187d57612710900490565b6001600160a01b03168015612278575f8051602061280083398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b5f80516020612800833981519152546001600160a01b031633036122ab57565b63118cdaa760e01b5f523360045260245ffd5b5f805160206128208339815191525490600882019081546123ae579091600701905f5b815181101561232057600581901b82016020908101516001600160a01b03165f9081529084905260409020805460ff19166001908117909155016122e1565b5080519291506001600160401b038311611fd257680100000000000000008311611fd2578154838355808410612388575b50602001905f5260205f205f5b83811061236b5750505050565b82516001600160a01b03168183015560209092019160010161235e565b825f528360205f2091820191015b8181106123a35750612351565b5f8155600101612396565b60405162461bcd60e51b815260206004820152602360248201527f70726576696f75732076616c696461746f727320776572656e27742072656d6f6044820152621d995960ea1b6064820152608490fd5b90816020910312611806575180151581036118065790565b903590601e198136030182121561180657018035906001600160401b0382116118065760200191813603831361180657565b905f8051602061282083398151915254906124626121dc565b9260405190602082019081526020825261247d604083611fb1565b6124b9603660405180936020820195601960f81b87523060601b60228401525180918484015e81015f838201520301601f198101835282611fb1565b5190205f9260070191835b868510156125c2576124fa6124f16124eb6124e48860051b860186612417565b3691611fe6565b856126e3565b9092919261271d565b6001600160a01b03165f9081526020859052604090205460ff16156125875761252290612174565b9385851461253357600101936124c4565b505050509091505b1061254257565b60405162461bcd60e51b815260206004820152601b60248201527f6e6f7420656e6f7567682076616c6964207369676e61747572657300000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526013602482015272696e636f7272656374207369676e617475726560681b6044820152606490fd5b9495505050505061253b565b903590601e198136030182121561180657018035906001600160401b03821161180657602001918160051b3603831361180657565b60ff5f805160206128408339815191525460401c161561261f57565b631afcd79f60e31b5f5260045ffd5b905f19430143811161187d57805b612647575b505f9150565b804083810361265857506001925050565b1561266c57801561187d575f19018061263c565b612641565b356001600160a01b03811681036118065790565b356001600160801b03811681036118065790565b903590601e198136030182121561180657018035906001600160401b0382116118065760200191606082023603831361180657565b356001600160e01b0319811681036118065790565b81519190604183036127135761270c9250602082015190606060408401519301515f1a9061277d565b9192909190565b50505f9160029190565b60048110156118ed578061272f575050565b600181036127465763f645eedf60e01b5f5260045ffd5b60028103612761575063fce698f760e01b5f5260045260245ffd5b60031461276b5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116127f4579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156117fb575f516001600160a01b038116156127ea57905f905f90565b505f906001905f90565b5050505f916003919056fe9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220d97d988e5debbb0caed497bc3e4db936acd49450c96dfd5737459b9e1738bc3e64736f6c634300081a0033","sourceMap":"781:16427:81:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;:::i;:::-;;;;9630:35;;781:16427;;;;9730:3;9696:32;;;;;;781:16427;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;11143:30;;;;;781:16427;;;;;11177:34;781:16427;11143:68;781:16427;;11275:49;781:16427;;;;11294:29;781:16427;11275:49;:::i;:::-;781:16427;;;;;11421:13;;781:16427;;;;;11440:27;;;11476:3;11440:27;781:16427;;;;11440:27;:::i;:::-;11436:38;;;;;;;;11538:27;781:16427;;;;11538:27;:::i;:::-;;;;781:16427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;12616:23;781:16427;;;;;12616:23;:::i;:::-;-1:-1:-1;;;;;781:16427:81;-1:-1:-1;781:16427:81;;;12600:15;;;781:16427;;;;;;12600:45;781:16427;;;-1:-1:-1;;;;;781:16427:81;12753:18;781:16427;;;;;12753:18;;781:16427;;;12808:23;781:16427;;;;;12808:23;:::i;:::-;12833:30;781:16427;;;;;;12833:30;;:::i;:::-;781:16427;;-1:-1:-1;;;12782:82:81;;-1:-1:-1;;;;;781:16427:81;;;;12782:82;;781:16427;;;;;;;;;;;;;;;;12782:82;;;;;;;;11476:3;-1:-1:-1;781:16427:81;;;;-1:-1:-1;;;;;781:16427:81;12905:23;;781:16427;12905:23;:::i;:::-;781:16427;;;;;;12940:29;;;;781:16427;;;;;13004:27;;;13040:3;13004:27;;;781:16427;;;;;13004:27;:::i;:::-;13000:38;;;;;;;13092:27;;;781:16427;;;;;13092:27;:::i;:::-;;;;781:16427;;;;;13243:22;781:16427;;;;;;;13243:22;;:::i;:::-;781:16427;;;;;;;13267:16;;781:16427;13267:16;;;:::i;:::-;781:16427;;13204:80;781:16427;13204:80;;781:16427;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;13204:80;;;781:16427;13204:80;;:::i;:::-;781:16427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13204:80;;781:16427;;;;;;:::i;:::-;13137:161;;13384:16;13360:22;781:16427;;;;;;;13243:22;13360;:::i;:::-;13384:16;;:::i;:::-;13313:88;;;;;;781:16427;;-1:-1:-1;;;13313:88:81;;781:16427;;;;;;;;13313:88;;781:16427;-1:-1:-1;;;;;781:16427:81;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;13313:88;;781:16427;;;;;;;;13313:88;;;;;;;;13040:3;;781:16427;;12985:13;;13313:88;781:16427;;13313:88;;;:::i;:::-;781:16427;;;;13313:88;;;781:16427;;;;;13313:88;781:16427;;;;;;;;;;;;;;;;;;;;;;;;13000:38;;;;;;;;;781:16427;;13422:27;;781:16427;13422:27;;781:16427;;13517:3;781:16427;;;;13484:24;;781:16427;;13484:24;;;;:::i;:::-;13480:35;;;;;;;781:16427;;;;13579:24;;781:16427;;13484:24;;;13579;:::i;:::-;781:16427;;;;;;;;;;;;;;;;;;;;;;;;;13638:67;15508:27;781:16427;;;;;15508:27;;:::i;:::-;781:16427;15438:291;781:16427;15553:23;781:16427;;;;;15553:23;781:16427;;;;15553:23;:::i;:::-;781:16427;;15594:21;781:16427;;;;;15594:21;;:::i;:::-;15682:33;14840:85;781:16427;;;;15682:33;;:::i;:::-;781:16427;;;15438:291;;;781:16427;15438:291;;781:16427;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;15633:28;781:16427;;;;;;;;;;;;;15438:291;;;;;;;;;;:::i;:::-;781:16427;15415:324;;13638:67;;;:::i;:::-;13621:84;;781:16427;;;;;15633:28;781:16427;;;13845:27;781:16427;;;;;15508:27;13845;:::i;:::-;781:16427;;13874:23;;781:16427;;;15553:23;;;13874;:::i;:::-;781:16427;;13899:21;781:16427;;;;;15594:21;13899;:::i;:::-;13780:158;;;;;;;781:16427;;-1:-1:-1;;;13780:158:81;;781:16427;;;;;;;13780:158;;781:16427;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;:::i;:::-;;;;;;;;;;;13780:158;;781:16427;;;13780:158;;;;;;;;;;13720:556;;781:16427;13720:556;;781:16427;13465:13;;13780:158;781:16427;;13780:158;;;:::i;:::-;781:16427;;;;13780:158;;;13720:556;14020:27;781:16427;;;;;15508:27;14020;:::i;:::-;781:16427;14069:23;781:16427;;;;;15553:23;781:16427;;;;14069:23;:::i;:::-;14114:21;781:16427;;;;;15594:21;14114;:::i;:::-;781:16427;14210:33;14840:85;781:16427;;;;15682:33;14210;:::i;:::-;13977:284;;;;;;;781:16427;;-1:-1:-1;;;13977:284:81;;-1:-1:-1;;;;;781:16427:81;;;;13977:284;;781:16427;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;15189:92;781:16427;;;;:::i;:::-;;;;;;;;;;15633:28;781:16427;;;;;;;;;;;;;;;;;13977:284;;781:16427;;;13977:284;;;;;;;;;;13720:556;;781:16427;13720:556;;;13977:284;781:16427;;13977:284;;;:::i;:::-;781:16427;;;;13977:284;;;13480:35;;;;;;;;;;14296:53;;;;;;781:16427;;;;;14296:53;;781:16427;;;;;;14320:28;781:16427;;14296:53;;781:16427;;;;;;;;14296:53;;;;;;;;;;13460:826;781:16427;11678:47;781:16427;14401:23;781:16427;;;;;14401:23;:::i;:::-;14480:30;781:16427;;;;;;12833:30;14480;:::i;:::-;14524:27;;781:16427;;14524:27;;781:16427;14524:27;14565:25;;781:16427;;14565:25;;781:16427;14565:25;781:16427;;;15189:92;781:16427;15189:92;;781:16427;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;14320:28;781:16427;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;;15189:92;;;;;;:::i;:::-;781:16427;15179:103;;11678:47;;:::i;:::-;11476:3;781:16427;11476:3;;781:16427;11476:3;;11421:13;;14296:53;781:16427;;14296:53;;;:::i;:::-;781:16427;;;;14296:53;;;12782:82;;;781:16427;12782:82;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;781:16427;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;11436:38;;;;781:16427;11436:38;;;9930:57;11436:38;;781:16427;;;;1072:66;;;;;11819:41;781:16427;;;;;;11819:41;781:16427;;;;;12042:28;781:16427;;;14840:85;781:16427;14840:85;;781:16427;;;;;;;11177:34;781:16427;;;;;;;11294:29;781:16427;;;;;;;;;;14840:85;;;;;;:::i;:::-;781:16427;14830:96;;9930:57;;;:::i;:::-;9905:82;;781:16427;9681:13;;;;;;;781:16427;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9696:32;10063:10;9696:32;;10028:33;;781:16427;;10028:33;;781:16427;10028:33;10063:10;:::i;:::-;781:16427;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;;;4301:16:25;781:16427:81;-1:-1:-1;;;;;781:16427:81;;4726:16:25;;:34;;;;781:16427:81;4805:1:25;4790:16;:50;;;;781:16427:81;4855:13:25;:30;;;;781:16427:81;4851:91:25;;;-1:-1:-1;;781:16427:81;;4805:1:25;781:16427:81;-1:-1:-1;;;;;;;;;;;781:16427:81;6961:1:25;;781:16427:81;4979:67:25;;781:16427:81;6893:76:25;;;:::i;:::-;;;:::i;:::-;6961:1;:::i;:::-;781:16427:81;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:16427:81;2944:27;;-1:-1:-1;;781:16427:81;;;;;;;;;2925:52;781:16427;2925:52;;781:16427;;;;2925:52;;;;;;:::i;:::-;781:16427;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:81;3084:20;781:16427;;;;3084:20;781:16427;;1644:12;781:16427;1644:12;;781:16427;;;;1634:27;;1072:66;;4805:1:25;1671:13:81;;781:16427;;-1:-1:-1;;;;;;781:16427:81;;;-1:-1:-1;;;;;781:16427:81;;;;;;;1704:18;;;781:16427;;;;;;;;;;;;;;1747:18;;;781:16427;;;;;;;;;;;;;1826:4;1790:33;;;1072:66;1868:17;;;;;781:16427;;;-1:-1:-1;;;;;;781:16427:81;;;;;;1962:15;;;:::i;:::-;5066:101:25;;781:16427:81;;;;5066:101:25;781:16427:81;5142:14:25;781:16427:81;-1:-1:-1;;;781:16427:81;-1:-1:-1;;;;;;;;;;;781:16427:81;;-1:-1:-1;;;;;;;;;;;781:16427:81;;4805:1:25;781:16427:81;;5142:14:25;5066:101;;;781:16427:81;;;;;;;;;;;;;;4979:67:25;-1:-1:-1;;781:16427:81;;;-1:-1:-1;;;;;;;;;;;781:16427:81;4979:67:25;;;4851:91;6498:23;;;781:16427:81;;4908:23:25;781:16427:81;;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;781:16427:81;;;;;;-1:-1:-1;;781:16427:81;;;;2357:1:24;781:16427:81;;:::i;:::-;2303:62:24;;:::i;781:16427:81:-;;;;;;;-1:-1:-1;;781:16427:81;;;;;4918:33;-1:-1:-1;;;;;;;;;;;781:16427:81;4918:33;781:16427;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;5296:21;-1:-1:-1;;;;;;;;;;;781:16427:81;5296:21;781:16427;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;8978:12;;;;781:16427;;;;;8651:3;8618:31;;;;;;-1:-1:-1;;781:16427:81;;;;;;;8852:55;15915:20;781:16427;;;;15915:20;;;;;;:::i;:::-;781:16427;;;15879:57;;781:16427;;;;;;;;;;;;;15879:57;;;;;;:::i;8852:55::-;781:16427;;;;;;;;;;;;;;;;;;;;;;8978:53;781:16427;;9094:20;781:16427;9094:20;;:::i;:::-;;;;9246:30;781:16427;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;9157:19;781:16427;;;;;;;;9194:26;;;:28;781:16427;;9194:28;:::i;:::-;1072:66;;781:16427;;;;;9246:30;9090:322;781:16427;8603:13;;;9090:322;781:16427;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;;;;;9366:31;781:16427;;;9366:31;;9090:322;;781:16427;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;8618:31;9486:10;8618:31;;781:16427;;;;;9452:32;9486:10;:::i;781:16427::-;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;;;16446:17;;;;16332:21;;;16362:3;781:16427;;16328:32;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;-1:-1:-1;781:16427:81;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;16313:13;;16328:32;-1:-1:-1;781:16427:81;;;;;;;;-1:-1:-1;781:16427:81;;;16308:177;5857:38;781:16427;;;;;:::i;:::-;5857:38;:::i;:::-;5911:22;781:16427;;;;5911:22;781:16427;;;;;-1:-1:-1;;781:16427:81;;-1:-1:-1;;781:16427:81;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;-1:-1:-1;;;;;6110:17:81;-1:-1:-1;;;;;;;;;;;781:16427:81;6110:17;781:16427;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;5640:21;-1:-1:-1;;;;;;;;;;;781:16427:81;5640:21;781:16427;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;4382:12;-1:-1:-1;;;;;;;;;;;781:16427:81;4382:12;781:16427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;6689:38;2303:62:24;781:16427:81;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;6634:21;;781:16427;;-1:-1:-1;;781:16427:81;;;;;;;;;;;;;;6689:38;781:16427;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;4535:20;-1:-1:-1;;;;;;;;;;;781:16427:81;4535:20;781:16427;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;:::i;:::-;4703:15;-1:-1:-1;;;;;;;;;;;781:16427:81;4703:15;:24;781:16427;;;;;;-1:-1:-1;781:16427:81;;;;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;:::i;:::-;5473:17;-1:-1:-1;;;;;;;;;;;781:16427:81;5473:17;:28;781:16427;;;;;;-1:-1:-1;781:16427:81;;;;;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;3567:18;;781:16427;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;;7571:12;;;781:16427;;;;;;;;;;;;;;7595:19;7571:43;781:16427;;7699:9;;:::i;:::-;781:16427;-1:-1:-1;;;;;781:16427:81;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;7795:32;;:41;:32;;:::i;:::-;:41;:::i;:::-;781:16427;16079:18;;781:16427;;;-1:-1:-1;;;16072:73:81;;16112:9;781:16427;16072:73;;781:16427;16131:4;781:16427;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;16072:73;;;;;;;781:16427;16072:73;;;781:16427;;;;;7595:19;8078:18;;781:16427;3743:569:36;781:16427:81;;;8108:30;;781:16427;;;;;;;;;;;8108:30;;;781:16427;8108:30;;:::i;:::-;781:16427;8098:41;;3743:569:36;;;;;;;;781:16427:81;3743:569:36;;;;;;;;781:16427:81;3743:569:36;781:16427:81;;;;;3743:569:36;;7571:12:81;781:16427;3743:569:36;781:16427:81;4325:22:36;;;4321:85;;8194:20:81;8151:24;781:16427;;;8151:15;;;781:16427;;;;;;1072:66;8194:20;:22;781:16427;;8194:22;:::i;:::-;1072:66;;8232:31;781:16427;;;;;;8232:31;8274:75;;;;;781:16427;;;;;;;;;;;;;;8274:75;;16112:9;781:16427;8274:75;;781:16427;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8274:75;;;;;;;;;;;781:16427;8274:75;;;781:16427;;;;;;;;8274:75;781:16427;8274:75;;;:::i;:::-;781:16427;;;8274:75;;;;781:16427;;;;;;;;;8274:75;781:16427;;;4321:85:36;4370:25;;;781:16427:81;4370:25:36;781:16427:81;;4370:25:36;781:16427:81;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;16072:73;;;;781:16427;16072:73;781:16427;16072:73;;;;;;;:::i;:::-;;;;781:16427;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;6307:30;2303:62:24;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;6260:17;;781:16427;;-1:-1:-1;;781:16427:81;;;;;;;;;;6307:30;781:16427;;;;;;;-1:-1:-1;;781:16427:81;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;3716:18;;781:16427;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;;-1:-1:-1;;;;;;781:16427:81;;;;;;;-1:-1:-1;;;;;781:16427:81;3975:40:24;781:16427:81;;3975:40:24;781:16427:81;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;:::i;:::-;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;;;6431:44:25;;;;781:16427:81;6427:105:25;;-1:-1:-1;;781:16427:81;;;-1:-1:-1;;;;;;;;;;;781:16427:81;-1:-1:-1;;;;;;;;;;;781:16427:81;;2129:16;;781:16427;2046:1;2178:21;;781:16427;2232:21;;;781:16427;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;2298:24;;781:16427;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;2303:62:24;;:::i;:::-;781:16427:81;2944:27;;-1:-1:-1;;781:16427:81;;;;;;;;;2925:52;781:16427;2925:52;;781:16427;;;;2925:52;;;;;;:::i;:::-;781:16427;;;;2915:63;;:89;1072:66;;-1:-1:-1;;;;;;;;;;;1072:66:81;3084:20;781:16427;3084:20;;781:16427;;2469:12;781:16427;2469:12;781:16427;;;;2459:27;1072:66;;6593:4:25;2496:13:81;;781:16427;;-1:-1:-1;;;;;;781:16427:81;;;-1:-1:-1;;;;;781:16427:81;;;;;;;2046:1;2529:18;;781:16427;;;;;;;;;;;;;;2232:21;2572:18;;;781:16427;;;;;;;;;;;;;;;;6656:20:25;;781:16427:81;;-1:-1:-1;2630:15:81;;;:::i;:::-;-1:-1:-1;;;781:16427:81;-1:-1:-1;;;;;;;;;;;781:16427:81;;-1:-1:-1;;;;;;;;;;;781:16427:81;;2046:1;781:16427;;6656:20:25;781:16427:81;6427:105:25;6498:23;;;781:16427:81;6498:23:25;781:16427:81;;6498:23:25;6431:44;781:16427:81;2046:1;-1:-1:-1;;;;;781:16427:81;;6450:25:25;;6431:44;;781:16427:81;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;781:16427:81;;;;;2944:27;781:16427;;;;;;;;;;;2925:52;781:16427;2925:52;;781:16427;;;;2925:52;;;781:16427;2925:52;;:::i;:::-;781:16427;;2915:63;;-1:-1:-1;;2915:89:81;-1:-1:-1;;;;;;;;;;;1072:66:81;3084:20;781:16427;;3084:20;781:16427;;;;;;;-1:-1:-1;;781:16427:81;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;;3860:13;781:16427;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;781:16427:81;3999:13;;781:16427;;-1:-1:-1;;;;;;781:16427:81;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;3406:30;781:16427;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;;6983:15;;;;;:35;;781:16427;;;;7119:12;-1:-1:-1;;;;;;;;;;;781:16427:81;7119:12;781:16427;;;;;;;;;;;;;;;;;;;;;7292:43;781:16427;;;;;;;;;;;7247:29;781:16427;;;;;;;;;;;;;;;;;7292:43;781:16427;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;6983:35;7002:11;781:16427;7002:11;:16;;6983:35;;781:16427;;;;;;-1:-1:-1;;781:16427:81;;;;;;-1:-1:-1;;;;;6471:21:81;-1:-1:-1;;;;;;;;;;;781:16427:81;6471:21;781:16427;;;;6350:149;;781:16427;;;;;;-1:-1:-1;;781:16427:81;;;;;;4211:26;-1:-1:-1;;;;;;;;;;;781:16427:81;4211:26;781:16427;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;:::o;:::-;;;13204:80;;781:16427;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;:::o;:::-;;;;-1:-1:-1;781:16427:81;;;;;-1:-1:-1;781:16427:81;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;13204:80;781:16427;;-1:-1:-1;;781:16427:81;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;-1:-1:-1;781:16427:81;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;-1:-1:-1;781:16427:81;;;;;;;;6740:113;-1:-1:-1;;;;;;;;;;;781:16427:81;6110:17;;781:16427;-1:-1:-1;;;;;781:16427:81;;;-1:-1:-1;;;;;781:16427:81;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;6740:113;:::o;781:16427::-;;-1:-1:-1;;;;;781:16427:81;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;:::o;:::-;-1:-1:-1;;781:16427:81;;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;;;;;;;-1:-1:-1;;781:16427:81;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;4964:204::-;-1:-1:-1;;;;;;;;;;;781:16427:81;4918:33;5296:21;;;781:16427;4918:33;;781:16427;;;;;;;;;;;;;;;;5148:4;781:16427;;;;;;;5156:5;781:16427;;4964:204;:::o;3405:215:24:-;-1:-1:-1;;;;;781:16427:81;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;781:16427:81;;-1:-1:-1;;;;;;781:16427:81;;;;;;;-1:-1:-1;;;;;781:16427:81;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;781:16427:81;;3509:1:24;3534:31;2658:162;-1:-1:-1;;;;;;;;;;;781:16427:81;-1:-1:-1;;;;;781:16427:81;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;781:16427:81;;-1:-1:-1;2763:40:24;16536:442:81;-1:-1:-1;;;;;;;;;;;781:16427:81;16670:21;;;;781:16427;;;;;16759:13;;16875:17;;;-1:-1:-1;16803:3:81;781:16427;;16774:27;;;;;781:16427;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;-1:-1:-1;781:16427:81;;;;;;;;;;;;-1:-1:-1;;781:16427:81;;;;;;;;;16759:13;;16774:27;-1:-1:-1;781:16427:81;;;16774:27;-1:-1:-1;;;;;;781:16427:81;;;;;;;;;;;;;;;;;;;16754:167;781:16427;;;;-1:-1:-1;781:16427:81;;-1:-1:-1;781:16427:81;-1:-1:-1;781:16427:81;;;;;;16536:442;;;;:::o;781:16427::-;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;:::o;10123:844::-;;-1:-1:-1;;;;;;;;;;;781:16427:81;10291:21;;;:::i;:::-;781:16427;;;10391:26;;;;781:16427;;;10391:26;;;;781:16427;10391:26;;:::i;:::-;2858:45:56;781:16427:81;;;2858:45:56;;10391:26:81;2858:45:56;;781:16427:81;;;;;;10353:4;781:16427;;;;;;;;;;;;;;;-1:-1:-1;781:16427:81;;;;2858:45:56;;13204:80:81;;2858:45:56;;;;;;:::i;:::-;781:16427:81;2848:56:56;;-1:-1:-1;;10652:17:81;;;-1:-1:-1;10509:3:81;10486:21;;;;;;3915:8:55;3859:27;781:16427:81;;;;;;;;;:::i;:::-;;;;:::i;:::-;3859:27:55;;:::i;:::-;3915:8;;;;;:::i;:::-;-1:-1:-1;;;;;781:16427:81;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;;;10704:17;;;:::i;:::-;:30;;;;10700:82;;781:16427;;10471:13;;;10700:82;10758:5;;;;;;;10466:416;10900:28;781:16427;;10123:844::o;781:16427::-;;;-1:-1:-1;;;781:16427:81;;10391:26;781:16427;;;;;;;;;;;;;;;;;10648:224;781:16427;;-1:-1:-1;;;781:16427:81;;10391:26;781:16427;;;;;;;;;-1:-1:-1;;;781:16427:81;;;;;;;10486:21;;;;;;;;;;781:16427;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;:::o;7084:141:25:-;781:16427:81;-1:-1:-1;;;;;;;;;;;781:16427:81;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;12093:338:81;;781:16427;;12190:12;781:16427;12190:12;781:16427;;;;12173:230;12208:5;;;12173:230;-1:-1:-1;781:16427:81;;-1:-1:-1;12093:338:81:o;12215:3::-;12248:12;;12278:11;;;;;-1:-1:-1;12205:1:81;;-1:-1:-1;;12309:11:81:o;12274:119::-;12345:8;12341:52;;781:16427;;;;-1:-1:-1;;781:16427:81;;12178:28;;12341:52;12373:5;;781:16427;;-1:-1:-1;;;;;781:16427:81;;;;;;;:::o;:::-;;-1:-1:-1;;;;;781:16427:81;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;781:16427:81;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;;781:16427:81;;;;;;;:::o;2129:766:55:-;781:16427:81;;;2129:766:55;2276:2;2256:22;;2276:2;;2739:25;2539:180;;;;;;;;;;;;;;;-1:-1:-1;2539:180:55;2739:25;;:::i;:::-;2732:32;;;;;:::o;2252:637::-;2795:83;;2811:1;2795:83;2815:35;2795:83;;:::o;7196:532::-;781:16427:81;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;781:16427:81;7378:38:55;;781:16427:81;;7439:23:55;;;7291:20;7439:23;781:16427:81;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;781:16427:81;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;781:16427:81;;;7291:20:55;7679:32;5140:1530;;;6199:66;6186:79;;6182:164;;781:16427:81;;;;;;-1:-1:-1;781:16427:81;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;781:16427:81;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6182:164::-;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o","linkReferences":{}},"methodIdentifiers":{"baseFee()":"6ef25c3a","baseWeight()":"d3fd6364","codeState(bytes32)":"c13911e8","commitBlocks((bytes32,bytes32,bytes32,(address,bytes32,uint128,(bytes32,address,uint128)[],(bytes32,address,bytes,uint128,(bytes32,bytes4))[])[])[],bytes[])":"fa97ed6d","commitCodes((bytes32,bool)[],bytes[])":"e97d3eb3","createProgram(bytes32,bytes32,bytes,uint128)":"8074b455","genesisBlockHash()":"28e24b3d","getStorageSlot()":"96708226","initialize(address,address,address,address,address[])":"f8453e7c","lastBlockCommitmentHash()":"2dacfb69","mirror()":"444d9172","mirrorProxy()":"78ee5dec","owner()":"8da5cb5b","programCodeId(address)":"9067088e","programsCount()":"96a2ddfa","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","requestCodeValidation(bytes32,bytes32)":"1c149d8a","setBaseWeight(uint64)":"8028861a","setMirror(address)":"3d43b418","setStorageSlot(string)":"5686cad5","setValuePerWeight(uint128)":"a6bbbe1c","signingThresholdPercentage()":"efd81abc","transferOwnership(address)":"f2fde38b","updateValidators(address[])":"e71731e4","validatedCodesCount()":"007a32e7","validatorExists(address)":"8febbd59","validators()":"ca1e7819","validatorsCount()":"ed612f8c","validatorsThreshold()":"edc87225","valuePerWeight()":"0834fecc","wrappedVara()":"88f50cf0"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"baseWeight\",\"type\":\"uint64\"}],\"name\":\"BaseWeightChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"}],\"name\":\"BlockCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"CodeGotValidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"CodeValidationRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"ProgramCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"StorageSlotChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"ValidatorsSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"ValuePerWeightChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"baseFee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"baseWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"}],\"name\":\"codeState\",\"outputs\":[{\"internalType\":\"enum IRouter.CodeState\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"prevCommitmentHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"predBlockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"actorId\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"newStateHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"valueToReceive\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct IRouter.ValueClaim[]\",\"name\":\"valueClaims\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"code\",\"type\":\"bytes4\"}],\"internalType\":\"struct IRouter.ReplyDetails\",\"name\":\"replyDetails\",\"type\":\"tuple\"}],\"internalType\":\"struct IRouter.OutgoingMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.StateTransition[]\",\"name\":\"transitions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRouter.BlockCommitment[]\",\"name\":\"blockCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitBlocks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"internalType\":\"struct IRouter.CodeCommitment[]\",\"name\":\"codeCommitmentsArray\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes[]\",\"name\":\"signatures\",\"type\":\"bytes[]\"}],\"name\":\"commitCodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint128\",\"name\":\"_value\",\"type\":\"uint128\"}],\"name\":\"createProgram\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"genesisBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStorageSlot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_mirrorProxy\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wrappedVara\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_validatorsKeys\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBlockCommitmentHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirror\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mirrorProxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"program\",\"type\":\"address\"}],\"name\":\"programCodeId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"programsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"codeId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blobTxHash\",\"type\":\"bytes32\"}],\"name\":\"requestCodeValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_baseWeight\",\"type\":\"uint64\"}],\"name\":\"setBaseWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_mirror\",\"type\":\"address\"}],\"name\":\"setMirror\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"namespace\",\"type\":\"string\"}],\"name\":\"setStorageSlot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"_valuePerWeight\",\"type\":\"uint128\"}],\"name\":\"setValuePerWeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"signingThresholdPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"validatorsAddressArray\",\"type\":\"address[]\"}],\"name\":\"updateValidators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatedCodesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"validatorExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validators\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorsThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"valuePerWeight\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedVara\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"BaseWeightChanged(uint64)\":{\"details\":\"Emitted when the tx's base weight is changed. NOTE: It's event for USERS: it informs about new value of commission for each message sending. NOTE: It's event for NODES: it requires to update commission in programs execution parameters.\"},\"BlockCommitted(bytes32)\":{\"details\":\"Emitted when a new state transitions are applied. NOTE: It's event for USERS: it informs about new block outcome committed.\"},\"CodeGotValidated(bytes32,bool)\":{\"details\":\"Emitted when a code, previously requested to be validated, gets validated. NOTE: It's event for USERS: it informs about validation results of previously requested code.\"},\"CodeValidationRequested(bytes32,bytes32)\":{\"details\":\"Emitted when a new code validation request submitted. NOTE: It's event for NODES: it requires to download and validate code from blob.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"ProgramCreated(address,bytes32)\":{\"details\":\"Emitted when a new program created. NOTE: It's event for USERS: it informs about new program creation and it's availability on Ethereum. NOTE: It's event for NODES: it requires to create associated gear program in local storage.\"},\"StorageSlotChanged()\":{\"details\":\"Emitted when the storage slot is changed. NOTE: It's event for USERS: it informs about router being wiped and all programs and codes deletion. NOTE: It's event for NODES: it requires to clean the local storage.\"},\"ValidatorsSetChanged()\":{\"details\":\"Emitted when the validators set is changed. NOTE: It's event for USERS: it informs about validators rotation. NOTE: It's event for NODES: it requires to update authorities that sign outcomes.\"},\"ValuePerWeightChanged(uint128)\":{\"details\":\"Emitted when the value per executable weight is changed. NOTE: It's event for USERS: it informs about new conversion rate between weight and it's WVara price. NOTE: It's event for NODES: it requires to update conversion rate in programs execution parameters.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"programCodeId(address)\":{\"details\":\"Returns bytes32(0) in case of inexistent program.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Router.sol\":\"Router\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Clones.sol\":{\"keccak256\":\"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64\",\"dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58\",\"dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/IMirror.sol\":{\"keccak256\":\"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf\",\"dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL\"]},\"src/IRouter.sol\":{\"keccak256\":\"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde\",\"dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D\"]},\"src/IWrappedVara.sol\":{\"keccak256\":\"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f\",\"dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf\"]},\"src/Router.sol\":{\"keccak256\":\"0x5db40e2574ad57a5d159346d1e4adc1fc3df4c63097345805e89c60553a6ce4e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://951272070e69e13be0cad9d405cd47db9d239b0d9095c4c440560a679910e040\",\"dweb:/ipfs/QmWXwFjEDW7nouNJNXuLic4efxjokeCQ33irYoDyhE7k8p\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"FailedDeployment"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint64","name":"baseWeight","type":"uint64","indexed":false}],"type":"event","name":"BaseWeightChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false}],"type":"event","name":"BlockCommitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32","indexed":false},{"internalType":"bool","name":"valid","type":"bool","indexed":true}],"type":"event","name":"CodeGotValidated","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32","indexed":false}],"type":"event","name":"CodeValidationRequested","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"actorId","type":"address","indexed":false},{"internalType":"bytes32","name":"codeId","type":"bytes32","indexed":true}],"type":"event","name":"ProgramCreated","anonymous":false},{"inputs":[],"type":"event","name":"StorageSlotChanged","anonymous":false},{"inputs":[],"type":"event","name":"ValidatorsSetChanged","anonymous":false},{"inputs":[{"internalType":"uint128","name":"valuePerWeight","type":"uint128","indexed":false}],"type":"event","name":"ValuePerWeightChanged","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"baseFee","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"baseWeight","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"}],"stateMutability":"view","type":"function","name":"codeState","outputs":[{"internalType":"enum IRouter.CodeState","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct IRouter.BlockCommitment[]","name":"blockCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"blockHash","type":"bytes32"},{"internalType":"bytes32","name":"prevCommitmentHash","type":"bytes32"},{"internalType":"bytes32","name":"predBlockHash","type":"bytes32"},{"internalType":"struct IRouter.StateTransition[]","name":"transitions","type":"tuple[]","components":[{"internalType":"address","name":"actorId","type":"address"},{"internalType":"bytes32","name":"newStateHash","type":"bytes32"},{"internalType":"uint128","name":"valueToReceive","type":"uint128"},{"internalType":"struct IRouter.ValueClaim[]","name":"valueClaims","type":"tuple[]","components":[{"internalType":"bytes32","name":"messageId","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"}]},{"internalType":"struct IRouter.OutgoingMessage[]","name":"messages","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"destination","type":"address"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"struct IRouter.ReplyDetails","name":"replyDetails","type":"tuple","components":[{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"bytes4","name":"code","type":"bytes4"}]}]}]}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitBlocks"},{"inputs":[{"internalType":"struct IRouter.CodeCommitment[]","name":"codeCommitmentsArray","type":"tuple[]","components":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"bool","name":"valid","type":"bool"}]},{"internalType":"bytes[]","name":"signatures","type":"bytes[]"}],"stateMutability":"nonpayable","type":"function","name":"commitCodes"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"uint128","name":"_value","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createProgram","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"genesisBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStorageSlot","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"address","name":"_mirror","type":"address"},{"internalType":"address","name":"_mirrorProxy","type":"address"},{"internalType":"address","name":"_wrappedVara","type":"address"},{"internalType":"address[]","name":"_validatorsKeys","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastBlockCommitmentHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirror","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"mirrorProxy","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"program","type":"address"}],"stateMutability":"view","type":"function","name":"programCodeId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"programsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"codeId","type":"bytes32"},{"internalType":"bytes32","name":"blobTxHash","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"requestCodeValidation"},{"inputs":[{"internalType":"uint64","name":"_baseWeight","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setBaseWeight"},{"inputs":[{"internalType":"address","name":"_mirror","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setMirror"},{"inputs":[{"internalType":"string","name":"namespace","type":"string"}],"stateMutability":"nonpayable","type":"function","name":"setStorageSlot"},{"inputs":[{"internalType":"uint128","name":"_valuePerWeight","type":"uint128"}],"stateMutability":"nonpayable","type":"function","name":"setValuePerWeight"},{"inputs":[],"stateMutability":"view","type":"function","name":"signingThresholdPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address[]","name":"validatorsAddressArray","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"updateValidators"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatedCodesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"stateMutability":"view","type":"function","name":"validatorExists","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validators","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorsThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"valuePerWeight","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"wrappedVara","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"owner()":{"details":"Returns the address of the current owner."},"programCodeId(address)":{"details":"Returns bytes32(0) in case of inexistent program."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Router.sol":"Router"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Clones.sol":{"keccak256":"0x4cc853b89072428e406c60c6e8d5280b31f9d99d6caf7b041650e649746513a6","urls":["bzz-raw://38a1bbdb89a8f5d1820a2dcc34b5086a6e199c7a8965007345975b5db8997a64","dweb:/ipfs/QmcN6yJBkoserTqAMpue55HmMCMf7dGJYUbGi8p366HqZq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol":{"keccak256":"0x629828db7f6354641b2bc42f6f6742b07bed39959361f92b781224fd33cfb0c9","urls":["bzz-raw://a2654b69b5d9b42ad4c981875add283a06db8bd02e01c614d4f0d498860d0c58","dweb:/ipfs/QmWE3oD4Ti4UKrZTiA4cxAwprkFTpBYsLRrc62w5Lg16Q8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/IMirror.sol":{"keccak256":"0x1115363567bf631a5d6d9fc78f8da9e6a236000889ddf6dea44853531fd2c8f6","urls":["bzz-raw://a412c495586bfee3a89d34f14c0858bd914e6d5b97274bad2c867d2af81b94bf","dweb:/ipfs/QmZ2Jf3fnwW7jaWShK2PPZyAUKTbfeAT2mQCBgVVWEtKoL"],"license":"UNLICENSED"},"src/IRouter.sol":{"keccak256":"0x08b46b2bbacb2eb9e5e0fa28b4d84b458849f496d6a69d0d8b10bc871b8d36b3","urls":["bzz-raw://6baaa7b36e621e835c50eae4a41093320af7d1e6638914f08c75a1eae2517dde","dweb:/ipfs/QmdyiCEzBHnio6yqQYNY7rsu8o8myAJZMDytFqS6rkzC4D"],"license":"UNLICENSED"},"src/IWrappedVara.sol":{"keccak256":"0xfc2f9955b1d8f74a98a087b490a03b86933c423eb58b840f1e3eb4cd58eac175","urls":["bzz-raw://5942f66657786636ddb832587404810bf65fc757e12ddaa07393a0b3f885840f","dweb:/ipfs/QmTEP15EF9zrA7bCj8cesNd8QyUPHM3XgtKJecCUjsA5Jf"],"license":"UNLICENSED"},"src/Router.sol":{"keccak256":"0x5db40e2574ad57a5d159346d1e4adc1fc3df4c63097345805e89c60553a6ce4e","urls":["bzz-raw://951272070e69e13be0cad9d405cd47db9d239b0d9095c4c440560a679910e040","dweb:/ipfs/QmWXwFjEDW7nouNJNXuLic4efxjokeCQ33irYoDyhE7k8p"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/Router.sol","id":55997,"exportedSymbols":{"Clones":[41121],"ECDSA":[43387],"IERC20":[41906],"IMirror":[53636],"IRouter":[53951],"IWrappedVara":[53962],"MessageHashUtils":[43461],"OwnableUpgradeable":[39024],"ReentrancyGuardTransient":[42400],"Router":[55996],"StorageSlot":[42719]},"nodeType":"SourceUnit","src":"39:17170:81","nodes":[{"id":54379,"nodeType":"PragmaDirective","src":"39:24:81","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":54381,"nodeType":"ImportDirective","src":"65:74:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol","file":"@openzeppelin/contracts/utils/StorageSlot.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":42720,"symbolAliases":[{"foreign":{"id":54380,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"73:11:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54383,"nodeType":"ImportDirective","src":"140:101:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":54382,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"148:18:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54385,"nodeType":"ImportDirective","src":"242:64:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/Clones.sol","file":"@openzeppelin/contracts/proxy/Clones.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":41122,"symbolAliases":[{"foreign":{"id":54384,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"250:6:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54387,"nodeType":"ImportDirective","src":"307:75:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol","file":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":43388,"symbolAliases":[{"foreign":{"id":54386,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43387,"src":"315:5:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54389,"nodeType":"ImportDirective","src":"383:97:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol","file":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":43462,"symbolAliases":[{"foreign":{"id":54388,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43461,"src":"391:16:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54391,"nodeType":"ImportDirective","src":"481:100:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuardTransient.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":42401,"symbolAliases":[{"foreign":{"id":54390,"name":"ReentrancyGuardTransient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42400,"src":"489:24:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54393,"nodeType":"ImportDirective","src":"582:38:81","nodes":[],"absolutePath":"src/IRouter.sol","file":"./IRouter.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":53952,"symbolAliases":[{"foreign":{"id":54392,"name":"IRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53951,"src":"590:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54395,"nodeType":"ImportDirective","src":"621:38:81","nodes":[],"absolutePath":"src/IMirror.sol","file":"./IMirror.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":53637,"symbolAliases":[{"foreign":{"id":54394,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53636,"src":"629:7:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54397,"nodeType":"ImportDirective","src":"660:48:81","nodes":[],"absolutePath":"src/IWrappedVara.sol","file":"./IWrappedVara.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":53963,"symbolAliases":[{"foreign":{"id":54396,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53962,"src":"668:12:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54399,"nodeType":"ImportDirective","src":"709:70:81","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":55997,"sourceUnit":41907,"symbolAliases":[{"foreign":{"id":54398,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"717:6:81","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55996,"nodeType":"ContractDefinition","src":"781:16427:81","nodes":[{"id":54408,"nodeType":"UsingForDirective","src":"860:24:81","nodes":[],"global":false,"libraryName":{"id":54406,"name":"ECDSA","nameLocations":["866:5:81"],"nodeType":"IdentifierPath","referencedDeclaration":43387,"src":"866:5:81"},"typeName":{"id":54407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"876:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"id":54411,"nodeType":"UsingForDirective","src":"889:35:81","nodes":[],"global":false,"libraryName":{"id":54409,"name":"MessageHashUtils","nameLocations":["895:16:81"],"nodeType":"IdentifierPath","referencedDeclaration":43461,"src":"895:16:81"},"typeName":{"id":54410,"name":"address","nodeType":"ElementaryTypeName","src":"916:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"id":54414,"nodeType":"VariableDeclaration","src":"1032:106:81","nodes":[],"constant":true,"mutability":"constant","name":"SLOT_STORAGE","nameLocation":"1057:12:81","scope":55996,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54412,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1032:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307835633039636131623962383132376134666439663363333834616163353962363631343431653832306531373733333735336666356632653836653165303030","id":54413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1072:66:81","typeDescriptions":{"typeIdentifier":"t_rational_41630078590300661333111585883568696735413380457407274925697692750148467286016_by_1","typeString":"int_const 4163...(69 digits omitted)...6016"},"value":"0x5c09ca1b9b8127a4fd9f3c384aac59b661441e820e17733753ff5f2e86e1e000"},"visibility":"private"},{"id":54422,"nodeType":"FunctionDefinition","src":"1198:53:81","nodes":[],"body":{"id":54421,"nodeType":"Block","src":"1212:39:81","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54418,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1222:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1222:22:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54420,"nodeType":"ExpressionStatement","src":"1222:22:81"}]},"documentation":{"id":54415,"nodeType":"StructuredDocumentation","src":"1145:48:81","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":54416,"nodeType":"ParameterList","parameters":[],"src":"1209:2:81"},"returnParameters":{"id":54417,"nodeType":"ParameterList","parameters":[],"src":"1212:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54504,"nodeType":"FunctionDefinition","src":"1257:728:81","nodes":[],"body":{"id":54503,"nodeType":"Block","src":"1459:526:81","nodes":[],"statements":[{"expression":{"arguments":[{"id":54439,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54424,"src":"1484:12:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54438,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1469:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1469:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54441,"nodeType":"ExpressionStatement","src":"1469:28:81"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725631","id":54443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1523:25:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""},"value":"router.storage.RouterV1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ebe34d7458caf9bba83b85ded6e7716871c7d6d7b9aa651344a78a4d0d1eb88b","typeString":"literal_string \"router.storage.RouterV1\""}],"id":54442,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54645,"src":"1508:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:41:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54445,"nodeType":"ExpressionStatement","src":"1508:41:81"},{"assignments":[54448],"declarations":[{"constant":false,"id":54448,"mutability":"mutable","name":"router","nameLocation":"1575:6:81","nodeType":"VariableDeclaration","scope":54503,"src":"1559:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54447,"nodeType":"UserDefinedTypeName","pathNode":{"id":54446,"name":"Storage","nameLocations":["1559:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"1559:7:81"},"referencedDeclaration":53684,"src":"1559:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54451,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54449,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"1584:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"1559:38:81"},{"expression":{"id":54461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54452,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1608:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54454,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1615:16:81","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53649,"src":"1608:23:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54456,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1644:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1650:6:81","memberName":"number","nodeType":"MemberAccess","src":"1644:12:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1659:1:81","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1644:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54455,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"1634:9:81","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1608:53:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54462,"nodeType":"ExpressionStatement","src":"1608:53:81"},{"expression":{"id":54467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54463,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1671:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54465,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1678:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53651,"src":"1671:13:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54466,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54426,"src":"1687:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1671:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54468,"nodeType":"ExpressionStatement","src":"1671:23:81"},{"expression":{"id":54473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54469,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1704:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54471,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1711:11:81","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"1704:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54472,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54428,"src":"1725:12:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1704:33:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54474,"nodeType":"ExpressionStatement","src":"1704:33:81"},{"expression":{"id":54479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54475,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1747:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54477,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1754:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"1747:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54478,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54430,"src":"1768:12:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1747:33:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54480,"nodeType":"ExpressionStatement","src":"1747:33:81"},{"expression":{"id":54485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54481,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1790:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1797:26:81","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53659,"src":"1790:33:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"36363636","id":54484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1826:4:81","typeDescriptions":{"typeIdentifier":"t_rational_6666_by_1","typeString":"int_const 6666"},"value":"6666"},"src":"1790:40:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54486,"nodeType":"ExpressionStatement","src":"1790:40:81"},{"expression":{"id":54491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54487,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1868:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54489,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1875:10:81","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53661,"src":"1868:17:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"325f3530305f3030305f303030","id":54490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1888:13:81","typeDescriptions":{"typeIdentifier":"t_rational_2500000000_by_1","typeString":"int_const 2500000000"},"value":"2_500_000_000"},"src":"1868:33:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54492,"nodeType":"ExpressionStatement","src":"1868:33:81"},{"expression":{"id":54497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54493,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54448,"src":"1911:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"1918:14:81","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53663,"src":"1911:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":54496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1935:2:81","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1911:26:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54498,"nodeType":"ExpressionStatement","src":"1911:26:81"},{"expression":{"arguments":[{"id":54500,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54433,"src":"1962:15:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54499,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"1947:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1947:31:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54502,"nodeType":"ExpressionStatement","src":"1947:31:81"}]},"functionSelector":"f8453e7c","implemented":true,"kind":"function","modifiers":[{"id":54436,"kind":"modifierInvocation","modifierName":{"id":54435,"name":"initializer","nameLocations":["1447:11:81"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1447:11:81"},"nodeType":"ModifierInvocation","src":"1447:11:81"}],"name":"initialize","nameLocation":"1266:10:81","parameters":{"id":54434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54424,"mutability":"mutable","name":"initialOwner","nameLocation":"1294:12:81","nodeType":"VariableDeclaration","scope":54504,"src":"1286:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54423,"name":"address","nodeType":"ElementaryTypeName","src":"1286:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54426,"mutability":"mutable","name":"_mirror","nameLocation":"1324:7:81","nodeType":"VariableDeclaration","scope":54504,"src":"1316:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54425,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54428,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"1349:12:81","nodeType":"VariableDeclaration","scope":54504,"src":"1341:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54427,"name":"address","nodeType":"ElementaryTypeName","src":"1341:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54430,"mutability":"mutable","name":"_wrappedVara","nameLocation":"1379:12:81","nodeType":"VariableDeclaration","scope":54504,"src":"1371:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54429,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54433,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"1418:15:81","nodeType":"VariableDeclaration","scope":54504,"src":"1401:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54431,"name":"address","nodeType":"ElementaryTypeName","src":"1401:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54432,"nodeType":"ArrayTypeName","src":"1401:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1276:163:81"},"returnParameters":{"id":54437,"nodeType":"ParameterList","parameters":[],"src":"1459:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54585,"nodeType":"FunctionDefinition","src":"1991:662:81","nodes":[],"body":{"id":54584,"nodeType":"Block","src":"2049:604:81","nodes":[],"statements":[{"assignments":[54514],"declarations":[{"constant":false,"id":54514,"mutability":"mutable","name":"oldRouter","nameLocation":"2075:9:81","nodeType":"VariableDeclaration","scope":54584,"src":"2059:25:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54513,"nodeType":"UserDefinedTypeName","pathNode":{"id":54512,"name":"Storage","nameLocations":["2059:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"2059:7:81"},"referencedDeclaration":53684,"src":"2059:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54517,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54515,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"2087:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2087:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2059:41:81"},{"assignments":[54519],"declarations":[{"constant":false,"id":54519,"mutability":"mutable","name":"_mirror","nameLocation":"2119:7:81","nodeType":"VariableDeclaration","scope":54584,"src":"2111:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54518,"name":"address","nodeType":"ElementaryTypeName","src":"2111:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54522,"initialValue":{"expression":{"id":54520,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54514,"src":"2129:9:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54521,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2139:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53651,"src":"2129:16:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2111:34:81"},{"assignments":[54524],"declarations":[{"constant":false,"id":54524,"mutability":"mutable","name":"_mirrorProxy","nameLocation":"2163:12:81","nodeType":"VariableDeclaration","scope":54584,"src":"2155:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54523,"name":"address","nodeType":"ElementaryTypeName","src":"2155:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54527,"initialValue":{"expression":{"id":54525,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54514,"src":"2178:9:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2188:11:81","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"2178:21:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2155:44:81"},{"assignments":[54529],"declarations":[{"constant":false,"id":54529,"mutability":"mutable","name":"_wrappedVara","nameLocation":"2217:12:81","nodeType":"VariableDeclaration","scope":54584,"src":"2209:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54528,"name":"address","nodeType":"ElementaryTypeName","src":"2209:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54532,"initialValue":{"expression":{"id":54530,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54514,"src":"2232:9:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2242:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"2232:21:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2209:44:81"},{"assignments":[54537],"declarations":[{"constant":false,"id":54537,"mutability":"mutable","name":"_validatorsKeys","nameLocation":"2280:15:81","nodeType":"VariableDeclaration","scope":54584,"src":"2263:32:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54535,"name":"address","nodeType":"ElementaryTypeName","src":"2263:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54536,"nodeType":"ArrayTypeName","src":"2263:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54540,"initialValue":{"expression":{"id":54538,"name":"oldRouter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54514,"src":"2298:9:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2308:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"2298:24:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"2263:59:81"},{"expression":{"arguments":[{"hexValue":"726f757465722e73746f726167652e526f757465725632","id":54542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2348:25:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""},"value":"router.storage.RouterV2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_07554b5a957f065078e703cffe06326f3995e4f57feb37a649312406c8f4f44a","typeString":"literal_string \"router.storage.RouterV2\""}],"id":54541,"name":"setStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54645,"src":"2333:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":54543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2333:41:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54544,"nodeType":"ExpressionStatement","src":"2333:41:81"},{"assignments":[54547],"declarations":[{"constant":false,"id":54547,"mutability":"mutable","name":"router","nameLocation":"2400:6:81","nodeType":"VariableDeclaration","scope":54584,"src":"2384:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54546,"nodeType":"UserDefinedTypeName","pathNode":{"id":54545,"name":"Storage","nameLocations":["2384:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"2384:7:81"},"referencedDeclaration":53684,"src":"2384:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54550,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54548,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"2409:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2409:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"2384:38:81"},{"expression":{"id":54560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54551,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54547,"src":"2433:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54553,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2440:16:81","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53649,"src":"2433:23:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":54555,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2469:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":54556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2475:6:81","memberName":"number","nodeType":"MemberAccess","src":"2469:12:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2484:1:81","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2469:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54554,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"2459:9:81","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":54559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2459:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2433:53:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54561,"nodeType":"ExpressionStatement","src":"2433:53:81"},{"expression":{"id":54566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54562,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54547,"src":"2496:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54564,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2503:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53651,"src":"2496:13:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54565,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54519,"src":"2512:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2496:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54567,"nodeType":"ExpressionStatement","src":"2496:23:81"},{"expression":{"id":54572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54568,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54547,"src":"2529:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2536:11:81","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"2529:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54571,"name":"_mirrorProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54524,"src":"2550:12:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2529:33:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54573,"nodeType":"ExpressionStatement","src":"2529:33:81"},{"expression":{"id":54578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54574,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54547,"src":"2572:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54576,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"2579:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"2572:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54577,"name":"_wrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54529,"src":"2593:12:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2572:33:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54579,"nodeType":"ExpressionStatement","src":"2572:33:81"},{"expression":{"arguments":[{"id":54581,"name":"_validatorsKeys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54537,"src":"2630:15:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"id":54580,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"2615:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2615:31:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54583,"nodeType":"ExpressionStatement","src":"2615:31:81"}]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":54507,"kind":"modifierInvocation","modifierName":{"id":54506,"name":"onlyOwner","nameLocations":["2022:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2022:9:81"},"nodeType":"ModifierInvocation","src":"2022:9:81"},{"arguments":[{"hexValue":"32","id":54509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2046:1:81","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":54510,"kind":"modifierInvocation","modifierName":{"id":54508,"name":"reinitializer","nameLocations":["2032:13:81"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"2032:13:81"},"nodeType":"ModifierInvocation","src":"2032:16:81"}],"name":"reinitialize","nameLocation":"2000:12:81","parameters":{"id":54505,"nodeType":"ParameterList","parameters":[],"src":"2012:2:81"},"returnParameters":{"id":54511,"nodeType":"ParameterList","parameters":[],"src":"2049:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54597,"nodeType":"FunctionDefinition","src":"2692:126:81","nodes":[],"body":{"id":54596,"nodeType":"Block","src":"2748:70:81","nodes":[],"statements":[{"expression":{"expression":{"arguments":[{"id":54592,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54414,"src":"2792:12:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54590,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"2765:11:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2777:14:81","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"2765:26:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2765:40:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2806:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"2765:46:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54589,"id":54595,"nodeType":"Return","src":"2758:53:81"}]},"baseFunctions":[53790],"functionSelector":"96708226","implemented":true,"kind":"function","modifiers":[],"name":"getStorageSlot","nameLocation":"2701:14:81","parameters":{"id":54586,"nodeType":"ParameterList","parameters":[],"src":"2715:2:81"},"returnParameters":{"id":54589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54588,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54597,"src":"2739:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2739:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2738:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54645,"nodeType":"FunctionDefinition","src":"2824:287:81","nodes":[],"body":{"id":54644,"nodeType":"Block","src":"2890:221:81","nodes":[],"statements":[{"assignments":[54605],"declarations":[{"constant":false,"id":54605,"mutability":"mutable","name":"slot","nameLocation":"2908:4:81","nodeType":"VariableDeclaration","scope":54644,"src":"2900:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2900:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":54631,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":54630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":54614,"name":"namespace","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54599,"src":"2960:9:81","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":54613,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2954:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":54612,"name":"bytes","nodeType":"ElementaryTypeName","src":"2954:5:81","typeDescriptions":{}}},"id":54615,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2954:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54611,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2944:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2944:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2936:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54609,"name":"uint256","nodeType":"ElementaryTypeName","src":"2936:7:81","typeDescriptions":{}}},"id":54617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2936:36:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":54618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2975:1:81","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2936:40:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":54607,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2925:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":54608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2929:6:81","memberName":"encode","nodeType":"MemberAccess","src":"2925:10:81","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":54620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2925:52:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":54606,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2915:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2915:63:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":54629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"2981:23:81","subExpression":{"arguments":[{"arguments":[{"hexValue":"30786666","id":54626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2998:4:81","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"}],"id":54625,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2990:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":54624,"name":"uint256","nodeType":"ElementaryTypeName","src":"2990:7:81","typeDescriptions":{}}},"id":54627,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2990:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54623,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2982:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":54622,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2982:7:81","typeDescriptions":{}}},"id":54628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2982:22:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"2915:89:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2900:104:81"},{"expression":{"id":54639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":54635,"name":"SLOT_STORAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54414,"src":"3042:12:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":54632,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42719,"src":"3015:11:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$42719_$","typeString":"type(library StorageSlot)"}},"id":54634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3027:14:81","memberName":"getBytes32Slot","nodeType":"MemberAccess","referencedDeclaration":42457,"src":"3015:26:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$returns$_t_struct$_Bytes32Slot_$42412_storage_ptr_$","typeString":"function (bytes32) pure returns (struct StorageSlot.Bytes32Slot storage pointer)"}},"id":54636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3015:40:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Bytes32Slot_$42412_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot storage pointer"}},"id":54637,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3056:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":42411,"src":"3015:46:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54638,"name":"slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54605,"src":"3064:4:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3015:53:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":54640,"nodeType":"ExpressionStatement","src":"3015:53:81"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54641,"name":"StorageSlotChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53775,"src":"3084:18:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3084:20:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54643,"nodeType":"EmitStatement","src":"3079:25:81"}]},"baseFunctions":[53795],"functionSelector":"5686cad5","implemented":true,"kind":"function","modifiers":[{"id":54602,"kind":"modifierInvocation","modifierName":{"id":54601,"name":"onlyOwner","nameLocations":["2880:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"2880:9:81"},"nodeType":"ModifierInvocation","src":"2880:9:81"}],"name":"setStorageSlot","nameLocation":"2833:14:81","parameters":{"id":54600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54599,"mutability":"mutable","name":"namespace","nameLocation":"2862:9:81","nodeType":"VariableDeclaration","scope":54645,"src":"2848:23:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":54598,"name":"string","nodeType":"ElementaryTypeName","src":"2848:6:81","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2847:25:81"},"returnParameters":{"id":54603,"nodeType":"ParameterList","parameters":[],"src":"2890:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54660,"nodeType":"FunctionDefinition","src":"3117:153:81","nodes":[],"body":{"id":54659,"nodeType":"Block","src":"3175:95:81","nodes":[],"statements":[{"assignments":[54652],"declarations":[{"constant":false,"id":54652,"mutability":"mutable","name":"router","nameLocation":"3201:6:81","nodeType":"VariableDeclaration","scope":54659,"src":"3185:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54651,"nodeType":"UserDefinedTypeName","pathNode":{"id":54650,"name":"Storage","nameLocations":["3185:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3185:7:81"},"referencedDeclaration":53684,"src":"3185:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54655,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54653,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3210:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3210:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3185:38:81"},{"expression":{"expression":{"id":54656,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54652,"src":"3240:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54657,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3247:16:81","memberName":"genesisBlockHash","nodeType":"MemberAccess","referencedDeclaration":53649,"src":"3240:23:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54649,"id":54658,"nodeType":"Return","src":"3233:30:81"}]},"baseFunctions":[53800],"functionSelector":"28e24b3d","implemented":true,"kind":"function","modifiers":[],"name":"genesisBlockHash","nameLocation":"3126:16:81","parameters":{"id":54646,"nodeType":"ParameterList","parameters":[],"src":"3142:2:81"},"returnParameters":{"id":54649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54648,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54660,"src":"3166:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54647,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3166:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3165:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54675,"nodeType":"FunctionDefinition","src":"3276:167:81","nodes":[],"body":{"id":54674,"nodeType":"Block","src":"3341:102:81","nodes":[],"statements":[{"assignments":[54667],"declarations":[{"constant":false,"id":54667,"mutability":"mutable","name":"router","nameLocation":"3367:6:81","nodeType":"VariableDeclaration","scope":54674,"src":"3351:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54666,"nodeType":"UserDefinedTypeName","pathNode":{"id":54665,"name":"Storage","nameLocations":["3351:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3351:7:81"},"referencedDeclaration":53684,"src":"3351:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54670,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54668,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3376:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3376:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3351:38:81"},{"expression":{"expression":{"id":54671,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54667,"src":"3406:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54672,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3413:23:81","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53657,"src":"3406:30:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54664,"id":54673,"nodeType":"Return","src":"3399:37:81"}]},"baseFunctions":[53805],"functionSelector":"2dacfb69","implemented":true,"kind":"function","modifiers":[],"name":"lastBlockCommitmentHash","nameLocation":"3285:23:81","parameters":{"id":54661,"nodeType":"ParameterList","parameters":[],"src":"3308:2:81"},"returnParameters":{"id":54664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54663,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54675,"src":"3332:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54662,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3332:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3331:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54690,"nodeType":"FunctionDefinition","src":"3449:143:81","nodes":[],"body":{"id":54689,"nodeType":"Block","src":"3502:90:81","nodes":[],"statements":[{"assignments":[54682],"declarations":[{"constant":false,"id":54682,"mutability":"mutable","name":"router","nameLocation":"3528:6:81","nodeType":"VariableDeclaration","scope":54689,"src":"3512:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54681,"nodeType":"UserDefinedTypeName","pathNode":{"id":54680,"name":"Storage","nameLocations":["3512:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3512:7:81"},"referencedDeclaration":53684,"src":"3512:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54685,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54683,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3537:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3537:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3512:38:81"},{"expression":{"expression":{"id":54686,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54682,"src":"3567:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54687,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3574:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"3567:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54679,"id":54688,"nodeType":"Return","src":"3560:25:81"}]},"baseFunctions":[53810],"functionSelector":"88f50cf0","implemented":true,"kind":"function","modifiers":[],"name":"wrappedVara","nameLocation":"3458:11:81","parameters":{"id":54676,"nodeType":"ParameterList","parameters":[],"src":"3469:2:81"},"returnParameters":{"id":54679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54678,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54690,"src":"3493:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54677,"name":"address","nodeType":"ElementaryTypeName","src":"3493:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3492:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54705,"nodeType":"FunctionDefinition","src":"3598:143:81","nodes":[],"body":{"id":54704,"nodeType":"Block","src":"3651:90:81","nodes":[],"statements":[{"assignments":[54697],"declarations":[{"constant":false,"id":54697,"mutability":"mutable","name":"router","nameLocation":"3677:6:81","nodeType":"VariableDeclaration","scope":54704,"src":"3661:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54696,"nodeType":"UserDefinedTypeName","pathNode":{"id":54695,"name":"Storage","nameLocations":["3661:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3661:7:81"},"referencedDeclaration":53684,"src":"3661:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54700,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54698,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3686:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3661:38:81"},{"expression":{"expression":{"id":54701,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54697,"src":"3716:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54702,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3723:11:81","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"3716:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54694,"id":54703,"nodeType":"Return","src":"3709:25:81"}]},"baseFunctions":[53815],"functionSelector":"78ee5dec","implemented":true,"kind":"function","modifiers":[],"name":"mirrorProxy","nameLocation":"3607:11:81","parameters":{"id":54691,"nodeType":"ParameterList","parameters":[],"src":"3618:2:81"},"returnParameters":{"id":54694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54693,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54705,"src":"3642:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54692,"name":"address","nodeType":"ElementaryTypeName","src":"3642:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3641:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54720,"nodeType":"FunctionDefinition","src":"3747:133:81","nodes":[],"body":{"id":54719,"nodeType":"Block","src":"3795:85:81","nodes":[],"statements":[{"assignments":[54712],"declarations":[{"constant":false,"id":54712,"mutability":"mutable","name":"router","nameLocation":"3821:6:81","nodeType":"VariableDeclaration","scope":54719,"src":"3805:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54711,"nodeType":"UserDefinedTypeName","pathNode":{"id":54710,"name":"Storage","nameLocations":["3805:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3805:7:81"},"referencedDeclaration":53684,"src":"3805:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54715,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54713,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3830:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54714,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3830:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3805:38:81"},{"expression":{"expression":{"id":54716,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54712,"src":"3860:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54717,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3867:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53651,"src":"3860:13:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":54709,"id":54718,"nodeType":"Return","src":"3853:20:81"}]},"baseFunctions":[53820],"functionSelector":"444d9172","implemented":true,"kind":"function","modifiers":[],"name":"mirror","nameLocation":"3756:6:81","parameters":{"id":54706,"nodeType":"ParameterList","parameters":[],"src":"3762:2:81"},"returnParameters":{"id":54709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54720,"src":"3786:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54707,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3785:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54740,"nodeType":"FunctionDefinition","src":"3886:143:81","nodes":[],"body":{"id":54739,"nodeType":"Block","src":"3941:88:81","nodes":[],"statements":[{"assignments":[54729],"declarations":[{"constant":false,"id":54729,"mutability":"mutable","name":"router","nameLocation":"3967:6:81","nodeType":"VariableDeclaration","scope":54739,"src":"3951:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54728,"nodeType":"UserDefinedTypeName","pathNode":{"id":54727,"name":"Storage","nameLocations":["3951:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"3951:7:81"},"referencedDeclaration":53684,"src":"3951:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54732,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54730,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"3976:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3976:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"3951:38:81"},{"expression":{"id":54737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54733,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54729,"src":"3999:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"4006:6:81","memberName":"mirror","nodeType":"MemberAccess","referencedDeclaration":53651,"src":"3999:13:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54736,"name":"_mirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54722,"src":"4015:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3999:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54738,"nodeType":"ExpressionStatement","src":"3999:23:81"}]},"baseFunctions":[53825],"functionSelector":"3d43b418","implemented":true,"kind":"function","modifiers":[{"id":54725,"kind":"modifierInvocation","modifierName":{"id":54724,"name":"onlyOwner","nameLocations":["3931:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"3931:9:81"},"nodeType":"ModifierInvocation","src":"3931:9:81"}],"name":"setMirror","nameLocation":"3895:9:81","parameters":{"id":54723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54722,"mutability":"mutable","name":"_mirror","nameLocation":"3913:7:81","nodeType":"VariableDeclaration","scope":54740,"src":"3905:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54721,"name":"address","nodeType":"ElementaryTypeName","src":"3905:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3904:17:81"},"returnParameters":{"id":54726,"nodeType":"ParameterList","parameters":[],"src":"3941:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54755,"nodeType":"FunctionDefinition","src":"4085:159:81","nodes":[],"body":{"id":54754,"nodeType":"Block","src":"4146:98:81","nodes":[],"statements":[{"assignments":[54747],"declarations":[{"constant":false,"id":54747,"mutability":"mutable","name":"router","nameLocation":"4172:6:81","nodeType":"VariableDeclaration","scope":54754,"src":"4156:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54746,"nodeType":"UserDefinedTypeName","pathNode":{"id":54745,"name":"Storage","nameLocations":["4156:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"4156:7:81"},"referencedDeclaration":53684,"src":"4156:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54750,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54748,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"4181:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4181:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4156:38:81"},{"expression":{"expression":{"id":54751,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54747,"src":"4211:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54752,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4218:19:81","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53677,"src":"4211:26:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54744,"id":54753,"nodeType":"Return","src":"4204:33:81"}]},"baseFunctions":[53830],"functionSelector":"007a32e7","implemented":true,"kind":"function","modifiers":[],"name":"validatedCodesCount","nameLocation":"4094:19:81","parameters":{"id":54741,"nodeType":"ParameterList","parameters":[],"src":"4113:2:81"},"returnParameters":{"id":54744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54743,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54755,"src":"4137:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54742,"name":"uint256","nodeType":"ElementaryTypeName","src":"4137:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4136:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54775,"nodeType":"FunctionDefinition","src":"4250:159:81","nodes":[],"body":{"id":54774,"nodeType":"Block","src":"4317:92:81","nodes":[],"statements":[{"assignments":[54765],"declarations":[{"constant":false,"id":54765,"mutability":"mutable","name":"router","nameLocation":"4343:6:81","nodeType":"VariableDeclaration","scope":54774,"src":"4327:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54764,"nodeType":"UserDefinedTypeName","pathNode":{"id":54763,"name":"Storage","nameLocations":["4327:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"4327:7:81"},"referencedDeclaration":53684,"src":"4327:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54768,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54766,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"4352:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4352:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4327:38:81"},{"expression":{"baseExpression":{"expression":{"id":54769,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54765,"src":"4382:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4389:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"4382:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":54772,"indexExpression":{"id":54771,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54757,"src":"4395:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4382:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"functionReturnParameters":54762,"id":54773,"nodeType":"Return","src":"4375:27:81"}]},"baseFunctions":[53838],"functionSelector":"c13911e8","implemented":true,"kind":"function","modifiers":[],"name":"codeState","nameLocation":"4259:9:81","parameters":{"id":54758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54757,"mutability":"mutable","name":"codeId","nameLocation":"4277:6:81","nodeType":"VariableDeclaration","scope":54775,"src":"4269:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54756,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4269:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4268:16:81"},"returnParameters":{"id":54762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54761,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54775,"src":"4306:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"},"typeName":{"id":54760,"nodeType":"UserDefinedTypeName","pathNode":{"id":54759,"name":"CodeState","nameLocations":["4306:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":53688,"src":"4306:9:81"},"referencedDeclaration":53688,"src":"4306:9:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"visibility":"internal"}],"src":"4305:11:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54790,"nodeType":"FunctionDefinition","src":"4415:147:81","nodes":[],"body":{"id":54789,"nodeType":"Block","src":"4470:92:81","nodes":[],"statements":[{"assignments":[54782],"declarations":[{"constant":false,"id":54782,"mutability":"mutable","name":"router","nameLocation":"4496:6:81","nodeType":"VariableDeclaration","scope":54789,"src":"4480:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54781,"nodeType":"UserDefinedTypeName","pathNode":{"id":54780,"name":"Storage","nameLocations":["4480:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"4480:7:81"},"referencedDeclaration":53684,"src":"4480:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54785,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54783,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"4505:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4505:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4480:38:81"},{"expression":{"expression":{"id":54786,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54782,"src":"4535:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54787,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4542:13:81","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53683,"src":"4535:20:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54779,"id":54788,"nodeType":"Return","src":"4528:27:81"}]},"baseFunctions":[53843],"functionSelector":"96a2ddfa","implemented":true,"kind":"function","modifiers":[],"name":"programsCount","nameLocation":"4424:13:81","parameters":{"id":54776,"nodeType":"ParameterList","parameters":[],"src":"4437:2:81"},"returnParameters":{"id":54779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54778,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54790,"src":"4461:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54777,"name":"uint256","nodeType":"ElementaryTypeName","src":"4461:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4460:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54809,"nodeType":"FunctionDefinition","src":"4568:166:81","nodes":[],"body":{"id":54808,"nodeType":"Block","src":"4638:96:81","nodes":[],"statements":[{"assignments":[54799],"declarations":[{"constant":false,"id":54799,"mutability":"mutable","name":"router","nameLocation":"4664:6:81","nodeType":"VariableDeclaration","scope":54808,"src":"4648:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54798,"nodeType":"UserDefinedTypeName","pathNode":{"id":54797,"name":"Storage","nameLocations":["4648:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"4648:7:81"},"referencedDeclaration":53684,"src":"4648:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54802,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54800,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"4673:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4673:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4648:38:81"},{"expression":{"baseExpression":{"expression":{"id":54803,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54799,"src":"4703:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4710:8:81","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53681,"src":"4703:15:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":54806,"indexExpression":{"id":54805,"name":"program","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54792,"src":"4719:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4703:24:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":54796,"id":54807,"nodeType":"Return","src":"4696:31:81"}]},"baseFunctions":[53851],"functionSelector":"9067088e","implemented":true,"kind":"function","modifiers":[],"name":"programCodeId","nameLocation":"4577:13:81","parameters":{"id":54793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54792,"mutability":"mutable","name":"program","nameLocation":"4599:7:81","nodeType":"VariableDeclaration","scope":54809,"src":"4591:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54791,"name":"address","nodeType":"ElementaryTypeName","src":"4591:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4590:17:81"},"returnParameters":{"id":54796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54795,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54809,"src":"4629:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54794,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4629:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4628:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54824,"nodeType":"FunctionDefinition","src":"4785:173:81","nodes":[],"body":{"id":54823,"nodeType":"Block","src":"4853:105:81","nodes":[],"statements":[{"assignments":[54816],"declarations":[{"constant":false,"id":54816,"mutability":"mutable","name":"router","nameLocation":"4879:6:81","nodeType":"VariableDeclaration","scope":54823,"src":"4863:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54815,"nodeType":"UserDefinedTypeName","pathNode":{"id":54814,"name":"Storage","nameLocations":["4863:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"4863:7:81"},"referencedDeclaration":53684,"src":"4863:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54819,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54817,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"4888:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4888:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"4863:38:81"},{"expression":{"expression":{"id":54820,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54816,"src":"4918:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54821,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4925:26:81","memberName":"signingThresholdPercentage","nodeType":"MemberAccess","referencedDeclaration":53659,"src":"4918:33:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54813,"id":54822,"nodeType":"Return","src":"4911:40:81"}]},"baseFunctions":[53856],"functionSelector":"efd81abc","implemented":true,"kind":"function","modifiers":[],"name":"signingThresholdPercentage","nameLocation":"4794:26:81","parameters":{"id":54810,"nodeType":"ParameterList","parameters":[],"src":"4820:2:81"},"returnParameters":{"id":54813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54812,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54824,"src":"4844:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54811,"name":"uint256","nodeType":"ElementaryTypeName","src":"4844:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4843:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54841,"nodeType":"FunctionDefinition","src":"4964:204:81","nodes":[],"body":{"id":54840,"nodeType":"Block","src":"5025:143:81","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54829,"name":"validatorsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54857,"src":"5097:15:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5097:17:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54831,"name":"signingThresholdPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54824,"src":"5117:26:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54832,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5117:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5097:48:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"39393939","id":54834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5148:4:81","typeDescriptions":{"typeIdentifier":"t_rational_9999_by_1","typeString":"int_const 9999"},"value":"9999"},"src":"5097:55:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":54836,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5096:57:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":54837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5156:5:81","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"5096:65:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54828,"id":54839,"nodeType":"Return","src":"5089:72:81"}]},"baseFunctions":[53861],"functionSelector":"edc87225","implemented":true,"kind":"function","modifiers":[],"name":"validatorsThreshold","nameLocation":"4973:19:81","parameters":{"id":54825,"nodeType":"ParameterList","parameters":[],"src":"4992:2:81"},"returnParameters":{"id":54828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54827,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54841,"src":"5016:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54826,"name":"uint256","nodeType":"ElementaryTypeName","src":"5016:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5015:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54857,"nodeType":"FunctionDefinition","src":"5174:157:81","nodes":[],"body":{"id":54856,"nodeType":"Block","src":"5231:100:81","nodes":[],"statements":[{"assignments":[54848],"declarations":[{"constant":false,"id":54848,"mutability":"mutable","name":"router","nameLocation":"5257:6:81","nodeType":"VariableDeclaration","scope":54856,"src":"5241:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54847,"nodeType":"UserDefinedTypeName","pathNode":{"id":54846,"name":"Storage","nameLocations":["5241:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"5241:7:81"},"referencedDeclaration":53684,"src":"5241:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54851,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54849,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"5266:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5266:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5241:38:81"},{"expression":{"expression":{"expression":{"id":54852,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54848,"src":"5296:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54853,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5303:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"5296:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":54854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5318:6:81","memberName":"length","nodeType":"MemberAccess","src":"5296:28:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54845,"id":54855,"nodeType":"Return","src":"5289:35:81"}]},"baseFunctions":[53866],"functionSelector":"ed612f8c","implemented":true,"kind":"function","modifiers":[],"name":"validatorsCount","nameLocation":"5183:15:81","parameters":{"id":54842,"nodeType":"ParameterList","parameters":[],"src":"5198:2:81"},"returnParameters":{"id":54845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54857,"src":"5222:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54843,"name":"uint256","nodeType":"ElementaryTypeName","src":"5222:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5221:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54876,"nodeType":"FunctionDefinition","src":"5337:171:81","nodes":[],"body":{"id":54875,"nodeType":"Block","src":"5408:100:81","nodes":[],"statements":[{"assignments":[54866],"declarations":[{"constant":false,"id":54866,"mutability":"mutable","name":"router","nameLocation":"5434:6:81","nodeType":"VariableDeclaration","scope":54875,"src":"5418:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54865,"nodeType":"UserDefinedTypeName","pathNode":{"id":54864,"name":"Storage","nameLocations":["5418:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"5418:7:81"},"referencedDeclaration":53684,"src":"5418:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54869,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54867,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"5443:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5443:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5418:38:81"},{"expression":{"baseExpression":{"expression":{"id":54870,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54866,"src":"5473:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54871,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5480:10:81","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53667,"src":"5473:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":54873,"indexExpression":{"id":54872,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54859,"src":"5491:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5473:28:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":54863,"id":54874,"nodeType":"Return","src":"5466:35:81"}]},"baseFunctions":[53873],"functionSelector":"8febbd59","implemented":true,"kind":"function","modifiers":[],"name":"validatorExists","nameLocation":"5346:15:81","parameters":{"id":54860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54859,"mutability":"mutable","name":"validator","nameLocation":"5370:9:81","nodeType":"VariableDeclaration","scope":54876,"src":"5362:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54858,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5361:19:81"},"returnParameters":{"id":54863,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54862,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54876,"src":"5402:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54861,"name":"bool","nodeType":"ElementaryTypeName","src":"5402:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5401:6:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54892,"nodeType":"FunctionDefinition","src":"5514:154:81","nodes":[],"body":{"id":54891,"nodeType":"Block","src":"5575:93:81","nodes":[],"statements":[{"assignments":[54884],"declarations":[{"constant":false,"id":54884,"mutability":"mutable","name":"router","nameLocation":"5601:6:81","nodeType":"VariableDeclaration","scope":54891,"src":"5585:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54883,"nodeType":"UserDefinedTypeName","pathNode":{"id":54882,"name":"Storage","nameLocations":["5585:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"5585:7:81"},"referencedDeclaration":53684,"src":"5585:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54887,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54885,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"5610:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5610:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5585:38:81"},{"expression":{"expression":{"id":54888,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54884,"src":"5640:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54889,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5647:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"5640:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"functionReturnParameters":54881,"id":54890,"nodeType":"Return","src":"5633:28:81"}]},"baseFunctions":[53879],"functionSelector":"ca1e7819","implemented":true,"kind":"function","modifiers":[],"name":"validators","nameLocation":"5523:10:81","parameters":{"id":54877,"nodeType":"ParameterList","parameters":[],"src":"5533:2:81"},"returnParameters":{"id":54881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54880,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54892,"src":"5557:16:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54878,"name":"address","nodeType":"ElementaryTypeName","src":"5557:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54879,"nodeType":"ArrayTypeName","src":"5557:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5556:18:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54911,"nodeType":"FunctionDefinition","src":"5731:209:81","nodes":[],"body":{"id":54910,"nodeType":"Block","src":"5819:121:81","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54900,"name":"_cleanValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55927,"src":"5829:16:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:18:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54902,"nodeType":"ExpressionStatement","src":"5829:18:81"},{"expression":{"arguments":[{"id":54904,"name":"validatorsAddressArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54895,"src":"5872:22:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"id":54903,"name":"_setValidators","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55982,"src":"5857:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (address[] memory)"}},"id":54905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54906,"nodeType":"ExpressionStatement","src":"5857:38:81"},{"eventCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54907,"name":"ValidatorsSetChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53772,"src":"5911:20:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5911:22:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54909,"nodeType":"EmitStatement","src":"5906:27:81"}]},"baseFunctions":[53885],"functionSelector":"e71731e4","implemented":true,"kind":"function","modifiers":[{"id":54898,"kind":"modifierInvocation","modifierName":{"id":54897,"name":"onlyOwner","nameLocations":["5809:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"5809:9:81"},"nodeType":"ModifierInvocation","src":"5809:9:81"}],"name":"updateValidators","nameLocation":"5740:16:81","parameters":{"id":54896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54895,"mutability":"mutable","name":"validatorsAddressArray","nameLocation":"5776:22:81","nodeType":"VariableDeclaration","scope":54911,"src":"5757:41:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54893,"name":"address","nodeType":"ElementaryTypeName","src":"5757:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54894,"nodeType":"ArrayTypeName","src":"5757:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"5756:43:81"},"returnParameters":{"id":54899,"nodeType":"ParameterList","parameters":[],"src":"5819:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54926,"nodeType":"FunctionDefinition","src":"5994:140:81","nodes":[],"body":{"id":54925,"nodeType":"Block","src":"6045:89:81","nodes":[],"statements":[{"assignments":[54918],"declarations":[{"constant":false,"id":54918,"mutability":"mutable","name":"router","nameLocation":"6071:6:81","nodeType":"VariableDeclaration","scope":54925,"src":"6055:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54917,"nodeType":"UserDefinedTypeName","pathNode":{"id":54916,"name":"Storage","nameLocations":["6055:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"6055:7:81"},"referencedDeclaration":53684,"src":"6055:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54921,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54919,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"6080:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6080:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6055:38:81"},{"expression":{"expression":{"id":54922,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54918,"src":"6110:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6117:10:81","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53661,"src":"6110:17:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":54915,"id":54924,"nodeType":"Return","src":"6103:24:81"}]},"baseFunctions":[53890],"functionSelector":"d3fd6364","implemented":true,"kind":"function","modifiers":[],"name":"baseWeight","nameLocation":"6003:10:81","parameters":{"id":54912,"nodeType":"ParameterList","parameters":[],"src":"6013:2:81"},"returnParameters":{"id":54915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54926,"src":"6037:6:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":54913,"name":"uint64","nodeType":"ElementaryTypeName","src":"6037:6:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6036:8:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54950,"nodeType":"FunctionDefinition","src":"6140:204:81","nodes":[],"body":{"id":54949,"nodeType":"Block","src":"6202:142:81","nodes":[],"statements":[{"assignments":[54935],"declarations":[{"constant":false,"id":54935,"mutability":"mutable","name":"router","nameLocation":"6228:6:81","nodeType":"VariableDeclaration","scope":54949,"src":"6212:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54934,"nodeType":"UserDefinedTypeName","pathNode":{"id":54933,"name":"Storage","nameLocations":["6212:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"6212:7:81"},"referencedDeclaration":53684,"src":"6212:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54938,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54936,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"6237:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6237:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6212:38:81"},{"expression":{"id":54943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54939,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54935,"src":"6260:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6267:10:81","memberName":"baseWeight","nodeType":"MemberAccess","referencedDeclaration":53661,"src":"6260:17:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54942,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54928,"src":"6280:11:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"6260:31:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"id":54944,"nodeType":"ExpressionStatement","src":"6260:31:81"},{"eventCall":{"arguments":[{"id":54946,"name":"_baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54928,"src":"6325:11:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":54945,"name":"BaseWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53780,"src":"6307:17:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint64_$returns$__$","typeString":"function (uint64)"}},"id":54947,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6307:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54948,"nodeType":"EmitStatement","src":"6302:35:81"}]},"baseFunctions":[53895],"functionSelector":"8028861a","implemented":true,"kind":"function","modifiers":[{"id":54931,"kind":"modifierInvocation","modifierName":{"id":54930,"name":"onlyOwner","nameLocations":["6192:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6192:9:81"},"nodeType":"ModifierInvocation","src":"6192:9:81"}],"name":"setBaseWeight","nameLocation":"6149:13:81","parameters":{"id":54929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54928,"mutability":"mutable","name":"_baseWeight","nameLocation":"6170:11:81","nodeType":"VariableDeclaration","scope":54950,"src":"6163:18:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":54927,"name":"uint64","nodeType":"ElementaryTypeName","src":"6163:6:81","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"6162:20:81"},"returnParameters":{"id":54932,"nodeType":"ParameterList","parameters":[],"src":"6202:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":54965,"nodeType":"FunctionDefinition","src":"6350:149:81","nodes":[],"body":{"id":54964,"nodeType":"Block","src":"6406:93:81","nodes":[],"statements":[{"assignments":[54957],"declarations":[{"constant":false,"id":54957,"mutability":"mutable","name":"router","nameLocation":"6432:6:81","nodeType":"VariableDeclaration","scope":54964,"src":"6416:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54956,"nodeType":"UserDefinedTypeName","pathNode":{"id":54955,"name":"Storage","nameLocations":["6416:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"6416:7:81"},"referencedDeclaration":53684,"src":"6416:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54960,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54958,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"6441:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6441:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6416:38:81"},{"expression":{"expression":{"id":54961,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54957,"src":"6471:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6478:14:81","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53663,"src":"6471:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":54954,"id":54963,"nodeType":"Return","src":"6464:28:81"}]},"baseFunctions":[53900],"functionSelector":"0834fecc","implemented":true,"kind":"function","modifiers":[],"name":"valuePerWeight","nameLocation":"6359:14:81","parameters":{"id":54951,"nodeType":"ParameterList","parameters":[],"src":"6373:2:81"},"returnParameters":{"id":54954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54965,"src":"6397:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54952,"name":"uint128","nodeType":"ElementaryTypeName","src":"6397:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6396:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54989,"nodeType":"FunctionDefinition","src":"6505:229:81","nodes":[],"body":{"id":54988,"nodeType":"Block","src":"6576:158:81","nodes":[],"statements":[{"assignments":[54974],"declarations":[{"constant":false,"id":54974,"mutability":"mutable","name":"router","nameLocation":"6602:6:81","nodeType":"VariableDeclaration","scope":54988,"src":"6586:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":54973,"nodeType":"UserDefinedTypeName","pathNode":{"id":54972,"name":"Storage","nameLocations":["6586:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"6586:7:81"},"referencedDeclaration":53684,"src":"6586:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":54977,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54975,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"6611:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":54976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6611:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"6586:38:81"},{"expression":{"id":54982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":54978,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54974,"src":"6634:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":54980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"6641:14:81","memberName":"valuePerWeight","nodeType":"MemberAccess","referencedDeclaration":53663,"src":"6634:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54981,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54967,"src":"6658:15:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6634:39:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"id":54983,"nodeType":"ExpressionStatement","src":"6634:39:81"},{"eventCall":{"arguments":[{"id":54985,"name":"_valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54967,"src":"6711:15:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":54984,"name":"ValuePerWeightChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53785,"src":"6689:21:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":54986,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6689:38:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54987,"nodeType":"EmitStatement","src":"6684:43:81"}]},"baseFunctions":[53905],"functionSelector":"a6bbbe1c","implemented":true,"kind":"function","modifiers":[{"id":54970,"kind":"modifierInvocation","modifierName":{"id":54969,"name":"onlyOwner","nameLocations":["6566:9:81"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"6566:9:81"},"nodeType":"ModifierInvocation","src":"6566:9:81"}],"name":"setValuePerWeight","nameLocation":"6514:17:81","parameters":{"id":54968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54967,"mutability":"mutable","name":"_valuePerWeight","nameLocation":"6540:15:81","nodeType":"VariableDeclaration","scope":54989,"src":"6532:23:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54966,"name":"uint128","nodeType":"ElementaryTypeName","src":"6532:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6531:25:81"},"returnParameters":{"id":54971,"nodeType":"ParameterList","parameters":[],"src":"6576:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55004,"nodeType":"FunctionDefinition","src":"6740:113:81","nodes":[],"body":{"id":55003,"nodeType":"Block","src":"6789:64:81","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54996,"name":"baseWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54926,"src":"6814:10:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint64_$","typeString":"function () view returns (uint64)"}},"id":54997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6814:12:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"}],"id":54995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6806:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":54994,"name":"uint128","nodeType":"ElementaryTypeName","src":"6806:7:81","typeDescriptions":{}}},"id":54998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6806:21:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54999,"name":"valuePerWeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54965,"src":"6830:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6830:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"6806:40:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":54993,"id":55002,"nodeType":"Return","src":"6799:47:81"}]},"baseFunctions":[53910],"functionSelector":"6ef25c3a","implemented":true,"kind":"function","modifiers":[],"name":"baseFee","nameLocation":"6749:7:81","parameters":{"id":54990,"nodeType":"ParameterList","parameters":[],"src":"6756:2:81"},"returnParameters":{"id":54993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54992,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55004,"src":"6780:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":54991,"name":"uint128","nodeType":"ElementaryTypeName","src":"6780:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"6779:9:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55056,"nodeType":"FunctionDefinition","src":"6889:453:81","nodes":[],"body":{"id":55055,"nodeType":"Block","src":"6965:377:81","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":55020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55012,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55008,"src":"6983:10:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6997:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6983:15:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"hexValue":"30","id":55016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7011:1:81","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":55015,"name":"blobhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-29,"src":"7002:8:81","typeDescriptions":{"typeIdentifier":"t_function_blobhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7002:11:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7017:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7002:16:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6983:35:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"626c6f6254784861736820636f756c646e277420626520666f756e64","id":55021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7020:30:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""},"value":"blobTxHash couldn't be found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_944fe86403884466c74284042289853a231d438ed298af2a81bff9b6914f84e1","typeString":"literal_string \"blobTxHash couldn't be found\""}],"id":55011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6975:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55022,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6975:76:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55023,"nodeType":"ExpressionStatement","src":"6975:76:81"},{"assignments":[55026],"declarations":[{"constant":false,"id":55026,"mutability":"mutable","name":"router","nameLocation":"7078:6:81","nodeType":"VariableDeclaration","scope":55055,"src":"7062:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55025,"nodeType":"UserDefinedTypeName","pathNode":{"id":55024,"name":"Storage","nameLocations":["7062:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"7062:7:81"},"referencedDeclaration":53684,"src":"7062:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55029,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55027,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"7087:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7087:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7062:38:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"},"id":55037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55031,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55026,"src":"7119:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55032,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7126:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"7119:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55034,"indexExpression":{"id":55033,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55006,"src":"7132:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7119:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55035,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53688,"src":"7143:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53688_$","typeString":"type(enum IRouter.CodeState)"}},"id":55036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7153:7:81","memberName":"Unknown","nodeType":"MemberAccess","referencedDeclaration":53685,"src":"7143:17:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"src":"7119:41:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652077697468207375636820696420616c726561647920726571756573746564206f722076616c696461746564","id":55038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7162:50:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""},"value":"code with such id already requested or validated"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_86d0efc10a98e1b7506967b99e345a37d8ca52b6f212bb7eaafd6d43a903647b","typeString":"literal_string \"code with such id already requested or validated\""}],"id":55030,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7111:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7111:102:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55040,"nodeType":"ExpressionStatement","src":"7111:102:81"},{"expression":{"id":55048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55041,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55026,"src":"7224:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7231:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"7224:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55045,"indexExpression":{"id":55043,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55006,"src":"7237:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7224:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55046,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53688,"src":"7247:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53688_$","typeString":"type(enum IRouter.CodeState)"}},"id":55047,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7257:19:81","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53686,"src":"7247:29:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"src":"7224:52:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"id":55049,"nodeType":"ExpressionStatement","src":"7224:52:81"},{"eventCall":{"arguments":[{"id":55051,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55006,"src":"7316:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55052,"name":"blobTxHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55008,"src":"7324:10:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55050,"name":"CodeValidationRequested","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53755,"src":"7292:23:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (bytes32,bytes32)"}},"id":55053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7292:43:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55054,"nodeType":"EmitStatement","src":"7287:48:81"}]},"baseFunctions":[53917],"functionSelector":"1c149d8a","implemented":true,"kind":"function","modifiers":[],"name":"requestCodeValidation","nameLocation":"6898:21:81","parameters":{"id":55009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55006,"mutability":"mutable","name":"codeId","nameLocation":"6928:6:81","nodeType":"VariableDeclaration","scope":55056,"src":"6920:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55005,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6920:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55008,"mutability":"mutable","name":"blobTxHash","nameLocation":"6944:10:81","nodeType":"VariableDeclaration","scope":55056,"src":"6936:18:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55007,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6936:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6919:36:81"},"returnParameters":{"id":55010,"nodeType":"ParameterList","parameters":[],"src":"6965:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55156,"nodeType":"FunctionDefinition","src":"7348:1033:81","nodes":[],"body":{"id":55155,"nodeType":"Block","src":"7504:877:81","nodes":[],"statements":[{"assignments":[55071],"declarations":[{"constant":false,"id":55071,"mutability":"mutable","name":"router","nameLocation":"7530:6:81","nodeType":"VariableDeclaration","scope":55155,"src":"7514:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55070,"nodeType":"UserDefinedTypeName","pathNode":{"id":55069,"name":"Storage","nameLocations":["7514:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"7514:7:81"},"referencedDeclaration":53684,"src":"7514:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55074,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55072,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"7539:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7539:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"7514:38:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"},"id":55082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55076,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55071,"src":"7571:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55077,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7578:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"7571:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55079,"indexExpression":{"id":55078,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55058,"src":"7584:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7571:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55080,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53688,"src":"7595:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53688_$","typeString":"type(enum IRouter.CodeState)"}},"id":55081,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7605:9:81","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53687,"src":"7595:19:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"src":"7571:43:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f6465206d7573742062652076616c696461746564206265666f72652070726f6772616d206372656174696f6e","id":55083,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7616:48:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""},"value":"code must be validated before program creation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b5148f5f8f63c81848fb75aafb9815f0b7600419fddac60bd483eec7cf08a631","typeString":"literal_string \"code must be validated before program creation\""}],"id":55075,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7563:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7563:102:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55085,"nodeType":"ExpressionStatement","src":"7563:102:81"},{"assignments":[55087],"declarations":[{"constant":false,"id":55087,"mutability":"mutable","name":"baseFeeValue","nameLocation":"7684:12:81","nodeType":"VariableDeclaration","scope":55155,"src":"7676:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55086,"name":"uint128","nodeType":"ElementaryTypeName","src":"7676:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55090,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55088,"name":"baseFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55004,"src":"7699:7:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint128_$","typeString":"function () view returns (uint128)"}},"id":55089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7699:9:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7676:32:81"},{"assignments":[55092],"declarations":[{"constant":false,"id":55092,"mutability":"mutable","name":"executableBalance","nameLocation":"7726:17:81","nodeType":"VariableDeclaration","scope":55155,"src":"7718:25:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55091,"name":"uint128","nodeType":"ElementaryTypeName","src":"7718:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55096,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55093,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55087,"src":"7746:12:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"3130","id":55094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7761:2:81","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7746:17:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7718:45:81"},{"assignments":[55098],"declarations":[{"constant":false,"id":55098,"mutability":"mutable","name":"totalValue","nameLocation":"7782:10:81","nodeType":"VariableDeclaration","scope":55155,"src":"7774:18:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55097,"name":"uint128","nodeType":"ElementaryTypeName","src":"7774:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"id":55104,"initialValue":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint128","typeString":"uint128"},"id":55101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55099,"name":"baseFeeValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55087,"src":"7795:12:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55100,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55092,"src":"7810:17:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7795:32:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55102,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55064,"src":"7830:6:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"7795:41:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"nodeType":"VariableDeclarationStatement","src":"7774:62:81"},{"expression":{"arguments":[{"id":55106,"name":"totalValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55098,"src":"7862:10:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint128","typeString":"uint128"}],"id":55105,"name":"_retrieveValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55886,"src":"7847:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint128_$returns$__$","typeString":"function (uint128)"}},"id":55107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7847:26:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55108,"nodeType":"ExpressionStatement","src":"7847:26:81"},{"assignments":[55110],"declarations":[{"constant":false,"id":55110,"mutability":"mutable","name":"actorId","nameLocation":"8042:7:81","nodeType":"VariableDeclaration","scope":55155,"src":"8034:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55109,"name":"address","nodeType":"ElementaryTypeName","src":"8034:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55123,"initialValue":{"arguments":[{"expression":{"id":55113,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55071,"src":"8078:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55114,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8085:11:81","memberName":"mirrorProxy","nodeType":"MemberAccess","referencedDeclaration":53653,"src":"8078:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[{"id":55118,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55058,"src":"8125:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55119,"name":"salt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55060,"src":"8133:4:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55116,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"8108:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8112:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"8108:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8108:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55115,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"8098:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:41:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55111,"name":"Clones","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41121,"src":"8052:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Clones_$41121_$","typeString":"type(library Clones)"}},"id":55112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8059:18:81","memberName":"cloneDeterministic","nodeType":"MemberAccess","referencedDeclaration":41039,"src":"8052:25:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes32_$returns$_t_address_$","typeString":"function (address,bytes32) returns (address)"}},"id":55122,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8052:88:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8034:106:81"},{"expression":{"id":55130,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55124,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55071,"src":"8151:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55127,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8158:8:81","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53681,"src":"8151:15:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55128,"indexExpression":{"id":55126,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55110,"src":"8167:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8151:24:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55129,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55058,"src":"8178:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"8151:33:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55131,"nodeType":"ExpressionStatement","src":"8151:33:81"},{"expression":{"id":55135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8194:22:81","subExpression":{"expression":{"id":55132,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55071,"src":"8194:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55134,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"8201:13:81","memberName":"programsCount","nodeType":"MemberAccess","referencedDeclaration":53683,"src":"8194:20:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55136,"nodeType":"ExpressionStatement","src":"8194:22:81"},{"eventCall":{"arguments":[{"id":55138,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55110,"src":"8247:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55139,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55058,"src":"8256:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55137,"name":"ProgramCreated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53769,"src":"8232:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$","typeString":"function (address,bytes32)"}},"id":55140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8232:31:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55141,"nodeType":"EmitStatement","src":"8227:36:81"},{"expression":{"arguments":[{"expression":{"id":55146,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"8303:2:81","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8306:6:81","memberName":"origin","nodeType":"MemberAccess","src":"8303:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55148,"name":"payload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55062,"src":"8314:7:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":55149,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55064,"src":"8323:6:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55150,"name":"executableBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55092,"src":"8331:17:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"id":55143,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55110,"src":"8282:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55142,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53636,"src":"8274:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53636_$","typeString":"type(contract IMirror)"}},"id":55144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8274:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"id":55145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8291:11:81","memberName":"initMessage","nodeType":"MemberAccess","referencedDeclaration":53635,"src":"8274:28:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_uint128_$returns$__$","typeString":"function (address,bytes memory,uint128,uint128) external"}},"id":55151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8274:75:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55152,"nodeType":"ExpressionStatement","src":"8274:75:81"},{"expression":{"id":55153,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55110,"src":"8367:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":55068,"id":55154,"nodeType":"Return","src":"8360:14:81"}]},"baseFunctions":[53930],"functionSelector":"8074b455","implemented":true,"kind":"function","modifiers":[],"name":"createProgram","nameLocation":"7357:13:81","parameters":{"id":55065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55058,"mutability":"mutable","name":"codeId","nameLocation":"7379:6:81","nodeType":"VariableDeclaration","scope":55156,"src":"7371:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55057,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7371:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55060,"mutability":"mutable","name":"salt","nameLocation":"7395:4:81","nodeType":"VariableDeclaration","scope":55156,"src":"7387:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55059,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7387:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55062,"mutability":"mutable","name":"payload","nameLocation":"7416:7:81","nodeType":"VariableDeclaration","scope":55156,"src":"7401:22:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55061,"name":"bytes","nodeType":"ElementaryTypeName","src":"7401:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":55064,"mutability":"mutable","name":"_value","nameLocation":"7433:6:81","nodeType":"VariableDeclaration","scope":55156,"src":"7425:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55063,"name":"uint128","nodeType":"ElementaryTypeName","src":"7425:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"7370:70:81"},"returnParameters":{"id":55068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55067,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55156,"src":"7491:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55066,"name":"address","nodeType":"ElementaryTypeName","src":"7491:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7490:9:81"},"scope":55996,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":55269,"nodeType":"FunctionDefinition","src":"8387:1117:81","nodes":[],"body":{"id":55268,"nodeType":"Block","src":"8494:1010:81","nodes":[],"statements":[{"assignments":[55168],"declarations":[{"constant":false,"id":55168,"mutability":"mutable","name":"router","nameLocation":"8520:6:81","nodeType":"VariableDeclaration","scope":55268,"src":"8504:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55167,"nodeType":"UserDefinedTypeName","pathNode":{"id":55166,"name":"Storage","nameLocations":["8504:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"8504:7:81"},"referencedDeclaration":53684,"src":"8504:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55171,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55169,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"8529:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8529:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"8504:38:81"},{"assignments":[55173],"declarations":[{"constant":false,"id":55173,"mutability":"mutable","name":"codeCommetmentsHashes","nameLocation":"8566:21:81","nodeType":"VariableDeclaration","scope":55268,"src":"8553:34:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55172,"name":"bytes","nodeType":"ElementaryTypeName","src":"8553:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55174,"nodeType":"VariableDeclarationStatement","src":"8553:34:81"},{"body":{"id":55259,"nodeType":"Block","src":"8656:766:81","statements":[{"assignments":[55188],"declarations":[{"constant":false,"id":55188,"mutability":"mutable","name":"codeCommitment","nameLocation":"8694:14:81","nodeType":"VariableDeclaration","scope":55259,"src":"8670:38:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":55187,"nodeType":"UserDefinedTypeName","pathNode":{"id":55186,"name":"CodeCommitment","nameLocations":["8670:14:81"],"nodeType":"IdentifierPath","referencedDeclaration":53693,"src":"8670:14:81"},"referencedDeclaration":53693,"src":"8670:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"id":55192,"initialValue":{"baseExpression":{"id":55189,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55160,"src":"8711:20:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53693_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55191,"indexExpression":{"id":55190,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55176,"src":"8732:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8711:23:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"8670:64:81"},{"assignments":[55194],"declarations":[{"constant":false,"id":55194,"mutability":"mutable","name":"codeCommitmentHash","nameLocation":"8757:18:81","nodeType":"VariableDeclaration","scope":55259,"src":"8749:26:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55193,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8749:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55198,"initialValue":{"arguments":[{"id":55196,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55188,"src":"8798:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}],"id":55195,"name":"_codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55853,"src":"8778:19:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_CodeCommitment_$53693_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.CodeCommitment calldata) pure returns (bytes32)"}},"id":55197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8778:35:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8749:64:81"},{"expression":{"id":55206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55199,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"8828:21:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55203,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"8865:21:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55204,"name":"codeCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55194,"src":"8888:18:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55201,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8852:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55200,"name":"bytes","nodeType":"ElementaryTypeName","src":"8852:5:81","typeDescriptions":{}}},"id":55202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8858:6:81","memberName":"concat","nodeType":"MemberAccess","src":"8852:12:81","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8852:55:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"8828:79:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55207,"nodeType":"ExpressionStatement","src":"8828:79:81"},{"assignments":[55209],"declarations":[{"constant":false,"id":55209,"mutability":"mutable","name":"codeId","nameLocation":"8930:6:81","nodeType":"VariableDeclaration","scope":55259,"src":"8922:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8922:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55212,"initialValue":{"expression":{"id":55210,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55188,"src":"8939:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8954:2:81","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53690,"src":"8939:17:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"8922:34:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"},"id":55220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55214,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"8978:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55215,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8985:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"8978:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55217,"indexExpression":{"id":55216,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55209,"src":"8991:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8978:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55218,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53688,"src":"9002:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53688_$","typeString":"type(enum IRouter.CodeState)"}},"id":55219,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9012:19:81","memberName":"ValidationRequested","nodeType":"MemberAccess","referencedDeclaration":53686,"src":"9002:29:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"src":"8978:53:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f64652073686f756c642062652072657175657374656420666f722076616c69646174696f6e","id":55221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9033:41:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""},"value":"code should be requested for validation"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f0f0146c5c6578abd878317fc7dbe7872a552fba3ce3a30a1e42dfd172e27f7","typeString":"literal_string \"code should be requested for validation\""}],"id":55213,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"8970:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8970:105:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55223,"nodeType":"ExpressionStatement","src":"8970:105:81"},{"condition":{"expression":{"id":55224,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55188,"src":"9094:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9109:5:81","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53692,"src":"9094:20:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55257,"nodeType":"Block","src":"9297:115:81","statements":[{"expression":{"id":55250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"9315:27:81","subExpression":{"baseExpression":{"expression":{"id":55246,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"9322:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55247,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9329:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"9322:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55249,"indexExpression":{"id":55248,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55209,"src":"9335:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9322:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55251,"nodeType":"ExpressionStatement","src":"9315:27:81"},{"eventCall":{"arguments":[{"id":55253,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55209,"src":"9383:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"66616c7365","id":55254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9391:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55252,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53762,"src":"9366:16:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9366:31:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55256,"nodeType":"EmitStatement","src":"9361:36:81"}]},"id":55258,"nodeType":"IfStatement","src":"9090:322:81","trueBody":{"id":55245,"nodeType":"Block","src":"9116:175:81","statements":[{"expression":{"id":55233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55226,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"9134:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55229,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9141:5:81","memberName":"codes","nodeType":"MemberAccess","referencedDeclaration":53675,"src":"9134:12:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_enum$_CodeState_$53688_$","typeString":"mapping(bytes32 => enum IRouter.CodeState)"}},"id":55230,"indexExpression":{"id":55228,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55209,"src":"9147:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9134:20:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55231,"name":"CodeState","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53688,"src":"9157:9:81","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CodeState_$53688_$","typeString":"type(enum IRouter.CodeState)"}},"id":55232,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9167:9:81","memberName":"Validated","nodeType":"MemberAccess","referencedDeclaration":53687,"src":"9157:19:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"src":"9134:42:81","typeDescriptions":{"typeIdentifier":"t_enum$_CodeState_$53688","typeString":"enum IRouter.CodeState"}},"id":55234,"nodeType":"ExpressionStatement","src":"9134:42:81"},{"expression":{"id":55238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9194:28:81","subExpression":{"expression":{"id":55235,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55168,"src":"9194:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55237,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"9201:19:81","memberName":"validatedCodesCount","nodeType":"MemberAccess","referencedDeclaration":53677,"src":"9194:26:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55239,"nodeType":"ExpressionStatement","src":"9194:28:81"},{"eventCall":{"arguments":[{"id":55241,"name":"codeId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55209,"src":"9263:6:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"74727565","id":55242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9271:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":55240,"name":"CodeGotValidated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53762,"src":"9246:16:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$","typeString":"function (bytes32,bool)"}},"id":55243,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9246:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55244,"nodeType":"EmitStatement","src":"9241:35:81"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55179,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55176,"src":"8618:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55180,"name":"codeCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55160,"src":"8622:20:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53693_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata[] calldata"}},"id":55181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8643:6:81","memberName":"length","nodeType":"MemberAccess","src":"8622:27:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8618:31:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55260,"initializationExpression":{"assignments":[55176],"declarations":[{"constant":false,"id":55176,"mutability":"mutable","name":"i","nameLocation":"8611:1:81","nodeType":"VariableDeclaration","scope":55260,"src":"8603:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55175,"name":"uint256","nodeType":"ElementaryTypeName","src":"8603:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55178,"initialValue":{"hexValue":"30","id":55177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8615:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8603:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8651:3:81","subExpression":{"id":55183,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55176,"src":"8651:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55185,"nodeType":"ExpressionStatement","src":"8651:3:81"},"nodeType":"ForStatement","src":"8598:824:81"},{"expression":{"arguments":[{"arguments":[{"id":55263,"name":"codeCommetmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"9462:21:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55262,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"9452:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9452:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55265,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55163,"src":"9486:10:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55261,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55414,"src":"9432:19:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9432:65:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55267,"nodeType":"ExpressionStatement","src":"9432:65:81"}]},"baseFunctions":[53940],"functionSelector":"e97d3eb3","implemented":true,"kind":"function","modifiers":[],"name":"commitCodes","nameLocation":"8396:11:81","parameters":{"id":55164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55160,"mutability":"mutable","name":"codeCommitmentsArray","nameLocation":"8434:20:81","nodeType":"VariableDeclaration","scope":55269,"src":"8408:46:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53693_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.CodeCommitment[]"},"typeName":{"baseType":{"id":55158,"nodeType":"UserDefinedTypeName","pathNode":{"id":55157,"name":"CodeCommitment","nameLocations":["8408:14:81"],"nodeType":"IdentifierPath","referencedDeclaration":53693,"src":"8408:14:81"},"referencedDeclaration":53693,"src":"8408:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"id":55159,"nodeType":"ArrayTypeName","src":"8408:16:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_CodeCommitment_$53693_storage_$dyn_storage_ptr","typeString":"struct IRouter.CodeCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55163,"mutability":"mutable","name":"signatures","nameLocation":"8473:10:81","nodeType":"VariableDeclaration","scope":55269,"src":"8456:27:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55161,"name":"bytes","nodeType":"ElementaryTypeName","src":"8456:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55162,"nodeType":"ArrayTypeName","src":"8456:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"8407:77:81"},"returnParameters":{"id":55165,"nodeType":"ParameterList","parameters":[],"src":"8494:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55325,"nodeType":"FunctionDefinition","src":"9510:571:81","nodes":[],"body":{"id":55324,"nodeType":"Block","src":"9620:461:81","nodes":[],"statements":[{"assignments":[55280],"declarations":[{"constant":false,"id":55280,"mutability":"mutable","name":"blockCommitmentsHashes","nameLocation":"9643:22:81","nodeType":"VariableDeclaration","scope":55324,"src":"9630:35:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55279,"name":"bytes","nodeType":"ElementaryTypeName","src":"9630:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55281,"nodeType":"VariableDeclarationStatement","src":"9630:35:81"},{"body":{"id":55315,"nodeType":"Block","src":"9735:263:81","statements":[{"assignments":[55295],"declarations":[{"constant":false,"id":55295,"mutability":"mutable","name":"blockCommitment","nameLocation":"9774:15:81","nodeType":"VariableDeclaration","scope":55315,"src":"9749:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55294,"nodeType":"UserDefinedTypeName","pathNode":{"id":55293,"name":"BlockCommitment","nameLocations":["9749:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53704,"src":"9749:15:81"},"referencedDeclaration":53704,"src":"9749:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"id":55299,"initialValue":{"baseExpression":{"id":55296,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55273,"src":"9792:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53704_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55298,"indexExpression":{"id":55297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55283,"src":"9814:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9792:24:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"nodeType":"VariableDeclarationStatement","src":"9749:67:81"},{"assignments":[55301],"declarations":[{"constant":false,"id":55301,"mutability":"mutable","name":"blockCommitmentHash","nameLocation":"9839:19:81","nodeType":"VariableDeclaration","scope":55315,"src":"9831:27:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55300,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9831:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55305,"initialValue":{"arguments":[{"id":55303,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55295,"src":"9874:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}],"id":55302,"name":"_commitBlock","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55510,"src":"9861:12:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$53704_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.BlockCommitment calldata) returns (bytes32)"}},"id":55304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:29:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"9831:59:81"},{"expression":{"id":55313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55306,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55280,"src":"9905:22:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55310,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55280,"src":"9943:22:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55311,"name":"blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55301,"src":"9967:19:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55308,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9930:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55307,"name":"bytes","nodeType":"ElementaryTypeName","src":"9930:5:81","typeDescriptions":{}}},"id":55309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9936:6:81","memberName":"concat","nodeType":"MemberAccess","src":"9930:12:81","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9930:57:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"9905:82:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55314,"nodeType":"ExpressionStatement","src":"9905:82:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55286,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55283,"src":"9696:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55287,"name":"blockCommitmentsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55273,"src":"9700:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53704_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata[] calldata"}},"id":55288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9722:6:81","memberName":"length","nodeType":"MemberAccess","src":"9700:28:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9696:32:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55316,"initializationExpression":{"assignments":[55283],"declarations":[{"constant":false,"id":55283,"mutability":"mutable","name":"i","nameLocation":"9689:1:81","nodeType":"VariableDeclaration","scope":55316,"src":"9681:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55282,"name":"uint256","nodeType":"ElementaryTypeName","src":"9681:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55285,"initialValue":{"hexValue":"30","id":55284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9693:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9681:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9730:3:81","subExpression":{"id":55290,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55283,"src":"9730:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55292,"nodeType":"ExpressionStatement","src":"9730:3:81"},"nodeType":"ForStatement","src":"9676:322:81"},{"expression":{"arguments":[{"arguments":[{"id":55319,"name":"blockCommitmentsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55280,"src":"10038:22:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55318,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10028:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55320,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10028:33:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55321,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55276,"src":"10063:10:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}],"id":55317,"name":"_validateSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55414,"src":"10008:19:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr_$returns$__$","typeString":"function (bytes32,bytes calldata[] calldata) view"}},"id":55322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10008:66:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55323,"nodeType":"ExpressionStatement","src":"10008:66:81"}]},"baseFunctions":[53950],"functionSelector":"fa97ed6d","implemented":true,"kind":"function","modifiers":[],"name":"commitBlocks","nameLocation":"9519:12:81","parameters":{"id":55277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55273,"mutability":"mutable","name":"blockCommitmentsArray","nameLocation":"9559:21:81","nodeType":"VariableDeclaration","scope":55325,"src":"9532:48:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53704_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.BlockCommitment[]"},"typeName":{"baseType":{"id":55271,"nodeType":"UserDefinedTypeName","pathNode":{"id":55270,"name":"BlockCommitment","nameLocations":["9532:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53704,"src":"9532:15:81"},"referencedDeclaration":53704,"src":"9532:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"id":55272,"nodeType":"ArrayTypeName","src":"9532:17:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$53704_storage_$dyn_storage_ptr","typeString":"struct IRouter.BlockCommitment[]"}},"visibility":"internal"},{"constant":false,"id":55276,"mutability":"mutable","name":"signatures","nameLocation":"9599:10:81","nodeType":"VariableDeclaration","scope":55325,"src":"9582:27:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55274,"name":"bytes","nodeType":"ElementaryTypeName","src":"9582:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55275,"nodeType":"ArrayTypeName","src":"9582:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"9531:79:81"},"returnParameters":{"id":55278,"nodeType":"ParameterList","parameters":[],"src":"9620:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55414,"nodeType":"FunctionDefinition","src":"10123:844:81","nodes":[],"body":{"id":55413,"nodeType":"Block","src":"10212:755:81","nodes":[],"statements":[{"assignments":[55335],"declarations":[{"constant":false,"id":55335,"mutability":"mutable","name":"router","nameLocation":"10238:6:81","nodeType":"VariableDeclaration","scope":55413,"src":"10222:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55334,"nodeType":"UserDefinedTypeName","pathNode":{"id":55333,"name":"Storage","nameLocations":["10222:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"10222:7:81"},"referencedDeclaration":53684,"src":"10222:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55338,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55336,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"10247:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10247:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"10222:38:81"},{"assignments":[55340],"declarations":[{"constant":false,"id":55340,"mutability":"mutable","name":"threshold","nameLocation":"10279:9:81","nodeType":"VariableDeclaration","scope":55413,"src":"10271:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55339,"name":"uint256","nodeType":"ElementaryTypeName","src":"10271:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55343,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55341,"name":"validatorsThreshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54841,"src":"10291:19:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10291:21:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10271:41:81"},{"assignments":[55345],"declarations":[{"constant":false,"id":55345,"mutability":"mutable","name":"messageHash","nameLocation":"10331:11:81","nodeType":"VariableDeclaration","scope":55413,"src":"10323:19:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55344,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10323:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55356,"initialValue":{"arguments":[{"arguments":[{"id":55353,"name":"dataHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55327,"src":"10408:8:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55351,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10391:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55352,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10395:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"10391:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10391:26:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":55348,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10353:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$55996","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$55996","typeString":"contract Router"}],"id":55347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10345:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55346,"name":"address","nodeType":"ElementaryTypeName","src":"10345:7:81","typeDescriptions":{}}},"id":55349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10345:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10359:31:81","memberName":"toDataWithIntendedValidatorHash","nodeType":"MemberAccess","referencedDeclaration":43448,"src":"10345:45:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes32_$attached_to$_t_address_$","typeString":"function (address,bytes memory) pure returns (bytes32)"}},"id":55355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10345:73:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10323:95:81"},{"assignments":[55358],"declarations":[{"constant":false,"id":55358,"mutability":"mutable","name":"validSignatures","nameLocation":"10436:15:81","nodeType":"VariableDeclaration","scope":55413,"src":"10428:23:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55357,"name":"uint256","nodeType":"ElementaryTypeName","src":"10428:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55360,"initialValue":{"hexValue":"30","id":55359,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10454:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10428:27:81"},{"body":{"id":55404,"nodeType":"Block","src":"10514:368:81","statements":[{"assignments":[55373],"declarations":[{"constant":false,"id":55373,"mutability":"mutable","name":"signature","nameLocation":"10543:9:81","nodeType":"VariableDeclaration","scope":55404,"src":"10528:24:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":55372,"name":"bytes","nodeType":"ElementaryTypeName","src":"10528:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55377,"initialValue":{"baseExpression":{"id":55374,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55330,"src":"10555:10:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55376,"indexExpression":{"id":55375,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55362,"src":"10566:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10555:13:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"nodeType":"VariableDeclarationStatement","src":"10528:40:81"},{"assignments":[55379],"declarations":[{"constant":false,"id":55379,"mutability":"mutable","name":"validator","nameLocation":"10591:9:81","nodeType":"VariableDeclaration","scope":55404,"src":"10583:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55378,"name":"address","nodeType":"ElementaryTypeName","src":"10583:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55384,"initialValue":{"arguments":[{"id":55382,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55373,"src":"10623:9:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":55380,"name":"messageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55345,"src":"10603:11:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10615:7:81","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":43143,"src":"10603:19:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address)"}},"id":55383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10603:30:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10583:50:81"},{"condition":{"baseExpression":{"expression":{"id":55385,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55335,"src":"10652:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10659:10:81","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53667,"src":"10652:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55388,"indexExpression":{"id":55387,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55379,"src":"10670:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10652:28:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55402,"nodeType":"Block","src":"10802:70:81","statements":[{"expression":{"arguments":[{"hexValue":"66616c7365","id":55398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10828:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"696e636f7272656374207369676e6174757265","id":55399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10835:21:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""},"value":"incorrect signature"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_641ab7289dc6df3dff0edafbede614b21294e2bb9f09800443d88f57818afe8f","typeString":"literal_string \"incorrect signature\""}],"id":55397,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10820:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10820:37:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55401,"nodeType":"ExpressionStatement","src":"10820:37:81"}]},"id":55403,"nodeType":"IfStatement","src":"10648:224:81","trueBody":{"id":55396,"nodeType":"Block","src":"10682:114:81","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"10704:17:81","subExpression":{"id":55389,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55358,"src":"10706:15:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55391,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55340,"src":"10725:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10704:30:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55395,"nodeType":"IfStatement","src":"10700:82:81","trueBody":{"id":55394,"nodeType":"Block","src":"10736:46:81","statements":[{"id":55393,"nodeType":"Break","src":"10758:5:81"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55365,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55362,"src":"10486:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55366,"name":"signatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55330,"src":"10490:10:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes calldata[] calldata"}},"id":55367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10501:6:81","memberName":"length","nodeType":"MemberAccess","src":"10490:17:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10486:21:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55405,"initializationExpression":{"assignments":[55362],"declarations":[{"constant":false,"id":55362,"mutability":"mutable","name":"i","nameLocation":"10479:1:81","nodeType":"VariableDeclaration","scope":55405,"src":"10471:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55361,"name":"uint256","nodeType":"ElementaryTypeName","src":"10471:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55364,"initialValue":{"hexValue":"30","id":55363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10483:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"10471:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10509:3:81","subExpression":{"id":55369,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55362,"src":"10509:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55371,"nodeType":"ExpressionStatement","src":"10509:3:81"},"nodeType":"ForStatement","src":"10466:416:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55407,"name":"validSignatures","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55358,"src":"10900:15:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":55408,"name":"threshold","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55340,"src":"10919:9:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10900:28:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6e6f7420656e6f7567682076616c6964207369676e617475726573","id":55410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10930:29:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""},"value":"not enough valid signatures"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8852ba723d98bcf316aab69f38fb5da08e0bfb912ef589b19218c396aac3c0bc","typeString":"literal_string \"not enough valid signatures\""}],"id":55406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"10892:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10892:68:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55412,"nodeType":"ExpressionStatement","src":"10892:68:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_validateSignatures","nameLocation":"10132:19:81","parameters":{"id":55331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55327,"mutability":"mutable","name":"dataHash","nameLocation":"10160:8:81","nodeType":"VariableDeclaration","scope":55414,"src":"10152:16:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55326,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10152:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55330,"mutability":"mutable","name":"signatures","nameLocation":"10187:10:81","nodeType":"VariableDeclaration","scope":55414,"src":"10170:27:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr","typeString":"bytes[]"},"typeName":{"baseType":{"id":55328,"name":"bytes","nodeType":"ElementaryTypeName","src":"10170:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"id":55329,"nodeType":"ArrayTypeName","src":"10170:7:81","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes_storage_$dyn_storage_ptr","typeString":"bytes[]"}},"visibility":"internal"}],"src":"10151:47:81"},"returnParameters":{"id":55332,"nodeType":"ParameterList","parameters":[],"src":"10212:0:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55510,"nodeType":"FunctionDefinition","src":"10973:1114:81","nodes":[],"body":{"id":55509,"nodeType":"Block","src":"11063:1024:81","nodes":[],"statements":[{"assignments":[55424],"declarations":[{"constant":false,"id":55424,"mutability":"mutable","name":"router","nameLocation":"11089:6:81","nodeType":"VariableDeclaration","scope":55509,"src":"11073:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55423,"nodeType":"UserDefinedTypeName","pathNode":{"id":55422,"name":"Storage","nameLocations":["11073:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"11073:7:81"},"referencedDeclaration":53684,"src":"11073:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55427,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55425,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"11098:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11098:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"11073:38:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55429,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"11143:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55430,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11150:23:81","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53657,"src":"11143:30:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":55431,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11177:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11193:18:81","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53697,"src":"11177:34:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11143:68:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"696e76616c69642070726576696f757320636f6d6d69746d656e742068617368","id":55434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11213:34:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""},"value":"invalid previous commitment hash"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fef95c9e1944529fb91083689c978504d88f59fdb02e6fd241a073fa572e7d3e","typeString":"literal_string \"invalid previous commitment hash\""}],"id":55428,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11122:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11122:135:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55436,"nodeType":"ExpressionStatement","src":"11122:135:81"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":55439,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11294:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11310:13:81","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53699,"src":"11294:29:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55438,"name":"_isPredecessorHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55554,"src":"11275:18:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bool_$","typeString":"function (bytes32) view returns (bool)"}},"id":55441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11275:49:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"616c6c6f776564207072656465636573736f7220626c6f636b206e6f7420666f756e64","id":55442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11326:37:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""},"value":"allowed predecessor block not found"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7d09fbc5a1c193a0826cadcc2903c8170aac2d31f22b53e69a64923153c8207e","typeString":"literal_string \"allowed predecessor block not found\""}],"id":55437,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"11267:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11267:97:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55444,"nodeType":"ExpressionStatement","src":"11267:97:81"},{"assignments":[55446],"declarations":[{"constant":false,"id":55446,"mutability":"mutable","name":"transitionsHashes","nameLocation":"11388:17:81","nodeType":"VariableDeclaration","scope":55509,"src":"11375:30:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55445,"name":"bytes","nodeType":"ElementaryTypeName","src":"11375:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55447,"nodeType":"VariableDeclarationStatement","src":"11375:30:81"},{"body":{"id":55483,"nodeType":"Block","src":"11481:255:81","statements":[{"assignments":[55462],"declarations":[{"constant":false,"id":55462,"mutability":"mutable","name":"stateTransition","nameLocation":"11520:15:81","nodeType":"VariableDeclaration","scope":55483,"src":"11495:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55461,"nodeType":"UserDefinedTypeName","pathNode":{"id":55460,"name":"StateTransition","nameLocations":["11495:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53719,"src":"11495:15:81"},"referencedDeclaration":53719,"src":"11495:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"id":55467,"initialValue":{"baseExpression":{"expression":{"id":55463,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11538:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11554:11:81","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53703,"src":"11538:27:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53719_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55466,"indexExpression":{"id":55465,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55449,"src":"11566:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11538:30:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"nodeType":"VariableDeclarationStatement","src":"11495:73:81"},{"assignments":[55469],"declarations":[{"constant":false,"id":55469,"mutability":"mutable","name":"transitionHash","nameLocation":"11591:14:81","nodeType":"VariableDeclaration","scope":55483,"src":"11583:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55468,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11583:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55473,"initialValue":{"arguments":[{"id":55471,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55462,"src":"11627:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}],"id":55470,"name":"_doStateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55754,"src":"11608:18:81","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_StateTransition_$53719_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.StateTransition calldata) returns (bytes32)"}},"id":55472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11608:35:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"11583:60:81"},{"expression":{"id":55481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55474,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55446,"src":"11658:17:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55478,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55446,"src":"11691:17:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":55479,"name":"transitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55469,"src":"11710:14:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55476,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11678:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55475,"name":"bytes","nodeType":"ElementaryTypeName","src":"11678:5:81","typeDescriptions":{}}},"id":55477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11684:6:81","memberName":"concat","nodeType":"MemberAccess","src":"11678:12:81","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11678:47:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"11658:67:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55482,"nodeType":"ExpressionStatement","src":"11658:67:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55452,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55449,"src":"11436:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55453,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11440:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11456:11:81","memberName":"transitions","nodeType":"MemberAccess","referencedDeclaration":53703,"src":"11440:27:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_StateTransition_$53719_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.StateTransition calldata[] calldata"}},"id":55455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11468:6:81","memberName":"length","nodeType":"MemberAccess","src":"11440:34:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11436:38:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55484,"initializationExpression":{"assignments":[55449],"declarations":[{"constant":false,"id":55449,"mutability":"mutable","name":"i","nameLocation":"11429:1:81","nodeType":"VariableDeclaration","scope":55484,"src":"11421:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55448,"name":"uint256","nodeType":"ElementaryTypeName","src":"11421:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55451,"initialValue":{"hexValue":"30","id":55450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11433:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11421:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11476:3:81","subExpression":{"id":55457,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55449,"src":"11476:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55459,"nodeType":"ExpressionStatement","src":"11476:3:81"},"nodeType":"ForStatement","src":"11416:320:81"},{"expression":{"id":55490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55485,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"11746:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55487,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11753:23:81","memberName":"lastBlockCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53657,"src":"11746:30:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55488,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11779:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11795:9:81","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53695,"src":"11779:25:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"11746:58:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":55491,"nodeType":"ExpressionStatement","src":"11746:58:81"},{"eventCall":{"arguments":[{"expression":{"id":55493,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11834:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11850:9:81","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53695,"src":"11834:25:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55492,"name":"BlockCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53748,"src":"11819:14:81","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32)"}},"id":55495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11819:41:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55496,"nodeType":"EmitStatement","src":"11814:46:81"},{"expression":{"arguments":[{"expression":{"id":55498,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11912:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11928:9:81","memberName":"blockHash","nodeType":"MemberAccess","referencedDeclaration":53695,"src":"11912:25:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55500,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11951:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11967:18:81","memberName":"prevCommitmentHash","nodeType":"MemberAccess","referencedDeclaration":53697,"src":"11951:34:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55502,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55417,"src":"11999:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment calldata"}},"id":55503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12015:13:81","memberName":"predBlockHash","nodeType":"MemberAccess","referencedDeclaration":53699,"src":"11999:29:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55505,"name":"transitionsHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55446,"src":"12052:17:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55504,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"12042:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12042:28:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55497,"name":"_blockCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55778,"src":"11878:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32,bytes32) pure returns (bytes32)"}},"id":55507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11878:202:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55421,"id":55508,"nodeType":"Return","src":"11871:209:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_commitBlock","nameLocation":"10982:12:81","parameters":{"id":55418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55417,"mutability":"mutable","name":"blockCommitment","nameLocation":"11020:15:81","nodeType":"VariableDeclaration","scope":55510,"src":"10995:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_calldata_ptr","typeString":"struct IRouter.BlockCommitment"},"typeName":{"id":55416,"nodeType":"UserDefinedTypeName","pathNode":{"id":55415,"name":"BlockCommitment","nameLocations":["10995:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53704,"src":"10995:15:81"},"referencedDeclaration":53704,"src":"10995:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$53704_storage_ptr","typeString":"struct IRouter.BlockCommitment"}},"visibility":"internal"}],"src":"10994:42:81"},"returnParameters":{"id":55421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55510,"src":"11054:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55419,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11054:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11053:9:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55554,"nodeType":"FunctionDefinition","src":"12093:338:81","nodes":[],"body":{"id":55553,"nodeType":"Block","src":"12163:268:81","nodes":[],"statements":[{"body":{"id":55549,"nodeType":"Block","src":"12220:183:81","statements":[{"assignments":[55531],"declarations":[{"constant":false,"id":55531,"mutability":"mutable","name":"ret","nameLocation":"12242:3:81","nodeType":"VariableDeclaration","scope":55549,"src":"12234:11:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55530,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12234:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55535,"initialValue":{"arguments":[{"id":55533,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55518,"src":"12258:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55532,"name":"blockhash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-5,"src":"12248:9:81","typeDescriptions":{"typeIdentifier":"t_function_blockhash_view$_t_uint256_$returns$_t_bytes32_$","typeString":"function (uint256) view returns (bytes32)"}},"id":55534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12248:12:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"12234:26:81"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55536,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55531,"src":"12278:3:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":55537,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55512,"src":"12285:4:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"12278:11:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55542,"name":"ret","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55531,"src":"12345:3:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12352:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12345:8:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55547,"nodeType":"IfStatement","src":"12341:52:81","trueBody":{"id":55546,"nodeType":"Block","src":"12355:38:81","statements":[{"id":55545,"nodeType":"Break","src":"12373:5:81"}]}},"id":55548,"nodeType":"IfStatement","src":"12274:119:81","trueBody":{"id":55541,"nodeType":"Block","src":"12291:44:81","statements":[{"expression":{"hexValue":"74727565","id":55539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12316:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":55516,"id":55540,"nodeType":"Return","src":"12309:11:81"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55524,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55518,"src":"12208:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":55525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12212:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12208:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55550,"initializationExpression":{"assignments":[55518],"declarations":[{"constant":false,"id":55518,"mutability":"mutable","name":"i","nameLocation":"12186:1:81","nodeType":"VariableDeclaration","scope":55550,"src":"12178:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55517,"name":"uint256","nodeType":"ElementaryTypeName","src":"12178:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55523,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55519,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"12190:5:81","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":55520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12196:6:81","memberName":"number","nodeType":"MemberAccess","src":"12190:12:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":55521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12205:1:81","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12190:16:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12178:28:81"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":55528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"12215:3:81","subExpression":{"id":55527,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55518,"src":"12215:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55529,"nodeType":"ExpressionStatement","src":"12215:3:81"},"nodeType":"ForStatement","src":"12173:230:81"},{"expression":{"hexValue":"66616c7365","id":55551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12419:5:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":55516,"id":55552,"nodeType":"Return","src":"12412:12:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_isPredecessorHash","nameLocation":"12102:18:81","parameters":{"id":55513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55512,"mutability":"mutable","name":"hash","nameLocation":"12129:4:81","nodeType":"VariableDeclaration","scope":55554,"src":"12121:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55511,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12121:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12120:14:81"},"returnParameters":{"id":55516,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55515,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55554,"src":"12157:4:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55514,"name":"bool","nodeType":"ElementaryTypeName","src":"12157:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12156:6:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"private"},{"id":55754,"nodeType":"FunctionDefinition","src":"12437:2170:81","nodes":[],"body":{"id":55753,"nodeType":"Block","src":"12533:2074:81","nodes":[],"statements":[{"assignments":[55564],"declarations":[{"constant":false,"id":55564,"mutability":"mutable","name":"router","nameLocation":"12559:6:81","nodeType":"VariableDeclaration","scope":55753,"src":"12543:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55563,"nodeType":"UserDefinedTypeName","pathNode":{"id":55562,"name":"Storage","nameLocations":["12543:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"12543:7:81"},"referencedDeclaration":53684,"src":"12543:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55567,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55565,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"12568:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12568:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"12543:38:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"expression":{"id":55569,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"12600:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12607:8:81","memberName":"programs","nodeType":"MemberAccess","referencedDeclaration":53681,"src":"12600:15:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bytes32_$","typeString":"mapping(address => bytes32)"}},"id":55573,"indexExpression":{"expression":{"id":55571,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"12616:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12632:7:81","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"12616:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12600:40:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":55574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12644:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12600:45:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"636f756c646e277420706572666f726d207472616e736974696f6e20666f7220756e6b6e6f776e2070726f6772616d","id":55576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12647:49:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""},"value":"couldn't perform transition for unknown program"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_31c5a066db04c91ff8a121d71b24335cd54a57cfe01a7cdd47f234348f1a72d6","typeString":"literal_string \"couldn't perform transition for unknown program\""}],"id":55568,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12592:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12592:105:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55578,"nodeType":"ExpressionStatement","src":"12592:105:81"},{"assignments":[55581],"declarations":[{"constant":false,"id":55581,"mutability":"mutable","name":"wrappedVaraActor","nameLocation":"12721:16:81","nodeType":"VariableDeclaration","scope":55753,"src":"12708:29:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"},"typeName":{"id":55580,"nodeType":"UserDefinedTypeName","pathNode":{"id":55579,"name":"IWrappedVara","nameLocations":["12708:12:81"],"nodeType":"IdentifierPath","referencedDeclaration":53962,"src":"12708:12:81"},"referencedDeclaration":53962,"src":"12708:12:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"visibility":"internal"}],"id":55586,"initialValue":{"arguments":[{"expression":{"id":55583,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"12753:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55584,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12760:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"12753:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55582,"name":"IWrappedVara","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53962,"src":"12740:12:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IWrappedVara_$53962_$","typeString":"type(contract IWrappedVara)"}},"id":55585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12740:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"nodeType":"VariableDeclarationStatement","src":"12708:64:81"},{"expression":{"arguments":[{"expression":{"id":55590,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"12808:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12824:7:81","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"12808:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55592,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"12833:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12849:14:81","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"12833:30:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55587,"name":"wrappedVaraActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55581,"src":"12782:16:81","typeDescriptions":{"typeIdentifier":"t_contract$_IWrappedVara_$53962","typeString":"contract IWrappedVara"}},"id":55589,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12799:8:81","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":41873,"src":"12782:25:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":55594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12782:82:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55595,"nodeType":"ExpressionStatement","src":"12782:82:81"},{"assignments":[55598],"declarations":[{"constant":false,"id":55598,"mutability":"mutable","name":"mirrorActor","nameLocation":"12883:11:81","nodeType":"VariableDeclaration","scope":55753,"src":"12875:19:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"},"typeName":{"id":55597,"nodeType":"UserDefinedTypeName","pathNode":{"id":55596,"name":"IMirror","nameLocations":["12875:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53636,"src":"12875:7:81"},"referencedDeclaration":53636,"src":"12875:7:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"visibility":"internal"}],"id":55603,"initialValue":{"arguments":[{"expression":{"id":55600,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"12905:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12921:7:81","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"12905:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55599,"name":"IMirror","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53636,"src":"12897:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IMirror_$53636_$","typeString":"type(contract IMirror)"}},"id":55602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12897:32:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"nodeType":"VariableDeclarationStatement","src":"12875:54:81"},{"assignments":[55605],"declarations":[{"constant":false,"id":55605,"mutability":"mutable","name":"valueClaimsBytes","nameLocation":"12953:16:81","nodeType":"VariableDeclaration","scope":55753,"src":"12940:29:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55604,"name":"bytes","nodeType":"ElementaryTypeName","src":"12940:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55606,"nodeType":"VariableDeclarationStatement","src":"12940:29:81"},{"body":{"id":55655,"nodeType":"Block","src":"13045:367:81","statements":[{"assignments":[55621],"declarations":[{"constant":false,"id":55621,"mutability":"mutable","name":"valueClaim","nameLocation":"13079:10:81","nodeType":"VariableDeclaration","scope":55655,"src":"13059:30:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim"},"typeName":{"id":55620,"nodeType":"UserDefinedTypeName","pathNode":{"id":55619,"name":"ValueClaim","nameLocations":["13059:10:81"],"nodeType":"IdentifierPath","referencedDeclaration":53726,"src":"13059:10:81"},"referencedDeclaration":53726,"src":"13059:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_storage_ptr","typeString":"struct IRouter.ValueClaim"}},"visibility":"internal"}],"id":55626,"initialValue":{"baseExpression":{"expression":{"id":55622,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"13092:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13108:11:81","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"13092:27:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53726_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55625,"indexExpression":{"id":55624,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55608,"src":"13120:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13092:30:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"nodeType":"VariableDeclarationStatement","src":"13059:63:81"},{"expression":{"id":55642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55627,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55605,"src":"13137:16:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55631,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55605,"src":"13186:16:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"expression":{"id":55634,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13221:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13232:9:81","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53721,"src":"13221:20:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55636,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13243:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13254:11:81","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53723,"src":"13243:22:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55638,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13267:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13278:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"13267:16:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55632,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"13204:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13208:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"13204:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13204:80:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":55629,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13156:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55628,"name":"bytes","nodeType":"ElementaryTypeName","src":"13156:5:81","typeDescriptions":{}}},"id":55630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13162:6:81","memberName":"concat","nodeType":"MemberAccess","src":"13156:12:81","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13156:142:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"13137:161:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55643,"nodeType":"ExpressionStatement","src":"13137:161:81"},{"expression":{"arguments":[{"expression":{"id":55647,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13338:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13349:9:81","memberName":"messageId","nodeType":"MemberAccess","referencedDeclaration":53721,"src":"13338:20:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55649,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13360:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13371:11:81","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53723,"src":"13360:22:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55651,"name":"valueClaim","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55621,"src":"13384:10:81","typeDescriptions":{"typeIdentifier":"t_struct$_ValueClaim_$53726_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata"}},"id":55652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13395:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53725,"src":"13384:16:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55644,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55598,"src":"13313:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"id":55646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13325:12:81","memberName":"valueClaimed","nodeType":"MemberAccess","referencedDeclaration":53619,"src":"13313:24:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,uint128) external"}},"id":55653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13313:88:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55654,"nodeType":"ExpressionStatement","src":"13313:88:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55611,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55608,"src":"13000:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55612,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"13004:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13020:11:81","memberName":"valueClaims","nodeType":"MemberAccess","referencedDeclaration":53714,"src":"13004:27:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_ValueClaim_$53726_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.ValueClaim calldata[] calldata"}},"id":55614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13032:6:81","memberName":"length","nodeType":"MemberAccess","src":"13004:34:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13000:38:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55656,"initializationExpression":{"assignments":[55608],"declarations":[{"constant":false,"id":55608,"mutability":"mutable","name":"i","nameLocation":"12993:1:81","nodeType":"VariableDeclaration","scope":55656,"src":"12985:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55607,"name":"uint256","nodeType":"ElementaryTypeName","src":"12985:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55610,"initialValue":{"hexValue":"30","id":55609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12997:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12985:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13040:3:81","subExpression":{"id":55616,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55608,"src":"13040:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55618,"nodeType":"ExpressionStatement","src":"13040:3:81"},"nodeType":"ForStatement","src":"12980:432:81"},{"assignments":[55658],"declarations":[{"constant":false,"id":55658,"mutability":"mutable","name":"messagesHashes","nameLocation":"13435:14:81","nodeType":"VariableDeclaration","scope":55753,"src":"13422:27:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":55657,"name":"bytes","nodeType":"ElementaryTypeName","src":"13422:5:81","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":55659,"nodeType":"VariableDeclarationStatement","src":"13422:27:81"},{"body":{"id":55729,"nodeType":"Block","src":"13522:764:81","statements":[{"assignments":[55674],"declarations":[{"constant":false,"id":55674,"mutability":"mutable","name":"outgoingMessage","nameLocation":"13561:15:81","nodeType":"VariableDeclaration","scope":55729,"src":"13536:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":55673,"nodeType":"UserDefinedTypeName","pathNode":{"id":55672,"name":"OutgoingMessage","nameLocations":["13536:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53738,"src":"13536:15:81"},"referencedDeclaration":53738,"src":"13536:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"id":55679,"initialValue":{"baseExpression":{"expression":{"id":55675,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"13579:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13595:8:81","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53718,"src":"13579:24:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53738_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55678,"indexExpression":{"id":55677,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"13604:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13579:27:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"nodeType":"VariableDeclarationStatement","src":"13536:70:81"},{"expression":{"id":55689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55680,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55658,"src":"13621:14:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55684,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55658,"src":"13651:14:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"arguments":[{"id":55686,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13688:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}],"id":55685,"name":"_outgoingMessageHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55834,"src":"13667:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_OutgoingMessage_$53738_calldata_ptr_$returns$_t_bytes32_$","typeString":"function (struct IRouter.OutgoingMessage calldata) pure returns (bytes32)"}},"id":55687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13667:37:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55682,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13638:5:81","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":55681,"name":"bytes","nodeType":"ElementaryTypeName","src":"13638:5:81","typeDescriptions":{}}},"id":55683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13644:6:81","memberName":"concat","nodeType":"MemberAccess","src":"13638:12:81","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13638:67:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"13621:84:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":55690,"nodeType":"ExpressionStatement","src":"13621:84:81"},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":55695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":55691,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13724:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13740:12:81","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"13724:28:81","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53743_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13753:2:81","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53740,"src":"13724:31:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13759:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13724:36:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":55727,"nodeType":"Block","src":"13959:317:81","statements":[{"expression":{"arguments":[{"expression":{"id":55713,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"14020:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14036:11:81","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"14020:27:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55715,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"14069:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14085:7:81","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"14069:23:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55717,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"14114:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14130:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53734,"src":"14114:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":55719,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"14157:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14173:12:81","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"14157:28:81","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53743_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14186:2:81","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53740,"src":"14157:31:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":55722,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"14210:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14226:12:81","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"14210:28:81","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53743_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14239:4:81","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"14210:33:81","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55710,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55598,"src":"13977:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"id":55712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13989:9:81","memberName":"replySent","nodeType":"MemberAccess","referencedDeclaration":53610,"src":"13977:21:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$_t_bytes32_$_t_bytes4_$returns$__$","typeString":"function (address,bytes memory,uint128,bytes32,bytes4) external"}},"id":55725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13977:284:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55726,"nodeType":"ExpressionStatement","src":"13977:284:81"}]},"id":55728,"nodeType":"IfStatement","src":"13720:556:81","trueBody":{"id":55709,"nodeType":"Block","src":"13762:191:81","statements":[{"expression":{"arguments":[{"expression":{"id":55699,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13825:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13841:2:81","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53728,"src":"13825:18:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55701,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13845:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13861:11:81","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"13845:27:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55703,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13874:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13890:7:81","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"13874:23:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55705,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55674,"src":"13899:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13915:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53734,"src":"13899:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"id":55696,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55598,"src":"13780:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"id":55698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13792:11:81","memberName":"messageSent","nodeType":"MemberAccess","referencedDeclaration":53597,"src":"13780:23:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$_t_uint128_$returns$__$","typeString":"function (bytes32,address,bytes memory,uint128) external"}},"id":55707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13780:158:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55708,"nodeType":"ExpressionStatement","src":"13780:158:81"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55664,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"13480:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55665,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"13484:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13500:8:81","memberName":"messages","nodeType":"MemberAccess","referencedDeclaration":53718,"src":"13484:24:81","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OutgoingMessage_$53738_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata[] calldata"}},"id":55667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13509:6:81","memberName":"length","nodeType":"MemberAccess","src":"13484:31:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13480:35:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55730,"initializationExpression":{"assignments":[55661],"declarations":[{"constant":false,"id":55661,"mutability":"mutable","name":"i","nameLocation":"13473:1:81","nodeType":"VariableDeclaration","scope":55730,"src":"13465:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55660,"name":"uint256","nodeType":"ElementaryTypeName","src":"13465:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55663,"initialValue":{"hexValue":"30","id":55662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13477:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13465:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13517:3:81","subExpression":{"id":55669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55661,"src":"13517:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55671,"nodeType":"ExpressionStatement","src":"13517:3:81"},"nodeType":"ForStatement","src":"13460:826:81"},{"expression":{"arguments":[{"expression":{"id":55734,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"14320:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14336:12:81","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"14320:28:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55731,"name":"mirrorActor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55598,"src":"14296:11:81","typeDescriptions":{"typeIdentifier":"t_contract$_IMirror_$53636","typeString":"contract IMirror"}},"id":55733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14308:11:81","memberName":"updateState","nodeType":"MemberAccess","referencedDeclaration":53586,"src":"14296:23:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_bytes32_$returns$__$","typeString":"function (bytes32) external"}},"id":55736,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14296:53:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55737,"nodeType":"ExpressionStatement","src":"14296:53:81"},{"expression":{"arguments":[{"expression":{"id":55739,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"14401:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14417:7:81","memberName":"actorId","nodeType":"MemberAccess","referencedDeclaration":53706,"src":"14401:23:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55741,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"14438:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14454:12:81","memberName":"newStateHash","nodeType":"MemberAccess","referencedDeclaration":53708,"src":"14438:28:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55743,"name":"stateTransition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55557,"src":"14480:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition calldata"}},"id":55744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14496:14:81","memberName":"valueToReceive","nodeType":"MemberAccess","referencedDeclaration":53710,"src":"14480:30:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"arguments":[{"id":55746,"name":"valueClaimsBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55605,"src":"14534:16:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55745,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14524:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14524:27:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"id":55749,"name":"messagesHashes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55658,"src":"14575:14:81","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55748,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14565:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14565:25:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":55738,"name":"_stateTransitionHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55805,"src":"14367:20:81","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_bytes32_$_t_uint128_$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (address,bytes32,uint128,bytes32,bytes32) pure returns (bytes32)"}},"id":55751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14367:233:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55561,"id":55752,"nodeType":"Return","src":"14360:240:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_doStateTransition","nameLocation":"12446:18:81","parameters":{"id":55558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55557,"mutability":"mutable","name":"stateTransition","nameLocation":"12490:15:81","nodeType":"VariableDeclaration","scope":55754,"src":"12465:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_calldata_ptr","typeString":"struct IRouter.StateTransition"},"typeName":{"id":55556,"nodeType":"UserDefinedTypeName","pathNode":{"id":55555,"name":"StateTransition","nameLocations":["12465:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53719,"src":"12465:15:81"},"referencedDeclaration":53719,"src":"12465:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_StateTransition_$53719_storage_ptr","typeString":"struct IRouter.StateTransition"}},"visibility":"internal"}],"src":"12464:42:81"},"returnParameters":{"id":55561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55560,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55754,"src":"12524:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55559,"name":"bytes32","nodeType":"ElementaryTypeName","src":"12524:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"12523:9:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55778,"nodeType":"FunctionDefinition","src":"14613:320:81","nodes":[],"body":{"id":55777,"nodeType":"Block","src":"14813:120:81","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":55770,"name":"blockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55756,"src":"14857:9:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55771,"name":"prevCommitmentHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55758,"src":"14868:18:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55772,"name":"predBlockHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55760,"src":"14888:13:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55773,"name":"transitionsHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55762,"src":"14903:21:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55768,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14840:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55769,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14844:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"14840:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14840:85:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55767,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14830:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14830:96:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55766,"id":55776,"nodeType":"Return","src":"14823:103:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_blockCommitmentHash","nameLocation":"14622:20:81","parameters":{"id":55763,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55756,"mutability":"mutable","name":"blockHash","nameLocation":"14660:9:81","nodeType":"VariableDeclaration","scope":55778,"src":"14652:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55755,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14652:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55758,"mutability":"mutable","name":"prevCommitmentHash","nameLocation":"14687:18:81","nodeType":"VariableDeclaration","scope":55778,"src":"14679:26:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55757,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14679:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55760,"mutability":"mutable","name":"predBlockHash","nameLocation":"14723:13:81","nodeType":"VariableDeclaration","scope":55778,"src":"14715:21:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55759,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14715:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55762,"mutability":"mutable","name":"transitionsHashesHash","nameLocation":"14754:21:81","nodeType":"VariableDeclaration","scope":55778,"src":"14746:29:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55761,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14746:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14642:139:81"},"returnParameters":{"id":55766,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55765,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55778,"src":"14804:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55764,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14804:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14803:9:81"},"scope":55996,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55805,"nodeType":"FunctionDefinition","src":"14939:350:81","nodes":[],"body":{"id":55804,"nodeType":"Block","src":"15162:127:81","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":55796,"name":"actorId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55780,"src":"15206:7:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55797,"name":"newStateHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55782,"src":"15215:12:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55798,"name":"valueToReceive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55784,"src":"15229:14:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"id":55799,"name":"valueClaimsHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55786,"src":"15245:15:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":55800,"name":"messagesHashesHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55788,"src":"15262:18:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":55794,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15189:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15193:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"15189:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55801,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15189:92:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55793,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15179:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15179:103:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55792,"id":55803,"nodeType":"Return","src":"15172:110:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_stateTransitionHash","nameLocation":"14948:20:81","parameters":{"id":55789,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55780,"mutability":"mutable","name":"actorId","nameLocation":"14986:7:81","nodeType":"VariableDeclaration","scope":55805,"src":"14978:15:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55779,"name":"address","nodeType":"ElementaryTypeName","src":"14978:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55782,"mutability":"mutable","name":"newStateHash","nameLocation":"15011:12:81","nodeType":"VariableDeclaration","scope":55805,"src":"15003:20:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15003:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55784,"mutability":"mutable","name":"valueToReceive","nameLocation":"15041:14:81","nodeType":"VariableDeclaration","scope":55805,"src":"15033:22:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55783,"name":"uint128","nodeType":"ElementaryTypeName","src":"15033:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"},{"constant":false,"id":55786,"mutability":"mutable","name":"valueClaimsHash","nameLocation":"15073:15:81","nodeType":"VariableDeclaration","scope":55805,"src":"15065:23:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55785,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15065:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":55788,"mutability":"mutable","name":"messagesHashesHash","nameLocation":"15106:18:81","nodeType":"VariableDeclaration","scope":55805,"src":"15098:26:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55787,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15098:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14968:162:81"},"returnParameters":{"id":55792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55791,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55805,"src":"15153:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55790,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15153:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15152:9:81"},"scope":55996,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55834,"nodeType":"FunctionDefinition","src":"15295:451:81","nodes":[],"body":{"id":55833,"nodeType":"Block","src":"15398:348:81","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":55816,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15472:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15488:2:81","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53728,"src":"15472:18:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55818,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15508:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15524:11:81","memberName":"destination","nodeType":"MemberAccess","referencedDeclaration":53730,"src":"15508:27:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55820,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15553:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15569:7:81","memberName":"payload","nodeType":"MemberAccess","referencedDeclaration":53732,"src":"15553:23:81","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":55822,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15594:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15610:5:81","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":53734,"src":"15594:21:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},{"expression":{"expression":{"id":55824,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15633:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15649:12:81","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"15633:28:81","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53743_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15662:2:81","memberName":"to","nodeType":"MemberAccess","referencedDeclaration":53740,"src":"15633:31:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":55827,"name":"outgoingMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55808,"src":"15682:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage calldata"}},"id":55828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15698:12:81","memberName":"replyDetails","nodeType":"MemberAccess","referencedDeclaration":53737,"src":"15682:28:81","typeDescriptions":{"typeIdentifier":"t_struct$_ReplyDetails_$53743_calldata_ptr","typeString":"struct IRouter.ReplyDetails calldata"}},"id":55829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15711:4:81","memberName":"code","nodeType":"MemberAccess","referencedDeclaration":53742,"src":"15682:33:81","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint128","typeString":"uint128"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":55814,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15438:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15442:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"15438:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15438:291:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55813,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15415:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15415:324:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55812,"id":55832,"nodeType":"Return","src":"15408:331:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_outgoingMessageHash","nameLocation":"15304:20:81","parameters":{"id":55809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55808,"mutability":"mutable","name":"outgoingMessage","nameLocation":"15350:15:81","nodeType":"VariableDeclaration","scope":55834,"src":"15325:40:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_calldata_ptr","typeString":"struct IRouter.OutgoingMessage"},"typeName":{"id":55807,"nodeType":"UserDefinedTypeName","pathNode":{"id":55806,"name":"OutgoingMessage","nameLocations":["15325:15:81"],"nodeType":"IdentifierPath","referencedDeclaration":53738,"src":"15325:15:81"},"referencedDeclaration":53738,"src":"15325:15:81","typeDescriptions":{"typeIdentifier":"t_struct$_OutgoingMessage_$53738_storage_ptr","typeString":"struct IRouter.OutgoingMessage"}},"visibility":"internal"}],"src":"15324:42:81"},"returnParameters":{"id":55812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55811,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55834,"src":"15389:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55810,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15389:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15388:9:81"},"scope":55996,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55853,"nodeType":"FunctionDefinition","src":"15752:192:81","nodes":[],"body":{"id":55852,"nodeType":"Block","src":"15852:92:81","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"expression":{"id":55845,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55837,"src":"15896:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15911:2:81","memberName":"id","nodeType":"MemberAccess","referencedDeclaration":53690,"src":"15896:17:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55847,"name":"codeCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55837,"src":"15915:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment calldata"}},"id":55848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15930:5:81","memberName":"valid","nodeType":"MemberAccess","referencedDeclaration":53692,"src":"15915:20:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":55843,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15879:3:81","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":55844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15883:12:81","memberName":"encodePacked","nodeType":"MemberAccess","src":"15879:16:81","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":55849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15879:57:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":55842,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"15869:9:81","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":55850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15869:68:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":55841,"id":55851,"nodeType":"Return","src":"15862:75:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_codeCommitmentHash","nameLocation":"15761:19:81","parameters":{"id":55838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55837,"mutability":"mutable","name":"codeCommitment","nameLocation":"15805:14:81","nodeType":"VariableDeclaration","scope":55853,"src":"15781:38:81","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_calldata_ptr","typeString":"struct IRouter.CodeCommitment"},"typeName":{"id":55836,"nodeType":"UserDefinedTypeName","pathNode":{"id":55835,"name":"CodeCommitment","nameLocations":["15781:14:81"],"nodeType":"IdentifierPath","referencedDeclaration":53693,"src":"15781:14:81"},"referencedDeclaration":53693,"src":"15781:14:81","typeDescriptions":{"typeIdentifier":"t_struct$_CodeCommitment_$53693_storage_ptr","typeString":"struct IRouter.CodeCommitment"}},"visibility":"internal"}],"src":"15780:40:81"},"returnParameters":{"id":55841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55853,"src":"15843:7:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55839,"name":"bytes32","nodeType":"ElementaryTypeName","src":"15843:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"15842:9:81"},"scope":55996,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":55886,"nodeType":"FunctionDefinition","src":"15950:257:81","nodes":[],"body":{"id":55885,"nodeType":"Block","src":"15998:209:81","nodes":[],"statements":[{"assignments":[55860],"declarations":[{"constant":false,"id":55860,"mutability":"mutable","name":"router","nameLocation":"16024:6:81","nodeType":"VariableDeclaration","scope":55885,"src":"16008:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55859,"nodeType":"UserDefinedTypeName","pathNode":{"id":55858,"name":"Storage","nameLocations":["16008:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"16008:7:81"},"referencedDeclaration":53684,"src":"16008:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55863,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55861,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"16033:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16033:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16008:38:81"},{"assignments":[55865],"declarations":[{"constant":false,"id":55865,"mutability":"mutable","name":"success","nameLocation":"16062:7:81","nodeType":"VariableDeclaration","scope":55885,"src":"16057:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":55864,"name":"bool","nodeType":"ElementaryTypeName","src":"16057:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":55879,"initialValue":{"arguments":[{"expression":{"id":55871,"name":"tx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-26,"src":"16112:2:81","typeDescriptions":{"typeIdentifier":"t_magic_transaction","typeString":"tx"}},"id":55872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16115:6:81","memberName":"origin","nodeType":"MemberAccess","src":"16112:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55875,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16131:4:81","typeDescriptions":{"typeIdentifier":"t_contract$_Router_$55996","typeString":"contract Router"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Router_$55996","typeString":"contract Router"}],"id":55874,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16123:7:81","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55873,"name":"address","nodeType":"ElementaryTypeName","src":"16123:7:81","typeDescriptions":{}}},"id":55876,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16123:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55877,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55855,"src":"16138:6:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint128","typeString":"uint128"}],"expression":{"arguments":[{"expression":{"id":55867,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55860,"src":"16079:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16086:11:81","memberName":"wrappedVara","nodeType":"MemberAccess","referencedDeclaration":53655,"src":"16079:18:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55866,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41906,"src":"16072:6:81","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$41906_$","typeString":"type(contract IERC20)"}},"id":55869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:26:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$41906","typeString":"contract IERC20"}},"id":55870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16099:12:81","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":41905,"src":"16072:39:81","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":55878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16072:73:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"16057:88:81"},{"expression":{"arguments":[{"id":55881,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55865,"src":"16164:7:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"6661696c656420746f207265747269657665205756617261","id":55882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16173:26:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""},"value":"failed to retrieve WVara"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3257f3c05b2e57b37b1b4545fc8e3f040a16378fd14b34b1b901c2ec9b919712","typeString":"literal_string \"failed to retrieve WVara\""}],"id":55880,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16156:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16156:44:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55884,"nodeType":"ExpressionStatement","src":"16156:44:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_retrieveValue","nameLocation":"15959:14:81","parameters":{"id":55856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55855,"mutability":"mutable","name":"_value","nameLocation":"15982:6:81","nodeType":"VariableDeclaration","scope":55886,"src":"15974:14:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":55854,"name":"uint128","nodeType":"ElementaryTypeName","src":"15974:7:81","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"15973:16:81"},"returnParameters":{"id":55857,"nodeType":"ParameterList","parameters":[],"src":"15998:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55927,"nodeType":"FunctionDefinition","src":"16213:317:81","nodes":[],"body":{"id":55926,"nodeType":"Block","src":"16249:281:81","nodes":[],"statements":[{"assignments":[55891],"declarations":[{"constant":false,"id":55891,"mutability":"mutable","name":"router","nameLocation":"16275:6:81","nodeType":"VariableDeclaration","scope":55926,"src":"16259:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55890,"nodeType":"UserDefinedTypeName","pathNode":{"id":55889,"name":"Storage","nameLocations":["16259:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"16259:7:81"},"referencedDeclaration":53684,"src":"16259:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55894,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55892,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"16284:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16284:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16259:38:81"},{"body":{"id":55920,"nodeType":"Block","src":"16367:118:81","statements":[{"assignments":[55908],"declarations":[{"constant":false,"id":55908,"mutability":"mutable","name":"validator","nameLocation":"16389:9:81","nodeType":"VariableDeclaration","scope":55920,"src":"16381:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55907,"name":"address","nodeType":"ElementaryTypeName","src":"16381:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55913,"initialValue":{"baseExpression":{"expression":{"id":55909,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55891,"src":"16401:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55910,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16408:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"16401:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55912,"indexExpression":{"id":55911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55896,"src":"16423:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16401:24:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16381:44:81"},{"expression":{"id":55918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"16439:35:81","subExpression":{"baseExpression":{"expression":{"id":55914,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55891,"src":"16446:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16453:10:81","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53667,"src":"16446:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55917,"indexExpression":{"id":55916,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55908,"src":"16464:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16446:28:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55919,"nodeType":"ExpressionStatement","src":"16439:35:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55899,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55896,"src":"16328:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":55900,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55891,"src":"16332:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16339:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"16332:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16354:6:81","memberName":"length","nodeType":"MemberAccess","src":"16332:28:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16328:32:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55921,"initializationExpression":{"assignments":[55896],"declarations":[{"constant":false,"id":55896,"mutability":"mutable","name":"i","nameLocation":"16321:1:81","nodeType":"VariableDeclaration","scope":55921,"src":"16313:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55895,"name":"uint256","nodeType":"ElementaryTypeName","src":"16313:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55898,"initialValue":{"hexValue":"30","id":55897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16325:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16313:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16362:3:81","subExpression":{"id":55904,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55896,"src":"16362:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55906,"nodeType":"ExpressionStatement","src":"16362:3:81"},"nodeType":"ForStatement","src":"16308:177:81"},{"expression":{"id":55924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"16495:28:81","subExpression":{"expression":{"id":55922,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55891,"src":"16502:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16509:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"16502:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55925,"nodeType":"ExpressionStatement","src":"16495:28:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_cleanValidators","nameLocation":"16222:16:81","parameters":{"id":55887,"nodeType":"ParameterList","parameters":[],"src":"16238:2:81"},"returnParameters":{"id":55888,"nodeType":"ParameterList","parameters":[],"src":"16249:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55982,"nodeType":"FunctionDefinition","src":"16536:442:81","nodes":[],"body":{"id":55981,"nodeType":"Block","src":"16603:375:81","nodes":[],"statements":[{"assignments":[55935],"declarations":[{"constant":false,"id":55935,"mutability":"mutable","name":"router","nameLocation":"16629:6:81","nodeType":"VariableDeclaration","scope":55981,"src":"16613:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55934,"nodeType":"UserDefinedTypeName","pathNode":{"id":55933,"name":"Storage","nameLocations":["16613:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"16613:7:81"},"referencedDeclaration":53684,"src":"16613:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"id":55938,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55936,"name":"_getStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55995,"src":"16638:11:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_struct$_Storage_$53684_storage_ptr_$","typeString":"function () view returns (struct IRouter.Storage storage pointer)"}},"id":55937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16638:13:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"16613:38:81"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":55940,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55935,"src":"16670:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55941,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16677:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"16670:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16692:6:81","memberName":"length","nodeType":"MemberAccess","src":"16670:28:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16702:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16670:33:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"70726576696f75732076616c696461746f727320776572656e27742072656d6f766564","id":55945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16705:37:81","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""},"value":"previous validators weren't removed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbe432dd5148cbcd3965634d2fa4c608dba4822bc479da840b7f667e6442b9d2","typeString":"literal_string \"previous validators weren't removed\""}],"id":55939,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"16662:7:81","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16662:81:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55947,"nodeType":"ExpressionStatement","src":"16662:81:81"},{"body":{"id":55973,"nodeType":"Block","src":"16808:113:81","statements":[{"assignments":[55960],"declarations":[{"constant":false,"id":55960,"mutability":"mutable","name":"validator","nameLocation":"16830:9:81","nodeType":"VariableDeclaration","scope":55973,"src":"16822:17:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55959,"name":"address","nodeType":"ElementaryTypeName","src":"16822:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55964,"initialValue":{"baseExpression":{"id":55961,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55930,"src":"16842:16:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55963,"indexExpression":{"id":55962,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55949,"src":"16859:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16842:19:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16822:39:81"},{"expression":{"id":55971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"expression":{"id":55965,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55935,"src":"16875:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55968,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16882:10:81","memberName":"validators","nodeType":"MemberAccess","referencedDeclaration":53667,"src":"16875:17:81","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55969,"indexExpression":{"id":55967,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55960,"src":"16893:9:81","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16875:28:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":55970,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16906:4:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"16875:35:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55972,"nodeType":"ExpressionStatement","src":"16875:35:81"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55952,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55949,"src":"16774:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55953,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55930,"src":"16778:16:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16795:6:81","memberName":"length","nodeType":"MemberAccess","src":"16778:23:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16774:27:81","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55974,"initializationExpression":{"assignments":[55949],"declarations":[{"constant":false,"id":55949,"mutability":"mutable","name":"i","nameLocation":"16767:1:81","nodeType":"VariableDeclaration","scope":55974,"src":"16759:9:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55948,"name":"uint256","nodeType":"ElementaryTypeName","src":"16759:7:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55951,"initialValue":{"hexValue":"30","id":55950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16771:1:81","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16759:13:81"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16803:3:81","subExpression":{"id":55956,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55949,"src":"16803:1:81","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55958,"nodeType":"ExpressionStatement","src":"16803:3:81"},"nodeType":"ForStatement","src":"16754:167:81"},{"expression":{"id":55979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":55975,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55935,"src":"16931:6:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage storage pointer"}},"id":55977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16938:14:81","memberName":"validatorsKeys","nodeType":"MemberAccess","referencedDeclaration":53670,"src":"16931:21:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55978,"name":"_validatorsArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55930,"src":"16955:16:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"src":"16931:40:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}},"id":55980,"nodeType":"ExpressionStatement","src":"16931:40:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setValidators","nameLocation":"16545:14:81","parameters":{"id":55931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55930,"mutability":"mutable","name":"_validatorsArray","nameLocation":"16577:16:81","nodeType":"VariableDeclaration","scope":55982,"src":"16560:33:81","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55928,"name":"address","nodeType":"ElementaryTypeName","src":"16560:7:81","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55929,"nodeType":"ArrayTypeName","src":"16560:9:81","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"16559:35:81"},"returnParameters":{"id":55932,"nodeType":"ParameterList","parameters":[],"src":"16603:0:81"},"scope":55996,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":55995,"nodeType":"FunctionDefinition","src":"16984:222:81","nodes":[],"body":{"id":55994,"nodeType":"Block","src":"17053:153:81","nodes":[],"statements":[{"assignments":[55989],"declarations":[{"constant":false,"id":55989,"mutability":"mutable","name":"slot","nameLocation":"17071:4:81","nodeType":"VariableDeclaration","scope":55994,"src":"17063:12:81","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":55988,"name":"bytes32","nodeType":"ElementaryTypeName","src":"17063:7:81","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":55992,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55990,"name":"getStorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54597,"src":"17078:14:81","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":55991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17078:16:81","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"17063:31:81"},{"AST":{"nativeSrc":"17157:43:81","nodeType":"YulBlock","src":"17157:43:81","statements":[{"nativeSrc":"17171:19:81","nodeType":"YulAssignment","src":"17171:19:81","value":{"name":"slot","nativeSrc":"17186:4:81","nodeType":"YulIdentifier","src":"17186:4:81"},"variableNames":[{"name":"router.slot","nativeSrc":"17171:11:81","nodeType":"YulIdentifier","src":"17171:11:81"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"cancun","externalReferences":[{"declaration":55986,"isOffset":false,"isSlot":true,"src":"17171:11:81","suffix":"slot","valueSize":1},{"declaration":55989,"isOffset":false,"isSlot":false,"src":"17186:4:81","valueSize":1}],"id":55993,"nodeType":"InlineAssembly","src":"17148:52:81"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_getStorage","nameLocation":"16993:11:81","parameters":{"id":55983,"nodeType":"ParameterList","parameters":[],"src":"17004:2:81"},"returnParameters":{"id":55987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55986,"mutability":"mutable","name":"router","nameLocation":"17045:6:81","nodeType":"VariableDeclaration","scope":55995,"src":"17029:22:81","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"},"typeName":{"id":55985,"nodeType":"UserDefinedTypeName","pathNode":{"id":55984,"name":"Storage","nameLocations":["17029:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53684,"src":"17029:7:81"},"referencedDeclaration":53684,"src":"17029:7:81","typeDescriptions":{"typeIdentifier":"t_struct$_Storage_$53684_storage_ptr","typeString":"struct IRouter.Storage"}},"visibility":"internal"}],"src":"17028:24:81"},"scope":55996,"stateMutability":"view","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":54400,"name":"IRouter","nameLocations":["800:7:81"],"nodeType":"IdentifierPath","referencedDeclaration":53951,"src":"800:7:81"},"id":54401,"nodeType":"InheritanceSpecifier","src":"800:7:81"},{"baseName":{"id":54402,"name":"OwnableUpgradeable","nameLocations":["809:18:81"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"809:18:81"},"id":54403,"nodeType":"InheritanceSpecifier","src":"809:18:81"},{"baseName":{"id":54404,"name":"ReentrancyGuardTransient","nameLocations":["829:24:81"],"nodeType":"IdentifierPath","referencedDeclaration":42400,"src":"829:24:81"},"id":54405,"nodeType":"InheritanceSpecifier","src":"829:24:81"}],"canonicalName":"Router","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[55996,42400,39024,40172,39278,53951],"name":"Router","nameLocation":"790:6:81","scope":55997,"usedErrors":[38860,38865,39041,39044,42267,42273,42344,43050,43055,43060],"usedEvents":[38871,39049,53748,53755,53762,53769,53772,53775,53780,53785]}],"license":"UNLICENSED"},"id":81} \ No newline at end of file diff --git a/ethexe/ethereum/TransparentUpgradeableProxy.json b/ethexe/ethereum/TransparentUpgradeableProxy.json index 634fa7adc51..df470e5c516 100644 --- a/ethexe/ethereum/TransparentUpgradeableProxy.json +++ b/ethexe/ethereum/TransparentUpgradeableProxy.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052604051610dd2380380610dd28339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610db2833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610db28339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6104ef806108c383390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b60805161045b6104685f395f6010015261045b5ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea264697066735822122052ac11612fe052dd17a5242ad9d36f90c46cbabf133482651ca592ac1232b14064736f6c634300081a0033608060405234801561000f575f80fd5b506040516104ef3803806104ef83398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103fa806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea2646970667358221220b844380e80ea3f84f6eed4ba68e8dd6ac21fcd1531bf5caae084f26cce2c847d64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4239:2231:44:-:0;;;5082:296;;;;;;;;;;;;;;;;;;:::i;:::-;5173:6;5181:5;1155:52:37;5173:6:44;5181:5;1155:29:37;:52::i;:::-;1081:133;;5230:12:44::1;5215:28;;;;;:::i;:::-;-1:-1:-1::0;;;;;1601:32:81;;;1583:51;;1571:2;1556:18;5215:28:44::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;;;;5198:46:44::1;;::::0;5332:39:::1;5357:13;5525:6:::0;;;5445:93;5357:13:::1;5332:24;:39::i;:::-;5082:296:::0;;;4239:2231;;2274:344:38;2365:37;2384:17;2365:18;:37::i;:::-;2417:36;;-1:-1:-1;;;;;2417:36:38;;;;;;;;2468:11;;:15;2464:148;;2499:53;2528:17;2547:4;2499:28;:53::i;:::-;;2274:344;;:::o;2464:148::-;2583:18;:16;:18::i;:::-;2274:344;;:::o;3837:142::-;3900:43;3922:10;-1:-1:-1;;;;;;;;;;;3366:44:38;-1:-1:-1;;;;;3366:44:38;;3297:120;3922:10;3900:43;;;-1:-1:-1;;;;;1837:32:81;;;1819:51;;1906:32;;;1901:2;1886:18;;1879:60;1792:18;3900:43:38;;;;;;;3953:19;3963:8;3953:9;:19::i;:::-;3837:142;:::o;1681:281::-;1758:17;-1:-1:-1;;;;;1758:29:38;;1791:1;1758:34;1754:119;;1815:47;;-1:-1:-1;;;1815:47:38;;-1:-1:-1;;;;;1601:32:81;;1815:47:38;;;1583:51:81;1556:18;;1815:47:38;;;;;;;;1754:119;1938:17;821:66;1882:47;:73;;-1:-1:-1;;;;;;1882:73:38;-1:-1:-1;;;;;1882:73:38;;;;;;;;;;-1:-1:-1;1681:281:38:o;3900:253:48:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:48;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:48;;-1:-1:-1;4007:67:48;-1:-1:-1;4091:55:48;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:48:o;6123:122:38:-;6173:9;:13;6169:70;;6209:19;;-1:-1:-1;;;6209:19:38;;;;;;;;;;;6169:70;6123:122::o;3500:217::-;-1:-1:-1;;;;;3559:22:38;;3555:91;;3604:31;;-1:-1:-1;;;3604:31:38;;3632:1;3604:31;;;1583:51:81;1556:18;;3604:31:38;1437:203:81;3555:91:38;3702:8;-1:-1:-1;;;;;;;;;;;3655:38:38;2514:190:53:o;4421:582:48:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:48;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:48;;-1:-1:-1;;;;;1601:32:81;;4917:24:48;;;1583:51:81;1556:18;;4917:24:48;1437:203:81;4837:119:48;-1:-1:-1;4976:10:48;4589:408;4421:582;;;;;:::o;5543:518::-;5674:17;;:21;5670:385;;5902:10;5896:17;5958:15;5945:10;5941:2;5937:19;5930:44;5670:385;6025:19;;-1:-1:-1;;;6025:19:48;;;;;;;;;;;4239:2231:44;;;;;;;;:::o;14:177:81:-;93:13;;-1:-1:-1;;;;;135:31:81;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:1104;425:6;433;441;494:2;482:9;473:7;469:23;465:32;462:52;;;510:1;507;500:12;462:52;533:40;563:9;533:40;:::i;:::-;523:50;;592:49;637:2;626:9;622:18;592:49;:::i;:::-;685:2;670:18;;664:25;582:59;;-1:-1:-1;;;;;;701:30:81;;698:50;;;744:1;741;734:12;698:50;767:22;;820:4;812:13;;808:27;-1:-1:-1;798:55:81;;849:1;846;839:12;798:55;876:9;;-1:-1:-1;;;;;897:30:81;;894:56;;;930:18;;:::i;:::-;979:2;973:9;1071:2;1033:17;;-1:-1:-1;;1029:31:81;;;1062:2;1025:40;1021:54;1009:67;;-1:-1:-1;;;;;1091:34:81;;1127:22;;;1088:62;1085:88;;;1153:18;;:::i;:::-;1189:2;1182:22;1213;;;1254:15;;;1271:2;1250:24;1247:37;-1:-1:-1;1244:57:81;;;1297:1;1294;1287:12;1244:57;1346:6;1341:2;1337;1333:11;1328:2;1320:6;1316:15;1310:43;1399:1;1394:2;1385:6;1377;1373:19;1369:28;1362:39;1420:6;1410:16;;;;;328:1104;;;;;:::o;1950:301::-;2079:3;2117:6;2111:13;2163:6;2156:4;2148:6;2144:17;2139:3;2133:37;2225:1;2189:16;;2214:13;;;-1:-1:-1;2189:16:81;1950:301;-1:-1:-1;1950:301:81:o;:::-;4239:2231:44;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea264697066735822122052ac11612fe052dd17a5242ad9d36f90c46cbabf133482651ca592ac1232b14064736f6c634300081a0033","sourceMap":"4239:2231:44:-:0;;;2649:11:39;:9;:11::i;:::-;4239:2231:44;5680:369;5525:6;-1:-1:-1;;;;;5741:27:44;:10;:27;5737:306;;5788:7;;-1:-1:-1;;;;;;5788:7:44;-1:-1:-1;;;5788:65:44;5784:201;;5880:24;;-1:-1:-1;;;5880:24:44;;;;;;;;;;;5784:201;5943:27;:25;:27::i;:::-;5680:369::o;5737:306::-;6015:17;:15;:17::i;6251:217::-;6307:25;;6366:12;:8;6375:1;6366:8;6307:25;6366:12;:::i;:::-;6355:42;;;;;;;:::i;:::-;6306:91;;;;6407:54;6437:17;6456:4;6407:29;:54::i;:::-;6296:172;;6251:217::o;2323:83:39:-;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;2274:344:38:-;2365:37;2384:17;2365:18;:37::i;:::-;2417:36;;-1:-1:-1;;;;;2417:36:38;;;;;;;;2468:11;;:15;2464:148;;2499:53;2528:17;2547:4;2499:28;:53::i;:::-;;6296:172:44;;6251:217::o;2464:148:38:-;2583:18;:16;:18::i;1583:132:37:-;1650:7;1676:32;821:66:38;1529:53;-1:-1:-1;;;;;1529:53:38;;1451:138;1676:32:37;1669:39;;1583:132;:::o;949:895:39:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27;1681:281:38;1758:17;-1:-1:-1;;;;;1758:29:38;;1791:1;1758:34;1754:119;;1815:47;;-1:-1:-1;;;1815:47:38;;-1:-1:-1;;;;;1777:32:81;;1815:47:38;;;1759:51:81;1732:18;;1815:47:38;;;;;;;;1754:119;821:66;1882:73;;-1:-1:-1;;;;;;1882:73:38;-1:-1:-1;;;;;1882:73:38;;;;;;;;;;1681:281::o;3900:253:48:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:48;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:48:o;6123:122:38:-;6173:9;:13;6169:70;;6209:19;;-1:-1:-1;;;6209:19:38;;;;;;;;;;;4421:582:48;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:48;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:48;;-1:-1:-1;;;;;1777:32:81;;4917:24:48;;;1759:51:81;1732:18;;4917:24:48;1613:203:81;4837:119:48;-1:-1:-1;4976:10:48;4589:408;4421:582;;;;;:::o;5543:518::-;5674:17;;:21;5670:385;;5902:10;5896:17;5958:15;5945:10;5941:2;5937:19;5930:44;5670:385;6025:19;;-1:-1:-1;;;6025:19:48;;;;;;;;;;;14:331:81;119:9;130;172:8;160:10;157:24;154:44;;;194:1;191;184:12;154:44;223:6;213:8;210:20;207:40;;;243:1;240;233:12;207:40;-1:-1:-1;;269:23:81;;;314:25;;;;;-1:-1:-1;14:331:81:o;350:127::-;411:10;406:3;402:20;399:1;392:31;442:4;439:1;432:15;466:4;463:1;456:15;482:1126;567:6;575;628:2;616:9;607:7;603:23;599:32;596:52;;;644:1;641;634:12;596:52;670:23;;-1:-1:-1;;;;;722:31:81;;712:42;;702:70;;768:1;765;758:12;702:70;791:5;-1:-1:-1;847:2:81;832:18;;819:32;874:18;863:30;;860:50;;;906:1;903;896:12;860:50;929:22;;982:4;974:13;;970:27;-1:-1:-1;960:55:81;;1011:1;1008;1001:12;960:55;1051:2;1038:16;1077:18;1069:6;1066:30;1063:56;;;1099:18;;:::i;:::-;1148:2;1142:9;1240:2;1202:17;;-1:-1:-1;;1198:31:81;;;1231:2;1194:40;1190:54;1178:67;;1275:18;1260:34;;1296:22;;;1257:62;1254:88;;;1322:18;;:::i;:::-;1358:2;1351:22;1382;;;1423:15;;;1440:2;1419:24;1416:37;-1:-1:-1;1413:57:81;;;1466:1;1463;1456:12;1413:57;1522:6;1517:2;1513;1509:11;1504:2;1496:6;1492:15;1479:50;1575:1;1570:2;1561:6;1553;1549:19;1545:28;1538:39;1596:6;1586:16;;;;;482:1126;;;;;:::o;1821:301::-;1950:3;1988:6;1982:13;2034:6;2027:4;2019:6;2015:17;2010:3;2004:37;2096:1;2060:16;;2085:13;;;-1:-1:-1;2060:16:81;1821:301;-1:-1:-1;1821:301:81:o","linkReferences":{},"immutableReferences":{"41719":[{"start":16,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5\",\"dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5\",\"dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1\",\"dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5\",\"dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8","urls":["bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5","dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311","urls":["bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5","dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995","urls":["bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1","dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035","urls":["bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5","dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":41829,"exportedSymbols":{"ERC1967Proxy":[41159],"ERC1967Utils":[41453],"IERC1967":[40796],"ITransparentUpgradeableProxy":[41714],"ProxyAdmin":[41693],"TransparentUpgradeableProxy":[41828]},"nodeType":"SourceUnit","src":"133:6338:44","nodes":[{"id":41695,"nodeType":"PragmaDirective","src":"133:24:44","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41697,"nodeType":"ImportDirective","src":"159:57:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41454,"symbolAliases":[{"foreign":{"id":41696,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"167:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41699,"nodeType":"ImportDirective","src":"217:57:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41160,"symbolAliases":[{"foreign":{"id":41698,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41159,"src":"225:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41701,"nodeType":"ImportDirective","src":"275:55:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":40797,"symbolAliases":[{"foreign":{"id":41700,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40796,"src":"283:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41703,"nodeType":"ImportDirective","src":"331:44:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41694,"symbolAliases":[{"foreign":{"id":41702,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41693,"src":"339:10:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41714,"nodeType":"ContractDefinition","src":"823:127:44","nodes":[{"id":41713,"nodeType":"FunctionDefinition","src":"880:68:44","nodes":[],"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"889:16:44","parameters":{"id":41711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41713,"src":"906:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41707,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41713,"src":"915:14:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":41709,"name":"bytes","nodeType":"ElementaryTypeName","src":"915:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"905:25:44"},"returnParameters":{"id":41712,"nodeType":"ParameterList","parameters":[],"src":"947:0:44"},"scope":41714,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":41705,"name":"IERC1967","nameLocations":["865:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":40796,"src":"865:8:44"},"id":41706,"nodeType":"InheritanceSpecifier","src":"865:8:44"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":41704,"nodeType":"StructuredDocumentation","src":"377:445:44","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[41714,40796],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:44","scope":41829,"usedErrors":[],"usedEvents":[40783,40790,40795]},{"id":41828,"nodeType":"ContractDefinition","src":"4239:2231:44","nodes":[{"id":41719,"nodeType":"VariableDeclaration","src":"4633:32:44","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4659:6:44","scope":41828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41718,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":41722,"nodeType":"ErrorDefinition","src":"4779:31:44","nodes":[],"documentation":{"id":41720,"nodeType":"StructuredDocumentation","src":"4672:102:44","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4785:22:44","parameters":{"id":41721,"nodeType":"ParameterList","parameters":[],"src":"4807:2:44"}},{"id":41755,"nodeType":"FunctionDefinition","src":"5082:296:44","nodes":[],"body":{"id":41754,"nodeType":"Block","src":"5188:190:44","nodes":[],"statements":[{"expression":{"id":41745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41736,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41719,"src":"5198:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":41742,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41727,"src":"5230:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":41741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5215:14:44","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$41693_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":41740,"nodeType":"UserDefinedTypeName","pathNode":{"id":41739,"name":"ProxyAdmin","nameLocations":["5219:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":41693,"src":"5219:10:44"},"referencedDeclaration":41693,"src":"5219:10:44","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}}},"id":41743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}],"id":41738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41737,"name":"address","nodeType":"ElementaryTypeName","src":"5207:7:44","typeDescriptions":{}}},"id":41744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:46:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":41746,"nodeType":"ExpressionStatement","src":"5198:46:44"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":41750,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"5357:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":41751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5357:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":41747,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"5332:12:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$41453_$","typeString":"type(library ERC1967Utils)"}},"id":41749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5345:11:44","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":41335,"src":"5332:24:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":41752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41753,"nodeType":"ExpressionStatement","src":"5332:39:44"}]},"documentation":{"id":41723,"nodeType":"StructuredDocumentation","src":"4816:261:44","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":41732,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41725,"src":"5173:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41733,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41729,"src":"5181:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":41734,"kind":"baseConstructorSpecifier","modifierName":{"id":41731,"name":"ERC1967Proxy","nameLocations":["5160:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":41159,"src":"5160:12:44"},"nodeType":"ModifierInvocation","src":"5160:27:44"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":41730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41725,"mutability":"mutable","name":"_logic","nameLocation":"5102:6:44","nodeType":"VariableDeclaration","scope":41755,"src":"5094:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41724,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41727,"mutability":"mutable","name":"initialOwner","nameLocation":"5118:12:44","nodeType":"VariableDeclaration","scope":41755,"src":"5110:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41726,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41729,"mutability":"mutable","name":"_data","nameLocation":"5145:5:44","nodeType":"VariableDeclaration","scope":41755,"src":"5132:18:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41728,"name":"bytes","nodeType":"ElementaryTypeName","src":"5132:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5093:58:44"},"returnParameters":{"id":41735,"nodeType":"ParameterList","parameters":[],"src":"5188:0:44"},"scope":41828,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":41764,"nodeType":"FunctionDefinition","src":"5445:93:44","nodes":[],"body":{"id":41763,"nodeType":"Block","src":"5508:30:44","nodes":[],"statements":[{"expression":{"id":41761,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41719,"src":"5525:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":41760,"id":41762,"nodeType":"Return","src":"5518:13:44"}]},"documentation":{"id":41756,"nodeType":"StructuredDocumentation","src":"5384:56:44","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5454:11:44","parameters":{"id":41757,"nodeType":"ParameterList","parameters":[],"src":"5465:2:44"},"returnParameters":{"id":41760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41764,"src":"5499:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41758,"name":"address","nodeType":"ElementaryTypeName","src":"5499:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5498:9:44"},"scope":41828,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":41798,"nodeType":"FunctionDefinition","src":"5680:369:44","nodes":[],"body":{"id":41797,"nodeType":"Block","src":"5727:322:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":41773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41769,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5741:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:6:44","memberName":"sender","nodeType":"MemberAccess","src":"5741:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":41771,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"5755:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":41772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5741:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":41795,"nodeType":"Block","src":"6001:42:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":41790,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6015:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$41828_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":41792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:9:44","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":41480,"src":"6015:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41794,"nodeType":"ExpressionStatement","src":"6015:17:44"}]},"id":41796,"nodeType":"IfStatement","src":"5737:306:44","trueBody":{"id":41789,"nodeType":"Block","src":"5770:225:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":41779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41774,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5788:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5792:3:44","memberName":"sig","nodeType":"MemberAccess","src":"5788:7:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":41776,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41714,"src":"5799:28:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$41714_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":41777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5828:16:44","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41713,"src":"5799:45:44","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":41778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5845:8:44","memberName":"selector","nodeType":"MemberAccess","src":"5799:54:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5788:65:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":41787,"nodeType":"Block","src":"5925:60:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41784,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41827,"src":"5943:25:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41786,"nodeType":"ExpressionStatement","src":"5943:27:44"}]},"id":41788,"nodeType":"IfStatement","src":"5784:201:44","trueBody":{"id":41783,"nodeType":"Block","src":"5855:64:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":41780,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41722,"src":"5880:22:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":41781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5880:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":41782,"nodeType":"RevertStatement","src":"5873:31:44"}]}}]}}]},"baseFunctions":[41480],"documentation":{"id":41765,"nodeType":"StructuredDocumentation","src":"5544:131:44","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5689:9:44","overrides":{"id":41767,"nodeType":"OverrideSpecifier","overrides":[],"src":"5718:8:44"},"parameters":{"id":41766,"nodeType":"ParameterList","parameters":[],"src":"5698:2:44"},"returnParameters":{"id":41768,"nodeType":"ParameterList","parameters":[],"src":"5727:0:44"},"scope":41828,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":41827,"nodeType":"FunctionDefinition","src":"6251:217:44","nodes":[],"body":{"id":41826,"nodeType":"Block","src":"6296:172:44","nodes":[],"statements":[{"assignments":[41803,41805],"declarations":[{"constant":false,"id":41803,"mutability":"mutable","name":"newImplementation","nameLocation":"6315:17:44","nodeType":"VariableDeclaration","scope":41826,"src":"6307:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41802,"name":"address","nodeType":"ElementaryTypeName","src":"6307:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41805,"mutability":"mutable","name":"data","nameLocation":"6347:4:44","nodeType":"VariableDeclaration","scope":41826,"src":"6334:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41804,"name":"bytes","nodeType":"ElementaryTypeName","src":"6334:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":41818,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":41808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6366:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:4:44","memberName":"data","nodeType":"MemberAccess","src":"6366:8:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":41811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6366:12:44","startExpression":{"hexValue":"34","id":41810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6375:1:44","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":41813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6381:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41812,"name":"address","nodeType":"ElementaryTypeName","src":"6381:7:44","typeDescriptions":{}}},{"id":41815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6390:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41814,"name":"bytes","nodeType":"ElementaryTypeName","src":"6390:5:44","typeDescriptions":{}}}],"id":41816,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6380:16:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":41806,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6355:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6359:6:44","memberName":"decode","nodeType":"MemberAccess","src":"6355:10:44","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":41817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:42:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:91:44"},{"expression":{"arguments":[{"id":41822,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41803,"src":"6437:17:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41823,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41805,"src":"6456:4:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41819,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"6407:12:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$41453_$","typeString":"type(library ERC1967Utils)"}},"id":41821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6420:16:44","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41268,"src":"6407:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":41824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:54:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41825,"nodeType":"ExpressionStatement","src":"6407:54:44"}]},"documentation":{"id":41799,"nodeType":"StructuredDocumentation","src":"6055:191:44","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6260:25:44","parameters":{"id":41800,"nodeType":"ParameterList","parameters":[],"src":"6285:2:44"},"returnParameters":{"id":41801,"nodeType":"ParameterList","parameters":[],"src":"6296:0:44"},"scope":41828,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":41716,"name":"ERC1967Proxy","nameLocations":["4279:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":41159,"src":"4279:12:44"},"id":41717,"nodeType":"InheritanceSpecifier","src":"4279:12:44"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[41693],"contractKind":"contract","documentation":{"id":41715,"nodeType":"StructuredDocumentation","src":"952:3286:44","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[41828,41159,41489],"name":"TransparentUpgradeableProxy","nameLocation":"4248:27:44","scope":41829,"usedErrors":[41179,41184,41192,41722,41978,42270],"usedEvents":[40783,40790]}],"license":"MIT"},"id":44} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_logic","type":"address","internalType":"address"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"AdminChanged","inputs":[{"name":"previousAdmin","type":"address","indexed":false,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidAdmin","inputs":[{"name":"admin","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"ProxyDeniedAdminAccess","inputs":[]}],"bytecode":{"object":"0x60a0604052610a99803803806100148161026b565b92833981016060828203126102675761002c82610290565b61003860208401610290565b604084015190936001600160401b03821161026757019180601f8401121561026757825161006d610068826102a4565b61026b565b9381855260208501926020838301011161026757815f926020809301855e85010152813b15610246577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022e575f809161012d945190845af43d15610226573d9161011e610068846102a4565b9283523d5f602085013e6102bf565b505b604051906104428083016001600160401b0381118482101761021257602092849261063784396001600160a01b031681520301905ff080156102075760018060a01b0316806080525f80516020610a79833981519152547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805160018060a01b0384168152846020820152a181156101f4576001600160a01b031916175f80516020610a7983398151915255604051610319908161031e82396080518160070152f35b633173bdd160e11b5f525f60045260245ffd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102bf565b505050341561012f5763b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761021257604052565b51906001600160a01b038216820361026757565b6001600160401b03811161021257601f01601f191660200190565b906102e357508051156102d457805190602001fd5b63d6bda27560e01b5f5260045ffd5b81511580610314575b6102f4575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102ec56fe6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220f8c4862c2f667058e1e953c94e53338920f93e3cff7433729018a6ca31ae9b8764736f6c634300081a003360803460b857601f61044238819003918201601f19168301916001600160401b0383118484101760bc5780849260209460405283398101031260b857516001600160a01b0381169081900360b857801560a5575f80546001600160a01b031981168317825560405192916001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361037190816100d18239f35b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f803560e01c8063715018a6146102785780638da5cb5b146102515780639623609d1461012e578063ad3cb1cc146100e15763f2fde38b14610051575f80fd5b346100de5760203660031901126100de576004356001600160a01b038116908190036100da5761007f610315565b80156100c65781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b80fd5b50346100de57806003193601126100de575061012a6040516101046040826102cf565b60058152640352e302e360dc1b60208201526040519182916020835260208301906102f1565b0390f35b506060366003190112610239576004356001600160a01b03811690819003610239576024356001600160a01b038116908190036102395760443567ffffffffffffffff8111610239573660238201121561023957806004013567ffffffffffffffff811161023d57604051916101ae601f8301601f1916602001846102cf565b818352366024838301011161023957815f9260246020930183860137830101526101d6610315565b823b156102395761020c925f9260405180958194829363278f794360e11b845260048401526040602484015260448301906102f1565b039134905af1801561022e57610220575080f35b61022c91505f906102cf565b005b6040513d5f823e3d90fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b34610239575f366003190112610239575f546040516001600160a01b039091168152602090f35b34610239575f36600319011261023957610290610315565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b90601f8019910116810190811067ffffffffffffffff82111761023d57604052565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b5f546001600160a01b0316330361032857565b63118cdaa760e01b5f523360045260245ffdfea26469706673582212209cf4e242a748d0fa8d93e9ba36cfbfba352a79c78840df9f239bdbe73004db9d64736f6c634300081a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103","sourceMap":"4239:2231:44:-:0;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;4239:2231:44;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;4239:2231:44;;;;;;;;;;;1758:29:38;;:34;1754:119;;821:66;4239:2231:44;;-1:-1:-1;;;;;;4239:2231:44;-1:-1:-1;;;;;4239:2231:44;;;;;;;;2417:36:38;-1:-1:-1;;2417:36:38;4239:2231:44;;2468:15:38;:11;;-1:-1:-1;4049:25:48;;4091:55;4049:25;;;;;;4239:2231:44;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;4239:2231:44;;;;4091:55:48;:::i;:::-;;2464:148:38;4239:2231:44;;;5215:28;;;;-1:-1:-1;;;;;5215:28:44;;;;;;;;4239:2231;5215:28;;;;;;-1:-1:-1;;;;;4239:2231:44;;;5215:28;;;-1:-1:-1;5215:28:44;;;;;4239:2231;;;;;;5198:46;;;-1:-1:-1;;;;;;;;;;;2878:66:38;3900:43;4239:2231:44;;;;;;;;;;;;;;;;;3900:43:38;3559:22;;3555:91;;-1:-1:-1;;;;;;4239:2231:44;;-1:-1:-1;;;;;;;;;;;4239:2231:44;;;;;;;;;5198:46;4239:2231;;;;;;3555:91:38;3604:31;;;-1:-1:-1;3604:31:38;-1:-1:-1;3604:31:38;4239:2231:44;;-1:-1:-1;3604:31:38;5215:28:44;4239:2231;;;-1:-1:-1;4239:2231:44;;;;;5215:28;4239:2231;;;-1:-1:-1;4239:2231:44;;;;;-1:-1:-1;4239:2231:44;;;;4091:55:48;:::i;2464:148:38:-;6173:9;;;;6169:70;2464:148;6169:70;6209:19;;;-1:-1:-1;6209:19:38;;-1:-1:-1;6209:19:38;1754:119;-1:-1:-1;;;;;1815:47:38;;;-1:-1:-1;;;;;4239:2231:44;;;;1815:47:38;4239:2231:44;;;1815:47:38;4239:2231:44;-1:-1:-1;4239:2231:44;;;;;;;;;-1:-1:-1;;4239:2231:44;;;-1:-1:-1;;;;;4239:2231:44;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;4239:2231:44;;;;;;:::o;:::-;-1:-1:-1;;;;;4239:2231:44;;;;;;-1:-1:-1;;4239:2231:44;;;;:::o;4421:582:48:-;;4593:8;;-1:-1:-1;4239:2231:44;;5674:21:48;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:44;;4841:22:48;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:48;4917:24;;;-1:-1:-1;;;;;4239:2231:44;;;;4917:24:48;4239:2231:44;;;4917:24:48;4841:49;4867:18;;;:23;4841:49;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031603610066575f356001600160e01b03191663278f794360e11b1461005c576334ad5dbb60e21b5f5260045ffd5b61006461010a565b005b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f9081906001600160a01b0316368280378136915af43d5f803e156100ab573d5ff35b3d5ffd5b634e487b7160e01b5f52604160045260245ffd5b6040519190601f01601f1916820167ffffffffffffffff8111838210176100e957604052565b6100af565b67ffffffffffffffff81116100e957601f01601f191660200190565b36600411610193576040366003190112610193576004356001600160a01b03811690819003610193576024359067ffffffffffffffff8211610193573660238301121561019357816004013590610168610163836100ee565b6100c3565b918083523660248286010111610193576020815f92602461019197018387013784010152610197565b565b5f80fd5b90813b1561022b577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0384169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2805115610213576102109161024c565b50565b50503461021c57565b63b398979f60e01b5f5260045ffd5b50634c9c8ce360e01b5f9081526001600160a01b0391909116600452602490fd5b5f8061027e93602081519101845af43d15610281573d9161026f610163846100ee565b9283523d5f602085013e610285565b90565b6060915b906102a9575080511561029a57805190602001fd5b63d6bda27560e01b5f5260045ffd5b815115806102da575b6102ba575090565b639996b31560e01b5f9081526001600160a01b0391909116600452602490fd5b50803b156102b256fea2646970667358221220f8c4862c2f667058e1e953c94e53338920f93e3cff7433729018a6ca31ae9b8764736f6c634300081a0033","sourceMap":"4239:2231:44:-:0;;;5741:10;5525:6;-1:-1:-1;;;;;4239:2231:44;5741:27;4239:2231;;5788:7;;-1:-1:-1;;;;;;5788:7:44;-1:-1:-1;;;5788:65:44;5799:54;;5880:24;;;5788:7;5880:24;;5788:7;5880:24;5784:201;;;:::i;:::-;4239:2231;5737:306;821:66:38;;-1:-1:-1;;;;;;;;;4239:2231:44;1019:819:39;-1:-1:-1;;1019:819:39;;;;;;;-1:-1:-1;1019:819:39;;;;;;-1:-1:-1;1019:819:39;;;-1:-1:-1;1019:819:39;4239:2231:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4239:2231:44;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;-1:-1:-1;;4239:2231:44;;;;:::o;6251:217::-;6366:8;6375:1;4239:2231;;;;6366:8;-1:-1:-1;;4239:2231:44;;;;6375:1;4239:2231;-1:-1:-1;;;;;4239:2231:44;;;;;;;;;;;;;;;;6366:8;4239:2231;;;;;;;;6375:1;4239:2231;;;;;;;:::i;:::-;;:::i;:::-;;;;;6366:8;4239:2231;;;;;;;;;;6366:8;4239:2231;;6456:4;4239:2231;;;;;;;;;;6456:4;:::i;:::-;6251:217::o;4239:2231::-;6366:8;4239:2231;;2274:344:38;;1758:29;;:34;1754:119;;821:66;4239:2231:44;;-1:-1:-1;;;;;;4239:2231:44;-1:-1:-1;;;;;4239:2231:44;;;;;;;;2417:36:38;-1:-1:-1;;2417:36:38;4239:2231:44;;2468:15:38;:11;;2499:53;;;:::i;:::-;;2274:344::o;2464:148::-;6173:9;;;6169:70;;2274:344::o;6169:70::-;6209:19;;;1791:1;6209:19;;1791:1;6209:19;1754:119;-1:-1:-1;;;;1791:1:38;1815:47;;;-1:-1:-1;;;;;4239:2231:44;;;;1815:47:38;4239:2231:44;;;1815:47:38;3900:253:48;4049:25;3900:253;4091:55;3900:253;4049:25;;;;;;;;4239:2231:44;;;;;;;;;;:::i;:::-;;;;;4049:25:48;;4239:2231:44;;;4091:55:48;:::i;:::-;3900:253;:::o;4239:2231:44:-;;;4421:582:48;;4593:8;;-1:-1:-1;4239:2231:44;;5674:21:48;:17;;5846:142;;;;;;5670:385;6025:19;;;5694:1;6025:19;;5694:1;6025:19;4589:408;4239:2231:44;;4841:22:48;:49;;;4589:408;4837:119;;4969:17;;:::o;4837:119::-;-1:-1:-1;;;4862:1:48;4917:24;;;-1:-1:-1;;;;;4239:2231:44;;;;4917:24:48;4239:2231:44;;;4917:24:48;4841:49;4867:18;;;:23;4841:49;","linkReferences":{},"immutableReferences":{"41719":[{"start":7,"length":32}]}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_logic\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProxyDeniedAdminAccess\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector clashing], which can potentially be used in an attack, this contract uses the https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two things that go hand in hand: 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating the proxy admin cannot fallback to the target implementation. These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to fully implement transparency without decoding reverts caused by selector clashes between the proxy and the implementation. NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot is generally fine if the implementation is trusted. WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"ProxyDeniedAdminAccess()\":[{\"details\":\"The proxy caller is the current admin, and can't fallback to the proxy target.\"}]},\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":\"TransparentUpgradeableProxy\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5\",\"dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5\",\"dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV\"]},\"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol\":{\"keccak256\":\"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1\",\"dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL\"]},\"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol\":{\"keccak256\":\"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5\",\"dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b\",\"dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a\",\"dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097\",\"dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"type":"error","name":"ERC1967InvalidAdmin"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"ProxyDeniedAdminAccess"},{"inputs":[{"internalType":"address","name":"previousAdmin","type":"address","indexed":false},{"internalType":"address","name":"newAdmin","type":"address","indexed":false}],"type":"event","name":"AdminChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":"TransparentUpgradeableProxy"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts/contracts/access/Ownable.sol":{"keccak256":"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb","urls":["bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6","dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x31b7f755099238afdf101d132e356ca59a2f5aa3c9d6957bc320c3a89c6b29a8","urls":["bzz-raw://6c1ef7fce6c908e6912cbea81d4655489fb29e328b03502b6dc680a4eda65ae5","dweb:/ipfs/QmQMasWF2fg4DvwYuXto8qvkDYVsrTDmBCgjRPTvn6PgpD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x5f3770f82f75d132e210b43c071d3feec1bef13c385d1d799763a366e8bda311","urls":["bzz-raw://3a50b7702cbd525c4a0fd3c36d1e116432b5f645f84cb25e4473dc9c88a917c5","dweb:/ipfs/QmaN5QKZwgypVK3zAwdgXfsygEeauRYa4sSe4x8yKXDRtV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol":{"keccak256":"0x3cfd70b5e57ac16134caf206c6a71ea5ff113bc2032cd6d845231793f5c62995","urls":["bzz-raw://984097ae51f9be9b94d2a3f5be7f284bd525fd9f0a0ccdca34cfaa7f0e1625d1","dweb:/ipfs/QmXSL4rFMM25pJzvuTzN1DX4ddAwTCnmxS2axDwaZyzNHL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol":{"keccak256":"0x11e3f4156c76feda27ffa117c3f624972471124411067e8f02c9a6909f35d035","urls":["bzz-raw://beb0d9fe2c5fae15f1ca8a22b2c8cfaaa75984f6c8a94534ba85f98366caa6a5","dweb:/ipfs/QmQEFQtyLACb6j7XajAT7Z1KzANE6JzqDYMEQeG8yzrfqP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x80b4189de089dc632b752b365a16c5063b58cc24da0dd38b82f2c25f56d25c84","urls":["bzz-raw://81e2717e78844156a86733f1cada84dba906ffe03e4957de12ca219c65e9191b","dweb:/ipfs/QmW8vg3AafPJRo7EC75RQJTtjiaYmfPa4U4sqmEuBXXzaP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0xc452b8c0ab5a57e6ca49c4fbe6aead2460c2f8d60d58bc60af68e559b7ca1179","urls":["bzz-raw://0980b3b9e8cd9d9a0f2ae848f0f36a85158887e6fd961142a13b11299ae7f30a","dweb:/ipfs/QmUrmDji3NR2V3YezV8xHSS3wjeBKq16FL7cHdBCnwLjKd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xfd29ed7a01e9ef109cc31542ca0f51ba3e793740570b69172ec3d8bfbb1643b4","urls":["bzz-raw://99379e0649be8106d2708a2bde73b5cdaba4505f1001f1586b53788bf971d097","dweb:/ipfs/QmV9cCnvFoVzV2cVDW4Zbs3JQ3ehxBcooQS52taVxR637S"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol","id":41829,"exportedSymbols":{"ERC1967Proxy":[41159],"ERC1967Utils":[41453],"IERC1967":[40796],"ITransparentUpgradeableProxy":[41714],"ProxyAdmin":[41693],"TransparentUpgradeableProxy":[41828]},"nodeType":"SourceUnit","src":"133:6338:44","nodes":[{"id":41695,"nodeType":"PragmaDirective","src":"133:24:44","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":41697,"nodeType":"ImportDirective","src":"159:57:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol","file":"../ERC1967/ERC1967Utils.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41454,"symbolAliases":[{"foreign":{"id":41696,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"167:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41699,"nodeType":"ImportDirective","src":"217:57:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol","file":"../ERC1967/ERC1967Proxy.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41160,"symbolAliases":[{"foreign":{"id":41698,"name":"ERC1967Proxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41159,"src":"225:12:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41701,"nodeType":"ImportDirective","src":"275:55:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol","file":"../../interfaces/IERC1967.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":40797,"symbolAliases":[{"foreign":{"id":41700,"name":"IERC1967","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40796,"src":"283:8:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41703,"nodeType":"ImportDirective","src":"331:44:44","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol","file":"./ProxyAdmin.sol","nameLocation":"-1:-1:-1","scope":41829,"sourceUnit":41694,"symbolAliases":[{"foreign":{"id":41702,"name":"ProxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41693,"src":"339:10:44","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":41714,"nodeType":"ContractDefinition","src":"823:127:44","nodes":[{"id":41713,"nodeType":"FunctionDefinition","src":"880:68:44","nodes":[],"functionSelector":"4f1ef286","implemented":false,"kind":"function","modifiers":[],"name":"upgradeToAndCall","nameLocation":"889:16:44","parameters":{"id":41711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41708,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41713,"src":"906:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41707,"name":"address","nodeType":"ElementaryTypeName","src":"906:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41713,"src":"915:14:44","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":41709,"name":"bytes","nodeType":"ElementaryTypeName","src":"915:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"905:25:44"},"returnParameters":{"id":41712,"nodeType":"ParameterList","parameters":[],"src":"947:0:44"},"scope":41714,"stateMutability":"payable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":41705,"name":"IERC1967","nameLocations":["865:8:44"],"nodeType":"IdentifierPath","referencedDeclaration":40796,"src":"865:8:44"},"id":41706,"nodeType":"InheritanceSpecifier","src":"865:8:44"}],"canonicalName":"ITransparentUpgradeableProxy","contractDependencies":[],"contractKind":"interface","documentation":{"id":41704,"nodeType":"StructuredDocumentation","src":"377:445:44","text":" @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}\n does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch\n mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not\n include them in the ABI so this interface must be used to interact with it."},"fullyImplemented":false,"linearizedBaseContracts":[41714,40796],"name":"ITransparentUpgradeableProxy","nameLocation":"833:28:44","scope":41829,"usedErrors":[],"usedEvents":[40783,40790,40795]},{"id":41828,"nodeType":"ContractDefinition","src":"4239:2231:44","nodes":[{"id":41719,"nodeType":"VariableDeclaration","src":"4633:32:44","nodes":[],"constant":false,"mutability":"immutable","name":"_admin","nameLocation":"4659:6:44","scope":41828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41718,"name":"address","nodeType":"ElementaryTypeName","src":"4633:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":41722,"nodeType":"ErrorDefinition","src":"4779:31:44","nodes":[],"documentation":{"id":41720,"nodeType":"StructuredDocumentation","src":"4672:102:44","text":" @dev The proxy caller is the current admin, and can't fallback to the proxy target."},"errorSelector":"d2b576ec","name":"ProxyDeniedAdminAccess","nameLocation":"4785:22:44","parameters":{"id":41721,"nodeType":"ParameterList","parameters":[],"src":"4807:2:44"}},{"id":41755,"nodeType":"FunctionDefinition","src":"5082:296:44","nodes":[],"body":{"id":41754,"nodeType":"Block","src":"5188:190:44","nodes":[],"statements":[{"expression":{"id":41745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":41736,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41719,"src":"5198:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":41742,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41727,"src":"5230:12:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":41741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"NewExpression","src":"5215:14:44","typeDescriptions":{"typeIdentifier":"t_function_creation_nonpayable$_t_address_$returns$_t_contract$_ProxyAdmin_$41693_$","typeString":"function (address) returns (contract ProxyAdmin)"},"typeName":{"id":41740,"nodeType":"UserDefinedTypeName","pathNode":{"id":41739,"name":"ProxyAdmin","nameLocations":["5219:10:44"],"nodeType":"IdentifierPath","referencedDeclaration":41693,"src":"5219:10:44"},"referencedDeclaration":41693,"src":"5219:10:44","typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}}},"id":41743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5215:28:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ProxyAdmin_$41693","typeString":"contract ProxyAdmin"}],"id":41738,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5207:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41737,"name":"address","nodeType":"ElementaryTypeName","src":"5207:7:44","typeDescriptions":{}}},"id":41744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5207:37:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5198:46:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":41746,"nodeType":"ExpressionStatement","src":"5198:46:44"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":41750,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"5357:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":41751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5357:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":41747,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"5332:12:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$41453_$","typeString":"type(library ERC1967Utils)"}},"id":41749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5345:11:44","memberName":"changeAdmin","nodeType":"MemberAccess","referencedDeclaration":41335,"src":"5332:24:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":41752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5332:39:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41753,"nodeType":"ExpressionStatement","src":"5332:39:44"}]},"documentation":{"id":41723,"nodeType":"StructuredDocumentation","src":"4816:261:44","text":" @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`,\n backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in\n {ERC1967Proxy-constructor}."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":41732,"name":"_logic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41725,"src":"5173:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41733,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41729,"src":"5181:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":41734,"kind":"baseConstructorSpecifier","modifierName":{"id":41731,"name":"ERC1967Proxy","nameLocations":["5160:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":41159,"src":"5160:12:44"},"nodeType":"ModifierInvocation","src":"5160:27:44"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":41730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41725,"mutability":"mutable","name":"_logic","nameLocation":"5102:6:44","nodeType":"VariableDeclaration","scope":41755,"src":"5094:14:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41724,"name":"address","nodeType":"ElementaryTypeName","src":"5094:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41727,"mutability":"mutable","name":"initialOwner","nameLocation":"5118:12:44","nodeType":"VariableDeclaration","scope":41755,"src":"5110:20:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41726,"name":"address","nodeType":"ElementaryTypeName","src":"5110:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41729,"mutability":"mutable","name":"_data","nameLocation":"5145:5:44","nodeType":"VariableDeclaration","scope":41755,"src":"5132:18:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41728,"name":"bytes","nodeType":"ElementaryTypeName","src":"5132:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5093:58:44"},"returnParameters":{"id":41735,"nodeType":"ParameterList","parameters":[],"src":"5188:0:44"},"scope":41828,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":41764,"nodeType":"FunctionDefinition","src":"5445:93:44","nodes":[],"body":{"id":41763,"nodeType":"Block","src":"5508:30:44","nodes":[],"statements":[{"expression":{"id":41761,"name":"_admin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41719,"src":"5525:6:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":41760,"id":41762,"nodeType":"Return","src":"5518:13:44"}]},"documentation":{"id":41756,"nodeType":"StructuredDocumentation","src":"5384:56:44","text":" @dev Returns the admin of this proxy."},"implemented":true,"kind":"function","modifiers":[],"name":"_proxyAdmin","nameLocation":"5454:11:44","parameters":{"id":41757,"nodeType":"ParameterList","parameters":[],"src":"5465:2:44"},"returnParameters":{"id":41760,"nodeType":"ParameterList","parameters":[{"constant":false,"id":41759,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":41764,"src":"5499:7:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41758,"name":"address","nodeType":"ElementaryTypeName","src":"5499:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5498:9:44"},"scope":41828,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":41798,"nodeType":"FunctionDefinition","src":"5680:369:44","nodes":[],"body":{"id":41797,"nodeType":"Block","src":"5727:322:44","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":41773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41769,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5741:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5745:6:44","memberName":"sender","nodeType":"MemberAccess","src":"5741:10:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":41771,"name":"_proxyAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41764,"src":"5755:11:44","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":41772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5755:13:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5741:27:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":41795,"nodeType":"Block","src":"6001:42:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":41790,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"6015:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_TransparentUpgradeableProxy_$41828_$","typeString":"type(contract super TransparentUpgradeableProxy)"}},"id":41792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6021:9:44","memberName":"_fallback","nodeType":"MemberAccess","referencedDeclaration":41480,"src":"6015:15:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6015:17:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41794,"nodeType":"ExpressionStatement","src":"6015:17:44"}]},"id":41796,"nodeType":"IfStatement","src":"5737:306:44","trueBody":{"id":41789,"nodeType":"Block","src":"5770:225:44","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":41779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":41774,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5788:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5792:3:44","memberName":"sig","nodeType":"MemberAccess","src":"5788:7:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":41776,"name":"ITransparentUpgradeableProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41714,"src":"5799:28:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITransparentUpgradeableProxy_$41714_$","typeString":"type(contract ITransparentUpgradeableProxy)"}},"id":41777,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5828:16:44","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41713,"src":"5799:45:44","typeDescriptions":{"typeIdentifier":"t_function_declaration_payable$_t_address_$_t_bytes_calldata_ptr_$returns$__$","typeString":"function ITransparentUpgradeableProxy.upgradeToAndCall(address,bytes calldata) payable"}},"id":41778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5845:8:44","memberName":"selector","nodeType":"MemberAccess","src":"5799:54:44","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"5788:65:44","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":41787,"nodeType":"Block","src":"5925:60:44","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":41784,"name":"_dispatchUpgradeToAndCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41827,"src":"5943:25:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":41785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5943:27:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41786,"nodeType":"ExpressionStatement","src":"5943:27:44"}]},"id":41788,"nodeType":"IfStatement","src":"5784:201:44","trueBody":{"id":41783,"nodeType":"Block","src":"5855:64:44","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":41780,"name":"ProxyDeniedAdminAccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41722,"src":"5880:22:44","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":41781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5880:24:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":41782,"nodeType":"RevertStatement","src":"5873:31:44"}]}}]}}]},"baseFunctions":[41480],"documentation":{"id":41765,"nodeType":"StructuredDocumentation","src":"5544:131:44","text":" @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior."},"implemented":true,"kind":"function","modifiers":[],"name":"_fallback","nameLocation":"5689:9:44","overrides":{"id":41767,"nodeType":"OverrideSpecifier","overrides":[],"src":"5718:8:44"},"parameters":{"id":41766,"nodeType":"ParameterList","parameters":[],"src":"5698:2:44"},"returnParameters":{"id":41768,"nodeType":"ParameterList","parameters":[],"src":"5727:0:44"},"scope":41828,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":41827,"nodeType":"FunctionDefinition","src":"6251:217:44","nodes":[],"body":{"id":41826,"nodeType":"Block","src":"6296:172:44","nodes":[],"statements":[{"assignments":[41803,41805],"declarations":[{"constant":false,"id":41803,"mutability":"mutable","name":"newImplementation","nameLocation":"6315:17:44","nodeType":"VariableDeclaration","scope":41826,"src":"6307:25:44","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41802,"name":"address","nodeType":"ElementaryTypeName","src":"6307:7:44","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":41805,"mutability":"mutable","name":"data","nameLocation":"6347:4:44","nodeType":"VariableDeclaration","scope":41826,"src":"6334:17:44","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":41804,"name":"bytes","nodeType":"ElementaryTypeName","src":"6334:5:44","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":41818,"initialValue":{"arguments":[{"baseExpression":{"expression":{"id":41808,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6366:3:44","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":41809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6370:4:44","memberName":"data","nodeType":"MemberAccess","src":"6366:8:44","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":41811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"6366:12:44","startExpression":{"hexValue":"34","id":41810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6375:1:44","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},{"components":[{"id":41813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6381:7:44","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":41812,"name":"address","nodeType":"ElementaryTypeName","src":"6381:7:44","typeDescriptions":{}}},{"id":41815,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6390:5:44","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":41814,"name":"bytes","nodeType":"ElementaryTypeName","src":"6390:5:44","typeDescriptions":{}}}],"id":41816,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6380:16:44","typeDescriptions":{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"},{"typeIdentifier":"t_tuple$_t_type$_t_address_$_$_t_type$_t_bytes_storage_ptr_$_$","typeString":"tuple(type(address),type(bytes storage pointer))"}],"expression":{"id":41806,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6355:3:44","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":41807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6359:6:44","memberName":"decode","nodeType":"MemberAccess","src":"6355:10:44","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":41817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6355:42:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_payable_$_t_bytes_memory_ptr_$","typeString":"tuple(address payable,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6306:91:44"},{"expression":{"arguments":[{"id":41822,"name":"newImplementation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41803,"src":"6437:17:44","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":41823,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41805,"src":"6456:4:44","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":41819,"name":"ERC1967Utils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41453,"src":"6407:12:44","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC1967Utils_$41453_$","typeString":"type(library ERC1967Utils)"}},"id":41821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6420:16:44","memberName":"upgradeToAndCall","nodeType":"MemberAccess","referencedDeclaration":41268,"src":"6407:29:44","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,bytes memory)"}},"id":41824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:54:44","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":41825,"nodeType":"ExpressionStatement","src":"6407:54:44"}]},"documentation":{"id":41799,"nodeType":"StructuredDocumentation","src":"6055:191:44","text":" @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}.\n Requirements:\n - If `data` is empty, `msg.value` must be zero."},"implemented":true,"kind":"function","modifiers":[],"name":"_dispatchUpgradeToAndCall","nameLocation":"6260:25:44","parameters":{"id":41800,"nodeType":"ParameterList","parameters":[],"src":"6285:2:44"},"returnParameters":{"id":41801,"nodeType":"ParameterList","parameters":[],"src":"6296:0:44"},"scope":41828,"stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":41716,"name":"ERC1967Proxy","nameLocations":["4279:12:44"],"nodeType":"IdentifierPath","referencedDeclaration":41159,"src":"4279:12:44"},"id":41717,"nodeType":"InheritanceSpecifier","src":"4279:12:44"}],"canonicalName":"TransparentUpgradeableProxy","contractDependencies":[41693],"contractKind":"contract","documentation":{"id":41715,"nodeType":"StructuredDocumentation","src":"952:3286:44","text":" @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance.\n To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector\n clashing], which can potentially be used in an attack, this contract uses the\n https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two\n things that go hand in hand:\n 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if\n that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself.\n 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to\n the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating\n the proxy admin cannot fallback to the target implementation.\n These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a\n dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to\n call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and\n allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative\n interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership.\n NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not\n inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch\n mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to\n fully implement transparency without decoding reverts caused by selector clashes between the proxy and the\n implementation.\n NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a\n meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract.\n IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an\n immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be\n overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an\n undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot\n is generally fine if the implementation is trusted.\n WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the\n compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new\n function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This\n could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency."},"fullyImplemented":true,"linearizedBaseContracts":[41828,41159,41489],"name":"TransparentUpgradeableProxy","nameLocation":"4248:27:44","scope":41829,"usedErrors":[41179,41184,41192,41722,41978,42270],"usedEvents":[40783,40790]}],"license":"MIT"},"id":44} \ No newline at end of file diff --git a/ethexe/ethereum/WrappedVara.json b/ethexe/ethereum/WrappedVara.json index 7699fdc51ce..f5047d175f0 100644 --- a/ethexe/ethereum/WrappedVara.json +++ b/ethexe/ethereum/WrappedVara.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6116ff806100d65f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806379cc6790116100a9578063a9059cbb1161006e578063a9059cbb1461028d578063c4d66de8146102a0578063d505accf146102b3578063dd62ed3e146102c6578063f2fde38b146102d9575f80fd5b806379cc67901461020a5780637ecebe001461021d57806384b0196e146102305780638da5cb5b1461024b57806395d89b4114610285575f80fd5b80633644e515116100ef5780633644e515146101bf57806340c10f19146101c757806342966c68146101dc57806370a08231146101ef578063715018a614610202575f80fd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461019d578063313ce567146101b0575b5f80fd5b6101336102ec565b6040516101409190611201565b60405180910390f35b61015c610157366004611235565b610391565b6040519015158152602001610140565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610140565b61015c6101ab36600461125d565b6103aa565b60405160128152602001610140565b61018f6103cd565b6101da6101d5366004611235565b6103db565b005b6101da6101ea366004611297565b6103f1565b61018f6101fd3660046112ae565b6103fe565b6101da61042e565b6101da610218366004611235565b610441565b61018f61022b3660046112ae565b610456565b610238610460565b60405161014097969594939291906112c7565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610140565b61013361050e565b61015c61029b366004611235565b61054c565b6101da6102ae3660046112ae565b610559565b6101da6102c136600461135d565b610709565b61018f6102d43660046113ca565b61085e565b6101da6102e73660046112ae565b6108a7565b60605f5f8051602061168a8339815191525b905080600301805461030f906113fb565b80601f016020809104026020016040519081016040528092919081815260200182805461033b906113fb565b80156103865780601f1061035d57610100808354040283529160200191610386565b820191905f5260205f20905b81548152906001019060200180831161036957829003601f168201915b505050505091505090565b5f3361039e8185856108e1565b60019150505b92915050565b5f336103b78582856108f3565b6103c2858585610956565b506001949350505050565b5f6103d66109b3565b905090565b6103e36109bc565b6103ed8282610a17565b5050565b6103fb3382610a4b565b50565b5f805f8051602061168a8339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b6104366109bc565b61043f5f610a7f565b565b61044c8233836108f3565b6103ed8282610a4b565b5f6103a482610aef565b5f60608082808083815f805160206116aa833981519152805490915015801561048b57506001810154155b6104d45760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6104dc610b17565b6104e4610b55565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061168a8339815191529161030f906113fb565b5f3361039e818585610956565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561059e5750825b90505f8267ffffffffffffffff1660011480156105ba5750303b155b9050811580156105c8575080155b156105e65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561061057845460ff60401b1916600160401b1785555b61065b6040518060400160405280600c81526020016b57726170706564205661726160a01b81525060405180604001604052806005815260200164575641524160d81b815250610b6b565b610663610b7d565b61066c86610b85565b6106996040518060400160405280600c81526020016b57726170706564205661726160a01b815250610b96565b6106bb866106a96012600a61153e565b6106b690620f424061154c565b610a17565b831561070157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b8342111561072d5760405163313c898160e11b8152600481018590526024016104cb565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107978c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6107f182610bc1565b90505f61080082878787610bed565b9050896001600160a01b0316816001600160a01b031614610847576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104cb565b6108528a8a8a6108e1565b50505050505050505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6108af6109bc565b6001600160a01b0381166108d857604051631e4fbdf760e01b81525f60048201526024016104cb565b6103fb81610a7f565b6108ee8383836001610c19565b505050565b5f6108fe848461085e565b90505f198114610950578181101561094257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104cb565b61095084848484035f610c19565b50505050565b6001600160a01b03831661097f57604051634b637e8f60e11b81525f60048201526024016104cb565b6001600160a01b0382166109a85760405163ec442f0560e01b81525f60048201526024016104cb565b6108ee838383610cfd565b5f6103d6610e36565b336109ee7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461043f5760405163118cdaa760e01b81523360048201526024016104cb565b6001600160a01b038216610a405760405163ec442f0560e01b81525f60048201526024016104cb565b6103ed5f8383610cfd565b6001600160a01b038216610a7457604051634b637e8f60e11b81525f60048201526024016104cb565b6103ed825f83610cfd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0061040f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206116aa8339815191529161030f906113fb565b60605f5f805160206116aa8339815191526102fe565b610b73610ea9565b6103ed8282610ef2565b61043f610ea9565b610b8d610ea9565b6103fb81610f42565b610b9e610ea9565b6103fb81604051806040016040528060018152602001603160f81b815250610f4a565b5f6103a4610bcd6109b3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610bfd88888888610fa9565b925092509250610c0d8282611071565b50909695505050505050565b5f8051602061168a8339815191526001600160a01b038516610c505760405163e602df0560e01b81525f60048201526024016104cb565b6001600160a01b038416610c7957604051634a1406b160e11b81525f60048201526024016104cb565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610cf657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ced91815260200190565b60405180910390a35b5050505050565b5f8051602061168a8339815191526001600160a01b038416610d375781816002015f828254610d2c9190611563565b90915550610da79050565b6001600160a01b0384165f9081526020829052604090205482811015610d895760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016104cb565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610dc5576002810180548390039055610de3565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e2891815260200190565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e60611129565b610e68611191565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661043f57604051631afcd79f60e31b815260040160405180910390fd5b610efa610ea9565b5f8051602061168a8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610f3384826115ba565b506004810161095083826115ba565b6108af610ea9565b610f52610ea9565b5f805160206116aa8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610f8b84826115ba565b5060038101610f9a83826115ba565b505f8082556001909101555050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610fe257505f91506003905082611067565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611033573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661105e57505f925060019150829050611067565b92505f91508190505b9450945094915050565b5f82600381111561108457611084611675565b0361108d575050565b60018260038111156110a1576110a1611675565b036110bf5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156110d3576110d3611675565b036110f45760405163fce698f760e01b8152600481018290526024016104cb565b600382600381111561110857611108611675565b036103ed576040516335e2f38360e21b8152600481018290526024016104cb565b5f5f805160206116aa83398151915281611141610b17565b80519091501561115957805160209091012092915050565b81548015611168579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206116aa833981519152816111a9610b55565b8051909150156111c157805160209091012092915050565b60018201548015611168579392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61121360208301846111d3565b9392505050565b80356001600160a01b0381168114611230575f80fd5b919050565b5f8060408385031215611246575f80fd5b61124f8361121a565b946020939093013593505050565b5f805f6060848603121561126f575f80fd5b6112788461121a565b92506112866020850161121a565b929592945050506040919091013590565b5f602082840312156112a7575f80fd5b5035919050565b5f602082840312156112be575f80fd5b6112138261121a565b60ff60f81b8816815260e060208201525f6112e560e08301896111d3565b82810360408401526112f781896111d3565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561134c57835183526020938401939092019160010161132e565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a031215611373575f80fd5b61137c8861121a565b965061138a6020890161121a565b95506040880135945060608801359350608088013560ff811681146113ad575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f80604083850312156113db575f80fd5b6113e48361121a565b91506113f26020840161121a565b90509250929050565b600181811c9082168061140f57607f821691505b60208210810361142d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156114965780850481111561147a5761147a611447565b600184161561148857908102905b60019390931c92800261145f565b935093915050565b5f826114ac575060016103a4565b816114b857505f6103a4565b81600181146114ce57600281146114d8576114f4565b60019150506103a4565b60ff8411156114e9576114e9611447565b50506001821b6103a4565b5060208310610133831016604e8410600b8410161715611517575081810a6103a4565b6115235f19848461145b565b805f190482111561153657611536611447565b029392505050565b5f61121360ff84168361149e565b80820281158282048414176103a4576103a4611447565b808201808211156103a4576103a4611447565b601f8211156108ee57805f5260205f20601f840160051c8101602085101561159b5750805b601f840160051c820191505b81811015610cf6575f81556001016115a7565b815167ffffffffffffffff8111156115d4576115d4611433565b6115e8816115e284546113fb565b84611576565b6020601f82116001811461161a575f83156116035750848201515b5f19600385901b1c1916600184901b178455610cf6565b5f84815260208120601f198516915b828110156116495787850151825560209485019460019092019101611629565b508482101561166657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a2646970667358221220dc30e15eefd78819cd3c4f7e10c7b2889fc0940716f07eec221c499a7359ec4a64736f6c634300081a0033","sourceMap":"632:835:79:-:0;;;1010:53;;;;;;;;;-1:-1:-1;1034:22:79;:20;:22::i;:::-;632:835;;7711:422:25;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:25;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:25;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:25;-1:-1:-1;;;;;8035:33:25;;;;;8087:29;;158:50:81;;;8087:29:25;;146:2:81;131:18;8087:29:25;;;;;;;7981:146;7760:373;7711:422::o;14:200:81:-;632:835:79;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610127575f3560e01c806379cc6790116100a9578063a9059cbb1161006e578063a9059cbb1461028d578063c4d66de8146102a0578063d505accf146102b3578063dd62ed3e146102c6578063f2fde38b146102d9575f80fd5b806379cc67901461020a5780637ecebe001461021d57806384b0196e146102305780638da5cb5b1461024b57806395d89b4114610285575f80fd5b80633644e515116100ef5780633644e515146101bf57806340c10f19146101c757806342966c68146101dc57806370a08231146101ef578063715018a614610202575f80fd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461019d578063313ce567146101b0575b5f80fd5b6101336102ec565b6040516101409190611201565b60405180910390f35b61015c610157366004611235565b610391565b6040519015158152602001610140565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610140565b61015c6101ab36600461125d565b6103aa565b60405160128152602001610140565b61018f6103cd565b6101da6101d5366004611235565b6103db565b005b6101da6101ea366004611297565b6103f1565b61018f6101fd3660046112ae565b6103fe565b6101da61042e565b6101da610218366004611235565b610441565b61018f61022b3660046112ae565b610456565b610238610460565b60405161014097969594939291906112c7565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546040516001600160a01b039091168152602001610140565b61013361050e565b61015c61029b366004611235565b61054c565b6101da6102ae3660046112ae565b610559565b6101da6102c136600461135d565b610709565b61018f6102d43660046113ca565b61085e565b6101da6102e73660046112ae565b6108a7565b60605f5f8051602061168a8339815191525b905080600301805461030f906113fb565b80601f016020809104026020016040519081016040528092919081815260200182805461033b906113fb565b80156103865780601f1061035d57610100808354040283529160200191610386565b820191905f5260205f20905b81548152906001019060200180831161036957829003601f168201915b505050505091505090565b5f3361039e8185856108e1565b60019150505b92915050565b5f336103b78582856108f3565b6103c2858585610956565b506001949350505050565b5f6103d66109b3565b905090565b6103e36109bc565b6103ed8282610a17565b5050565b6103fb3382610a4b565b50565b5f805f8051602061168a8339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b6104366109bc565b61043f5f610a7f565b565b61044c8233836108f3565b6103ed8282610a4b565b5f6103a482610aef565b5f60608082808083815f805160206116aa833981519152805490915015801561048b57506001810154155b6104d45760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b6104dc610b17565b6104e4610b55565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061168a8339815191529161030f906113fb565b5f3361039e818585610956565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f8115801561059e5750825b90505f8267ffffffffffffffff1660011480156105ba5750303b155b9050811580156105c8575080155b156105e65760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561061057845460ff60401b1916600160401b1785555b61065b6040518060400160405280600c81526020016b57726170706564205661726160a01b81525060405180604001604052806005815260200164575641524160d81b815250610b6b565b610663610b7d565b61066c86610b85565b6106996040518060400160405280600c81526020016b57726170706564205661726160a01b815250610b96565b6106bb866106a96012600a61153e565b6106b690620f424061154c565b610a17565b831561070157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b8342111561072d5760405163313c898160e11b8152600481018590526024016104cb565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886107978c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6107f182610bc1565b90505f61080082878787610bed565b9050896001600160a01b0316816001600160a01b031614610847576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016104cb565b6108528a8a8a6108e1565b50505050505050505050565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6108af6109bc565b6001600160a01b0381166108d857604051631e4fbdf760e01b81525f60048201526024016104cb565b6103fb81610a7f565b6108ee8383836001610c19565b505050565b5f6108fe848461085e565b90505f198114610950578181101561094257604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016104cb565b61095084848484035f610c19565b50505050565b6001600160a01b03831661097f57604051634b637e8f60e11b81525f60048201526024016104cb565b6001600160a01b0382166109a85760405163ec442f0560e01b81525f60048201526024016104cb565b6108ee838383610cfd565b5f6103d6610e36565b336109ee7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461043f5760405163118cdaa760e01b81523360048201526024016104cb565b6001600160a01b038216610a405760405163ec442f0560e01b81525f60048201526024016104cb565b6103ed5f8383610cfd565b6001600160a01b038216610a7457604051634b637e8f60e11b81525f60048201526024016104cb565b6103ed825f83610cfd565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0061040f565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206116aa8339815191529161030f906113fb565b60605f5f805160206116aa8339815191526102fe565b610b73610ea9565b6103ed8282610ef2565b61043f610ea9565b610b8d610ea9565b6103fb81610f42565b610b9e610ea9565b6103fb81604051806040016040528060018152602001603160f81b815250610f4a565b5f6103a4610bcd6109b3565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610bfd88888888610fa9565b925092509250610c0d8282611071565b50909695505050505050565b5f8051602061168a8339815191526001600160a01b038516610c505760405163e602df0560e01b81525f60048201526024016104cb565b6001600160a01b038416610c7957604051634a1406b160e11b81525f60048201526024016104cb565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610cf657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610ced91815260200190565b60405180910390a35b5050505050565b5f8051602061168a8339815191526001600160a01b038416610d375781816002015f828254610d2c9190611563565b90915550610da79050565b6001600160a01b0384165f9081526020829052604090205482811015610d895760405163391434e360e21b81526001600160a01b038616600482015260248101829052604481018490526064016104cb565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610dc5576002810180548390039055610de3565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e2891815260200190565b60405180910390a350505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e60611129565b610e68611191565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661043f57604051631afcd79f60e31b815260040160405180910390fd5b610efa610ea9565b5f8051602061168a8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03610f3384826115ba565b506004810161095083826115ba565b6108af610ea9565b610f52610ea9565b5f805160206116aa8339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610f8b84826115ba565b5060038101610f9a83826115ba565b505f8082556001909101555050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610fe257505f91506003905082611067565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611033573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661105e57505f925060019150829050611067565b92505f91508190505b9450945094915050565b5f82600381111561108457611084611675565b0361108d575050565b60018260038111156110a1576110a1611675565b036110bf5760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156110d3576110d3611675565b036110f45760405163fce698f760e01b8152600481018290526024016104cb565b600382600381111561110857611108611675565b036103ed576040516335e2f38360e21b8152600481018290526024016104cb565b5f5f805160206116aa83398151915281611141610b17565b80519091501561115957805160209091012092915050565b81548015611168579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206116aa833981519152816111a9610b55565b8051909150156111c157805160209091012092915050565b60018201548015611168579392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61121360208301846111d3565b9392505050565b80356001600160a01b0381168114611230575f80fd5b919050565b5f8060408385031215611246575f80fd5b61124f8361121a565b946020939093013593505050565b5f805f6060848603121561126f575f80fd5b6112788461121a565b92506112866020850161121a565b929592945050506040919091013590565b5f602082840312156112a7575f80fd5b5035919050565b5f602082840312156112be575f80fd5b6112138261121a565b60ff60f81b8816815260e060208201525f6112e560e08301896111d3565b82810360408401526112f781896111d3565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561134c57835183526020938401939092019160010161132e565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a031215611373575f80fd5b61137c8861121a565b965061138a6020890161121a565b95506040880135945060608801359350608088013560ff811681146113ad575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f80604083850312156113db575f80fd5b6113e48361121a565b91506113f26020840161121a565b90509250929050565b600181811c9082168061140f57607f821691505b60208210810361142d57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156114965780850481111561147a5761147a611447565b600184161561148857908102905b60019390931c92800261145f565b935093915050565b5f826114ac575060016103a4565b816114b857505f6103a4565b81600181146114ce57600281146114d8576114f4565b60019150506103a4565b60ff8411156114e9576114e9611447565b50506001821b6103a4565b5060208310610133831016604e8410600b8410161715611517575081810a6103a4565b6115235f19848461145b565b805f190482111561153657611536611447565b029392505050565b5f61121360ff84168361149e565b80820281158282048414176103a4576103a4611447565b808201808211156103a4576103a4611447565b601f8211156108ee57805f5260205f20601f840160051c8101602085101561159b5750805b601f840160051c820191505b81811015610cf6575f81556001016115a7565b815167ffffffffffffffff8111156115d4576115d4611433565b6115e8816115e284546113fb565b84611576565b6020601f82116001811461161a575f83156116035750848201515b5f19600385901b1c1916600184901b178455610cf6565b5f84815260208120601f198516915b828110156116495787850151825560209485019460019092019101611629565b508482101561166657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100a2646970667358221220dc30e15eefd78819cd3c4f7e10c7b2889fc0940716f07eec221c499a7359ec4a64736f6c634300081a0033","sourceMap":"632:835:79:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5210:186;;;;;;:::i;:::-;;:::i;:::-;;;1181:14:81;;1174:22;1156:41;;1144:2;1129:18;5210:186:26;1016:187:81;3896:152:26;4027:14;;3896:152;;;1354:25:81;;;1342:2;1327:18;3896:152:26;1208:177:81;5988:244:26;;;;;;:::i;:::-;;:::i;3754:82::-;;;3827:2;1911:36:81;;1899:2;1884:18;3754:82:26;1769:184:81;3085:112:28;;;:::i;1372:93:79:-;;;;;;:::i;:::-;;:::i;:::-;;931:87:27;;;;;;:::i;:::-;;:::i;4106:171:26:-;;;;;;:::i;:::-;;:::i;3155:101:24:-;;;:::i;1334:158:27:-;;;;;;:::i;:::-;;:::i;2824:154:28:-;;;;;;:::i;:::-;;:::i;5173:903:31:-;;;:::i;:::-;;;;;;;;;;;;;:::i;2441:144:24:-;1313:22;2570:8;2441:144;;-1:-1:-1;;;;;2570:8:24;;;3951:51:81;;3939:2;3924:18;2441:144:24;3805:203:81;2973:148:26;;;:::i;4472:178::-;;;;;;:::i;:::-;;:::i;1069:297:79:-;;;;;;:::i;:::-;;:::i;2098:672:28:-;;;;;;:::i;:::-;;:::i;4708:195:26:-;;;;;;:::i;:::-;;:::i;3405:215:24:-;;;;;;:::i;:::-;;:::i;2716:144:26:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:26;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:29;5337:31:26;966:10:29;5353:7:26;5362:5;5337:8;:31::i;:::-;5385:4;5378:11;;;5210:186;;;;;:::o;5988:244::-;6075:4;966:10:29;6131:37:26;6147:4;966:10:29;6162:5:26;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:26;;5988:244;-1:-1:-1;;;;5988:244:26:o;3085:112:28:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;1372:93:79:-;2334:13:24;:11;:13::i;:::-;1441:17:79::1;1447:2;1451:6;1441:5;:17::i;:::-;1372:93:::0;;:::o;931:87:27:-;985:26;966:10:29;1005:5:27;985;:26::i;:::-;931:87;:::o;4106:171:26:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:26;-1:-1:-1;;;;;4250:20:26;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:26;;;;;4106:171::o;3155:101:24:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;1334:158:27:-;1409:45;1425:7;966:10:29;1448:5:27;1409:15;:45::i;:::-;1464:21;1470:7;1479:5;1464;:21::i;2824:154:28:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:31:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:31;;5511:45;;-1:-1:-1;5777:18:31;:43;;;;-1:-1:-1;5799:16:31;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:31;;5773:2:81;5769:77:31;;;5755:21:81;5812:2;5792:18;;;5785:30;-1:-1:-1;;;5831:18:81;;;5824:51;5892:18;;5769:77:31;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:31;;;-1:-1:-1;5857:212:31;;-1:-1:-1;5965:13:31;;-1:-1:-1;6000:4:31;;-1:-1:-1;6027:1:31;-1:-1:-1;6043:16:31;-1:-1:-1;5857:212:31;-1:-1:-1;;5173:903:31:o;2973:148:26:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:26;3098:16;;;:::i;4472:178::-;4541:4;966:10:29;4595:27:26;966:10:29;4612:2:26;4616:5;4595:9;:27::i;1069:297:79:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;1140:38:79::1;1153:10;;;;;;;;;;;;;-1:-1:-1::0;;;1153:10:79::1;;::::0;1165:12:::1;;;;;;;;;;;;;-1:-1:-1::0;;;1165:12:79::1;;::::0;1140::::1;:38::i;:::-;1188:22;:20;:22::i;:::-;1220:28;1235:12;1220:14;:28::i;:::-;1258:30;1277:10;;;;;;;;;;;;;-1:-1:-1::0;;;1277:10:79::1;;::::0;1258:18:::1;:30::i;:::-;1299:60;1305:12:::0;1342:16:::1;3827:2:26::0;1342::79::1;:16;:::i;:::-;1319:39;::::0;941:9:::1;1319:39;:::i;:::-;1299:5;:60::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;7943:50:81;;5142:14:25;;7931:2:81;7916:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;1069:297:79;:::o;2098:672:28:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:28;;;;;1354:25:81;;;1327:18;;2350:33:28;1208:177:81;2297:97:28;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:30;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:28;2435:78;;;;;;8291:25:81;;;;-1:-1:-1;;;;;8352:32:81;;;8332:18;;;8325:60;8421:32;;;;8401:18;;;8394:60;8470:18;;;8463:34;8513:19;;;8506:35;8557:19;;;8550:35;;;8263:19;;2435:78:28;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:28;:6;-1:-1:-1;;;;;2638:15:28;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:28;;-1:-1:-1;;;;;8788:32:81;;;2676:35:28;;;8770:51:81;8857:32;;8837:18;;;8830:60;8743:18;;2676:35:28;8596:300:81;2634:88:28;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;4708:195:26:-;-1:-1:-1;;;;;4867:20:26;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;3405:215:24:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:24;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:24;;3562:1:::1;3534:31;::::0;::::1;3951:51:81::0;3924:18;;3534:31:24::1;3805:203:81::0;3485:91:24::1;3585:28;3604:8;3585:18;:28::i;10001:128:26:-:0;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;:::-;10001:128;;;:::o;11745:477::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:26;:37;11906:310;;11986:5;11967:16;:24;11963:130;;;12018:60;;-1:-1:-1;;;12018:60:26;;-1:-1:-1;;;;;9121:32:81;;12018:60:26;;;9103:51:81;9170:18;;;9163:34;;;9213:18;;;9206:34;;;9076:18;;12018:60:26;8901:345:81;11963:130:26;12134:57;12143:5;12150:7;12178:5;12159:16;:24;12185:5;12134:8;:57::i;:::-;11834:388;11745:477;;;:::o;6605:300::-;-1:-1:-1;;;;;6688:18:26;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:26;;6756:1;6729:30;;;3951:51:81;3924:18;;6729:30:26;3805:203:81;6684:86:26;-1:-1:-1;;;;;6783:16:26;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:26;;6851:1;6822:32;;;3951:51:81;3924:18;;6822:32:26;3805:203:81;6779:86:26;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4015:109:31:-;4068:7;4094:23;:21;:23::i;2658:162:24:-;966:10:29;2717:7:24;1313:22;2570:8;-1:-1:-1;;;;;2570:8:24;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:24;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:24;;966:10:29;2763:40:24;;;3951:51:81;3924:18;;2763:40:24;3805:203:81;8733:208:26;-1:-1:-1;;;;;8803:21:26;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:26;;8876:1;8847:32;;;3951:51:81;3924:18;;8847:32:26;3805:203:81;8799:91:26;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;9259:206::-;-1:-1:-1;;;;;9329:21:26;;9325:89;;9373:30;;-1:-1:-1;;;9373:30:26;;9400:1;9373:30;;;3951:51:81;3924:18;;9373:30:26;3805:203:81;9325:89:26;9423:35;9431:7;9448:1;9452:5;9423:7;:35::i;3774:248:24:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:24;;-1:-1:-1;;;;;3941:19:24;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1259:164:30:-;1319:7;;1005:21;1364:19;886:156;6300:155:31;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:31;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:31;2720:156;2282:147:26;6931:20:25;:18;:20::i;:::-;2384:38:26::1;2407:5;2414:7;2384:22;:38::i;666:65:27:-:0;6931:20:25;:18;:20::i;1847:127:24:-;6931:20:25;:18;:20::i;:::-;1929:38:24::1;1954:12;1929:24;:38::i;1832:125:28:-:0;6931:20:25;:18;:20::i;:::-;1916:34:28::1;1940:4;1916:34;;;;;;;;;;;;;-1:-1:-1::0;;;1916:34:28::1;;::::0;:23:::1;:34::i;4946:176:31:-:0;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3555:4:56;3549:11;-1:-1:-1;;;3573:23:56;;3625:4;3616:14;;3609:39;;;;3677:4;3668:14;;3661:34;3733:4;3718:20;;;3353:401;6803:260:55;6888:7;6908:17;6927:18;6947:16;6967:25;6978:4;6984:1;6987;6990;6967:10;:25::i;:::-;6907:85;;;;;;7002:28;7014:5;7021:8;7002:11;:28::i;:::-;-1:-1:-1;7047:9:55;;6803:260;-1:-1:-1;;;;;;6803:260:55:o;10976:487:26:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:26;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:26;;11212:1;11183:32;;;3951:51:81;3924:18;;11183:32:26;3805:203:81;11137:89:26;-1:-1:-1;;;;;11239:21:26;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:26;;11311:1;11283:31;;;3951:51:81;3924:18;;11283:31:26;3805:203:81;11235:90:26;-1:-1:-1;;;;;11334:20:26;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:26;11424:5;-1:-1:-1;;;;;11415:31:26;;11440:5;11415:31;;;;1354:25:81;;1342:2;1327:18;;1208:177;11415:31:26;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:26;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:26;;-1:-1:-1;7358:546:26;;-1:-1:-1;;;;;7574:17:26;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:26;;-1:-1:-1;;;;;9121:32:81;;7655:50:26;;;9103:51:81;9170:18;;;9163:34;;;9213:18;;;9206:34;;;9076:18;;7655:50:26;8901:345:81;7605:115:26;-1:-1:-1;;;;;7840:17:26;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:26;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:26;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:26;8367:4;-1:-1:-1;;;;;8358:25:26;;8377:5;8358:25;;;;1354::81;;1342:2;1327:18;;1208:177;8358:25:26;;;;;;;;7295:1095;7220:1170;;;:::o;4130:191:31:-;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;9640:25:81;;;;9681:18;;9674:34;;;;9724:18;;;9717:34;4284:13:31;9767:18:81;;;9760:34;4307:4:31;9810:19:81;;;9803:61;9612:19;;4221:92:31;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;2435:216:26;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:26;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:26::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;1980:235:24:-:0;6931:20:25;:18;:20::i;3599:330:31:-;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:31;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:31::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:31::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:31:o;5140:1530:55:-;5266:7;;;6199:66;6186:79;;6182:164;;;-1:-1:-1;6297:1:55;;-1:-1:-1;6301:30:55;;-1:-1:-1;6333:1:55;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;12226:25:81;;;12299:4;12287:17;;12267:18;;;12260:45;;;;12321:18;;;12314:34;;;12364:18;;;12357:34;;;6457:24:55;;12198:19:81;;6457:24:55;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:55;;-1:-1:-1;;6457:24:55;;;-1:-1:-1;;;;;;;6495:20:55;;6491:113;;-1:-1:-1;6547:1:55;;-1:-1:-1;6551:29:55;;-1:-1:-1;6547:1:55;;-1:-1:-1;6531:62:55;;6491:113;6622:6;-1:-1:-1;6630:20:55;;-1:-1:-1;6630:20:55;;-1:-1:-1;5140:1530:55;;;;;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;-1:-1:-1;;;7439:23:55;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;-1:-1:-1;;;7550:46:55;;;;;1354:25:81;;;1327:18;;7550:46:55;1208:177:81;7479:243:55;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;-1:-1:-1;;;7679:32:55;;;;;1354:25:81;;;1327:18;;7679:32:55;1208:177:81;7058:687:31;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:31;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:31;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:31:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:31:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:31;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:31;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:31:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:31:o;14:289:81:-;56:3;94:5;88:12;121:6;116:3;109:19;177:6;170:4;163:5;159:16;152:4;147:3;143:14;137:47;229:1;222:4;213:6;208:3;204:16;200:27;193:38;292:4;285:2;281:7;276:2;268:6;264:15;260:29;255:3;251:39;247:50;240:57;;;14:289;;;;:::o;308:220::-;457:2;446:9;439:21;420:4;477:45;518:2;507:9;503:18;495:6;477:45;:::i;:::-;469:53;308:220;-1:-1:-1;;;308:220:81:o;533:173::-;601:20;;-1:-1:-1;;;;;650:31:81;;640:42;;630:70;;696:1;693;686:12;630:70;533:173;;;:::o;711:300::-;779:6;787;840:2;828:9;819:7;815:23;811:32;808:52;;;856:1;853;846:12;808:52;879:29;898:9;879:29;:::i;:::-;869:39;977:2;962:18;;;;949:32;;-1:-1:-1;;;711:300:81:o;1390:374::-;1467:6;1475;1483;1536:2;1524:9;1515:7;1511:23;1507:32;1504:52;;;1552:1;1549;1542:12;1504:52;1575:29;1594:9;1575:29;:::i;:::-;1565:39;;1623:38;1657:2;1646:9;1642:18;1623:38;:::i;:::-;1390:374;;1613:48;;-1:-1:-1;;;1730:2:81;1715:18;;;;1702:32;;1390:374::o;2140:226::-;2199:6;2252:2;2240:9;2231:7;2227:23;2223:32;2220:52;;;2268:1;2265;2258:12;2220:52;-1:-1:-1;2313:23:81;;2140:226;-1:-1:-1;2140:226:81:o;2371:186::-;2430:6;2483:2;2471:9;2462:7;2458:23;2454:32;2451:52;;;2499:1;2496;2489:12;2451:52;2522:29;2541:9;2522:29;:::i;2562:1238::-;2968:3;2963;2959:13;2951:6;2947:26;2936:9;2929:45;3010:3;3005:2;2994:9;2990:18;2983:31;2910:4;3037:46;3078:3;3067:9;3063:19;3055:6;3037:46;:::i;:::-;3131:9;3123:6;3119:22;3114:2;3103:9;3099:18;3092:50;3165:33;3191:6;3183;3165:33;:::i;:::-;3229:2;3214:18;;3207:34;;;-1:-1:-1;;;;;3278:32:81;;3272:3;3257:19;;3250:61;3298:3;3327:19;;3320:35;;;3392:22;;;3386:3;3371:19;;3364:51;3464:13;;3486:22;;;3536:2;3562:15;;;;-1:-1:-1;3524:15:81;;;;-1:-1:-1;3605:169:81;3619:6;3616:1;3613:13;3605:169;;;3680:13;;3668:26;;3723:2;3749:15;;;;3714:12;;;;3641:1;3634:9;3605:169;;;-1:-1:-1;3791:3:81;;2562:1238;-1:-1:-1;;;;;;;;;;;2562:1238:81:o;4013:903::-;4124:6;4132;4140;4148;4156;4164;4172;4225:3;4213:9;4204:7;4200:23;4196:33;4193:53;;;4242:1;4239;4232:12;4193:53;4265:29;4284:9;4265:29;:::i;:::-;4255:39;;4313:38;4347:2;4336:9;4332:18;4313:38;:::i;:::-;4303:48;-1:-1:-1;4420:2:81;4405:18;;4392:32;;-1:-1:-1;4521:2:81;4506:18;;4493:32;;-1:-1:-1;4603:3:81;4588:19;;4575:33;4652:4;4639:18;;4627:31;;4617:59;;4672:1;4669;4662:12;4617:59;4013:903;;;;-1:-1:-1;4013:903:81;;;;4695:7;4775:3;4760:19;;4747:33;;-1:-1:-1;4879:3:81;4864:19;;;4851:33;;4013:903;-1:-1:-1;;4013:903:81:o;4921:260::-;4989:6;4997;5050:2;5038:9;5029:7;5025:23;5021:32;5018:52;;;5066:1;5063;5056:12;5018:52;5089:29;5108:9;5089:29;:::i;:::-;5079:39;;5137:38;5171:2;5160:9;5156:18;5137:38;:::i;:::-;5127:48;;4921:260;;;;;:::o;5186:380::-;5265:1;5261:12;;;;5308;;;5329:61;;5383:4;5375:6;5371:17;5361:27;;5329:61;5436:2;5428:6;5425:14;5405:18;5402:38;5399:161;;5482:10;5477:3;5473:20;5470:1;5463:31;5517:4;5514:1;5507:15;5545:4;5542:1;5535:15;5399:161;;5186:380;;;:::o;5921:127::-;5982:10;5977:3;5973:20;5970:1;5963:31;6013:4;6010:1;6003:15;6037:4;6034:1;6027:15;6053:127;6114:10;6109:3;6105:20;6102:1;6095:31;6145:4;6142:1;6135:15;6169:4;6166:1;6159:15;6185:375;6273:1;6291:5;6305:249;6326:1;6316:8;6313:15;6305:249;;;6376:4;6371:3;6367:14;6361:4;6358:24;6355:50;;;6385:18;;:::i;:::-;6435:1;6425:8;6421:16;6418:49;;;6449:16;;;;6418:49;6532:1;6528:16;;;;;6488:15;;6305:249;;;6185:375;;;;;;:::o;6565:902::-;6614:5;6644:8;6634:80;;-1:-1:-1;6685:1:81;6699:5;;6634:80;6733:4;6723:76;;-1:-1:-1;6770:1:81;6784:5;;6723:76;6815:4;6833:1;6828:59;;;;6901:1;6896:174;;;;6808:262;;6828:59;6858:1;6849:10;;6872:5;;;6896:174;6933:3;6923:8;6920:17;6917:43;;;6940:18;;:::i;:::-;-1:-1:-1;;6996:1:81;6982:16;;7055:5;;6808:262;;7154:2;7144:8;7141:16;7135:3;7129:4;7126:13;7122:36;7116:2;7106:8;7103:16;7098:2;7092:4;7089:12;7085:35;7082:77;7079:203;;;-1:-1:-1;7191:19:81;;;7267:5;;7079:203;7314:42;-1:-1:-1;;7339:8:81;7333:4;7314:42;:::i;:::-;7392:6;7388:1;7384:6;7380:19;7371:7;7368:32;7365:58;;;7403:18;;:::i;:::-;7441:20;;6565:902;-1:-1:-1;;;6565:902:81:o;7472:140::-;7530:5;7559:47;7600:4;7590:8;7586:19;7580:4;7559:47;:::i;7617:168::-;7690:9;;;7721;;7738:15;;;7732:22;;7718:37;7708:71;;7759:18;;:::i;9251:125::-;9316:9;;;9337:10;;;9334:36;;;9350:18;;:::i;10001:518::-;10103:2;10098:3;10095:11;10092:421;;;10139:5;10136:1;10129:16;10183:4;10180:1;10170:18;10253:2;10241:10;10237:19;10234:1;10230:27;10224:4;10220:38;10289:4;10277:10;10274:20;10271:47;;;-1:-1:-1;10312:4:81;10271:47;10367:2;10362:3;10358:12;10355:1;10351:20;10345:4;10341:31;10331:41;;10422:81;10440:2;10433:5;10430:13;10422:81;;;10499:1;10485:16;;10466:1;10455:13;10422:81;;10695:1299;10821:3;10815:10;10848:18;10840:6;10837:30;10834:56;;;10870:18;;:::i;:::-;10899:97;10989:6;10949:38;10981:4;10975:11;10949:38;:::i;:::-;10943:4;10899:97;:::i;:::-;11045:4;11076:2;11065:14;;11093:1;11088:649;;;;11781:1;11798:6;11795:89;;;-1:-1:-1;11850:19:81;;;11844:26;11795:89;-1:-1:-1;;10652:1:81;10648:11;;;10644:24;10640:29;10630:40;10676:1;10672:11;;;10627:57;11897:81;;11058:930;;11088:649;9948:1;9941:14;;;9985:4;9972:18;;-1:-1:-1;;11124:20:81;;;11242:222;11256:7;11253:1;11250:14;11242:222;;;11338:19;;;11332:26;11317:42;;11445:4;11430:20;;;;11398:1;11386:14;;;;11272:12;11242:222;;;11246:3;11492:6;11483:7;11480:19;11477:201;;;11553:19;;;11547:26;-1:-1:-1;;11636:1:81;11632:14;;;11648:3;11628:24;11624:37;11620:42;11605:58;11590:74;;11477:201;-1:-1:-1;;;;11724:1:81;11708:14;;;11704:22;11691:36;;-1:-1:-1;10695:1299:81:o;12402:127::-;12463:10;12458:3;12454:20;12451:1;12444:31;12494:4;12491:1;12484:15;12518:4;12515:1;12508:15","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883\",\"dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e\",\"dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd\",\"dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0xc77bff64b636383ce595d7dca66bd2a5589c05ea7e07f4358f861b5da30431ba\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c180c752f7ec37a005c8c1d2ac0bac46549e0f0d04deca7e84d885db1bde8e18\",\"dweb:/ipfs/QmdEG3wqY5B1c7nAAaYUpu4CtkQ17bs1TK9bfo9jgXPhU1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506","urls":["bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883","dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf","urls":["bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e","dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1","urls":["bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd","dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0xc77bff64b636383ce595d7dca66bd2a5589c05ea7e07f4358f861b5da30431ba","urls":["bzz-raw://c180c752f7ec37a005c8c1d2ac0bac46549e0f0d04deca7e84d885db1bde8e18","dweb:/ipfs/QmdEG3wqY5B1c7nAAaYUpu4CtkQ17bs1TK9bfo9jgXPhU1"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":55792,"exportedSymbols":{"ERC20BurnableUpgradeable":[39957],"ERC20PermitUpgradeable":[40126],"ERC20Upgradeable":[39895],"Initializable":[39278],"OwnableUpgradeable":[39024],"WrappedVara":[55791]},"nodeType":"SourceUnit","src":"39:1429:79","nodes":[{"id":55704,"nodeType":"PragmaDirective","src":"39:24:79","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":55706,"nodeType":"ImportDirective","src":"65:96:79","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":55792,"sourceUnit":39279,"symbolAliases":[{"foreign":{"id":55705,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39278,"src":"73:13:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55708,"nodeType":"ImportDirective","src":"162:102:79","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":55792,"sourceUnit":39896,"symbolAliases":[{"foreign":{"id":55707,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39895,"src":"170:16:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55710,"nodeType":"ImportDirective","src":"265:133:79","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":55792,"sourceUnit":39958,"symbolAliases":[{"foreign":{"id":55709,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39957,"src":"273:24:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55712,"nodeType":"ImportDirective","src":"399:101:79","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":55792,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":55711,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"407:18:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55714,"nodeType":"ImportDirective","src":"501:129:79","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":55792,"sourceUnit":40127,"symbolAliases":[{"foreign":{"id":55713,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40126,"src":"509:22:79","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55791,"nodeType":"ContractDefinition","src":"632:835:79","nodes":[{"id":55727,"nodeType":"VariableDeclaration","src":"784:51:79","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:79","scope":55791,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":55725,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":55726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":55730,"nodeType":"VariableDeclaration","src":"841:46:79","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:79","scope":55791,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":55728,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:79","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":55729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:79","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":55733,"nodeType":"VariableDeclaration","src":"893:57:79","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:79","scope":55791,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55731,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":55732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:79","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":55741,"nodeType":"FunctionDefinition","src":"1010:53:79","nodes":[],"body":{"id":55740,"nodeType":"Block","src":"1024:39:79","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55737,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1034:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55739,"nodeType":"ExpressionStatement","src":"1034:22:79"}]},"documentation":{"id":55734,"nodeType":"StructuredDocumentation","src":"957:48:79","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":55735,"nodeType":"ParameterList","parameters":[],"src":"1021:2:79"},"returnParameters":{"id":55736,"nodeType":"ParameterList","parameters":[],"src":"1024:0:79"},"scope":55791,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55775,"nodeType":"FunctionDefinition","src":"1069:297:79","nodes":[],"body":{"id":55774,"nodeType":"Block","src":"1130:236:79","nodes":[],"statements":[{"expression":{"arguments":[{"id":55749,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55727,"src":"1153:10:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":55750,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55730,"src":"1165:12:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":55748,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39346,"src":"1140:12:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":55751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55752,"nodeType":"ExpressionStatement","src":"1140:38:79"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55753,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39916,"src":"1188:20:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55755,"nodeType":"ExpressionStatement","src":"1188:22:79"},{"expression":{"arguments":[{"id":55757,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55743,"src":"1235:12:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55756,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1220:14:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":55758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55759,"nodeType":"ExpressionStatement","src":"1220:28:79"},{"expression":{"arguments":[{"id":55761,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55727,"src":"1277:10:79","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":55760,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40013,"src":"1258:18:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":55762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55763,"nodeType":"ExpressionStatement","src":"1258:30:79"},{"expression":{"arguments":[{"id":55765,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55743,"src":"1305:12:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55766,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55733,"src":"1319:20:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":55767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:79","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55768,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39415,"src":"1348:8:79","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":55769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55764,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1299:5:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":55772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55773,"nodeType":"ExpressionStatement","src":"1299:60:79"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":55746,"kind":"modifierInvocation","modifierName":{"id":55745,"name":"initializer","nameLocations":["1118:11:79"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1118:11:79"},"nodeType":"ModifierInvocation","src":"1118:11:79"}],"name":"initialize","nameLocation":"1078:10:79","parameters":{"id":55744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55743,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:79","nodeType":"VariableDeclaration","scope":55775,"src":"1089:20:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55742,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:79"},"returnParameters":{"id":55747,"nodeType":"ParameterList","parameters":[],"src":"1130:0:79"},"scope":55791,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55790,"nodeType":"FunctionDefinition","src":"1372:93:79","nodes":[],"body":{"id":55789,"nodeType":"Block","src":"1431:34:79","nodes":[],"statements":[{"expression":{"arguments":[{"id":55785,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55777,"src":"1447:2:79","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55786,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55779,"src":"1451:6:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55784,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1441:5:79","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":55787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1441:17:79","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55788,"nodeType":"ExpressionStatement","src":"1441:17:79"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":55782,"kind":"modifierInvocation","modifierName":{"id":55781,"name":"onlyOwner","nameLocations":["1421:9:79"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1421:9:79"},"nodeType":"ModifierInvocation","src":"1421:9:79"}],"name":"mint","nameLocation":"1381:4:79","parameters":{"id":55780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55777,"mutability":"mutable","name":"to","nameLocation":"1394:2:79","nodeType":"VariableDeclaration","scope":55790,"src":"1386:10:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55776,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:79","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55779,"mutability":"mutable","name":"amount","nameLocation":"1406:6:79","nodeType":"VariableDeclaration","scope":55790,"src":"1398:14:79","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55778,"name":"uint256","nodeType":"ElementaryTypeName","src":"1398:7:79","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1385:28:79"},"returnParameters":{"id":55783,"nodeType":"ParameterList","parameters":[],"src":"1431:0:79"},"scope":55791,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":55715,"name":"Initializable","nameLocations":["660:13:79"],"nodeType":"IdentifierPath","referencedDeclaration":39278,"src":"660:13:79"},"id":55716,"nodeType":"InheritanceSpecifier","src":"660:13:79"},{"baseName":{"id":55717,"name":"ERC20Upgradeable","nameLocations":["679:16:79"],"nodeType":"IdentifierPath","referencedDeclaration":39895,"src":"679:16:79"},"id":55718,"nodeType":"InheritanceSpecifier","src":"679:16:79"},{"baseName":{"id":55719,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:79"],"nodeType":"IdentifierPath","referencedDeclaration":39957,"src":"701:24:79"},"id":55720,"nodeType":"InheritanceSpecifier","src":"701:24:79"},{"baseName":{"id":55721,"name":"OwnableUpgradeable","nameLocations":["731:18:79"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"731:18:79"},"id":55722,"nodeType":"InheritanceSpecifier","src":"731:18:79"},{"baseName":{"id":55723,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:79"],"nodeType":"IdentifierPath","referencedDeclaration":40126,"src":"755:22:79"},"id":55724,"nodeType":"InheritanceSpecifier","src":"755:22:79"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[55791,40126,40283,40627,40821,41968,39024,39957,39895,40863,41932,41906,40172,39278],"name":"WrappedVara","nameLocation":"641:11:79","scope":55792,"usedErrors":[38860,38865,39041,39044,39992,39999,40186,40833,40838,40843,40852,40857,40862,43050,43055,43060],"usedEvents":[38871,39049,40801,41840,41849]}],"license":"UNLICENSED"},"id":79} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"burnFrom","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"eip712Domain","inputs":[],"outputs":[{"name":"fields","type":"bytes1","internalType":"bytes1"},{"name":"name","type":"string","internalType":"string"},{"name":"version","type":"string","internalType":"string"},{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"verifyingContract","type":"address","internalType":"address"},{"name":"salt","type":"bytes32","internalType":"bytes32"},{"name":"extensions","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reinitialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EIP712DomainChanged","inputs":[],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ERC20InsufficientAllowance","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"allowance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InsufficientBalance","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"needed","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC20InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC20InvalidSpender","inputs":[{"name":"spender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC2612ExpiredSignature","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC2612InvalidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080806040523460d0577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b604051611cc090816100d58239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a15f80604d565b63f92ee8a960e01b5f5260045ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212209da26bb79b9ef65d56e69c8dd0f9b8882c07271218158f84deaaef27e65e2ebb64736f6c634300081a0033","sourceMap":"632:901:82:-:0;;;;;;;8837:64:25;632:901:82;;;;;;7896:76:25;;-1:-1:-1;;;;;;;;;;;632:901:82;;7985:34:25;7981:146;;-1:-1:-1;632:901:82;;;;;;;;;7981:146:25;-1:-1:-1;;;;;;632:901:82;-1:-1:-1;;;;;632:901:82;;;8837:64:25;632:901:82;;;8087:29:25;;632:901:82;;8087:29:25;7981:146;;;;7896:76;7938:23;;;-1:-1:-1;7938:23:25;;-1:-1:-1;7938:23:25;632:901:82;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c806306fdde031461120f578063095ea7b3146111e957806318160ddd146111c057806323b872dd14611188578063313ce5671461116d5780633644e5151461114b57806340c10f191461110e57806342966c68146110f15780636c2eb3501461105757806370a0823114611013578063715018a614610fac57806379cc679014610f7c5780637ecebe0014610f2657806384b0196e14610c525780638da5cb5b14610c1e57806395d89b4114610b24578063a9059cbb14610af3578063c4d66de8146102d8578063d505accf14610176578063dd62ed3e1461012f5763f2fde38b14610100575f80fd5b3461012b57602036600319011261012b5761012961011c6112f0565b6101246115b4565b6113ae565b005b5f80fd5b3461012b57604036600319011261012b576101486112f0565b610159610153611306565b91611376565b9060018060a01b03165f52602052602060405f2054604051908152f35b3461012b5760e036600319011261012b5761018f6112f0565b610197611306565b604435906064359260843560ff8116810361012b578442116102c55761028a6102939160018060a01b03841696875f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb0060205260405f20908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c0815261025860e082611354565b5190206102636117c2565b906040519161190160f01b83526002830152602282015260c43591604260a4359220611854565b909291926118e1565b6001600160a01b03168481036102ae5750610129935061169d565b84906325c0072360e11b5f5260045260245260445ffd5b8463313c898160e11b5f5260045260245ffd5b3461012b57602036600319011261012b576102f16112f0565b5f80516020611c6b833981519152549060ff8260401c16159167ffffffffffffffff811680159081610aeb575b6001149081610ae1575b159081610ad8575b50610ac95767ffffffffffffffff1981166001175f80516020611c6b8339815191525582610a9d575b5060405191610369604084611354565b600c83526b57726170706564205661726160a01b602084015260405191610391604084611354565b6005835264575641524160d81b60208401526103ab611829565b6103b3611829565b835167ffffffffffffffff81116107aa576103db5f80516020611b8b8339815191525461131c565b601f8111610a2e575b50602094601f82116001146109b3579481929394955f926109a8575b50508160011b915f199060031b1c1916175f80516020611b8b833981519152555b825167ffffffffffffffff81116107aa576104495f80516020611beb8339815191525461131c565b601f8111610939575b506020601f82116001146108be57819293945f926108b3575b50508160011b915f199060031b1c1916175f80516020611beb833981519152555b610494611829565b61049c611829565b6104a4611829565b6104ad816113ae565b604051916104bc604084611354565b600c83526b57726170706564205661726160a01b60208401526104dd611829565b604051916104ec604084611354565b60018352603160f81b6020840152610502611829565b835167ffffffffffffffff81116107aa5761052a5f80516020611bcb8339815191525461131c565b601f8111610844575b50602094601f82116001146107c9579481929394955f926107be575b50508160011b915f199060031b1c1916175f80516020611bcb833981519152555b825167ffffffffffffffff81116107aa576105985f80516020611c4b8339815191525461131c565b601f811161073b575b506020601f82116001146106c057819293945f926106b5575b50508160011b915f199060031b1c1916175f80516020611c4b833981519152555b5f7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1008190557fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d101556001600160a01b038116156106a25769d3c21bcecceda100000061064591611700565b61064b57005b68ff0000000000000000195f80516020611c6b83398151915254165f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b63ec442f0560e01b5f525f60045260245ffd5b0151905084806105ba565b601f198216905f80516020611c4b8339815191525f52805f20915f5b8181106107235750958360019596971061070b575b505050811b015f80516020611c4b833981519152556105db565b01515f1960f88460031b161c191690558480806106f1565b9192602060018192868b0151815501940192016106dc565b5f80516020611c4b8339815191525f527f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b75601f830160051c810191602084106107a0575b601f0160051c01905b81811061079557506105a1565b5f8155600101610788565b909150819061077f565b634e487b7160e01b5f52604160045260245ffd5b01519050858061054f565b601f198216955f80516020611bcb8339815191525f52805f20915f5b88811061082c57508360019596979810610814575b505050811b015f80516020611bcb83398151915255610570565b01515f1960f88460031b161c191690558580806107fa565b919260206001819286850151815501940192016107e5565b5f80516020611bcb8339815191525f527f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d601f830160051c810191602084106108a9575b601f0160051c01905b81811061089e5750610533565b5f8155600101610891565b9091508190610888565b01519050848061046b565b601f198216905f80516020611beb8339815191525f52805f20915f5b81811061092157509583600195969710610909575b505050811b015f80516020611beb8339815191525561048c565b01515f1960f88460031b161c191690558480806108ef565b9192602060018192868b0151815501940192016108da565b5f80516020611beb8339815191525f527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa601f830160051c8101916020841061099e575b601f0160051c01905b8181106109935750610452565b5f8155600101610986565b909150819061097d565b015190508580610400565b601f198216955f80516020611b8b8339815191525f52805f20915f5b888110610a16575083600195969798106109fe575b505050811b015f80516020611b8b83398151915255610421565b01515f1960f88460031b161c191690558580806109e4565b919260206001819286850151815501940192016109cf565b5f80516020611b8b8339815191525f527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0601f830160051c81019160208410610a93575b601f0160051c01905b818110610a8857506103e4565b5f8155600101610a7b565b9091508190610a72565b68ffffffffffffffffff191668010000000000000001175f80516020611c6b8339815191525582610359565b63f92ee8a960e01b5f5260045ffd5b90501584610330565b303b159150610328565b84915061031e565b3461012b57604036600319011261012b57610b19610b0f6112f0565b60243590336114e3565b602060405160018152f35b3461012b575f36600319011261012b576040515f5f80516020611beb83398151915254610b508161131c565b8084529060018116908115610bfa5750600114610b90575b610b8c83610b7881850382611354565b6040519182916020835260208301906112cc565b0390f35b5f80516020611beb8339815191525f9081527f46a2803e59a4de4e7a4c574b1243f25977ac4c77d5a1a4a609b5394cebb4a2aa939250905b808210610be057509091508101602001610b78610b68565b919260018160209254838588010152019101909291610bc8565b60ff191660208086019190915291151560051b84019091019150610b789050610b68565b3461012b575f36600319011261012b575f80516020611c0b833981519152546040516001600160a01b039091168152602090f35b3461012b575f36600319011261012b577fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100541580610efd575b15610ec0576040515f80516020611bcb83398151915254815f610cad8361131c565b8083529260018116908115610ea15750600114610e36575b610cd192500382611354565b6040515f80516020611c4b83398151915254815f610cee8361131c565b8083529260018116908115610e175750600114610dac575b610d1991925092610d5094930382611354565b6020610d5e60405192610d2c8385611354565b5f84525f368137604051958695600f60f81b875260e08588015260e08701906112cc565b9085820360408701526112cc565b4660608501523060808501525f60a085015283810360c08501528180845192838152019301915f5b828110610d9557505050500390f35b835185528695509381019392810192600101610d86565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310610dfb575050906020610d1992820101610d06565b6020919350806001915483858801015201910190918392610de3565b60209250610d1994915060ff191682840152151560051b820101610d06565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310610e85575050906020610cd192820101610cc5565b6020919350806001915483858801015201910190918392610e6d565b60209250610cd194915060ff191682840152151560051b820101610cc5565b60405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606490fd5b507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015415610c8b565b3461012b57602036600319011261012b57610f3f6112f0565b60018060a01b03165f527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00602052602060405f2054604051908152f35b3461012b57604036600319011261012b57610129610f986112f0565b60243590610fa782338361141f565b6115e7565b3461012b575f36600319011261012b57610fc46115b4565b5f80516020611c0b83398151915280546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461012b57602036600319011261012b576001600160a01b036110346112f0565b165f525f80516020611bab833981519152602052602060405f2054604051908152f35b3461012b575f36600319011261012b5761106f6115b4565b5f80516020611c6b8339815191525460ff8160401c1680156110dc575b610ac95760029068ffffffffffffffffff1916175f80516020611c6b833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160028152a1005b50600267ffffffffffffffff8216101561108c565b3461012b57602036600319011261012b57610129600435336115e7565b3461012b57604036600319011261012b576111276112f0565b61112f6115b4565b6001600160a01b038116156106a2576101299060243590611700565b3461012b575f36600319011261012b5760206111656117c2565b604051908152f35b3461012b575f36600319011261012b57602060405160128152f35b3461012b57606036600319011261012b57610b196111a46112f0565b6111ac611306565b604435916111bb83338361141f565b6114e3565b3461012b575f36600319011261012b5760205f80516020611c2b83398151915254604051908152f35b3461012b57604036600319011261012b57610b196112056112f0565b602435903361169d565b3461012b575f36600319011261012b576040515f5f80516020611b8b8339815191525461123b8161131c565b8084529060018116908115610bfa575060011461126257610b8c83610b7881850382611354565b5f80516020611b8b8339815191525f9081527f2ae08a8e29253f69ac5d979a101956ab8f8d9d7ded63fa7a83b16fc47648eab0939250905b8082106112b257509091508101602001610b78610b68565b91926001816020925483858801015201910190929161129a565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361012b57565b602435906001600160a01b038216820361012b57565b90600182811c9216801561134a575b602083101461133657565b634e487b7160e01b5f52602260045260245ffd5b91607f169161132b565b90601f8019910116810190811067ffffffffffffffff8211176107aa57604052565b6001600160a01b03165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020526040902090565b6001600160a01b0316801561140c575f80516020611c0b83398151915280546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b631e4fbdf760e01b5f525f60045260245ffd5b919061142a83611376565b60018060a01b0382165f5260205260405f2054925f19840361144d575b50505050565b8284106114c0576001600160a01b038116156114ad576001600160a01b0382161561149a5761147b90611376565b9060018060a01b03165f5260205260405f20910390555f808080611447565b634a1406b160e11b5f525f60045260245ffd5b63e602df0560e01b5f525f60045260245ffd5b508290637dc7a0d960e11b5f5260018060a01b031660045260245260445260645ffd5b6001600160a01b03169081156115a1576001600160a01b03169182156106a257815f525f80516020611bab83398151915260205260405f205481811061158857817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f80516020611bab83398151915284520360405f2055845f525f80516020611bab833981519152825260405f20818154019055604051908152a3565b8263391434e360e21b5f5260045260245260445260645ffd5b634b637e8f60e11b5f525f60045260245ffd5b5f80516020611c0b833981519152546001600160a01b031633036115d457565b63118cdaa760e01b5f523360045260245ffd5b9091906001600160a01b031680156115a157805f525f80516020611bab83398151915260205260405f2054838110611683576020845f94957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef938587525f80516020611bab8339815191528452036040862055805f80516020611c2b83398151915254035f80516020611c2b83398151915255604051908152a3565b915063391434e360e21b5f5260045260245260445260645ffd5b916001600160a01b0383169182156114ad576001600160a01b031692831561149a577f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925916116ec602092611376565b855f5282528060405f2055604051908152a3565b5f80516020611c2b83398151915254908282018092116117ae575f80516020611c2b833981519152919091556001600160a01b0316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020908461178c57805f80516020611c2b83398151915254035f80516020611c2b833981519152555b604051908152a3565b8484525f80516020611bab833981519152825260408420818154019055611783565b634e487b7160e01b5f52601160045260245ffd5b6117ca611955565b6117d2611a82565b6040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261182360c082611354565b51902090565b60ff5f80516020611c6b8339815191525460401c161561184557565b631afcd79f60e31b5f5260045ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084116118d6579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa156118cb575f516001600160a01b038116156118c157905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f9160039190565b600481101561194157806118f3575050565b6001810361190a5763f645eedf60e01b5f5260045ffd5b60028103611925575063fce698f760e01b5f5260045260245ffd5b60031461192f5750565b6335e2f38360e21b5f5260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b6040515f80516020611bcb83398151915254905f816119738461131c565b9182825260208201946001811690815f14611a6657506001146119fb575b61199d92500382611354565b519081156119a9572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1005480156119d65790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b505f80516020611bcb8339815191525f90815290917f42ad5d3e1f2e6e70edcf6d991b8a3023d3fca8047a131592f9edb9fd9b89d57d5b818310611a4a57505090602061199d92820101611991565b6020919350806001915483858801015201910190918392611a32565b60ff191686525061199d92151560051b82016020019050611991565b6040515f80516020611c4b83398151915254905f81611aa08461131c565b9182825260208201946001811690815f14611b6e5750600114611b03575b611aca92500382611354565b51908115611ad6572090565b50507fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1015480156119d65790565b505f80516020611c4b8339815191525f90815290917f5f9ce34815f8e11431c7bb75a8e6886a91478f7ffc1dbb0a98dc240fddd76b755b818310611b52575050906020611aca92820101611abe565b6020919350806001915483858801015201910190918392611b3a565b60ff1916865250611aca92151560051b82016020019050611abe56fe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0352c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10252c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace049016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d103f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212209da26bb79b9ef65d56e69c8dd0f9b8882c07271218158f84deaaef27e65e2ebb64736f6c634300081a0033","sourceMap":"632:901:82:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;2357:1:24;632:901:82;;:::i;:::-;2303:62:24;;:::i;:::-;2357:1;:::i;:::-;632:901:82;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;;;:::i;:::-;4867:20:26;632:901:82;;:::i;:::-;4867:20:26;;:::i;:::-;:29;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;;-1:-1:-1;632:901:82;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;2301:15:28;;:26;2297:97;;6967:25:55;7021:8;632:901:82;;;;;;;;;;;;972:64:30;632:901:82;;;;;;;;;;;;;;;;2435:78:28;632:901:82;2435:78:28;;632:901:82;1279:95:28;632:901:82;;1279:95:28;632:901:82;1279:95:28;;632:901:82;;;;;;;;;1279:95:28;;632:901:82;1279:95:28;632:901:82;1279:95:28;;632:901:82;;1279:95:28;;632:901:82;;1279:95:28;;632:901:82;;2435:78:28;;;632:901:82;2435:78:28;;:::i;:::-;632:901:82;2425:89:28;;4094:23:31;;:::i;:::-;3515:233:56;632:901:82;3515:233:56;;-1:-1:-1;;;3515:233:56;;;;;;;;;;632:901:82;;;3515:233:56;632:901:82;;3515:233:56;;6967:25:55;:::i;:::-;7021:8;;;;;:::i;:::-;-1:-1:-1;;;;;632:901:82;2638:15:28;;;2634:88;;10117:4:26;;;;;:::i;2634:88:28:-;2676:35;;;;;632:901:82;2676:35:28;632:901:82;;;;;;2676:35:28;2297:97;2350:33;;;;632:901:82;2350:33:28;632:901:82;;;;2350:33:28;632:901:82;;;;;;-1:-1:-1;;632:901:82;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;4301:16:25;632:901:82;;;;4726:16:25;;:34;;;;632:901:82;4805:1:25;4790:16;:50;;;;632:901:82;4855:13:25;:30;;;;632:901:82;4851:91:25;;;-1:-1:-1;;632:901:82;;4805:1:25;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;4979:67:25;;632:901:82;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:82;;;;;;;;;;;:::i;:::-;821:14;632:901;;-1:-1:-1;;;632:901:82;821:14;;;6893:76:25;;:::i;:::-;;;:::i;:::-;632:901:82;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;2600:7:26;632:901:82;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;2600:7:26;632:901:82;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;6893:76:25;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;6961:1;;;:::i;:::-;632:901:82;;;;;;;:::i;:::-;;;;-1:-1:-1;;;632:901:82;;;;6893:76:25;;:::i;:::-;632:901:82;;;;;;;:::i;:::-;4805:1:25;632:901:82;;-1:-1:-1;;;632:901:82;;;;6893:76:25;;:::i;:::-;632:901:82;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;2600:7:26;632:901:82;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;2600:7:26;632:901:82;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;2806:64:31;632:901:82;;;3902:16:31;632:901:82;-1:-1:-1;;;;;632:901:82;;8803:21:26;8799:91;;941:9:82;8928:5:26;;;:::i;:::-;5066:101:25;;632:901:82;5066:101:25;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;5142:14:25;632:901:82;;;4805:1:25;632:901:82;;5142:14:25;632:901:82;8799:91:26;8847:32;;;632:901:82;8847:32:26;632:901:82;;;;;8847:32:26;632:901:82;;;;-1:-1:-1;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;2600:7:26;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;2600:7:26;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;2600:7:26;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;2600:7:26;632:901:82;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;821:14;632:901;;;;;;;;;;;;821:14;632:901;;;;;;;;;;;;;;;;4805:1:25;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;4979:67:25;-1:-1:-1;;632:901:82;;;-1:-1:-1;;;;;;;;;;;632:901:82;4979:67:25;;;4851:91;6498:23;;;632:901:82;4908:23:25;632:901:82;;4908:23:25;4855:30;4872:13;;;4855:30;;;4790:50;4818:4;4810:25;:30;;-1:-1:-1;4790:50:25;;4726:34;;;-1:-1:-1;4726:34:25;;632:901:82;;;;;;-1:-1:-1;;632:901:82;;;;4616:5:26;632:901:82;;:::i;:::-;;;966:10:29;;4616:5:26;:::i;:::-;632:901:82;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;-1:-1:-1;632:901:82;;;;;;;-1:-1:-1;632:901:82;;-1:-1:-1;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:82;;-1:-1:-1;632:901:82;;;;;;;;-1:-1:-1;;632:901:82;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;-1:-1:-1;;;;;632:901:82;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;2806:64:31;632:901:82;5777:18:31;:43;;;632:901:82;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5965:13:31;632:901:82;;;;6000:4:31;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;632:901:82;;;;;;;;;;;;-1:-1:-1;;;632:901:82;;;;;;;5777:43:31;632:901:82;5799:16:31;632:901:82;5799:21:31;5777:43;;632:901:82;;;;;;-1:-1:-1;;632:901:82;;;;;;:::i;:::-;;;;;;;;;972:64:30;632:901:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;1479:5:27;632:901:82;;:::i;:::-;;;966:10:29;1448:5:27;966:10:29;;1448:5:27;;:::i;:::-;1479;:::i;632:901:82:-;;;;;;-1:-1:-1;;632:901:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:82;;-1:-1:-1;;;;;;632:901:82;;;;;;;-1:-1:-1;;;;;632:901:82;3975:40:24;632:901:82;;3975:40:24;632:901:82;;;;;;;-1:-1:-1;;632:901:82;;;;-1:-1:-1;;;;;632:901:82;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;6431:44:25;;;;632:901:82;6427:105:25;;1427:1:82;632:901;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;6656:20:25;632:901:82;;;1427:1;632:901;;6656:20:25;632:901:82;6431:44:25;632:901:82;1427:1;632:901;;;6450:25:25;;6431:44;;632:901:82;;;;;;-1:-1:-1;;632:901:82;;;;1005:5:27;632:901:82;;966:10:29;1005:5:27;:::i;632:901:82:-;;;;;;-1:-1:-1;;632:901:82;;;;;;:::i;:::-;2303:62:24;;:::i;:::-;-1:-1:-1;;;;;632:901:82;;8803:21:26;8799:91;;8928:5;632:901:82;;;8928:5:26;;:::i;632:901:82:-;;;;;;-1:-1:-1;;632:901:82;;;;;4094:23:31;;:::i;:::-;632:901:82;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;;;;3827:2:26;632:901:82;;;;;;;;;-1:-1:-1;;632:901:82;;;;6198:5:26;632:901:82;;:::i;:::-;;;:::i;:::-;;;966:10:29;6162:5:26;966:10:29;;6162:5:26;;:::i;:::-;6198;:::i;632:901:82:-;;;;;;-1:-1:-1;;632:901:82;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;;10117:4:26;632:901:82;;:::i;:::-;;;966:10:29;;10117:4:26;:::i;632:901:82:-;;;;;;-1:-1:-1;;632:901:82;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;-1:-1:-1;632:901:82;;;;;;;-1:-1:-1;632:901:82;;-1:-1:-1;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;632:901:82;;;;;;;;-1:-1:-1;;632:901:82;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:82;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;632:901:82;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;632:901:82;;;;;4867:13:26;632:901:82;;;;;;:::o;3405:215:24:-;-1:-1:-1;;;;;632:901:82;3489:22:24;;3485:91;;-1:-1:-1;;;;;;;;;;;632:901:82;;-1:-1:-1;;;;;;632:901:82;;;;;;;-1:-1:-1;;;;;632:901:82;3975:40:24;-1:-1:-1;;3975:40:24;3405:215::o;3485:91::-;3534:31;;;3509:1;3534:31;3509:1;3534:31;632:901:82;;3509:1:24;3534:31;11745:477:26;;;4867:20;;;:::i;:::-;632:901:82;;;;;;;-1:-1:-1;632:901:82;;;;-1:-1:-1;632:901:82;;;;;11910:37:26;;11906:310;;11745:477;;;;;:::o;11906:310::-;11967:24;;;11963:130;;-1:-1:-1;;;;;632:901:82;;11141:19:26;11137:89;;-1:-1:-1;;;;;632:901:82;;11239:21:26;11235:90;;11334:20;;;:::i;:::-;:29;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;-1:-1:-1;632:901:82;;;;;11906:310:26;;;;;;11235:90;11283:31;;;-1:-1:-1;11283:31:26;-1:-1:-1;11283:31:26;632:901:82;;-1:-1:-1;11283:31:26;11137:89;11183:32;;;-1:-1:-1;11183:32:26;-1:-1:-1;11183:32:26;632:901:82;;-1:-1:-1;11183:32:26;11963:130;12018:60;;;;;;-1:-1:-1;12018:60:26;632:901:82;;;;;;12018:60:26;632:901:82;;;;;;-1:-1:-1;12018:60:26;6605:300;-1:-1:-1;;;;;632:901:82;;6688:18:26;;6684:86;;-1:-1:-1;;;;;632:901:82;;6783:16:26;;6779:86;;632:901:82;6704:1:26;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;;6704:1:26;632:901:82;;7609:19:26;;;7605:115;;632:901:82;8358:25:26;632:901:82;;;;6704:1:26;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;;;6704:1:26;632:901:82;;;6704:1:26;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;;6704:1:26;632:901:82;;;;;;;;;;;;8358:25:26;6605:300::o;7605:115::-;7655:50;;;;6704:1;7655:50;;632:901:82;;;;;;6704:1:26;7655:50;6684:86;6729:30;;;6704:1;6729:30;6704:1;6729:30;632:901:82;;6704:1:26;6729:30;2658:162:24;-1:-1:-1;;;;;;;;;;;632:901:82;-1:-1:-1;;;;;632:901:82;966:10:29;2717:23:24;2713:101;;2658:162::o;2713:101::-;2763:40;;;-1:-1:-1;2763:40:24;966:10:29;2763:40:24;632:901:82;;-1:-1:-1;2763:40:24;9259:206:26;;;;-1:-1:-1;;;;;632:901:82;9329:21:26;;9325:89;;632:901:82;9348:1:26;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;;9348:1:26;632:901:82;;7609:19:26;;;7605:115;;632:901:82;;9348:1:26;632:901:82;;8358:25:26;632:901:82;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;8358:25:26;9259:206::o;7605:115::-;7655:50;;;;;9348:1;7655:50;;632:901:82;;;;;;9348:1:26;7655:50;10976:487;;-1:-1:-1;;;;;632:901:82;;;11141:19:26;;11137:89;;-1:-1:-1;;;;;632:901:82;;11239:21:26;;11235:90;;11415:31;11334:20;;632:901:82;11334:20:26;;:::i;:::-;632:901:82;-1:-1:-1;632:901:82;;;;;-1:-1:-1;632:901:82;;;;;;;11415:31:26;10976:487::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;-1:-1:-1;;;;;632:901:82;;;;8358:25:26;;632:901:82;;7918:16:26;632:901:82;;;-1:-1:-1;;;;;;;;;;;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;7914:429:26;632:901:82;;;;;8358:25:26;7220:1170::o;7914:429::-;632:901:82;;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;;;;;7914:429:26;;632:901:82;;;;;941:9;;;;;632:901;941:9;4130:191:31;4243:17;;:::i;:::-;4262:20;;:::i;:::-;632:901:82;;4221:92:31;;;;632:901:82;2073:95:31;632:901:82;;;2073:95:31;;632:901:82;2073:95:31;;;632:901:82;4284:13:31;2073:95;;;632:901:82;4307:4:31;2073:95;;;632:901:82;2073:95:31;4221:92;;;;;;:::i;:::-;632:901:82;4211:103:31;;4130:191;:::o;7084:141:25:-;632:901:82;-1:-1:-1;;;;;;;;;;;632:901:82;;;;7150:18:25;7146:73;;7084:141::o;7146:73::-;7191:17;;;-1:-1:-1;7191:17:25;;-1:-1:-1;7191:17:25;5140:1530:55;;;6199:66;6186:79;;6182:164;;632:901:82;;;;;;-1:-1:-1;632:901:82;;;;;;;;;;;;;;;;;;;6457:24:55;;;;;;;;;-1:-1:-1;6457:24:55;-1:-1:-1;;;;;632:901:82;;6495:20:55;6491:113;;6614:49;-1:-1:-1;6614:49:55;-1:-1:-1;5140:1530:55;:::o;6491:113::-;6531:62;-1:-1:-1;6531:62:55;6457:24;6531:62;-1:-1:-1;6531:62:55;:::o;6457:24::-;632:901:82;;;-1:-1:-1;632:901:82;;;;;6182:164:55;6281:54;;;6297:1;6281:54;6301:30;6281:54;;:::o;7196:532::-;632:901:82;;;;;;7282:29:55;;;7327:7;;:::o;7278:444::-;632:901:82;7378:38:55;;632:901:82;;7439:23:55;;;7291:20;7439:23;632:901:82;7291:20:55;7439:23;7374:348;7492:35;7483:44;;7492:35;;7550:46;;;;7291:20;7550:46;632:901:82;;;7291:20:55;7550:46;7479:243;7626:30;7617:39;7613:109;;7479:243;7196:532::o;7613:109::-;7679:32;;;7291:20;7679:32;632:901:82;;;7291:20:55;7679:32;632:901:82;;;;7291:20:55;632:901:82;;;;;7291:20:55;632:901:82;7058:687:31;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7230:22:31;;;;7275;7268:29;:::o;7226:513::-;-1:-1:-1;;2806:64:31;632:901:82;7603:15:31;;;;7638:17;:::o;7599:130::-;7694:20;7701:13;7694:20;:::o;632:901:82:-;-1:-1:-1;;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;-1:-1:-1;632:901:82;;;;;;;;;;;-1:-1:-1;632:901:82;;7966:723:31;632:901:82;;-1:-1:-1;;;;;;;;;;;632:901:82;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8147:25:31;;;;8195;8188:32;:::o;8143:540::-;-1:-1:-1;;8507:16:31;632:901:82;8541:18:31;;;;8579:20;:::o;632:901:82:-;-1:-1:-1;;;;;;;;;;;;632:901:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;632:901:82;;;-1:-1:-1;632:901:82;;;;;;;;;;;-1:-1:-1;632:901:82;","linkReferences":{}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(uint256)":"42966c68","burnFrom(address,uint256)":"79cc6790","decimals()":"313ce567","eip712Domain()":"84b0196e","initialize(address)":"c4d66de8","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","owner()":"8da5cb5b","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","reinitialize()":"6c2eb350","renounceOwnership()":"715018a6","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd","transferOwnership(address)":"f2fde38b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reinitialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`.\"},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/WrappedVara.sol\":\"WrappedVara\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"],\"viaIR\":true},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152\",\"dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol\":{\"keccak256\":\"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f\",\"dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883\",\"dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol\":{\"keccak256\":\"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827\",\"dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e\",\"dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155\",\"dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009\",\"dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323\",\"dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd\",\"dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3\",\"dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6\",\"dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087\",\"dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8\",\"dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da\",\"dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047\",\"dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615\",\"dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5\"]},\"src/WrappedVara.sol\":{\"keccak256\":\"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4\",\"dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientAllowance"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"type":"error","name":"ERC20InsufficientBalance"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC20InvalidApprover"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC20InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC20InvalidSender"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"type":"error","name":"ERC20InvalidSpender"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"ERC2612ExpiredSignature"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC2612InvalidSigner"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"type":"error","name":"InvalidAccountNonce"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[],"type":"event","name":"EIP712DomainChanged","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burnFrom"},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}]},{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"reinitialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"details":"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"allowance(address,address)":{"details":"See {IERC20-allowance}."},"approve(address,uint256)":{"details":"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address."},"balanceOf(address)":{"details":"See {IERC20-balanceOf}."},"burn(uint256)":{"details":"Destroys a `value` amount of tokens from the caller. See {ERC20-_burn}."},"burnFrom(address,uint256)":{"details":"Destroys a `value` amount of tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `value`."},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor"},"decimals()":{"details":"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."},"eip712Domain()":{"details":"See {IERC-5267}."},"name()":{"details":"Returns the name of the token."},"nonces(address)":{"details":"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times."},"owner()":{"details":"Returns the address of the current owner."},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"details":"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"transfer(address,uint256)":{"details":"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`."},"transferFrom(address,address,uint256)":{"details":"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/WrappedVara.sol":"WrappedVara"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5a5f22721ffb66d3e1ecc568c0d37c91f91223d8663c8a5e78396e780b849c72","urls":["bzz-raw://bdd108133c98ea251513424bf17905090c8a7e0755562a6d12a81b8bccbd6152","dweb:/ipfs/QmahpnB63Up9aVx4jDqxEgry5BRN5itHRvy9rwBvMT2yqL"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol":{"keccak256":"0xe74dd150d031e8ecf9755893a2aae02dec954158140424f11c28ff689a48492f","urls":["bzz-raw://554e0934aecff6725e10d4aeb2e70ff214384b68782b1ba9f9322a0d16105a2f","dweb:/ipfs/QmVvmHc7xPftEkWvJRNAqv7mXihKLEAVXpiebG7RT5rhMW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x6ff1ff6f25ebee2f778775b26d81610a04e37993bc06a7f54e0c768330ef1506","urls":["bzz-raw://6f1fa246b88750fe26a30495db812eb2788dba8e5191a11f9dedb37bd6f4d883","dweb:/ipfs/QmZUcDXW1a9xEAfQwqUG6NXQ6AwCs5gfv89NkwzTCeDify"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/NoncesUpgradeable.sol":{"keccak256":"0x778f4a1546a1c6c726ecc8e2348a2789690fb8f26e12bd9d89537669167b79a4","urls":["bzz-raw://851d3dfe724e918ff0a064b206e1ef46b27ab0df2aa2c8af976973a22ef59827","dweb:/ipfs/Qmd4wb7zX8ueYhMVBy5PJjfsANK3Ra3pKPN7qQkNsdwGHn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x06d93977f6018359ef432d3b649b7c92efb0326d3ddbbeaf08648105bdcacbbf","urls":["bzz-raw://c8574fdb7ffb0e8e9841ba6394432d3e31b496a0953baa6f64837062fb29b02e","dweb:/ipfs/QmdjZNdnBUVzzWXMYXsFmHdvh2KL5Lnc1uBfvbuqPNU9X3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x9cac1f97ecc92043dd19235d6677e40cf6bac382886a94f7a80a957846b24229","urls":["bzz-raw://a1e0c924e0edfdfd4abceeb552d99f1cd95c0d387b38ccb1f67c583607e3d155","dweb:/ipfs/QmZAi6qKa66zuS3jyEhsQR9bBNnZe1wSognYqw9nvseyUz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xee2337af2dc162a973b4be6d3f7c16f06298259e0af48c5470d2839bfa8a22f4","urls":["bzz-raw://30c476b4b2f405c1bb3f0bae15b006d129c80f1bfd9d0f2038160a3bb9745009","dweb:/ipfs/Qmb3VcuDufv6xbHeVgksC4tHpc5gKYVqBEwjEXW72XzSvN"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x88f7b6f070ad1de2bf899da6978ed74b5038eac78c01b7359b92b60c3d965c28","urls":["bzz-raw://c436edb6733a036607c6f17cc590e8ee351363a8cb4c564a98d9a66392c89323","dweb:/ipfs/QmcJvJR2K3EtYcKEXVpQ1WqT6TvAbVem5HR1FirAsqEXFR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xe9d36d0c892aea68546d53f21e02223f7f542295c10110a0764336f9ffeab6d1","urls":["bzz-raw://34d4d72a89193f4d5223763e6d871443fb32a22d6024566843f4ee42eed68bdd","dweb:/ipfs/Qmbsc6kJJNhrkNXP7g7KeqzRETQEvzSXg3ZmJmVLhaEahB"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0x29074fe5a74bb024c57b3570abf6c74d8bceed3438694d470fd0166a3ecd196a","urls":["bzz-raw://f4f8435ccbc56e384f4cc9ac9ff491cf30a82f2beac00e33ccc2cf8af3f77cc3","dweb:/ipfs/QmUKJXxTe6nn1qfgnX8xbnboNNAPUuEmJyGqMZCKNiFBgn"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x686a21b9be2594ccfda3a855270dd8ebc4288b8a9ed84ecd4ef1bca2ea3fc46b","urls":["bzz-raw://7c0bbc37f4d1aaae086d73f13f41b8043a9ad5b07f30a2fd7b8a74ead99b1ef6","dweb:/ipfs/QmZpFyfCCFpbrkNtfHTn18qV7VvptPdoLN82Qu5XtMCci6"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xa548dd62e9e17616ae80a1e7ac7b1447ae377efc27fb9f7b4f4fbf5c0b0a1dfb","urls":["bzz-raw://d27e9ae3e67eb229444cd43d49db5be57c586155fd1d363b3b1f9bb1b7bb0087","dweb:/ipfs/QmT2GFnpXsTWBs8bkeVJtQ4VNX7f3igxwB77JBCr4mDXb3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x3f1998a2904792ff2a576827876638b4917573186537f878d30b23277a3b8d38","urls":["bzz-raw://a8dfb08ed617c9d874de901e44ac8af7af7b13e7c84000a1da3cdaf6004593e8","dweb:/ipfs/QmPX2hZAvCZJCQNSXcWqhxh3xp6UitwESrw3K2u3aYNqiu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x2be34e47fc07baed68c4878618a6e13c13243753c3f656ca1b6e05287c5df4ee","urls":["bzz-raw://e0bc7f3ae934c76aae959cf061b9764a6dbb2313c4281944dde278cd418599da","dweb:/ipfs/QmYtYLrwC1nPJd86kVrQFQAGeS3XGmhXjCj25LQGfGkugi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x8cd59334ed58b8884cd1f775afc9400db702e674e5d6a7a438c655b9de788d7e","urls":["bzz-raw://99e62c7de7318f413b6352e3f2704ca23e7725ff144e43c8bd574d12dbf29047","dweb:/ipfs/QmSEXG2rBx1VxU2uFTWdiChjDvA4osEY2mesjmoVeVhHko"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5c8d4114f077f6803bb89b8b07bfa26dfbf8f2001708e4e7fdf1e8d9ddd42f44","urls":["bzz-raw://b66c74efa1f994e3ea467b4165da1575857b29d81bec36e94678fe494ce5c615","dweb:/ipfs/QmeXQFdzSJFmN8UdhxMqQwwUh1U2WEha5NoVLbSg3pCJc5"],"license":"MIT"},"src/WrappedVara.sol":{"keccak256":"0x546b478734d72773f420a95e83f146771966ea29f4448e8ff9c7a739d13bba43","urls":["bzz-raw://e61793dfd06dfc3393a06527a7ca1c51aeb0a273bbfcc5d10f966cfd5f98e0b4","dweb:/ipfs/Qmed9Ksq1uscNucYVuccr3NigGgYgJ5vFqEXvEGLrjTmoJ"],"license":"UNLICENSED"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/WrappedVara.sol","id":56095,"exportedSymbols":{"ERC20BurnableUpgradeable":[39957],"ERC20PermitUpgradeable":[40126],"ERC20Upgradeable":[39895],"Initializable":[39278],"OwnableUpgradeable":[39024],"WrappedVara":[56094]},"nodeType":"SourceUnit","src":"39:1495:82","nodes":[{"id":55998,"nodeType":"PragmaDirective","src":"39:24:82","nodes":[],"literals":["solidity","^","0.8",".26"]},{"id":56000,"nodeType":"ImportDirective","src":"65:96:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":56095,"sourceUnit":39279,"symbolAliases":[{"foreign":{"id":55999,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39278,"src":"73:13:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56002,"nodeType":"ImportDirective","src":"162:102:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol","nameLocation":"-1:-1:-1","scope":56095,"sourceUnit":39896,"symbolAliases":[{"foreign":{"id":56001,"name":"ERC20Upgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39895,"src":"170:16:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56004,"nodeType":"ImportDirective","src":"265:133:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20BurnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56095,"sourceUnit":39958,"symbolAliases":[{"foreign":{"id":56003,"name":"ERC20BurnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39957,"src":"273:24:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56006,"nodeType":"ImportDirective","src":"399:101:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56095,"sourceUnit":39025,"symbolAliases":[{"foreign":{"id":56005,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39024,"src":"407:18:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56008,"nodeType":"ImportDirective","src":"501:129:82","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56095,"sourceUnit":40127,"symbolAliases":[{"foreign":{"id":56007,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40126,"src":"509:22:82","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56094,"nodeType":"ContractDefinition","src":"632:901:82","nodes":[{"id":56021,"nodeType":"VariableDeclaration","src":"784:51:82","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_NAME","nameLocation":"808:10:82","scope":56094,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56019,"name":"string","nodeType":"ElementaryTypeName","src":"784:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"577261707065642056617261","id":56020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"821:14:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_985e2e9885ca23de2896caee5fad5adf116e2558361aa44c502ff8b2c1b2a41b","typeString":"literal_string \"Wrapped Vara\""},"value":"Wrapped Vara"},"visibility":"private"},{"id":56024,"nodeType":"VariableDeclaration","src":"841:46:82","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_SYMBOL","nameLocation":"865:12:82","scope":56094,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":56022,"name":"string","nodeType":"ElementaryTypeName","src":"841:6:82","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"5756415241","id":56023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"880:7:82","typeDescriptions":{"typeIdentifier":"t_stringliteral_203a7c23d1b412674989fae6808de72f52c6953d49ac548796ba3c05451693a4","typeString":"literal_string \"WVARA\""},"value":"WVARA"},"visibility":"private"},{"id":56027,"nodeType":"VariableDeclaration","src":"893:57:82","nodes":[],"constant":true,"mutability":"constant","name":"TOKEN_INITIAL_SUPPLY","nameLocation":"918:20:82","scope":56094,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56025,"name":"uint256","nodeType":"ElementaryTypeName","src":"893:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"315f3030305f303030","id":56026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"941:9:82","typeDescriptions":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"value":"1_000_000"},"visibility":"private"},{"id":56035,"nodeType":"FunctionDefinition","src":"1010:53:82","nodes":[],"body":{"id":56034,"nodeType":"Block","src":"1024:39:82","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56031,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39246,"src":"1034:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1034:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56033,"nodeType":"ExpressionStatement","src":"1034:22:82"}]},"documentation":{"id":56028,"nodeType":"StructuredDocumentation","src":"957:48:82","text":"@custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":56029,"nodeType":"ParameterList","parameters":[],"src":"1021:2:82"},"returnParameters":{"id":56030,"nodeType":"ParameterList","parameters":[],"src":"1024:0:82"},"scope":56094,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56069,"nodeType":"FunctionDefinition","src":"1069:297:82","nodes":[],"body":{"id":56068,"nodeType":"Block","src":"1130:236:82","nodes":[],"statements":[{"expression":{"arguments":[{"id":56043,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56021,"src":"1153:10:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":56044,"name":"TOKEN_SYMBOL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56024,"src":"1165:12:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56042,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39346,"src":"1140:12:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":56045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1140:38:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56046,"nodeType":"ExpressionStatement","src":"1140:38:82"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56047,"name":"__ERC20Burnable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39916,"src":"1188:20:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1188:22:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56049,"nodeType":"ExpressionStatement","src":"1188:22:82"},{"expression":{"arguments":[{"id":56051,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56037,"src":"1235:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56050,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38884,"src":"1220:14:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":56052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1220:28:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56053,"nodeType":"ExpressionStatement","src":"1220:28:82"},{"expression":{"arguments":[{"id":56055,"name":"TOKEN_NAME","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56021,"src":"1277:10:82","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":56054,"name":"__ERC20Permit_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40013,"src":"1258:18:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory)"}},"id":56056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1258:30:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56057,"nodeType":"ExpressionStatement","src":"1258:30:82"},{"expression":{"arguments":[{"id":56059,"name":"initialOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56037,"src":"1305:12:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56060,"name":"TOKEN_INITIAL_SUPPLY","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56027,"src":"1319:20:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":56061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1342:2:82","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":56062,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39415,"src":"1348:8:82","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint8_$","typeString":"function () view returns (uint8)"}},"id":56063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1348:10:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1342:16:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1319:39:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56058,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1299:5:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1299:60:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56067,"nodeType":"ExpressionStatement","src":"1299:60:82"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":56040,"kind":"modifierInvocation","modifierName":{"id":56039,"name":"initializer","nameLocations":["1118:11:82"],"nodeType":"IdentifierPath","referencedDeclaration":39132,"src":"1118:11:82"},"nodeType":"ModifierInvocation","src":"1118:11:82"}],"name":"initialize","nameLocation":"1078:10:82","parameters":{"id":56038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56037,"mutability":"mutable","name":"initialOwner","nameLocation":"1097:12:82","nodeType":"VariableDeclaration","scope":56069,"src":"1089:20:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56036,"name":"address","nodeType":"ElementaryTypeName","src":"1089:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1088:22:82"},"returnParameters":{"id":56041,"nodeType":"ParameterList","parameters":[],"src":"1130:0:82"},"scope":56094,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56078,"nodeType":"FunctionDefinition","src":"1372:60:82","nodes":[],"body":{"id":56077,"nodeType":"Block","src":"1430:2:82","nodes":[],"statements":[]},"functionSelector":"6c2eb350","implemented":true,"kind":"function","modifiers":[{"id":56072,"kind":"modifierInvocation","modifierName":{"id":56071,"name":"onlyOwner","nameLocations":["1403:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1403:9:82"},"nodeType":"ModifierInvocation","src":"1403:9:82"},{"arguments":[{"hexValue":"32","id":56074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1427:1:82","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"id":56075,"kind":"modifierInvocation","modifierName":{"id":56073,"name":"reinitializer","nameLocations":["1413:13:82"],"nodeType":"IdentifierPath","referencedDeclaration":39179,"src":"1413:13:82"},"nodeType":"ModifierInvocation","src":"1413:16:82"}],"name":"reinitialize","nameLocation":"1381:12:82","parameters":{"id":56070,"nodeType":"ParameterList","parameters":[],"src":"1393:2:82"},"returnParameters":{"id":56076,"nodeType":"ParameterList","parameters":[],"src":"1430:0:82"},"scope":56094,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56093,"nodeType":"FunctionDefinition","src":"1438:93:82","nodes":[],"body":{"id":56092,"nodeType":"Block","src":"1497:34:82","nodes":[],"statements":[{"expression":{"arguments":[{"id":56088,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56080,"src":"1513:2:82","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56089,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56082,"src":"1517:6:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56087,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39727,"src":"1507:5:82","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1507:17:82","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56091,"nodeType":"ExpressionStatement","src":"1507:17:82"}]},"functionSelector":"40c10f19","implemented":true,"kind":"function","modifiers":[{"id":56085,"kind":"modifierInvocation","modifierName":{"id":56084,"name":"onlyOwner","nameLocations":["1487:9:82"],"nodeType":"IdentifierPath","referencedDeclaration":38919,"src":"1487:9:82"},"nodeType":"ModifierInvocation","src":"1487:9:82"}],"name":"mint","nameLocation":"1447:4:82","parameters":{"id":56083,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56080,"mutability":"mutable","name":"to","nameLocation":"1460:2:82","nodeType":"VariableDeclaration","scope":56093,"src":"1452:10:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56079,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:82","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56082,"mutability":"mutable","name":"amount","nameLocation":"1472:6:82","nodeType":"VariableDeclaration","scope":56093,"src":"1464:14:82","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56081,"name":"uint256","nodeType":"ElementaryTypeName","src":"1464:7:82","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1451:28:82"},"returnParameters":{"id":56086,"nodeType":"ParameterList","parameters":[],"src":"1497:0:82"},"scope":56094,"stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":56009,"name":"Initializable","nameLocations":["660:13:82"],"nodeType":"IdentifierPath","referencedDeclaration":39278,"src":"660:13:82"},"id":56010,"nodeType":"InheritanceSpecifier","src":"660:13:82"},{"baseName":{"id":56011,"name":"ERC20Upgradeable","nameLocations":["679:16:82"],"nodeType":"IdentifierPath","referencedDeclaration":39895,"src":"679:16:82"},"id":56012,"nodeType":"InheritanceSpecifier","src":"679:16:82"},{"baseName":{"id":56013,"name":"ERC20BurnableUpgradeable","nameLocations":["701:24:82"],"nodeType":"IdentifierPath","referencedDeclaration":39957,"src":"701:24:82"},"id":56014,"nodeType":"InheritanceSpecifier","src":"701:24:82"},{"baseName":{"id":56015,"name":"OwnableUpgradeable","nameLocations":["731:18:82"],"nodeType":"IdentifierPath","referencedDeclaration":39024,"src":"731:18:82"},"id":56016,"nodeType":"InheritanceSpecifier","src":"731:18:82"},{"baseName":{"id":56017,"name":"ERC20PermitUpgradeable","nameLocations":["755:22:82"],"nodeType":"IdentifierPath","referencedDeclaration":40126,"src":"755:22:82"},"id":56018,"nodeType":"InheritanceSpecifier","src":"755:22:82"}],"canonicalName":"WrappedVara","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56094,40126,40283,40627,40821,41968,39024,39957,39895,40863,41932,41906,40172,39278],"name":"WrappedVara","nameLocation":"641:11:82","scope":56095,"usedErrors":[38860,38865,39041,39044,39992,39999,40186,40833,40838,40843,40852,40857,40862,43050,43055,43060],"usedEvents":[38871,39049,40801,41840,41849]}],"license":"UNLICENSED"},"id":82} \ No newline at end of file diff --git a/ethexe/ethereum/src/lib.rs b/ethexe/ethereum/src/lib.rs index 3099573b78f..4aeb5e1a097 100644 --- a/ethexe/ethereum/src/lib.rs +++ b/ethexe/ethereum/src/lib.rs @@ -151,7 +151,7 @@ impl Ethereum { _mirror: mirror_address, _mirrorProxy: mirror_proxy_address, _wrappedVara: wrapped_vara_address, - _validatorAddressArray: validators, + _validatorsKeys: validators, } .abi_encode(), ), From b710fb843c79b3512af787fbc8d6050183152090 Mon Sep 17 00:00:00 2001 From: StackOverflowExcept1on <109800286+StackOverflowExcept1on@users.noreply.github.com> Date: Sun, 18 Aug 2024 00:58:44 +0300 Subject: [PATCH 4/4] feat(crates-io): simulate packages publishing (#4147) --- .github/workflows/check.yml | 4 +- .github/workflows/crates-io.yml | 6 +- Cargo.lock | 204 ++++++++++++++++++++++++++++++- Cargo.toml | 1 + gcore/Cargo.toml | 3 +- utils/crates-io/Cargo.toml | 3 + utils/crates-io/src/handler.rs | 2 +- utils/crates-io/src/lib.rs | 17 ++- utils/crates-io/src/main.rs | 28 +++-- utils/crates-io/src/manifest.rs | 125 +++++++++++++------ utils/crates-io/src/publisher.rs | 114 +++++++++-------- utils/crates-io/src/simulator.rs | 105 ++++++++++++++++ utils/crates-io/src/version.rs | 22 +++- 13 files changed, 520 insertions(+), 114 deletions(-) create mode 100644 utils/crates-io/src/simulator.rs diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 3603b0a011f..64343301193 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -94,8 +94,8 @@ jobs: cargo +stable check --manifest-path utils/wasm-builder/test-program/Cargo.toml cargo +stable check --manifest-path utils/cargo-gbuild/test-program/Cargo.toml --workspace --target wasm32-unknown-unknown - - name: "Check: crates-io packages" - run: cargo +stable run --release -p crates-io check + - name: "Check: crates-io packages publishing" + run: cargo +stable run --release -p crates-io publish --simulate --registry-path /tmp/cargo-http-registry fuzzer: runs-on: [kuberunner, github-runner-01] diff --git a/.github/workflows/crates-io.yml b/.github/workflows/crates-io.yml index bd8f39b1a27..65fc7876e06 100644 --- a/.github/workflows/crates-io.yml +++ b/.github/workflows/crates-io.yml @@ -32,10 +32,10 @@ jobs: targets: wasm32-unknown-unknown components: llvm-tools - - name: "Check packages" + - name: "Publish packages (simulate)" if: ${{ !inputs.publish }} - run: cargo +stable run -p crates-io check + run: cargo +stable run --release -p crates-io publish -v ${{ inputs.version }} --simulate --registry-path /tmp/cargo-http-registry - name: "Publish packages" if: ${{ inputs.publish }} - run: cargo +stable run -p crates-io publish -v ${{ inputs.version }} + run: cargo +stable run --release -p crates-io publish -v ${{ inputs.version }} diff --git a/Cargo.lock b/Cargo.lock index 84640755b3d..8cb36b92635 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2147,6 +2147,24 @@ dependencies = [ "tracing-subscriber 0.3.18", ] +[[package]] +name = "cargo-http-registry" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7af9bc973d36c91202e71827f8644c6cd976eda51ad6d7cd2fcb5b9b049bfd02" +dependencies = [ + "anyhow", + "git2", + "serde", + "serde_json", + "sha2 0.10.8", + "structopt", + "tokio", + "tracing", + "tracing-subscriber 0.3.18", + "warp", +] + [[package]] name = "cargo-platform" version = "0.1.3" @@ -2336,6 +2354,21 @@ dependencies = [ "libloading", ] +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + [[package]] name = "clap" version = "3.2.25" @@ -2350,7 +2383,7 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap", + "textwrap 0.16.0", ] [[package]] @@ -2916,10 +2949,13 @@ name = "crates-io" version = "1.5.0" dependencies = [ "anyhow", + "cargo-http-registry", "cargo_metadata 0.18.1", "clap 4.5.9", "reqwest 0.11.27", "serde", + "tempfile", + "tokio", "toml_edit 0.22.14", ] @@ -6154,7 +6190,6 @@ dependencies = [ "gprimitives", "gsys", "hex-literal", - "parity-scale-codec", ] [[package]] @@ -7031,6 +7066,21 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +[[package]] +name = "git2" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b989d6a7ca95a362cf2cfc5ad688b3a467be1f87e480b8dad07fee8c79b0044" +dependencies = [ + "bitflags 1.3.2", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + [[package]] name = "glob" version = "0.2.11" @@ -7411,6 +7461,39 @@ dependencies = [ "num-traits", ] +[[package]] +name = "headers" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" +dependencies = [ + "base64 0.21.7", + "bytes", + "headers-core", + "http 0.2.9", + "httpdate", + "mime", + "sha1", +] + +[[package]] +name = "headers-core" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" +dependencies = [ + "http 0.2.9", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.4.1" @@ -8694,6 +8777,20 @@ dependencies = [ "once_cell", ] +[[package]] +name = "libgit2-sys" +version = "0.15.2+1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a80df2e11fb4a61f4ba2ab42dbe7f74468da143f1a75c74e11dee7c813f694fa" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + [[package]] name = "libloading" version = "0.7.4" @@ -9583,6 +9680,20 @@ dependencies = [ "libsecp256k1-core", ] +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.12" @@ -9590,6 +9701,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", + "libc", "pkg-config", "vcpkg", ] @@ -9971,6 +10083,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -16792,6 +16914,12 @@ dependencies = [ "precomputed-hash", ] +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + [[package]] name = "strsim" version = "0.10.0" @@ -16804,6 +16932,30 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" +[[package]] +name = "structopt" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10" +dependencies = [ + "clap 2.34.0", + "lazy_static", + "structopt-derive", +] + +[[package]] +name = "structopt-derive" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "strum" version = "0.24.1" @@ -17311,6 +17463,15 @@ dependencies = [ "parity-scale-codec", ] +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + [[package]] name = "textwrap" version = "0.16.0" @@ -18113,6 +18274,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + [[package]] name = "unicode-width" version = "0.1.10" @@ -18329,6 +18496,12 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + [[package]] name = "version_check" version = "0.9.4" @@ -18420,6 +18593,33 @@ dependencies = [ "try-lock", ] +[[package]] +name = "warp" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "headers", + "http 0.2.9", + "hyper 0.14.27", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project", + "scoped-tls", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-util", + "tower-service", + "tracing", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 733af5c20ad..f1b6d73be64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -498,6 +498,7 @@ demo-wat = { path = "examples/wat" } # TODO: remove these dependencies (from this file?) or add more docs. cfg-if = "1.0.0" # gear-lazy-pages +cargo-http-registry = "0.1.6" # crates-io errno = "0.3" # gear-lazy-pages nix = "0.26.4" # gear-lazy-pages indexmap = "2.2.6" # utils/weight-diff diff --git a/gcore/Cargo.toml b/gcore/Cargo.toml index 1a6156848b7..e16b5a2531c 100644 --- a/gcore/Cargo.toml +++ b/gcore/Cargo.toml @@ -13,13 +13,12 @@ gsys.workspace = true gprimitives.workspace = true gear-core-errors.workspace = true gear-stack-buffer.workspace = true -codec = { workspace = true, optional = true } [dev-dependencies] hex-literal.workspace = true galloc.workspace = true [features] -codec = ["dep:codec", "gear-core-errors/codec", "gprimitives/codec"] +codec = ["gear-core-errors/codec", "gprimitives/codec"] debug = [] ethexe = ["gsys/ethexe"] diff --git a/utils/crates-io/Cargo.toml b/utils/crates-io/Cargo.toml index 6f5c850fce7..002bb04b0d4 100644 --- a/utils/crates-io/Cargo.toml +++ b/utils/crates-io/Cargo.toml @@ -5,8 +5,11 @@ edition.workspace = true [dependencies] anyhow.workspace = true +cargo-http-registry.workspace = true cargo_metadata.workspace = true clap = { workspace = true, features = ["derive"] } serde = { workspace = true, features = ["derive"] } reqwest = { workspace = true, features = ["blocking", "json", "default-tls"] } +tempfile.workspace = true +tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } toml_edit.workspace = true diff --git a/utils/crates-io/src/handler.rs b/utils/crates-io/src/handler.rs index 9293687620f..d79d69ef357 100644 --- a/utils/crates-io/src/handler.rs +++ b/utils/crates-io/src/handler.rs @@ -40,7 +40,7 @@ pub fn crates_io_name(pkg: &str) -> &str { /// Patch specified manifest by provided name. pub fn patch(pkg: &Package) -> Result { let mut manifest = Manifest::new(pkg)?; - let doc = &mut manifest.manifest; + let doc = &mut manifest.mutable_manifest; match manifest.name.as_str() { "gear-core-processor" => core_processor::patch(doc), diff --git a/utils/crates-io/src/lib.rs b/utils/crates-io/src/lib.rs index f52efadba0f..c7fb991429d 100644 --- a/utils/crates-io/src/lib.rs +++ b/utils/crates-io/src/lib.rs @@ -22,14 +22,20 @@ mod handler; mod manifest; mod publisher; +mod simulator; mod version; -pub use self::{manifest::Manifest, publisher::Publisher, version::verify}; +pub use self::{ + manifest::{LockFile, Manifest, Workspace}, + publisher::Publisher, + simulator::Simulator, + version::verify, +}; use anyhow::Result; use std::process::{Command, ExitStatus}; /// Required Packages without local dependencies. -pub const SAFE_DEPENDENCIES: [&str; 13] = [ +pub const SAFE_DEPENDENCIES: &[&str] = &[ "actor-system-error", "galloc", "gear-ss58", @@ -50,7 +56,7 @@ pub const SAFE_DEPENDENCIES: [&str; 13] = [ /// NOTE: Each package in this array could possibly depend /// on the previous one, please be cautious about changing /// the order. -pub const STACKED_DEPENDENCIES: [&str; 15] = [ +pub const STACKED_DEPENDENCIES: &[&str] = &[ "gprimitives", "gstd-codegen", "gcore", @@ -73,7 +79,7 @@ pub const STACKED_DEPENDENCIES: [&str; 15] = [ /// NOTE: Each package in this array could possibly depend /// on the previous one, please be cautious about changing /// the order. -pub const PACKAGES: [&str; 11] = [ +pub const PACKAGES: &[&str] = &[ "gring", "gear-wasm-optimizer", "gear-wasm-builder", @@ -93,6 +99,9 @@ pub const PACKAGE_ALIAS: [(&str, &str); 2] = [ ("gear-runtime-primitives", "runtime-primitives"), ]; +/// Name for temporary cargo registry. +pub const CARGO_REGISTRY_NAME: &str = "cargo-http-registry"; + /// Check the input package pub fn check(manifest: &str) -> Result { Command::new("cargo") diff --git a/utils/crates-io/src/main.rs b/utils/crates-io/src/main.rs index eccf9534d2e..35e83c5d8c6 100644 --- a/utils/crates-io/src/main.rs +++ b/utils/crates-io/src/main.rs @@ -21,19 +21,24 @@ use anyhow::Result; use clap::Parser; use crates_io::Publisher; +use std::path::PathBuf; /// The command to run. #[derive(Clone, Debug, Parser)] enum Command { /// Build manifests for packages that to be published. Build, - /// Check packages that to be published. - Check, /// Publish packages. Publish { /// The version to publish. #[clap(long, short)] version: Option, + /// Simulates publishing of packages. + #[clap(long, short)] + simulate: bool, + /// Path to registry for simulation. + #[arg(short, long)] + registry_path: Option, }, } @@ -47,15 +52,24 @@ pub struct Opt { command: Command, } -fn main() -> Result<()> { +#[tokio::main] +async fn main() -> Result<()> { let Opt { command } = Opt::parse(); - let publisher = Publisher::new()?; match command { - Command::Check => publisher.build(false, None)?.check(), - Command::Publish { version } => publisher.build(true, version)?.publish(), + Command::Publish { + version, + simulate, + registry_path, + } => { + let publisher = + Publisher::with_simulation(simulate, registry_path)?.build(true, version)?; + let result = publisher.publish(); + publisher.restore()?; + result + } Command::Build => { - publisher.build(false, None)?; + Publisher::new()?.build(false, None)?; Ok(()) } } diff --git a/utils/crates-io/src/manifest.rs b/utils/crates-io/src/manifest.rs index f897ef63fea..1b237d1256d 100644 --- a/utils/crates-io/src/manifest.rs +++ b/utils/crates-io/src/manifest.rs @@ -18,37 +18,46 @@ //! Manifest utils for crates-io-manager -use crate::{handler, version}; +use crate::{handler, version, CARGO_REGISTRY_NAME}; use anyhow::{anyhow, Result}; use cargo_metadata::Package; use std::{ fs, ops::{Deref, DerefMut}, - path::PathBuf, + path::{Path, PathBuf}, }; use toml_edit::{DocumentMut, Item}; const WORKSPACE_NAME: &str = "__gear_workspace"; /// Workspace instance, which is a wrapper of [`Manifest`]. -pub struct Workspace(Manifest); +pub struct Workspace { + manifest: Manifest, + lock_file: LockFile, +} impl Workspace { /// Get the workspace manifest with version overridden. pub fn lookup(version: Option) -> Result { - let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .ancestors() - .nth(2) - .map(|workspace_dir| workspace_dir.join("Cargo.toml")) - .ok_or_else(|| anyhow::anyhow!("Could not find workspace manifest"))? - .canonicalize()?; - - let mut workspace: Self = Manifest { - name: WORKSPACE_NAME.to_string(), - manifest: fs::read_to_string(&path)?.parse()?, - path, - } - .into(); + let path = Self::resolve_path("Cargo.toml")?; + let original_manifest: DocumentMut = fs::read_to_string(&path)?.parse()?; + let mutable_manifest = original_manifest.clone(); + + let lock_file_path = Self::resolve_path("Cargo.lock")?; + let content = fs::read_to_string(&lock_file_path)?; + + let mut workspace = Self { + manifest: Manifest { + name: WORKSPACE_NAME.to_string(), + original_manifest, + mutable_manifest, + path, + }, + lock_file: LockFile { + content, + path: lock_file_path, + }, + }; // NOTE: renaming version here is required because it could // be easy to publish incorrect version to crates.io by mistake @@ -60,25 +69,37 @@ impl Workspace { workspace.version()? + "-" + &version::hash()? }; - workspace.manifest["workspace"]["package"]["version"] = toml_edit::value(version); + workspace.mutable_manifest["workspace"]["package"]["version"] = + toml_edit::value(version); } - workspace.manifest["workspace"]["dependencies"]["gstd"]["features"] = Item::None; + workspace.mutable_manifest["workspace"]["dependencies"]["gstd"]["features"] = Item::None; Ok(workspace) } - /// complete the versions of the specified crates - pub fn complete(&mut self, mut index: Vec<&str>) -> Result<()> { + /// Resolve path to file in workspace. + pub fn resolve_path>(path: P) -> Result { + let path = PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .ancestors() + .nth(2) + .map(|workspace_dir| workspace_dir.join(path.as_ref())) + .ok_or_else(|| anyhow!("Could not find workspace manifest"))? + .canonicalize()?; + Ok(path) + } + + /// Complete the versions of the specified crates. + pub fn complete(&mut self, mut index: Vec<&str>, simulate: bool) -> Result<()> { handler::patch_alias(&mut index); - let version = self.0.manifest["workspace"]["package"]["version"] + let version = self.mutable_manifest["workspace"]["package"]["version"] .clone() .as_str() .ok_or_else(|| anyhow!("Could not find version in workspace manifest"))? .to_string(); - let Some(deps) = self.manifest["workspace"]["dependencies"].as_table_mut() else { + let Some(deps) = self.mutable_manifest["workspace"]["dependencies"].as_table_mut() else { return Err(anyhow!( "Failed to parse dependencies from workspace {}", self.path.display() @@ -92,6 +113,10 @@ impl Workspace { } dep["version"] = toml_edit::value(version.clone()); + + if simulate { + dep["registry"] = toml_edit::value(CARGO_REGISTRY_NAME); + } } self.rename()?; @@ -100,7 +125,7 @@ impl Workspace { /// Get version from the current manifest. pub fn version(&self) -> Result { - Ok(self.manifest["workspace"]["package"]["version"] + Ok(self.mutable_manifest["workspace"]["package"]["version"] .as_str() .ok_or_else(|| { anyhow!( @@ -113,7 +138,8 @@ impl Workspace { /// Rename worskapce manifest. fn rename(&mut self) -> Result<()> { - let Some(deps) = self.manifest["workspace"]["dependencies"].as_table_like_mut() else { + let Some(deps) = self.mutable_manifest["workspace"]["dependencies"].as_table_like_mut() + else { return Ok(()); }; @@ -128,11 +154,10 @@ impl Workspace { Ok(()) } -} -impl From for Workspace { - fn from(manifest: Manifest) -> Self { - Self(manifest) + /// Returns Cargo lock file + pub fn lock_file(&self) -> &LockFile { + &self.lock_file } } @@ -140,22 +165,25 @@ impl Deref for Workspace { type Target = Manifest; fn deref(&self) -> &Self::Target { - &self.0 + &self.manifest } } impl DerefMut for Workspace { fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 + &mut self.manifest } } /// Cargo manifest with path +#[derive(Debug, Clone)] pub struct Manifest { /// Crate name pub name: String, + /// Original cargo manifest + pub original_manifest: DocumentMut, /// Cargo manifest - pub manifest: DocumentMut, + pub mutable_manifest: DocumentMut, /// Path of the manifest pub path: PathBuf, } @@ -164,26 +192,43 @@ impl Manifest { /// Complete the manifest of the specified crate from /// the workspace manifest pub fn new(pkg: &Package) -> Result { + let original_manifest: DocumentMut = fs::read_to_string(&pkg.manifest_path)?.parse()?; + let mut mutable_manifest = original_manifest.clone(); + // Complete documentation as from - let mut manifest: DocumentMut = fs::read_to_string(&pkg.manifest_path)?.parse()?; let name = pkg.name.clone(); - manifest["package"]["documentation"] = toml_edit::value(format!("https://docs.rs/{name}")); + mutable_manifest["package"]["documentation"] = + toml_edit::value(format!("https://docs.rs/{name}")); Ok(Self { name, - manifest, + original_manifest, + mutable_manifest, path: pkg.manifest_path.clone().into(), }) } - /// Write manifest to disk. - pub fn write(&self) -> Result<()> { - fs::write(&self.path, self.manifest.to_string()).map_err(Into::into) + /// Restore manifest + pub fn restore(&self) -> Result<()> { + fs::write(&self.path, self.original_manifest.to_string()).map_err(Into::into) + } + + /// Patch manifest + pub fn patch(&self) -> Result<()> { + fs::write(&self.path, self.mutable_manifest.to_string()).map_err(Into::into) } } -impl From for Manifest { - fn from(workspace: Workspace) -> Self { - workspace.0 +/// Cargo lock file with path +#[derive(Debug, Clone)] +pub struct LockFile { + content: String, + path: PathBuf, +} + +impl LockFile { + /// Restore lock file + pub fn restore(&self) -> Result<()> { + fs::write(&self.path, &self.content).map_err(Into::into) } } diff --git a/utils/crates-io/src/publisher.rs b/utils/crates-io/src/publisher.rs index b200ac6818c..bc9e349e6d2 100644 --- a/utils/crates-io/src/publisher.rs +++ b/utils/crates-io/src/publisher.rs @@ -19,40 +19,37 @@ //! Packages publisher use crate::{ - handler, manifest::Workspace, Manifest, PACKAGES, SAFE_DEPENDENCIES, STACKED_DEPENDENCIES, + handler, Manifest, Simulator, Workspace, PACKAGES, SAFE_DEPENDENCIES, STACKED_DEPENDENCIES, }; -use anyhow::Result; +use anyhow::{bail, Result}; use cargo_metadata::{Metadata, MetadataCommand}; -use std::collections::{BTreeMap, HashMap}; +use std::path::PathBuf; /// crates-io packages publisher. pub struct Publisher { metadata: Metadata, - graph: BTreeMap, Manifest>, - index: HashMap, + graph: Vec, + index: Vec<&'static str>, + workspace: Option, + simulator: Option, } impl Publisher { /// Create a new publisher. pub fn new() -> Result { - let metadata = MetadataCommand::new().no_deps().exec()?; - let graph = BTreeMap::new(); - let index = HashMap::::from_iter( - [ - SAFE_DEPENDENCIES.to_vec(), - STACKED_DEPENDENCIES.into(), - PACKAGES.into(), - ] - .concat() - .into_iter() - .enumerate() - .map(|(i, p)| (p.into(), i)), - ); + Self::with_simulation(false, None) + } + /// Create a new publisher with simulation. + pub fn with_simulation(simulate: bool, registry_path: Option) -> Result { Ok(Self { - metadata, - graph, - index, + metadata: MetadataCommand::new().no_deps().exec()?, + graph: vec![], + index: [SAFE_DEPENDENCIES, STACKED_DEPENDENCIES, PACKAGES].concat(), + workspace: None, + simulator: simulate + .then(|| Simulator::new(registry_path)) + .transpose()?, }) } @@ -62,52 +59,73 @@ impl Publisher { /// 2. Rename version of all local packages /// 3. Patch dependencies if needed pub fn build(mut self, verify: bool, version: Option) -> Result { - let mut index = self - .index - .iter() - .map(|(k, &v)| (k.clone(), v)) - .collect::>(); - - index.sort_by_key(|(_, v)| *v); - let mut workspace = Workspace::lookup(version)?; let version = workspace.version()?; - for (name, _) in &index { + for name in self.index.iter() { let Some(pkg) = self.metadata.packages.iter().find(|pkg| pkg.name == *name) else { + println!("Package {name}@{version} not found in cargo metadata!"); continue; }; - if verify && crate::verify(name, &version)? { - println!("Package {}@{} already published .", &name, &version); + if verify && crate::verify(name, &version, self.simulator.as_ref())? { + println!("Package {name}@{version} already published!"); continue; } - self.graph - .insert(self.index.get(name).cloned(), handler::patch(pkg)?); + self.graph.push(handler::patch(pkg)?); } - let index = index.iter().map(|(k, _)| k.as_ref()).collect(); + workspace.complete(self.index.clone(), self.simulator.is_some())?; - workspace.complete(index)?; + self.workspace = Some(workspace); - // write manifests to disk. - let manifest = workspace.into(); - let manifests = [self.graph.values().collect::>(), vec![&manifest]].concat(); - manifests - .iter() - .map(|m| m.write()) - .collect::>>()?; + self.patch()?; Ok(self) } + /// Restore local files + pub fn restore(&self) -> Result<()> { + self.manifests() + .map(|manifest| manifest.restore()) + .collect::>>()?; + + if let Some(workspace) = self.workspace.as_ref() { + workspace.lock_file().restore()?; + } + + if let Some(simulator) = self.simulator.as_ref() { + simulator.restore()?; + } + + Ok(()) + } + + /// Patch local files + fn patch(&self) -> Result<()> { + self.manifests() + .map(|manifest| manifest.patch()) + .collect::>>()?; + + if let Some(simulator) = self.simulator.as_ref() { + simulator.patch()?; + } + + Ok(()) + } + + /// Returns an iterator of manifests that have been potentially patched + fn manifests(&self) -> impl Iterator { + self.graph.iter().chain(self.workspace.as_deref()) + } + /// Check the to-be-published packages /// /// TODO: Complete the check process (#3565) pub fn check(&self) -> Result<()> { let mut failed = Vec::new(); - for Manifest { path, name, .. } in self.graph.values() { + for Manifest { path, name, .. } in self.graph.iter() { if !PACKAGES.contains(&name.as_str()) { continue; } @@ -120,7 +138,7 @@ impl Publisher { } if !failed.is_empty() { - panic!("Packages {failed:?} failed to pass the check ..."); + bail!("Packages {failed:?} failed to pass the check ..."); } // Post tests for gtest and gclient @@ -129,7 +147,7 @@ impl Publisher { ("gsdk", "timeout"), ] { if !crate::test(pkg, test)?.success() { - panic!("{pkg}:{test} failed to pass the test ..."); + bail!("{pkg}:{test} failed to pass the test ..."); } } @@ -138,11 +156,11 @@ impl Publisher { /// Publish packages pub fn publish(&self) -> Result<()> { - for Manifest { path, .. } in self.graph.values() { + for Manifest { path, .. } in self.graph.iter() { println!("Publishing {path:?}"); let status = crate::publish(&path.to_string_lossy())?; if !status.success() { - panic!("Failed to publish package {path:?} ..."); + bail!("Failed to publish package {path:?} ..."); } } diff --git a/utils/crates-io/src/simulator.rs b/utils/crates-io/src/simulator.rs new file mode 100644 index 00000000000..0ad66f75a68 --- /dev/null +++ b/utils/crates-io/src/simulator.rs @@ -0,0 +1,105 @@ +// This file is part of Gear. + +// Copyright (C) 2021-2024 Gear Technologies Inc. +// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0 + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +//! Packages publishing simulator + +use crate::{Workspace, CARGO_REGISTRY_NAME}; +use anyhow::Result; +use std::{ + fs, + net::SocketAddr, + ops::Deref, + path::{Path, PathBuf}, +}; +use tempfile::TempDir; +use tokio::task::{self, JoinHandle}; +use toml_edit::DocumentMut; + +enum RegistryPath { + Dir(PathBuf), + TempDir(TempDir), +} + +impl Deref for RegistryPath { + type Target = Path; + + fn deref(&self) -> &Self::Target { + match self { + RegistryPath::Dir(path) => path, + RegistryPath::TempDir(temp_dir) => temp_dir.path(), + } + } +} + +/// crates-io packages publishing simulator. +#[allow(dead_code)] +pub struct Simulator { + path: RegistryPath, + addr: SocketAddr, + handle: JoinHandle<()>, + config_path: PathBuf, + original_config: DocumentMut, + mutable_config: DocumentMut, +} + +impl Simulator { + /// Create a new simulator. + pub fn new(registry_path: Option) -> Result { + let path = match registry_path { + Some(path) => RegistryPath::Dir(path), + None => RegistryPath::TempDir(TempDir::new()?), + }; + let (future, addr) = cargo_http_registry::serve(&path, "127.0.0.1:35503".parse()?)?; + let handle = task::spawn(future); + + let config_path = Workspace::resolve_path(".cargo/config.toml")?; + let original_config: DocumentMut = fs::read_to_string(&config_path)?.parse()?; + let mut mutable_config = original_config.clone(); + + // Patch `.cargo/config.toml` according to https://github.com/d-e-s-o/cargo-http-registry/blob/main/README.md#usage + mutable_config["registry"]["default"] = toml_edit::value(CARGO_REGISTRY_NAME); + mutable_config["registries"][CARGO_REGISTRY_NAME]["index"] = + toml_edit::value(format!("http://{addr}/git")); + mutable_config["registries"][CARGO_REGISTRY_NAME]["token"] = toml_edit::value("token"); + mutable_config["net"]["git-fetch-with-cli"] = toml_edit::value(true); + + Ok(Self { + path, + addr, + handle, + config_path, + original_config, + mutable_config, + }) + } + + /// Returns socket addr + pub fn addr(&self) -> &SocketAddr { + &self.addr + } + + /// Restore cargo config + pub fn restore(&self) -> Result<()> { + fs::write(&self.config_path, self.original_config.to_string()).map_err(Into::into) + } + + /// Patch cargo config + pub fn patch(&self) -> Result<()> { + fs::write(&self.config_path, self.mutable_config.to_string()).map_err(Into::into) + } +} diff --git a/utils/crates-io/src/version.rs b/utils/crates-io/src/version.rs index af78c8cc1f2..411638fe6aa 100644 --- a/utils/crates-io/src/version.rs +++ b/utils/crates-io/src/version.rs @@ -18,12 +18,11 @@ //! Crate verifier +use crate::{handler, Simulator}; use anyhow::{anyhow, Result}; use serde::Deserialize; use std::process::Command; -use crate::handler; - #[derive(Debug, Deserialize)] struct Resp { pub versions: Vec, @@ -35,14 +34,27 @@ struct Version { } /// Verify if the package has already been published. -pub fn verify(name: &str, version: &str) -> Result { - println!("Verifying {}@{} ...", &name, &version); +pub fn verify(name: &str, version: &str, simulator: Option<&Simulator>) -> Result { + println!("Verifying {name}@{version} ..."); let client = reqwest::blocking::Client::builder() .user_agent("gear-crates-io-manager") .build()?; - if let Ok(resp) = client + if let Some(simulator) = simulator { + if client + .get(format!( + "http://{}/api/v1/crates/{}/{version}/download", + simulator.addr(), + handler::crates_io_name(name) + )) + .send()? + .error_for_status() + .is_ok() + { + return Ok(true); + } + } else if let Ok(resp) = client .get(format!( "https://crates.io/api/v1/crates/{}/versions", handler::crates_io_name(name)